文章目录
这IDA怎么这么难
IDA简介:
- 反汇编工具,它功能强大、操作复杂,要完全掌握它,需要很多知识。 说白了就是会用你就很了不起
IDA数据库文件
- .id0文件:是一个二叉树形式的数据库。
- .id1文件:包含描述每个程序字节的标记。
- .nam文件:包含与IDA的Names窗口[3]中显示的给定程序位置有关的索引信息。
- .til文件:用于存储与一个给定数据库的本地类型定义有关的信息。
IDA导航条
- 蓝色:.text section
- 深蓝:用户自己写的函数表以后的代码区
- 浅蓝:编译器自己添加的函数,像启动函数,异常函数等
- 粉红色:.idata section有关输入表的一些数据
- 军绿色:.rata section纯数据,只读
- 灰色:为了段对齐而留下的空隙
- 黑色:禁区,不存在任何数据
IDA三个可视窗口
- IDA-View窗口
- 函数窗口
- 消息窗口
IDA图形视图
- 控制流程图
- 基本块是一个不包含分支,从头执行到尾的最大指令序列
- 红箭头:假,不执行分支
- 绿箭头:真,执行分支
文本视图
- 虚拟地址:以[区域名称]:[虚拟地址]这种格式显示,如text:004011C1
函数窗口
对应列:(可通过help搜索functions window查找)
- R - function returns to the caller// 函数返回给调用者
- F - far function 被远程调用的函数
- L - library function // 库函数
- S - static function // 静态函数
- B - BP based frame. IDA will automatically convert //并使用EBP寄存器(B)引用它的局部变量
- T - function has type information
- 双击Functions窗口中的一个条目,反汇编窗口将跳转到选定函数所在的位置(反汇编窗口会自动打开)
十六进制窗口
十六进制窗口
- 对应Views▶Open Subviews▶Hex dump,十六进制窗口可以配置为显示各种格式,并可作为十六进制编辑器使用,和在反汇编窗口中一样,可以同时打开几个十六进制窗口。第一个叫做Hex View-A,第二个叫做Hex View-B,依次类推。
同步关联:
-
默认情况下,第一个十六进制窗口会与第一个反汇编窗口同步,你也可以通过在任一窗口中右击选击Synchronize
-
同步后,在一个窗口中滚动鼠标,另一个窗口也会滚动到相同的位置(同一个虚拟地址),选中地址会高亮
编辑:
- 右击菜单,选择Edit菜单项(F2)可将十六进制窗口转变为编辑器,这时可以自由编辑,完成编辑后,你必须提交或取消更改才能返回查看模式(F2保存,ESC撤消)
Names窗口
-
它简要列举了一个二进制文件的所有全局名称。
-
名称是指对一个程序虚拟地址的符号描述。在最初加载文件的过程中,IDA会根据符号表和签名分析派生出名称列表。双击Names窗口中的名称,可立即跳转到显示该名称的反汇编视图。
-
Names窗口中显示的名称采用了颜色和字母编码:
-
F,常规函数。IDA认为这些函数不属于库函数。
-
L,库函数。IDA通过签名匹配算法来识别库函数。如果某个库函数的签名并不存在,则该函数将被标记为常规函数。
-
I,导入的名称,通常为共享库导入的函数名称。它与库函数的区别在于:导入的名称没有代码,而库函数的主体将在反汇编代码清单中显示。
-
C,命名代码。这些是已命名的程序指令位置,IDA认为它们不属于任何函数。当IDA在程序的符号表中找到一个名称,但没发现对程序位置的任何调用时,就会出现这种情况。
-
D,数据。已命名数据的位置通常表示全局变量。
-
A,字符串数据。这是一个被引用的数据位置,其中包含的一串字符符合IDA的某种已知的字符串数据类型,如以’\0’字节结束的ASCIIC 字符串。
查看程序中的所有字符串
- 快捷键:shift+F12
添加注释
- enter+冒号可以添加注释
基本设置
IDA桌面提示小技巧
-
使用 View -> Open Subviews 命令恢复无意中关闭的数据显示窗口
-
使用 Windows -> Reset Desktop 命令可迅速将桌面恢复到原始布局
-
使用 Windows -> Save Desktop 命令保存当前的桌面布局
-
用 Windows -> Load Desktop 命令打开之前保存的一个桌面布局
-
Disassembly 窗口(无论是图形视图或列表视图)是唯一一个可以修改其显示字体的窗口,使用 Options -> Font 命令可以设置字体
结束语
- 是不是脑袋瓜子嗡嗡作响了哈哈哈,不着急,满满学习吧