[Reverse]IDA使用保姆级指南

IDA

软件介绍

file
file

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

如何查看程序位数

常用的软件有exeinfope.exe

file

或者使用IDA软件本身查看

file

如何开始逆向

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

file

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

进入IDA

file

IDA的主要界面如上所示

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

菜单栏

file

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

基本操作

反汇编代码

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

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

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

file

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

file

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

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

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

file

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

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

示例程序中字符窗口如下
file

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

file

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

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

file

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

更改变量或者函数名称

file

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

操作方法

选中该函数后按N

file

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

file

更改变量类型

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

操作方法

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

file

更改int为任意类型即可

更改代码类型

file

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

操作方法

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

file

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

声明未声明的代码

file

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

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

动态调试

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

本地调试

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

file

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

file

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

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

效果如上所示.

跳跃

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

效果如下图所示。

file

远程调试

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

file

里面内容如下:

file

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

file

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

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

file

显然这就开始监听了。

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

file

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

file

选择Remote Linux debugger然后点击ok

file

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

file

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

  • 27
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值