IDA使用之旅(二)工具及窗口的使用
一、主要窗口
1、显示函数调用图表
显示函数调用图表:
2、显示当前函数的流程图
3、窗口管理。
可以打开自己无意关闭的窗口,可以增加查看的标签选项:
或者重设窗口: 窗口->重设窗口
或者对好的窗口布局进行保存:窗口->保存
4、查看
选项->常规
5、数据窗口
包括String和Names
6、交叉引用
在出现XREF 的地方就是有交叉引用(如下图);
而在XREF后面的向上箭头,双击它可以跳到它跳转的地方(如下图);
7、IDA不支持撤销功能。
8、
Ctrl+滚轮实现浏览的放大和缩小。
9、看懂图形概况图
如下图所示,绿色箭头表jz short loc_1305B指令成立时,跳到下面;
红色的方向箭头表示不成立时的执行方向;(红色其实是没有被执行的。)
蓝色是指指向下一个立即执行块。
(注意跳转后的地址也是loc_1305B,说明上一块的结束地址就是下一块的开始地址)。
10、看懂代码中的地址
11、添加注释
Enter+冒号 可以添加注释:
12、名字窗口中表示的类别
F:可能是导入函数,也可能是自己写的函数;
I:导入函数;(I 类型的也可能是自己写的),eg:
A:字符串;
L:库函数;
D:全局的命令代码;
13、函数中出现的标识含义
Sub_XXXXXX
子程序
loc_xxxxxx
地址
byte_xxxxxx
8位数据
word_xxxxxx
16位数据
dword_xxxxxx
unk_xxxxxx
未知的
二、次要窗口
1、
IDA View-A窗口与 Hex View-A窗口,一个是主要窗口一个是次要窗口,
它们其实是同步的,即选中其中一个窗口另一窗口位置也会发生变化。
设置上述功能是在此Hex View-A中右击:
2、导出窗口
里面列出来的函数就是此文件的入口点。它是导出给用户使用的接口,通常是用户的共享库。
双击其中函数,会跳到反编译窗口的中位置。
可以对这里的函数设置断点:
3、导入函数
从系统中导入的函数。如下图表DbgPrint从ntoskrnl导出的。
如果双击函数,可以看到它调用到了反编译窗口中的idata部分:
由于IDA是静态的工具,而ntoskrnl是静态库,所以能相入;如果遇到从DLL导入的名字,可能会出现乱码。
-------------------------------
注意:Exports窗口只能列出此EXE或DLL通过.lib链接到的库的接口:
4、函数窗口
窗口中的函数的属性中的R,表采用EBP寄存器。我们以DbgPrint中的R属性为例,双击它跑到反汇编的地方是有 ebp的。
5、结构体窗口
双击可以查看到结构的成员。
6、枚举窗口
类似于结构体类型。
三、其它窗口
1、Segmentation
2、标签
因为我们的驱动是DDK编译的,没识别也是正常的。
IDA通过签名库来支持代码块,签名是用于识别编译器生成的代码的启动顺序,以确定结构能给二进制编译器;
也可以将代码规划,由编译器的插件插入已知库,在IDA识别你认识的库时,会更多地将精力放在IDA无法识别的库。
3、类型库
IDA可以从头文件中了解到结构的大小和布局,所有的信息都收集在til文件中
如果要让IDA加入其他库和头文件,那么在Type Libraries中按"Insert"键来加入。
4、函数调用窗口
打开函数调用窗口时,IDA会显示光标所在的函数的邻近,且生成一结图。
红色为被调用的函数。
5、问题窗口
这个窗口也少用到。
显示在二进制遇到的一些困难,虽然反汇编最简单的二进制文件也是困难的。
如上图所示表示:dd 6Dh dup(0) 这条指令,IDA它不知道,需要你来分析,它发生的地址是INIT:0001404C。