0x01、IDA是什么
交互式反汇编器专业版(Interactive Disassembler Professional)简称为IDA。IDA Pro是一款支持交互、可编程的、扩展插件、支持多种处理器的逆向工程利器。
0x02、为什么要用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支持的微处理器体系结构列表:
0x03、判断程序是32位还是64位
因为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位文件:
0x04、IDA逆向程序-选项卡介绍
-
反编译工具:IDA 6.8(安装IDA会自动安装Python 2.7.6,也可以单独安装Python)
-
PE文件查看:010editor PE模板
-
练习程序:CRACKME.EXE:https://mega.nz/#!KbAWzK7D!LOnvJeYpXpxkMIH_jLGzx7VKVTQg1LifsFQMnOj_WeM
打开Crackme。选择“ new”打开一个新文件,会自动识别PE文件的类型:
默认设置单击 “OK”,如果同意显示 ”Proximity View”模式会显示出图形化的界面,在树形模型下显示出Crackme里的函数信息,可以很直观的看出来程序跳转的关系。:
- 使用快捷键(空格键),可以在图形模式(*Graph*)或普通文本模式之间切换。
- 在“ Options(选项) - General(常规)”,选中“ Line prefixes(行前缀)”可以显示跟内存地址有关的更多信息。选中“Number of opcode bytes(操作码字节数)”,可以显示操作码。
- 访问View-Open Subview,可以打开特定功能的选项卡。
在IDA的图形屏幕上会看到许多具有相同地址的位置。例如在开始(start)函数,地址会重复很多次。因为这条地址的信息很多,多到同一条地址上显示不完。
找到重复的同一地址结尾。在这种情况下对应地址00401000的反汇编指令为push 0。
通过“Windows-Save Desktop"设置了常用的窗口和选项卡:转到Windows-Save Desktop,然后选择“ Default ”保存默认配置。
在IDA选项卡上,例如Function,Strings,Names等。可以用快捷键按CTRL + F搜索。View-Open Subview-Strings中,IDA会根据搜索关键字显示出有“ try”的字符串,如下图所示:
- 选择View-Open Subview-Disassembly,可以打开第二个反汇编窗口,之后还可以使用第一个反汇编窗口访问其他功能,让分析人员方便分析程序的其他功能。与OllyDbg / x64dbg相比起来,这是IDA的优势:
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部分和蓝色字体对应在代码部分检测到的功能。
0x05、参考
-
https://tradahacking.vn/reversing-with-ida-from-scratch-p1-a0360893d2d5?source=user_profile---------30----------------------- REVERSING WITH IDA FROM SCRATCH (P1)
-
[http://ricardonarvaja.info/WEB/INTRODUCCION AL REVERSING CON IDA PRO DESDE CERO/EN INGLES/](http://ricardonarvaja.info/WEB/INTRODUCCION AL REVERSING CON IDA PRO DESDE CERO/EN INGLES/) /WEB/INTRODUCCION AL REVERSING CON IDA PRO DESDE CERO/EN INGLES
-
https://drive.google.com/drive/folders/0B13TW0I0f8O2ckd2T0lsbXRoYmc