逆向分析学习小纪——IDA Pro工具的安装与基本使用

 这是我的《逆向分析学习小纪》第一篇,这个系列主要介绍我的逆向分析学习过程,本篇涉及我对逆向分析的理解,IDA工具的简介与安装,IDA的基本使用等内容。对我而言,这既是一种学习笔记的记录方式,也是和大家一起学习、一起交流的一个平台~

一. 逆向分析简介

1. 概念

简单点儿来说,逆向分析其实就是将机器认识的二进制码字进行反汇编,得到人(也许)可以看懂的汇编代码,在汇编代码基础上实现程序具体功能和逻辑的分析。

2. 难点

源代码编译之后,会丢失其原有的数据结构、符号等信息,导致反汇编生成的汇编代码中只存在较为原始的逻辑,定义好的变量和高级算法在此刻都荡然无存,逆向分析时需要尽可能澄清、还原以上信息中关键的部分,从而分析透程序原有的实现思路,对于集成度较高、功能较复杂、较完整的程序,澄清和还原是有一定难度和工作量的。

3. 主要方法

基本可以分为静态、动态两种分析方法:

  • 静态分析法:不执行代码的情况下,观察并分析代码文件的外部特性,一是对文件类型进行分析,了解程序的编写语言、编译器、是否有加密操作等,二是实现静态的反汇编、反编译,从而分析代码结构。
  • 动态分析法:在代码可以执行的情况下,调试分析代码,获取代码执行过程中关键变量的变化情况、内存的状态等,可进一步分析程序的内部结构和实现原理。

4. 分析对象

主要逆向分析的目标是Windows、Linux平台下的x86、x64二进制可执行程序。

5. 工具

IDA Pro

二. IDA Pro简介及安装

1. IDA Pro简介

逆向分析学习小纪——IDA Pro工具的安装与基本使用_第1张图片

学习前期通过调研的方式了解到了很多反汇编工具,其中前辈们最为推荐的就是IDA Pro(Interactive Disassembler Professional),是Hex-Rays公司出品的一款交互式反汇编工具,是目前最流行的静态反编译软件,我试用以后也深感其功能强大和使用便捷,其自带的插件可以算的上是最好的反编译工具之一。

目前,IDA支持的文件类型特别丰富,包括PE、ELF、DOS、Mach-O、.NET等格式,还支持几十种不同的处理器架构。

2. IDA Pro安装

我使用的IDA版本为7.2.181105,内容无广,放在个人网盘,有需要可自取:

链接:https://pan.baidu.com/s/1S6KNf9xK9E82cIgcQFeOFQ?pwd=c6xa 
提取码:c6xa 

该版本为破解版,需要安装,下面简要介绍一下步骤:

第一步:压缩包解压后,点击.exe文件,点击Next。

逆向分析学习小纪——IDA Pro工具的安装与基本使用_第2张图片

第二步:选择accept,点击Next。

逆向分析学习小纪——IDA Pro工具的安装与基本使用_第3张图片

第三步:建议安装Python,点击Next。

逆向分析学习小纪——IDA Pro工具的安装与基本使用_第4张图片

第四步:输入Password,在解压后的install_key中(7JpT48a7Y2fv),点击Next。

逆向分析学习小纪——IDA Pro工具的安装与基本使用_第5张图片

第五步:选择安装路径,点击Next。

逆向分析学习小纪——IDA Pro工具的安装与基本使用_第6张图片

第六步:连续点击Next。

逆向分析学习小纪——IDA Pro工具的安装与基本使用_第7张图片

逆向分析学习小纪——IDA Pro工具的安装与基本使用_第8张图片

第七步:将Launch IDA取消,点击Finish。

逆向分析学习小纪——IDA Pro工具的安装与基本使用_第9张图片

第八步:将解压后的下述文件Copy至IDA安装路径xxx/IDA 7.2下,到此IDA工具就已经安装完毕啦,开始享受!!

三. IDA Pro的基本使用

1. 新建工程

逆向分析学习小纪——IDA Pro工具的安装与基本使用_第10张图片

根据系统环境选择对应的版本启动IDA,我这里使用的是IDA Pro(64-bit)。“New”选项是直接打开要分析的程序,“Go”选项是先启动IDA界面,二者皆可~

逆向分析学习小纪——IDA Pro工具的安装与基本使用_第11张图片

若选择Go选项,启动页面后,通过菜单栏中的File→Open,选择需要分析的目标程序。(ps:注意右下角应选择All Files)

逆向分析学习小纪——IDA Pro工具的安装与基本使用_第12张图片

得到下图所示窗口,IDA可以自动识别出程序为x86_64的ELF程序,直接点击OK即可。

逆向分析学习小纪——IDA Pro工具的安装与基本使用_第13张图片

2. 界面窗口介绍

IDA主窗口如下图所示,主要包括几个区域:

(1)工具栏区域

包括IDA常用工具,可以使用菜单栏的View→Toolbar来显示或者隐藏工具栏。

(2)导航区域

是加载文件的地址空间的线性视图,默认情况下会呈现二进制文件的整个地址范围。不同颜色意味着不同类型的文件,比如代码或者数据。同时还存在一个当前位置指示符(默认黄色),指向当前反汇编窗口中显示的地址范围对应的导航区域地址。

通常我们分析程序时主要分析自身部分,而不是库函数,可以根据导航区域轻松划定大致范围。

(3)函数窗口

函数窗口上显示了所有的函数。如果程序带符号,那么IDA会自动解析符号信息,将函数真实名称显示出来(有的时候函数名大概能反映某项功能,有利于分析人员猜测和定位)。并且IDA使用了FLIRT签名库识别函数,因此就算没有符号信息,也能识别部分库函数,对于无法识别的函数,会以“sub_”+“起始地址”命名。

(4)数据显示窗口

数据显示窗口上方有IDA定义的标签,通过菜单中的View→Open subviews可以打开对应的数据显示窗口,主要的窗口包括:反汇编窗口、反编译窗口、导入表窗口、导出表窗口、结构体窗口等等。

(5)消息窗口

显示IDA输出的信息,用户可以通过输出信息找到文件分析有关的状态信息和操作导致的错误信息,这个窗口类似于Pycharm等软件的Console控制台。

3. 识别修正

(1)函数修正

通常来说,push ebp/rbp指令开头的地址是函数的起始地址,但有时候IDA未能正确识别其为函数,这时候我们可以手动将其创建为函数,具体操作为:

在起始地址汇编代码处,使用快捷键“p”即可(右键选择Create Function亦可0)。

(2)指令修正

若某些指令识别错误,可以选中后利用快捷键“d”手动修正。

(3)数据修正

同样的,在数据段中,一个数据的长度可能为1/2/4/8字节,此时亦可通过快捷键“d”来修改为对应类型。如果数据中某部分为字符串,但没有正确识别,可以点击通过快捷键“a”将其转换为ASCII字符串。

4. 注释信息和重命名

在IDA使用过程中,可通过修改程序中的变量或者函数名等信息,帮助使用者理解和分析程序,在需要重命名处点击右键,选择“Rename”即可重命名。

逆向分析学习小纪——IDA Pro工具的安装与基本使用_第14张图片

此外可以添加注释,快捷键“;”可以在反汇编窗口中添加注释,快捷键“/”可在反编译窗口中添加注释,另外IDA对于不常用处理器架构编写的程序,可开启自动注释功能,开启时选中下图中的“Auto comments”即可。

逆向分析学习小纪——IDA Pro工具的安装与基本使用_第15张图片

5. 交叉引用

IDA的交叉引用有两类:代码交叉引用和数据交叉引用。

  • 代码交叉引用:用于表示某指令将控制权转交给另一指令,可以了解指令→指令、指令→函数之间的调用关系。
  • 数据交叉引用:用于追踪二进制文件访问数据情况,可以了解指令→数据之间的访问关系。

6. 常用快捷键汇总

我把学习以来常用的快捷键列在了下面,大家可以参考~

(1)通用类

  • 快速生成伪代码:“F5”
  • 动态调试:“F9”
  • 窗口回退(返回上一页面):“ESC”
  • 打开函数窗口:“Shift+F3”
  • 保存:“Ctrl+w”
  • 将所有伪代码导出(生成.c文件):“Ctrl+F5”

(2)查找类

  • 查找字符串:“ALT+T”
  • 查找二进制/十六进制字符串:“ALT+B”

(3)调试类

  • 跳转地址:“g”
  • 重命名(选中某变量时):“n”
  • Disassembly、Proximity browser等窗口中添加注释:“;”
  • 伪代码窗口中添加注释:“/”

四. 学习后记

作为一个刚接触逆向分析不久的小白,后续我将继续学习,做一些静态分析、动态分析的案例,也会持续分享,争取早日入门!

与诸君共勉~

你可能感兴趣的:(逆向分析学习小纪,安全,计算机网络,软件工程,系统安全)