在IDA中,ESC键是一个非常有用的热键。在反汇编窗口中,ESC键的作用与Web浏览器的“后退”按钮类似,而在打开的其他窗口中,ESC键用于关闭窗口。
1.导出窗口
导出窗口列出文件的入口点。这包括程序的执行入口点(在程序的文件头部分指定),以及任何由文件导出给其他文件使用的函数和变量,对于exe来说,至少有一个导出函数,程序的执行入口点。IDA将这个入口点取名为start
2.导入窗口
导入窗口的功能与导出窗口的功能正好相反。它列出由被分析的二进制文件导入的所有函数。只有在二进制文件使用共享库时,IDA才需要用到导入窗口
。静态链接的二进制文件不存在外部依赖关系,因此不需要导入其他内容
注意:使用dlopen/dlsym或LoadLibrary/GetProcAddress等机制自行加载的符号将不会在导入窗口中显示
3.结构体窗口
结构体窗口用于显示IDA决定在一个二进制文件中使用的任何复杂的数据结构(如C结构体和联合)的布局。在分析阶段,IDA会查询它的函数类型签名扩展库,设法将函数的参数类型与程序使用的内存匹配起来。
结构体窗口的两个主要用途包括:
1.为标准数据结构的布局提供现成的参考
2.为你提供一种方法,在你发现程序使用的自定义数据结构时,帮助你创建自己的、可用作内存布局模板的数据结构
4.枚举窗口
枚举窗口有点类似于结构体窗口。如果IDA检测到标准枚举数据类型(C enum),它将在枚举窗口中列出该数据类型。你可以使用枚举来代替整数常量,提高反汇编代码的可读性
5.Strings窗口
Strings窗口中显示的是从二进制文件中提取出的一组字符串,以及每个字符串所在的地址,双击Strings窗口中的任何字符串,反汇编窗口将跳转到该字符串所在的地址
0.每次打开Strings窗口,IDA都会扫描或重新扫描整个数据库,查找其中的字符串
1.右击该窗口,菜单中选择Setup,可设置IDA应扫描的字符串类型。IDA默认扫描的字符串类型为至少包含5个字符的C风格、以null结尾的7位ASCII字符串。
Display only defined strings(仅显示已定义的字符串):仅显示IDA自动创建或用户手动创建的已命名字符串数据项
2.Ignore instructions/data definitions(忽略指令/数据定义)。这个选项会使IDA扫描指令和现有数据定义中的字符串。使用这个选项,可以让IDA扫描二进制代码中错误地转换成指令的字符串,或扫描数据中非字符串格式。使用这个选项的效果类似于使用strings -a命令。
第2点非常重要,如果没有选中,IDA不一定会显示二进制文件中的所有字符串,而默认是没有选中的,这个选项的作用是确保IDA会在所有可能发现字符串的地方扫描各种类型的字符串
6.Names 窗口
它简要列举了一个二进制文件的所有全局名称,双击Names窗口中的名称,可立即跳转到显示该名称的反汇编视图
•F,常规函数。IDA认为这些函数不属于库函数。
•L,库函数。IDA通过签名匹配算法来识别库函数。如果某个库函数的签名并不存在,则该函数将被标记为常规函数。
•I,导入的名称,通常为共享库导入的函数名称。它与库函数的区别在于:导入的名称没有代码,而库函数的主体将在反汇编代码清单中显示。
•C,命名代码。
•D,数据。已命名数据的位置通常表示全局变量
•A,字符串数据。
7.段窗口
段窗口显示的是在二进制文件中出现的段的简要列表,双击段窗口中的任何条目,IDA将跳转到反汇编窗口中该段的起始位置
8.签名窗口
签名窗口显示的是IDA对打开的二进制文件所使用的签名。
9.函数调用窗口
在任何程序中,一个函数可以调用其他函数,也可以被其他函数调用。实际上,建立一个图形来说明调用方与被调用方之间的关系,是一个相当简单的任务。这样的图形叫做函数调用图形或函数调用树
打开函数调用窗口时,IDA会确定光标所在位置的函数的“近邻”,光标变化,函数调用窗口会自动更新