IDA Pro 6.6 反汇编程序实例

IDA Pro是一款强大的反汇编软件,特有的IDA视图和交叉引用,可以方便理解程序逻辑和快速定位代码片断,以方便修改。

这里写图片描述

                            **IDA视图**

示例程序

下面会通过修改示例程序的输出字符串,来讲解如何使用IDA Pro。

#include

main()
{
    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进制形式,再修改。

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: IDA Pro 是一款用于逆向工程的软件,可以帮助分析和调试二进制文件。Ubuntu 16 是一种Linux操作系统,可以在PC和服务器领域中使用。IDA Pro 可以在 Ubuntu 16 上运行,提供强大的反汇编和分析功能。 安装IDA Pro 在Ubuntu 16上非常简单。首先,我们需要从IDA Pro官方网站上下载适用于Linux的安装包。然后,打开终端,使用命令行将下载的安装包解压缩。解压后,我们将获得一个可执行文件,可以通过命令行运行IDA Pro。 运行IDA Pro后,我们可以使用其直观的用户界面来加载二进制文件,并对其进行反汇编和分析。通过IDA Pro,我们可以查看二进制代码、函数和变量,进行跟踪和调试,以及修改和重建程序。 在Ubuntu 16上使用IDA Pro的好处是,我们可以利用Linux操作系统的强大功能和灵活性。Ubuntu 16提供了丰富的开发工具和资源,可以与IDA Pro良好地集成,从而提供更好的逆向工程体验。 总的来说,IDA Pro 在Ubuntu 16 上的运行非常方便,并且能够为逆向工程带来便利。无论是专业的逆向工程师还是对二进制文件感兴趣的用户,都可以通过IDA Pro在Ubuntu 16上进行反汇编和分析。 ### 回答2: IDA Pro是一款功能强大的反汇编工具,能够用于分析、反编译和调试各种程序。而Ubuntu 16是一种流行的Linux操作系统。因此,ida pro ubuntu16是指在Ubuntu 16环境中使用IDA Pro的相关情况。 在Ubuntu 16上安装和使用IDA Pro相对来说比较简单。首先,我们需要获得IDA Pro的安装包,并确保安装包与Ubuntu 16的体系结构相匹配。然后,我们可以通过命令行或者图形界面运行安装包进行安装。 安装完成后,我们可以通过命令行或者桌面图标启动IDA Pro。首次启动时,我们可能需要设置一些初始配置,比如选择默认的插件、设置工作目录等。 一旦IDA Pro运行起来,我们就可以开始进行代码反汇编和分析的工作了。IDA Pro提供了诸多功能,如图形界面、交互式反编译器、调试器等。我们可以通过IDA Pro的图形界面导入待分析的程序文件,并对其进行反汇编和调试。在反汇编过程中,IDA Pro会将机器码转换为易读的汇编代码,以便我们更好地理解程序的执行逻辑。 除此之外,IDA Pro还支持插件扩展和脚本编写,我们可以根据自己的需求编写插件或使用已有插件来增强IDA Pro的功能。 综上所述,ida pro ubuntu16指的是在Ubuntu 16上安装并使用IDA Pro进行程序分析和反汇编的情况。通过IDA Pro,我们可以更深入地了解程序的执行过程,帮助我们进行逆向工程、漏洞分析等工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值