[Reverse]IDA使用保姆级指南

[Reverse]IDA使用保姆级指南

IDA

软件介绍

IDA会出现两个图标,其中X64是用来反编译64位程序的,而X32是用来反编译32位程序的。

如何查看程序位数

常用的软件有exeinfope.exe

或者使用IDA软件本身查看

如何开始逆向

使用ida打开程序后会出现界面

通常情况下,这个界面可以直接使用ok来继续,该界面主要是选择什么模式去解析该软件。

进入IDA

IDA的主要界面如上所示

左侧窗口为函数列表窗口,右侧窗口为IDA反汇编所得的汇编代码,最下侧窗口为文件在反汇编过程中的信息。

菜单栏

菜单栏名称用途File用于打开、新建、装载、保存、关闭一个文件或是数据库Edit用于编辑反汇编代码Jump用于跳转到某个位置、地址或是一个窗口Search用于搜索代码段、数据、错误等等View用于显示文件内容的显示方式Debugger调试器,集成在IDA中Lumina对元数据进行各种操作Options可以进行一些个性化的设置Windows各种窗口基本操作

反汇编代码

在IDA中我们进来后首先看到的界面如下

通过快捷键F5或者TAB来查看源代码

通过TAB切换回原来的汇编界面

在如上的汇编界面使用空格可以切换为文本模式

该模式会显示出地址栏以及更详细的很多信息

查看程序中出现的所有字符串

分析一个程序最直接最方便的方式就是先查看程序存在哪些字符串,从字符串中我们可以找到关于程序的线索,因此我们需要使用“SHIFT + F12”快捷键打开程序的字符串调用窗口。

通过字符串或者函数交叉引用上级调用

大部分字符串和函数基本都存在一个被调用的关系,我们找到了关键字符串,如何定位到调用该字符串的函数呢,显然就是通过交叉引用。

示例程序中字符窗口如下

看到需要我们输入flag的字符串,我们双击该字符串

随后点击该字符串的变量名称,按“CTRL + X”

出现的窗口中该处便是调用的位置了,我们点击OK跟踪过去。

就可以定位到调用该字符串的位置了,调用函数的操作方法与字符串一致,点击函数头的函数名称就按下快捷键就可以。

更改变量或者函数名称

在我们逆向代码的过程中通常会看见各种以地址命名的函数,这种函数看起来十分的麻烦,因此我们需要使用“N”这个快捷键来更改函数或者变量的名称

操作方法

选中该函数后按N

输入需要更改的函数名称后按ok即可

更改变量类型

进入IDA的时候IDA经常会自己定义一个变量名称,但是IDA不能保证变量类型一定正确,此时就需要我们通过代码逻辑等等去判断变量正常的数据类型

操作方法

我们选中变量的数据类型按快捷键"Y"

更改int为任意类型即可

更改代码类型

通常IDA可能会将正常的代码识别成数据,因此我们需要手动更改代码的类型来让我们能过够看到的代码变正常

操作方法

通过使用快捷键C来将数据改成代码

同理,如果你需要将代码转化为数据,需要使用“D”来转换

声明未声明的代码

未声明的代码特征如上所示,地址段是爆红的,这种代码段如果我们直接使用f5会发现IDA没有任何反应,因此,我们需要选中所有的需要声明的代码,或者选中该段代码所代表的函数的函数头,按“P”进行一个声明。

声明完成后,会发现函数头部出现了寄存器的标识,此时使用F5正常了

动态调试

动态调试又分为本地调试和远程调试。其中本地调试可以调试的就是本地能够运行的程序,如果本地无法运行的程序,那我们需要远程连接至虚拟机或者服务器进行调试

本地调试

在IDA中,反汇编界面的左边通常会出现一个个断点。

这些断点的作用是在执行程序的过程中插入一个int 9来执行一个终端程序的作用,那么我们断点下在哪儿就可以直接将程序的运行过程断在哪儿。

如上图所示,我们断下断点后,按下F9进行一个调试。

启动之后会发现栈空间以及寄存器的内容都会出现在右边的显示框中。此时我们可以通过按F8来进行单步运行

效果如上所示.

跳跃

在我们运行程序过程中,通常会遇到循环,但是有些循环过于庞大,如果我们使用F8一直单步进入的话,则过程将会十分的痛苦,因此我们可以在程序的运行过程中下另一个断点,然后直接按“F9”来跳跃到该断点。

效果如下图所示。

远程调试

在IDA的目录中存在一个叫做dbgsrv的文件夹

里面内容如下:

此处我们展示的是Linux环境下的远程调试

我们需要将上图中框住的两个程序放入我们的虚拟机中,其中后缀带有64的是64位的远程调试需要用到的环境,而不带的是32位

注意首先运行该程序需要使用chmod +x 命令赋予该程序权限,然后执行该文件

显然这就开始监听了。

此时我们还需要使用ifconfig查看自己的ip

依然是下断点然后按“F9”

选择Remote Linux debugger然后点击ok

输入虚拟机的IP地址点击ok

操作方法和上面的本地调试一致

相关阅读

365提款验证地址是什么 莫里斯·韦兹的艺术不可定义论

莫里斯·韦兹的艺术不可定义论

365bet导航 电信手机卡如何查话费

电信手机卡如何查话费

365bet官网体育投注 率土之滨周年庆卡包有什么武将 具体介绍

率土之滨周年庆卡包有什么武将 具体介绍

365bet官网体育投注 滴滴车主顺风车注册流程 怎么加入滴滴顺风车平台?

滴滴车主顺风车注册流程 怎么加入滴滴顺风车平台?

365提款验证地址是什么 机甲军团为什么下架

机甲军团为什么下架

365提款验证地址是什么 LOL跳段机制全面解析:新赛季优化令玩家兴奋!

LOL跳段机制全面解析:新赛季优化令玩家兴奋!

365提款验证地址是什么 顿的成语

顿的成语

365提款验证地址是什么 “懒惰”对人类科技进步的影响

“懒惰”对人类科技进步的影响

365bet导航 解决无法卸载Oracle的问题

解决无法卸载Oracle的问题