ida反编译工具

ida反编译工具

菜鸟的逆向工程学习之路——逆向工具IDA的使用

本期向大家详细介绍IDA的使用。

交互式反汇编器专业版(Interactive Disassembler Professional),人们常称为 IDA Pro。就其本质而言,IDA 是一种递归下降反汇编器,是个逆向分析的神器之一,可以分析x86、x64、ARM、MIPS、Java、.NET等众多平台的程序代码,是安全分析人士不可缺少的利器!

启动IDA

只要启动 IDA,你都会看到一个初始欢迎界面,上面显示你的许可证信息摘要。初始屏幕消失后,IDA 将显示另一个对话框,为你进入桌面环境提供 3 种选项

在这里插入图片描述

New(新建)。选择 New 将启动一个标准的 File Open 对话框来选择将要分析的文件。根

据选择的文件,IDA 会显示另外一个或多个对话框,你可以选择特定的文件分析选项,

然后再加载、分析和显示该文件。

Go(运行)。Go 按钮终止加载过程,使 IDA 打开一个空白的工作区。这时,如果要打开

一个文件,可以将一个二进制文件直接拖放到 IDA 工作区,或者使用 File 菜单中的某个

选项打开该文件。

Previous(上一个)。使用 Previous 按钮可以打开其下“最近用过的文件”列表中的一个

文件。“最近用过的文件”列表中包含 IDA 的 Windows 注册表项的 History 子项中的值。


IDA 文件加载

打开一个新文件时,会看到如图所示的加载对话框。

在这里插入图片描述

IDA 会生成一个可能的文件类型列表,并在对话框顶部显示这个列表。这个列表中将显示最适合处理选定文件的 IDA 加载器。IDA 通过执行 loaders 目录中的每一个文件加载器,来确定能够识别新文件的加载器,从而建立了这个列表。

如果 IDA 提供几个加载器,这时选择默认选项是一个不错的策略,除非你拥有推翻 IDA 决定的信息。

简言之:选默认

在这里插入图片描述

同样的,选默认


IDA关闭数据库

任何时候你关闭一个数据库,无论你是完全关闭 IDA,还是切换到另一个数据库,IDA 都将

显示一个 Save database(保存数据库)对话框,如图

在这里插入图片描述

如果这是你初次保存一个新建的数据库,IDA 会用扩展名.idb 替换输入文件的扩展名,从而生成新数据库的文件名,例如,example.exe 会生成名为 example.idb 的数据库。如果输入文件没有扩展名,IDA 会将.idb 附加到输入文件名称后面,构成数据库名称,如 httpd 生成 httpd.idb。

下面简要说明可用的保存选项及其意义。

Don’t pack database(不打包数据库)。这个选项仅仅刷新对 4 个数据库组件文件所做的更改,在关闭桌面前并不创建 IDB 文件。在关闭数据库时,不建议使用这个选项。ida反编译工具

Pack database(Store)[打包数据库(存储)]。选择 Store 选项会将 4 个数据库组件文件存到一个 IDB 文件中。之前的任何 IDB 不经确认即被覆盖。Store 选项不使用压缩。创建 IDB 文件后,4 个数据库组件文件即被删除。

Pack database(Deflate)[打包数据库(压缩)]。Deflate 选项等同于 Store 选项,其唯一的差别在于数据库组件文件被压缩到 IDB 归档文件中。

Collect garbage(收集垃圾)。如果请求垃圾收集,IDA 会在关闭数据库之前,从数据库中删除任何没有用的内存页面。在选择这个选项的同时,选择 Deflate 选项可创建尽可能小的 IDB 文件。通常,只有在磁盘空间不足时才选择这个选项。

DON’T SAVE the datebase(不保存数据库)。你可能会感到奇怪,怎么会有人不保存自己的工作呢!要知道,要想放弃你当前对数据库所做的更改(上次保存之后),使用这个选项是唯一的办法。选择这个选项时,IDA 会删除 4 个数据库组件文件,保留现有的未经修改的 IDB 文件。使用这个选项类似于在使用 IDA 时应用了撤销或还原功能。


IDA常用窗口简单介绍

我们首先以BUUCTF网站的easyre题介绍

函数窗口(Functions window)

左侧是函数窗口,会将程序中所有的函数显示出来

在这里插入图片描述

我们分析一道题目的时候一般是先从主函数开始

但是main一般不会显示出来,我们这时可以先搜索,用 Ctrl+F 快捷键

然后main,即可跳转到main函数里

在这里插入图片描述


汇编窗口(IDA View)

现在可见的是汇编窗口,展示的汇编代码,如图所示的是图形模式

在这里插入图片描述

我们可以按右键 选择 Text view 或者 空格键 进入文本模式

展示了一些地址和汇编代码

在这里插入图片描述


“十六进制窗口”(Hex View)

习惯讲是“十六进制窗口”,但将这个窗口称做“十六进制窗口”其实是一种误称,因为IDA十六进制窗口可以配置为显示各种格式,并可作为十六进制编辑器使用。默认情况下,十六进制窗口显示程序内容和列表的标准十六进制代码,每行显示16个字节,以及其对应的ASCII字符。和在反汇编窗口中一样,用户也可以同时打开几个十六进制窗口

在这里插入图片描述


导航栏

彩色的水平带是 IDA 的概况导航栏,也叫做导航带。导航带是被加载文件地址空间的线性视图。默认情况下,它会呈现二进制文件的整个地址范围。你可以右击导航带内任何位置

在这里插入图片描述

在导航带上,会有一个细小的当前位置指示符(默认为黄色)指向与当前反汇编窗口中显示的地址范围对应的导航带地址。将光标悬停在导航带的任何位置,IDA 会显示一个提示,指出其在二进制文件中的对应位置。

简单来说,点到哪里跳到哪里

而不同的颜色代表了不同的数据段,比如说data段,text段等


伪代码窗口(Pseudocode)

对着函数点F5即可弹出伪代码窗口

在这里插入图片描述

是将汇编语言,变成伪代码,即展示了一些类c代码


先简单介绍这么多窗口,其余窗口在实际用到时再介绍学习。

打开所有的函数窗口的方式

View > Open subviews > …

在这里插入图片描述

快捷键 / 一些操作的介绍

Shift+F12

可以打开字符串窗口(String window)
在这里插入图片描述

这个窗口展示了所有的字符串,我们可以在这里查找一些关键的字符串,我们也可以通过双击某一特殊字符串,弹到汇编窗口(IDA View)中该字符串对应的位置中去。

Ctrl+X(交叉引用)

我们可以通过这个操作,可以判断哪些函数引用了这个字符串或数据

在这里插入图片描述

ok,便会跳转到相应地方

G(跳转地址)

前面说过汇编窗口界面,左边是一些地址,右边是汇编代码

我们在浏览这些代码的过程中,往下往上翻页,可能找不到原来的地方了,或者有时候,你清楚地知道你想要导航的目的地址,但反汇编窗口中并没有可供双击导航的名称。这时我们就可以通过该操作跳转到相应的位置。

在这里插入图片描述

Alt+T(文本搜索)

IDA文本搜索相当于对反汇编列表窗口进行子字符串搜索。

在这里插入图片描述

它将搜索限制于仅查找完整的词,并且能够匹配反汇编行中的任何完整的词,包括操作码助记符或常量

选择Find all occurences(查找所有结果),IDA将在一个新的窗口中显示搜索结果,你可以根

据搜索条件轻松导航到任何一个匹配结果。

N(重命名)

对于一些函数名,我们可以改为方便我们理解的函数名在这里插入图片描述

如果不小心改错了怎么办?

Ctrl+Z(撤回操作)

撤回到上一步

/ ( 注释操作)

在方框内添加注释,程序员必备,不多讲

在这里插入图片描述


我们下面用第二道题,reverse1来演示

这道题首先搜索main函数,没找到,怎么办呢?

我们用之前讲的查找字符串(shift+f12)

发现一些有用的信息

在这里插入图片描述

再根据我们之前讲的,定位,交叉引用,编译伪c代码,可以找到我们关键需要分析的地方

在这里插入图片描述

我们会发现在上述代码中,自带了一些注释,有时候会过多,可能会影响我们分析

(隐藏系统注释)

我们可以用这种方法隐藏干扰我们的一些自带的注释。

D (转换成数据形式)

我们在分析数据的时候,有时候需要这样做,将字符串转换成数据

A(转换成字符形式)

转换成字符串

C(转换成汇编代码)

转换成汇编代码

U (转成原始字符)

转换成最原始的状态

Shift+E (导出数据)

如果有想导出的数据,选中然后shift+e,选择你想导出的方式

在这里插入图片描述

便会导出

数据转化形式

我们在分析伪代码的时候,有时候要对一些数据进行类型转化

右键数据,可以产生如下选项

在这里插入图片描述

Hexadecimal 十六进制

Octal 八进制

Char 字符

Enum 枚举


至此,IDA一些常用的窗口与功能已经介绍完毕,未介绍的将在遇到实际应用场景时再行学习。

今天的文章
ida反编译工具分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/137849.html

(0)
编程小号编程小号
上一篇 2024-08-31 18:30
下一篇 2024-08-31 19:06

相关推荐