IDA会出现两个图标,其中X64是用来反编译64位程序的,而X32是用来反编译32位程序的。
常用的软件有exeinfope.exe
或者使用IDA软件本身查看
使用ida打开程序后会出现界面
通常情况下,这个界面可以直接使用ok来继续,该界面主要是选择什么模式去解析该软件。
IDA的主要界面如上所示
左侧窗口为函数列表窗口,右侧窗口为IDA反汇编所得的汇编代码,最下侧窗口为文件在反汇编过程中的信息。
菜单栏名称 | 用途 |
---|---|
File | 用于打开、新建、装载、保存、关闭一个文件或是数据库 |
Edit | 用于编辑反汇编代码 |
Jump | 用于跳转到某个位置、地址或是一个窗口 |
Search | 用于搜索代码段、数据、错误等等 |
View | 用于显示文件内容的显示方式 |
Debugger | 调试器,集成在IDA中 |
Lumina | 对元数据进行各种操作 |
Options | 可以进行一些个性化的设置 |
Windows | 各种窗口 |
通过快捷键F5或者TAB来查看源代码
在如上的汇编界面使用空格可以切换为文本模式
该模式会显示出地址栏以及更详细的很多信息
分析一个程序最直接最方便的方式就是先查看程序存在哪些字符串,从字符串中我们可以找到关于程序的线索,因此我们需要使用“SHIFT + F12”快捷键打开程序的字符串调用窗口。
大部分字符串和函数基本都存在一个被调用的关系,我们找到了关键字符串,如何定位到调用该字符串的函数呢,显然就是通过交叉引用。
看到需要我们输入flag的字符串,我们双击该字符串
出现的窗口中该处便是调用的位置了,我们点击OK跟踪过去。
就可以定位到调用该字符串的位置了,调用函数的操作方法与字符串一致,点击函数头的函数名称就按下快捷键就可以。
在我们逆向代码的过程中通常会看见各种以地址命名的函数,这种函数看起来十分的麻烦,因此我们需要使用“N”这个快捷键来更改函数或者变量的名称
操作方法
选中该函数后按N
输入需要更改的函数名称后按ok即可
进入IDA的时候IDA经常会自己定义一个变量名称,但是IDA不能保证变量类型一定正确,此时就需要我们通过代码逻辑等等去判断变量正常的数据类型
操作方法
我们选中变量的数据类型按快捷键"Y"
更改int为任意类型即可
通常IDA可能会将正常的代码识别成数据,因此我们需要手动更改代码的类型来让我们能过够看到的代码变正常
操作方法
通过使用快捷键C来将数据改成代码
未声明的代码特征如上所示,地址段是爆红的,这种代码段如果我们直接使用f5会发现IDA没有任何反应,因此,我们需要选中所有的需要声明的代码,或者选中该段代码所代表的函数的函数头,按“P”进行一个声明。
声明完成后,会发现函数头部出现了寄存器的标识,此时使用F5正常了
动态调试又分为本地调试和远程调试。其中本地调试可以调试的就是本地能够运行的程序,如果本地无法运行的程序,那我们需要远程连接至虚拟机或者服务器进行调试
在IDA中,反汇编界面的左边通常会出现一个个断点。
这些断点的作用是在执行程序的过程中插入一个int 9来执行一个终端程序的作用,那么我们断点下在哪儿就可以直接将程序的运行过程断在哪儿。
启动之后会发现栈空间以及寄存器的内容都会出现在右边的显示框中。此时我们可以通过按F8来进行单步运行
效果如上所示.
跳跃
在我们运行程序过程中,通常会遇到循环,但是有些循环过于庞大,如果我们使用F8一直单步进入的话,则过程将会十分的痛苦,因此我们可以在程序的运行过程中下另一个断点,然后直接按“F9”来跳跃到该断点。
效果如下图所示。
在IDA的目录中存在一个叫做dbgsrv的文件夹
里面内容如下:
此处我们展示的是Linux环境下的远程调试
我们需要将上图中框住的两个程序放入我们的虚拟机中,其中后缀带有64的是64位的远程调试需要用到的环境,而不带的是32位
注意首先运行该程序需要使用chmod +x 命令赋予该程序权限,然后执行该文件
显然这就开始监听了。
此时我们还需要使用ifconfig查看自己的ip
依然是下断点然后按“F9”
选择Remote Linux debugger然后点击ok
输入虚拟机的IP地址点击ok
操作方法和上面的本地调试一致