IDA Pro 6.6 反汇编程序实例
来源:互联网 发布:借贷本质知乎 编辑:程序博客网 时间:2024/05/17 22:23
IDA Pro是一款强大的反汇编软件,特有的IDA视图和交叉引用,可以方便理解程序逻辑和快速定位代码片断,以方便修改。
**IDA视图**
示例程序
下面会通过修改示例程序的输出字符串,来讲解如何使用IDA Pro。
#includemain(){ int n; scanf ("%d",&n); if (n > 0) printf("a > 0"); //后面会用IDA Pro把'a'改成'n' else printf("n < 0");}
编译后的程序下载:demo
运行IDA Pro
运行IDA Pro,并使用PE文件的方式打开示例的test.exe文件。IDA Pro会新建一个工程,并开始反汇编程序。反汇编完成后,在[IDA-View]窗口中,可以看到程序逻辑的树形图,如下:
树形图把条件分支清晰地显示出来了。左下角有IDA视图的缩略图,在上面点击可以快速定位到视图的指定位置。 IDA的View有几个按钮对定位代码很重要,如下图所示:
从上到下分别是:
Open exports window:打开导出窗口
Open import window:打开导入窗口
Open names window:函数和参数的命名列表
Open functions window:程序调用的所有函数窗口
Open strings window:打开字符串显示窗口,会列出程序中的所有字符串,该窗口有助于你通过程序的运行输出逆向找出对应的代码片断。
定位代码片断
假设我们现在接到个任务,需修正程序,把输出“a > 0”修正为“n > 0”。示例程序比较简单,直接看IDA视图我们就能找到需修改的代码片断,但实际处理时,可能程序有几m大,通过一个个看IDA视图已没法有效找到相关的执行代码片断,这时怎么办? 使用字符串窗口和IDA强大的交叉引用! 点击View里的[Open strings windows]按钮,可以看到如下的程序字符串:
程序的字符串较少,可以很快地看到我们需要的字符串“a > 0”在数据段00403003位置。假如字符串多到已不能肉眼定位查找,因为字符串窗口是没有查找功能的,这时需要借助其他的文本编辑器,如notepad,editplus等。在字符串窗口内右键,选择菜单[copy]命令,会把字符串窗口的所有内容复制到剪贴板,再粘贴到记事本中查找就可以了。 双击字符串窗口的该行字符串,会跳转到IDA视图的00403003位置,如下图所示:
单击’a > 0’中的a,a会高亮,
最后定位的代码片断,上图显示的汇编指令即是我们要找的代码片断,这时点击[Hex View-A]窗口,会切换到二进制浏览模式,并高亮了汇编代码的二进制格式指令,如下图所示:
已找到需修改的代码片断,剩下的只需把a改成n。
修改程序文件
在IDA中,可以在[Hex View-A]窗口右键选择[Edit]来修改二进制指令。修改后通过右键选择[Commit Change]可以看到修改后的IDA视图。但需要注意的是,这种方式的修改并不会更新原始程序文件,实际只是修改了IDA的项目文件!IDA中只适合做一些验证性的修改,确保正确后再使用其他工具修改原始程序文件。 在IDA中验证修改正确后,可以使用UltraEdit或Hex Workshop来修改原始程序文件。下面会以UltraEdit为例来说明如何修改。
下载好UltraEdit,用UltraEdit直接打开程序文件,如上图所示,UltraEdit会以16进制模式显示程序文件。UltraEdit显示的地址和IDA显示的地址是不同的,为了找到对应代码片断在UltraEdit中的实际地址,需要使用到UltraEdit的查找功能。在IDA中复制需修改的16进制模式显示的指令,在UltraEdit中打开查找,粘贴并查找该16进制字符串,UltrEdit会很快定位到该指令处,如下图所示:
找到了UltraEdit的对应位置 现在我们要把“a > 0”改成“n > 0”,a对应的ASCII码是61,而n对应的ASCII码是6E,只需把61改成6E就可以了,修改后保存。
再次运行,可以看到结果已改变!
示例只是修改了字符串,只需更改数据段内容就可以了,不用更改指令。假如需要更改指令,需要参考指令集的指令操作表写出对应指今的16进制形式,再修改。
- IDA Pro 6.6 反汇编程序实例
- 利用IDA Pro反汇编程序
- 反汇编分析工具(HexRays IDA Pro)
- IDA pro脱壳实战过反调试
- 反汇编IDA之路1(IDA pro 学习)
- 反汇编分析工具IDA Pro的可视化插件使用方法
- 源码阅读SourceInsight与静态反汇编IDA Pro
- 自学 IDA PRO 反汇编so 的血泪史
- IDA Pro的使用(1)反汇编
- IDA PRO 静态反汇编与OllyDbg动态调试实战技巧汇总
- IDA PRO 静态反汇编与OllyDbg动态调试实战技巧汇总
- JAVAP 反汇编程序
- (转)IDA Pro 简介
- HexRays IDA Pro
- IDA PRO使用
- IDA Pro简介
- IDA Pro 基础学习
- Ubuntu安装ida pro
- android AlertDialog
- java字符串拼接小结
- tar打包和压缩并用
- python类-基础
- MC, MCMC, Gibbs采样 原理&实现(in R)
- IDA Pro 6.6 反汇编程序实例
- android spinner下拉框
- The Linux Programming Interface 14 File Systems 文件系统
- 机器学习(3)线性回归sklearn.linear_model.LinearRegression
- Vulkan编程指南翻译 第六章 着色器和管线 第4节 执行工作
- Vulkan编程指南翻译 第六章 着色器和管线 第5节 在着色器中访问资源
- 考研复试系列——第十节 字符串问题
- 欢迎使用CSDN-markdown编辑器
- 程序员必会技能系列(2)git的使用-1