张家界网站建设dcwork,闽侯县住房和城乡建设局官方网站,上蔡网站建设,网站制作复杂吗参考#xff1a;逆向-IDA工具的基本使用 地址#xff1a;https://qingmu.blog.csdn.net/article/details/118862881 目录1、文件的打开与关闭2、窗口介绍#xff1a;图形 文本 其他窗口2.1、图形界面#xff1a;2.2、文本界面#xff1a;2.3、反汇编窗口2.4、 十六进制窗口… 参考逆向-IDA工具的基本使用 地址https://qingmu.blog.csdn.net/article/details/118862881 目录1、文件的打开与关闭2、窗口介绍图形 文本 其他窗口2.1、图形界面2.2、文本界面2.3、反汇编窗口2.4、 十六进制窗口2.5、 文件使用的模块函数2.6、文件导出的模块函数2.7、结构体IDA识别出来的2.8、枚举3、显示硬编码ACDU3.1.1、A3.1.2、C3.1.3、D3.1.4、U4、跳转指令 G5、搜索指令ALTT6、修改名称N7、创建结构体 修改全局变量 修改局部变量7.1、创建结构体7.2、修改全局变量7.3、修改局部变量8、注释8.1、分号注释8.2、SHIFT加分号注释8.3、函数注释9、交叉引用10、总结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、搜索指令ALTT
按下altt 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添加一个成员。然后选中成员按下altq就可以识IDA已有的所有结构体添加自定义结构体需先自己添加好如图 随便选择一个即可。修改结构体的名称和上述一样按下N即可。
添加数组
如上述方式先按D添加一个成员。 右键我们的成员db选择数组然后修改数组的大小即可。 修改名称一样按N修改我们修改为C此时就定义了一个数组名称为C类型为dw双子节长度为10. 此时我们就在IDA中创建了一个结构体。我们就可以在我们的代码中引用这个结构体了。
7.2、修改全局变量
比如说我们选中一个全局变量我们要修改其为我们刚刚添加的结构体怎么做呢
很简单选中这个变量按下altq此时会列举出这个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的功能还有很多很多掌握上面流出的一些基本操作基本的逆向的操作基本是没有问题的如果还有其他欢迎补充谢谢。