反汇编系列(一)——工具篇
来源:互联网 发布:网络直播的优缺点 编辑:程序博客网 时间:2024/06/03 12:47
反汇编,也有人称为“逆向工程”,就是把 DLL 或者 EXE 程序逆向为程序员可读的汇编代码,方便我们理解程序。有时候我们需要分析别人的DLL或者程序,想看看它做了什么或者实现方案(请不要干坏事!),可能需要反汇编知识。我们首先需要借助一些反汇编利器。我强烈推荐的是IDA Pro,它的功能异常强大,对某些程序的反汇编,可以达到伪代码级别的反汇编——当然,这需要你具有扎实的汇编功底。
IDA Pro 目前的稳定版本是5.5,官网上最新评估版本是6.3(点此下载评估版),你可以根据自己需要去找一份。我使用的是 6.3 的评估版本,功能比5.5强大许多。你可以将一个DLL或者 EXE 直接拖入 IDA 主窗口,然后它就会自动展开一份反汇编好的代码。如下:
几个主要的区域有:
- 代码窗口:主要展示反汇编代码;
- 输出窗口:
- 函数窗口:主要用于查看函数(非导出函数可能只用 sub_XXXXX 替代,导出函数你可以看到完整的全名);
- 导入窗口:查看导入的所有函数(如 LoadLibrary、CreateThread 等等);
- 导出窗口:查看该 DLL 导出的函数接口;
- 结构体窗口:查看结构体定义;
- 字符串窗口:查看所有 HardCode 的字符串;
主要我们需要关注的窗口大致就这些,其他的窗口可以自己去探索。并且 IDA 具有相当强大的快捷键功能,比如我们定位到一个导入函数上,然后想看什么地方调用了这个函数,只需按 'X' 键,会弹出一个调用了这个函数的地址列表,我们可以双击列表中的某一行,方便的跳转到该调用处。如:
如果你想查看你自己写的代码的汇编代码,可以参考《用汇编分析C++程序》。通过第一张图中反汇编出的代码可以看到,某些变量名均已被反汇编出来了,这可以方便我们理解代码。
但是,对初学者来说,其他的变量名如:“var_802” 这样的名称不易理解,并且对后面的-4、8、-802 等这样的数字也一头雾水,下一篇将详述堆栈。
Tips:你可以在知道var_802这样的变量名代表的确切意义后,可以用光标点击它,然后按下'n',就可以重命名这个变量名,之后可以保存工程,下次打开的时候还是你重命名后的名称,方便多次反汇编。
- 反汇编系列(一)——工具篇
- 反汇编系列(二)——堆栈篇
- 反汇编系列(三)——函数篇
- 反汇编系列(一) 基本函数调用
- 回归本质汇编系列(一)——汇编基础知识
- 反汇编系列(九) 算法反汇编
- 【转】反汇编工具
- 反汇编工具 win32asm
- 反汇编工具
- 反汇编工具IDA
- 反汇编工具使用
- 基础的反汇编代码(一)
- 从反汇编看C++(一)
- 反汇编stepldr.exe——第一次使用IDA反汇编(作者:wogoyixikexie@gliet)
- 反汇编stepldr.exe——第一次使用IDA反汇编(作者:wogoyixikexie@gliet)
- 反汇编stepldr.exe——第一次使用IDA反汇编(作者:wogoyixikexie@gliet)
- 反汇编系列(二) for
- 反汇编系列(三) dowhile
- 韩国政府对中国渔民中弹身亡事件表示遗憾-韩国海警-打死-中国渔民
- 数理逻辑:第二章第一节 命题演算的公理系统
- 远程连接SQLServer2000服务器的方法 是否可连接 详解!
- Windows消息机制概述
- Async Redis await BookSleeve
- 反汇编系列(一)——工具篇
- poj 图论
- ios5 选择了ARC但是不使用ARC编译,-fno-objc-arc
- Android/Java Map/Set/List....
- 修改注册表设置程序启动项
- 18.n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始,
- 测试驱动的iOS开发
- webview各种点,放大,进度
- 推荐博客规则、博客积分规则、博客排名规则、博客专家分类、博客专家申请规则、博客勋章、博客专栏、博客搬家