堆栈认知——逆向IDA工具的基本使用

本文详细介绍了IDA工具的使用,包括文件的打开与关闭、窗口介绍、反汇编及十六进制显示、硬编码查看、跳转指令、搜索指令、修改名称、创建和修改结构体、注释方式以及交叉引用功能。这些基本操作对于逆向工程初学者非常实用。
摘要由CSDN通过智能技术生成

参考:逆向-IDA工具的基本使用
地址:https://qingmu.blog.csdn.net/article/details/118862881

1、文件的打开与关闭

  • 1、F5反编译成C语言
    在这里插入图片描述

  • 2、关闭选项

在这里插入图片描述
IDA生成的数据库文件会打包成一个文件,下次使用就不需要打开源文件了,只需要打开这个数据库文件即可。第三个和这个类似
在这里插入图片描述
第一个选项会生成四个文件

在这里插入图片描述
当IDA很大的时候,这个选项会把很多不用的内存释放掉,保证文件占用的空间很小
在这里插入图片描述
关闭的时候此次做的操作不保留。IDA中唯一回退的方式。

2、窗口介绍:图形 文本 其他窗口

2.1、图形界面:

在这里插入图片描述

2.2、文本界面:

在这里插入图片描述
图形界面与文件界面的切换使用空格键

2.3、反汇编窗口

在这里插入图片描述
进入IDA的默认窗口

2.4、 十六进制窗口

在这里插入图片描述

2.5、 文件使用的模块(函数)

在这里插入图片描述
查看文件使用了哪些模块(函数),其实是根据导入表生成的

2.6、文件导出的模块(函数)

在这里插入图片描述

2.7、结构体(IDA识别出来的)

通过符号表识别出来的
在这里插入图片描述

2.8、枚举

在这里插入图片描述

3、显示硬编码(ACDU)

在这里插入图片描述
在这里插入图片描述
输入框中填写硬编码的长度,最大16。(我们的可执行程序都是由硬编码组成)。我们改成10看看效果,如下图:

在这里插入图片描述
图中的部分就是硬编码。每一行硬编码对应着一行汇编代码。

随便用一段代码举例说明,原始如下:
在这里插入图片描述

3.1.1、A

把当前的数据按照字符串来显示

转换成字符串:
在这里插入图片描述

3.1.2、C

把当前的数据按照代码来显示
在这里插入图片描述

3.1.3、D

把当前的数据用按照数据来显示
在这里插入图片描述
按一下表示单字节显示,按两下双字节显示,按三下表示四字节显示,按三下表示八字结显示

3.1.4、U

把当前的数据按照未定义(原始的字节)来显示
在这里插入图片描述

4、跳转指令 G

按一下G
在这里插入图片描述
在输入框中输入地址就可以进行跳转。

5、搜索指令(ALT+T)

按下alt+t:

在这里插入图片描述

6、修改名称(N)

当我们分析一段汇编的时候,分析完成需要对一个函数或一个变量我们有自己的理解,我们需要对它改成我们想要的名称时按N来修改。

例如:

在这里插入图片描述
按N修改:
在这里插入图片描述

在这里插入图片描述

7、创建结构体 修改全局变量 修改局部变量

7.1、创建结构体

在我们使用IDA的时候,我们对一段汇编代码进行解读的时候,发现其为一个结构体,此时IDA并未识别出来,那么我们可以在Structures文件中增加一个结构体。

点击Edit 选择 add struct type。
在这里插入图片描述
此时会让我们输入结构体的名称,我们随便输入一个,如下:
在这里插入图片描述
在这里插入图片描述
此时AAA结构体已经出来了,那么如何向结构体中增加整数,字符,数组,结构体呢?

操作如下:

添加普通类型(db、dw、dd):
选中我们创造的结构体第一哥成员,按D

在这里插入图片描述

此时就添加了一个成员,此时field_0的类型为一个字节,我们选中db然后按D就可以更改其字节数(一字节,两字节,四字节)。

此时名称我们也需要修改成我们想要的名称,怎么办呢?

如上面讲解,按N就可以修改

在这里插入图片描述

此时名称修改成了a,宽度修改成了两字节。

添加结构体类型
如上述方式先按D添加一个成员。然后选中成员按下alt+q就可以识IDA已有的所有结构体,添加自定义结构体需先自己添加好,如图:

在这里插入图片描述
随便选择一个即可。修改结构体的名称和上述一样,按下N即可。

添加数组

如上述方式先按D添加一个成员。
在这里插入图片描述
右键我们的成员(db),选择数组,然后修改数组的大小即可。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
修改名称一样按N修改,我们修改为C,此时就定义了一个数组名称为C,类型为dw(双子节),长度为10.

在这里插入图片描述
此时我们就在IDA中创建了一个结构体。我们就可以在我们的代码中引用这个结构体了。
在这里插入图片描述

7.2、修改全局变量

比如说我们选中一个全局变量,我们要修改其为我们刚刚添加的结构体,怎么做呢?

很简单选中这个变量,按下alt+q,此时会列举出这个IDA所有识别出来的结构体,选择我们刚刚添加的结构体即可。

改完他的类型,IDA会自动给我们生成一个名字,这个名称我么也可修改,并且后续用到的这个变量的地方都将修改成我们修改的名称。

7.3、修改局部变量

当我们修改局部变量的时候,快捷键是T,我们需要找到这个结构体并选中结构体的成员点击确定就可以修改了。(IDA会按照偏移把相应的值列出来)
在这里插入图片描述
在这里插入图片描述
我们逆向的过程,就是给函数起名字,分析结构体,分析出结构体类型,分析出全局变量类型,分析出参数类型,当我们把这些全都分析好,整个逆向的过程也差不多了。

8、注释

注释有三种方式

8.1、分号注释

在一句代码的末端按下分号(;)会跳出一个文本框,此时我们输入注释,则就会在代码的末尾添加上注释。
在这里插入图片描述
这么做的话,他不仅会在本行的末尾添加注释,也会在其他跳转到本行的地方也会添加一段注释。有利有弊。

8.2、SHIFT加分号注释

上面我们说了分号注释他不仅会在本行的末尾添加注释,也会在其他跳转到本行的地方也会添加一段注释。那么我们不希望在跳转的地方也显示注释怎么办呢?

shift + ; 注释就可以在其他跳转到本行的地方不会添加注释了

8.3、函数注释

那么,我们在向写C语言函数的时候,我们想在函数的前面加上注释(函数名,参数、返回值等信息)的时候,我们选中函数名,按下分号,此时就可以添加注释了。
在这里插入图片描述

9、交叉引用

比如说我们遇到一个函数,我们想看他还被谁引用了,怎么做呢?

当然在函数名的右下角也有显示,但是补全,如下:
在这里插入图片描述
那我们如何查看完整的引用呢?

首先选中函数名,点击上方菜单栏的的view,选择open subviews,在选择cross reference,就可查看所用引用这个函数的地方了。

在这里插入图片描述
在这里插入图片描述
当然我这里找的是main韩式只有一个。

10、总结

IDA的功能还有很多很多,掌握上面流出的一些基本操作,基本的逆向的操作基本是没有问题的,如果还有其他欢迎补充,谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

行稳方能走远

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值