反汇编系列——工具篇
Posted 牧秦丶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了反汇编系列——工具篇相关的知识,希望对你有一定的参考价值。
反汇编,也有人称为“逆向工程”,就是把 DLL 或者 EXE 程序逆向为程序员可读的汇编代码,方便我们理解程序。有时候我们需要分析别人的DLL或者程序,想看看它做了什么或者实现方案(请不要干坏事!),可能需要反汇编知识。我们首先需要借助一些反汇编利器。我强烈推荐的是IDA Pro,它的功能异常强大,对某些程序的反汇编,可以达到伪代码级别的反汇编——当然,这需要你具有扎实的汇编功底。
IDA Pro 目前的稳定版本是5.5,官网上最新评估版本是6.3(点此下载评估版),你可以根据自己需要去找一份。我使用的是 6.3 的评估版本,功能比5.5强大许多。你可以将一个DLL 或者 EXE 直接拖入 IDA 主窗口,然后它就会自动展开一份反汇编好的代码。如下:
几个主要的区域有:
- 代码窗口:主要展示反汇编代码;
- 输出窗口:
- 函数窗口:主要用于查看函数(非导出函数可能只用 sub_XXXXX 替代,导出函数你可以看到完整的全名);
- 导入窗口:查看导入的所有函数(如 LoadLibrary、CreateThread 等等);
- 导出窗口:查看该 DLL 导出的函数接口;
- 结构体窗口:查看结构体定义;
- 字符串窗口:查看所有 HardCode 的字符串;
如果你想查看你自己写的代码的汇编代码,可以参考《用汇编分析C++程序》。通过第一张图中反汇编出的代码可以看到,某些变量名均已被反汇编出来了,这可以方便我们理解代码。
但是,对初学者来说,其他的变量名如:“var_802” 这样的名称不易理解,并且对后面的-4、8、-802 等这样的数字也一头雾水,下一篇将详述堆栈。
Tips:你可以在知道var_802这样的变量名代表的确切意义后,可以用光标点击它,然后按下'n',就可以重命名这个变量名,之后可以保存工程,下次打开的时候还是你重命名后的名称,方便多次反汇编。
以上是关于反汇编系列——工具篇的主要内容,如果未能解决你的问题,请参考以下文章