IDA Pro 在CSAPP lab2中的使用
在做lab2的时候,偶然的情况下,发现了IDA pro这样一个反汇编工具,总的来说对于lab2这样的小实验读懂代码的大体功能是有作用的,但对于想要具体明白某一条指令的执行过程,又显得不足,到最后还是需要逐条分析,可能自己还是功力不够,IDA pro的一些功能不会使用.....同时过度依赖IDA Pro是不利于学习反汇编,毕竟本来应该由自己分析的地方由IDA pro执行了,要明确IDA Pro只是一个工具!
百度百科对IDA pro 的介绍 https://baike.baidu.com/item/IDA%20Pro
这里我使用的版本是IDA pro 6.6 来自CSDN一位大佬的分享(淘宝买的CSDN金币,逃~),当时的安装程序依旧丢失,这里直接将程序打包压缩,发到百度网盘上。
链接:https://pan.baidu.com/s/12P-LU9TDToLrdTWFMl8QRw
提取码:i66j
解压后打开是这样的,选择idap.exe打开(可以创建一个快捷方式到桌面上),这是32位的执行程序,下面那个idap64.exe是64位执行程序,这里我们选择32的是为了使用该工具按F4键生产C类代码查看的功能。
打开idaq后,会有一些提示窗口,注意看提示,一路OK。
之后像其他编译器一样打开需要执行的文件,这里是bomb炸弹,注意这里的炸弹文件是隐藏扩展名或者扩展名是exe的文件。
之后一路选择默认选项,点击OK。
这时候进入的IDA的主界面。
这时候根据每个小窗口的名字也大概能弄懂作用了,最左侧的小窗口的作用是将该程序所用到的函数,这里有我们熟悉的mian和拆弹的各个阶段phase_1等等。
点击函数名,在IDA View-A界面下显示该部分的反汇编代码。在IDA View-A窗口下按F4键就能得到反汇编生成的C类代码了
以phase_1为例,该题很简单,甚至生成代码的时候直接将答案显示出来了。同时点击左侧的Instructions会有右侧的C++代码执行情况对应,点击右侧的C++代码也会有左侧的Instructions对应。
同时在IDA View-A窗口下可以查看某些地址或 变量所存储的内容。以phase_6为例,我们想要知道那6个结点所存储的内容,直接可以点开。
点击node1后,
注意IA-32的小端存储方式,我们能够得到其存储内容node1 = {0x6d, 0x01, 0x804c180}。
后面的题目都是按照这样的方法来查看反汇编后大致的执行过程。
这里附上一位大佬全程使用IDA Pro做lab2的博客https://blog.csdn.net/neverever01/article/details/78403412。
关于IDA pro使用的博客我找到的好像都不是很好入门,像这篇https://www.52pojie.cn/thread-886103-1-1.html
希望有大佬给一篇入门级别的说明。