IDA PRO基本操作

0x00 为何反汇编

通常,使用反汇编工具是为了在没有源代码的情况下促进对程序的了解。需要进行反汇编的常见情况包括以下几种

  • 分析恶意软件
  • 分析闭源软件的漏洞
  • 分析闭源软件的互操作性
  • 分析编译器生成的代码,以验证编译器的性能和准确性
  • 在调试时显示程序指令

反汇编又分为静态分析和动态分析两种。动态分析是指在严格控制的环境(沙盒)中执行恶意软件,并使用系统检测实用工具记录其所有的行为。相反,静态分析则试图通过浏览程序代码来理解程序的行为。

0x01 IDA PRO简介

IDA PRO无疑是一款强大的静态反汇编工具,采用了递归下降反汇编的方式。若能学会操作这样一款强大的工具,对你的反汇编之旅大有裨益。

0x02 IDA 基本操作

打开IDA,会出现三个选项。

  • NEW(新建)。启动一个标准的File Open对话框来选择将要分析的文件。
  • GO(运行)。使IDA打开一个空白的工作区,可自己选择一个二进制文件直接拖入。
  • Previous(上一个)。可以打开最近使用过的文件。
    选择一个文件打开后,会出现加载方式对话框,图中上部的三种文件加载器分别是PE加载器、MS-DOSexe加载器以及binary file(二进制文件)加载器。要注意的一点是PE文件是MS-DOS EXE文件格式的扩展形式。

IDA能反编译Python so文件吗_反汇编


我们选择PE加载器加载后,出现了如图的界面。左部的矩形框是函数窗口,显示ida分析出的函数。中间包含着汇编代码的是反汇编窗口,可以通过空格在文本模式和流程图模式转换,流程图模式有助于你理解程序的执行流程。

IDA能反编译Python so文件吗_加载器_02

我们可以看到图中有红绿蓝三种颜色的线。在比较指令后,依据标志位(可以等同于c语言中的if等比较语句)红色是ida认为不会执行的跳转流,而绿色是ida认为会执行的跳转流,蓝线则表示下一个立即执行的跳转流(不比较)。通常我们在左边的函数窗口找到main函数后点击,然后按f5,即可出现一个新的c代码窗口。

IDA能反编译Python so文件吗_f5_03


如图,绿色标志的是反汇编窗口,而红色为c代码窗口。你可以想象一下,当你不知道程序的源码时,只要按下f5即可得到,是多么幸福(当然,基本没有这么简单的程序。。。)。此时你就可以开始分析程序流程,找到程序逻辑了。有时候,ida无法识别出函数的调用方式,无法调整程序的栈帧,此时你按下f5可能会报错。你只需要在Options->general的disassembly中选择stack pointer,在反汇编窗口中就会出现栈指针

IDA能反编译Python so文件吗_f5_04

在第一个出现负数的栈指针的位置,选择它上方的那个栈指针,按alt+k,将它的值,改为那个负数值,再按下f5,就可出现c代码了。

Hex View 十六进制窗口
 Imports 导入函数窗口
 Struceures 结构体窗口
 Exports 导出函数窗口
 Enums 枚举窗口
 Strings 字符串窗口常用功能及快捷键:
 空格键:切换文本视图与图表视图
 ESC:返回上一个操作地址
 G:搜索地址和符号
 N:对符号进行重命名
 冒号键:常规注释
 分号键:可重复注释
 Alt+M:添加标签
 Ctrl+M:查看标签
 Ctrl+S:查看段的信息
 代码数据切换
 C–>代码/D–>数据/A–>ascii字符串/U–>解析成未定义的内容
 X:查看交叉应用
 F5:查看伪代码
 Alt+T:搜索文本
 Alt+B:搜索十六进制