逆向学习之IDA简介
时间:2021-08-23
本文章向大家介绍逆向学习之IDA简介,主要包括逆向学习之IDA简介使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
逆向学习之IDA简介
IDA是Windwos下众多调试器工具中颇受欢迎的一种。IDA Pro首先是一个反汇编器,可以显示二进制会变吗(可执行文件或DLL(Dynamic Link Library),动态链接库),它提供的某些高级功能使我们更容易理解汇编代码。其次,它又是一个调试器,用户可以逐条调试二进制文件中的指令,从而确定正在执行哪条指令,以及执行的顺序等。
IDA PRO是一款交互式反编译工具,功能强大。最主要的特性是交互和多处理器。IDA支持的文件类型丰富,除了常见的PE格式,还支持Windows,DOS,Unix,Mac等平台文件格式。
一、打开文件,关闭文件
打开文件
关闭程序
推荐使用第二种保存方式,如果不想保存,选择最后一个选项
二、窗口介绍:图形 文本 其他窗口介绍
导航条 | 意义 |
---|---|
蓝色 | 表示常规的指令函数 |
黑色 | 节与节之间的间隙 |
银白色 | 数据内容 |
粉色 | 表示外部导入符号 |
暗黄色 | 表示ida未识别的内容 |
IDA主界面 | 意义 |
IDA View | 三种反汇编视图:文本视图、图表视图、路径视图 |
Hex View | 十六进制窗口 |
Imports | 导入函数窗口 |
Struceures | 结构体窗口 |
Exports | 导出函数窗口 |
Enums | 枚举窗口 |
Strings |
三、常用快捷键
快捷键 | 功能说明 |
---|---|
Enter | 跟进函数实现,查看标号对应的地址 |
返回跟进处,返回上一个操作地址 | |
A | 解释光标处的地址为一个字符串的首地址 |
B | 十六进制与二进制数转换 |
C | 解释光标处的地址为一条指令/C-->代码/D-->数据/A-->ascii字符串/U-->解析成未定义的内容 |
D | 解释光标处的地址为数据,每按一次将会转换这个地址的数据长度 |
G | 快速查找对应地址 |
H | 十六进制与十进制数转换 |
K | 将数据解释为栈变量 |
: | 添加注释 |
M | 解释为枚举成员 |
N | 重新命名 |
O | 解释地址为数据段偏移量,用于字符串标号 |
T | 解释数据为一个结构体成员 |
X | 转换视图到交叉参考模式 |
Shift + F9 | 添加结构体 |
空格 | 切换文本视图与图表视图 |
ALT + M | 添加标签 |
CTRL + M | 查看标签 |
CTRL + S | 查看段的信息 |
冒号 | 常规注释 |
CTRL + F12 | 函数调用图 |
Ctrl + F9 | 导入c头文件 |
F5 | 查看伪代码 |
Alt+T | 搜索文本 |
Alt+B | 搜索十六进制 |
ctrl+shift+w | 拍摄IDA快照 |
u | undefine,取消定义函数、代码、数据的定义 |
view–>open subviews | 可以恢复你无意中关闭的数据显示窗口 |
windows–>reset desktop | 可以恢复初始ida布局 |
option–>font | option–>font |
option–>general->Auto comments | 自动添加反汇编注释 |
原文地址:https://www.cnblogs.com/cainiao-chuanqi/p/15175169.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 这一次搞懂Spring自定义标签以及注解解析原理
- 这一次搞懂Spring的Bean实例化原理
- 单片机入门学习十三 STM32单片机学习十 通用定时器
- Spring IOC原理补充(循环依赖、Bean作用域等)
- 这一次搞懂Spring代理创建及AOP链式调用过程
- 这一次搞懂Spring事务注解的解析
- 这一次搞懂Spring事务是如何传播的
- 这一次搞懂SpringMVC原理
- 这一次搞懂Spring Web零xml配置原理以及父子容器关系
- 这一次搞懂SpringBoot核心原理(自动配置、事件驱动、Condition)
- 全网最深分析SpringBoot MVC自动配置失效的原因
- Mybatis源码初探——优雅精良的骨架
- 深入Mybatis源码——配置解析
- 深入Mybatis源码——执行流程
- Mybatis插件扩展以及与Spring整合原理