交互式反汇编器专业版(Interactive Disassembler Professional)简称为IDA。IDA Pro是一款支持交互、可编程的、扩展插件、支持多种处理器的逆向工程利器。
为什么要用IDA?因为OD是一个只能调试32位程序的调试器。而IDA Pro可以调试32位、64位的程序。除了可以静态反汇编程序,还支持作为调试器对程序调试。
中国人逆向喜欢用OllyDbg:https://ti.360.net/blog/articles/suspected-molerats-new-attack-in-the-middle-east-en/
国外专家Vitali Kremez喜欢用OllyDbg+IDA:https://www.vkremez.com/2018/12/lets-learn-dissecting-apt28-zebrocy.html
IDA支持不同的操作系统环境(例如Windows,Linux或Mac OS X)上运行,也支持远程调试:
IDA支持的微处理器体系结构列表:
因为crackme.exe是一个32位可执行文件,所以要使用32位IDA版本打开。判断EXE文件是32位还是64位,有很多方法。
PE文件里的NT头->FileHeader->machine这个字段声明PE是哪个平台下运行的,比如32位程序内容是I386 (14Ch)。
struct IMAGE_NT_HEADERS NtHeader
struct IMAGE_FILE_HEADER FileHeader
enum IMAGE_MACHINE Machine
识别比较快的方法是看PE字段后面跟着的值,以PE后面跟着的字母为例:PE..d†字样后的符号是一个64位文件。而crackme.exe的PE之后是:PE..L,所以这是一个32位文件:
打开Crackme。选择“ new”打开一个新文件,会自动识别PE文件的类型:
默认设置单击 “OK”,如果同意显示 ”Proximity View”模式会显示出图形化的界面,在树形模型下显示出Crackme里的函数信息,可以很直观的看出来程序跳转的关系。:
在IDA的图形屏幕上会看到许多具有相同地址的位置。例如在开始(start)函数,地址会重复很多次。因为这条地址的信息很多,多到同一条地址上显示不完。
找到重复的同一地址结尾。在这种情况下对应地址00401000的反汇编指令为push 0。
通过“Windows-Save Desktop"设置了常用的窗口和选项卡:转到Windows-Save Desktop,然后选择“ Default ”保存默认配置。
在IDA选项卡上,例如Function,Strings,Names等。可以用快捷键按CTRL + F搜索。View-Open Subview-Strings中,IDA会根据搜索关键字显示出有“ try”的字符串,如下图所示:
IDA还提供类似于OllyDBG / x64dbg的“Dump”(十六进制显示窗口)。在IDA中这样的窗口称为“ Hex View”。可以通过View(视图)-Open Subview(打开子视图)-Hex dump(十六进制转储)显示:
从Open Subview中,还可以通过Imports选项卡访问跟程序导入函数有关的信息,如下所示:
左下角看到另一个叫“ Graph overview”的小屏幕(如果没有可以通过“View(视图)-> Graph Overview(图形概述)”的位置打开)。这个窗口显示了正在分析的功能代码块,可以让分析人员快速地在代码块之间来回移动。
IDA还其他很有用的选项卡,例如“ Structures”,“ Exports”,“ Names”,“Segments ”等。顶部导航栏(navigator)用不同的颜色显示出文件的不同部分。
描述性信息每种颜色都有含义,例如,灰色是.data部分,粉红色对应外部符号。idata部分和蓝色字体对应在代码部分检测到的功能。