逆向工具之IDA的使用

本文介绍了IDA Pro这一静态反编译软件,包括其特点、支持的CPU指令集等。详细讲解了IDA Pro的使用方法,如打开和关闭文件、窗口介绍、切换界面、显示硬编码的ACDU指令、跳转和搜索指令、重命名、创建结构体、添加注释以及查看交叉引用等内容。

交互式反汇编器专业版(Interactive Disassembler Professional),人们常称其为IDA Pro,或简称为IDA。是目前最棒的一个静态反编译软件,为众多0day世界的成员和ShellCode安全分析人士不可缺少的利器!IDA Pro是一款交互式的,可编程的,可扩展的,多处理器的,交叉Windows或Linux WinCE MacOS平台主机来分析程序, 被公认为最好的花钱可以买到的逆向工程利器。IDA Pro已经成为事实上的分析敌意代码的标准并让其自身迅速成为攻击研究领域的重要工具。它支持数十种CPU指令集其中包括Intel x86,x64,MIPS,PowerPC,ARM,Z80,68000,c8051等等。

IDA Pro 7.0破解版:http://www.32r.com/soft/42075.html(内含安装步骤)

IDA打开文件

在这里插入图片描述
打开IDA后,把我们要分析的文件拖到IDA就行。
在这里插入图片描述

IDA关闭文件

当我们用IDA打开要分析的文件时,在这个文件下方会同时生成4个数据库文件,这些文件都是当前的IDA程序。
在这里插入图片描述

关闭IDA的时候要注意:
在这里插入图片描述

IDA窗口介绍

切换图形界面和文本结构界面

这是一个图形化的界面(CTRL+滚轮可以控制大小)
,有时还有流程图,如果不喜欢这个图形结构,
可以按住空格,就能看到一个文本结构的界面
在这里插入图片描述
按空格后:看到一个文本结构的界面(图形结构——》文本结构),再按一次空格又可以回到图形结构界面
这样的界面看上去就全是代码了,很多做逆向分析的人更喜欢这个界面
在这里插入图片描述

在这里插入图片描述
导航条:       一个PE文件包括数据区,代码区,常量区等,这些不同的块,不同的颜色就代表不同的块
IDA View-A:反汇编窗口,打开程序的时候,一般都是停留在反汇编窗口
Hex View-1:想看当前程序的十六进制文件,可以点击这个窗口HEX
Structures:  结构体
Enums:       枚举类型
Imports:       如果想看当前程序用了哪些模块,用了哪些模块的哪些函数,可以点击imports
Exports:       想看当前程序导出了哪些函数,可以点击exports

结构体是由一批数据组合而成的一种新的数据类型。组成结构型数据的每个数据称为结构型数据的“成员”。

shift+F12可以转到字符串窗口
ctrl+e可以到达程序开始的点(start函数)
刚用IDA打开文件,汇编前面没有地址,怎么打开地址呢?Options——》general——》Disassenbly——》右半边的Line prefixes(graph)【行前缀(图形)】
F5或者点tab键——》都可以把汇编代码反编译成类C代码(类似于C语言的代码,也叫做伪代码)
双击后进入某一个界面,按ESC可以退回
快捷键X或者ctrl+X:交叉引用(看看谁用了这个字符串/地址)
选择某函数,按N:重命名(重要!),要养成重命名的习惯。

怎么知道一个文件是用什么语言写的,有没有加壳?用工具DetectItEasy或者exeinfo PE或者PEiD

静态分析用IDA,动态调试用x64dbg(调试32或64位的)或者是Ollydbg(调试32位的)

显示硬编码——>ACDU指令

任何的一个可执行文件,最终都是由硬编码组成(准确来说是由二进制组成),二进制里面包含了很多CPU能识别的指令,这些指令称为硬编码

把当前文件的硬编码指令显示出来:
选择options——》点击general
在这里插入图片描述
exe程序在指令部分都是由这些硬编码组成,每一行硬编码都对应一个具体的汇编代码,所以IDA替我们把这些硬编码转换为汇编代码。
在这里插入图片描述

A指令

把当前的数据用字符串的形式来显示

C指令

把当前的数据安照代码(code)的形式来显示

D指令

把当前的数据用数据(data)的形式来显示

U指令

把当前的数据用普通的原始字节的形式来显示(undefined未定义)
在这里插入图片描述

ACDU指令:某个数据它显示的不合理,可以告诉IDA你以什么形式来对这个数据进行显示

现在我想以字符串的形式来显示它:用A指令
在这里插入图片描述
现在我想以数据的形式来显示它:用D指令
在这里插入图片描述
按一次d会以db的形式显示,再按一次会以dw形式显示,再按一次d会以dd的形式显示

现在我想以代码的形式来显示它:用C指令
在这里插入图片描述

如果不想对它进行定义,按U
在这里插入图片描述

跳转指令:G(go)

在实际逆向过程中,经常需要进行跳转
在这里插入图片描述

搜索指令 ALT+T

在这里插入图片描述

N指令

改名字,这个指令可以说是最重要的指令
真正的逆向分析就是要弄清函数做了什么事,真正起名字的过程就是逆向分析的过程
真正的逆向人员是不会用F5直接把汇编变成C语言的
F5是不准确的,它识别不了的地方他会省略掉,F5生成的代码没有任何可读性,远远没有直接看汇编代码更加清晰。
一个真正的逆向分析就是一个起名字的过程
在这里插入图片描述

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

在我们分析函数的过程中,可能看到了某处用到了一个结构体(我们自己分析出来的结构体,IDA本身也能自己替我们识别出来一些系统层面的结构体)
假如我们自己分析出来一个结构体,但是IDA里面还没有这个结构体,我们就可以点开structures这个窗口,在这个窗口新增一个结构体
步骤:打开structures这个窗口——》Edit——》Add struct type
在这里插入图片描述
在这里插入图片描述
那么想在结构体里面添加成员,选择按D,就会给我们新增一个成员:
在这里插入图片描述
这个成员的名字和类型都是可以改的(改名字用N,改类型用D)

万一这个成员是一个结构体怎么办,不是一个普通的dword,或者是dw?
选中这个类型ALT+Q——》就会列出当前ID识别出所有的结构体:
在这里插入图片描述
第三个结构体是一个DWORD数组,怎么办:
改为dd,选中后单击右键,选择数组array,定义数组长度
在这里插入图片描述
局部变量选择结构体的快捷键是P
全局变量选择结构体是ALT+Q


注释

三种常用的注释:
1、直接按分号; 会弹出一个窗口,在窗口中就可以直接写注释的内容了(它引用 的地方会出现副本)
2、按冒号:它引用 的地方不会出现副本
3、希望每次分析完一个函数以后,能在上面写一个注释
针对函数的注释:选中当前函数的函数名,选中它,按分号,就可以直接写注释了(用来描述当前函数的基本特征)

交叉引用

想看引用某个函数的所有地方,点中函数名——》View——》Open subviews——》Cross reference
在这里插入图片描述
点开后出现一个界面,这个界面会出现所有引用这个函数的其他的地方

某一个数据,全局变量也可以安装这个方法进行查看

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值