IDA基本介绍

简介

交互式反汇编器专业版(Interactive Disassembler Professional),简称为IDA,由Hex-Rays公司推广和销售。就其本质而言,IDA是一种递归下降反汇编器,但效率相比普通的反汇编器要高得多,原因如下

  • IDA应用大量启发式代码来识别递归下降过程中遗漏的代码。IDA在区分数据与代码的同时还会设法确定数据的类型。IDA的目标之一是呈现尽可能接近源代码的代码。
  • IDA不仅使用数据类型信息,而且通过派生的变量和函数名称来尽其所能地注释生成的反汇编代码。

IDA的反盗版策略

水印

每一份IDA都带有水印,将其与购买者一一对应。如果一份IDA出现在盗版软件的站点中,Hex-Rays就能够追踪到购买者,并将其列入销售黑名单。

局域网扫描

IDA会扫描在局域网运行的其他IDA程序。例如,Windows版本的IDA启动后,它会在端口23945上广播一个UDP包,并等待响应,看相同子网中是否有其他使用相同许可证密钥的IDA实例运行。如果发现网络中存在过多密钥相同的实例,IDA会拒绝启动。

密钥

IDA使用密钥文件将每一名购买者与产品联系起来。在启动时IDA会搜索一个有效的ida.key文件,如果无法定位有效的密钥文件,IDA会立即关闭

IDA支持资源

  • 正式的帮助文档:IDA提供了通过菜单激活的帮助系统,但是该文档主要介绍IDA的用户界面和脚本子系统,它对于我们了解IDA SDK一节解决类似于“我该如何处理….”的问题并没有多大帮助

  • Hex-Rays的支持页面和论坛:Hex-Rays的支持页面提供各种与IDA有关的资源的链接。IDA的开发者会经常访问论坛并解决问题,用户可以这些论坛获得SDK方面的非正式支持。Hex-Rays还提供一个年度支持计划每年10000美元

  • openRCE.org: openRCE.org 是一个活跃的逆向工程社区,其中包括大量介绍IDA应用的文章,以及一些活跃用户论坛。

  • RCE论坛: 逆向代码工程(RCE)论坛 中包含大量使用IDA Pro有关的帖子。该论坛的内容非常广泛,包含许多用于对二进制文件进行逆向工程的工具说明和技巧

  • IDA Palace

  • Ilfak的博客

IDA的目录和结构

了解IDA目录的基本结构对日后使用IDA高级功能非常重要

  • cfg:cfg目录包含各种配置文件,包括基本IDA配置文件ida.cfg、GUI配置文件idagui.cfg以及文本模式用户界面配置文件idatui.cfg
  • idc:idc目录包含IDA的内置脚本语言IDC所需的核心文件
  • ids:ids目录中包含一些符号文件(IDA语法中的IDS文件),这些文件用于描述可被加载到IDA的二进制文件引用的共享库的内容。这些IDS文件包含摘要信息,其中列出了由某一个指定库导出的所有项目。这些项目包含描述某个函数所需的参数类型和数量的信息、函数的返回类型以及该函数的调用约定有关的信息。
  • loaders:loaders目录包含文件加载过程中用于识别和解析PE或ELF等已知文件格式的IDA扩展
  • plugins:plugins目录包含专门为IDA提供附加功能(多数情况下由用户定义)的IDA模块
  • proces:proces目录包含已安装的IDA版本所支持的处理器模块。处理器模块为IDA提供机器语言——汇编语言的转换功能,并负责生成在IDA用户界面中显示的汇编语言
  • sig:sig目录包含IDA在各种模式匹配操作中利用的现有代码的签名。通过模式匹配,IDA能够将代码序列确定为已知的库代码,从而节省大量的时间。
  • til:til目录包含一些类型库信息,IDA通过这些信息记录特定于各种编译器库的数据结构的布局

IDA的操作

IDA从MS-DOS继承的特性至今仍然十分明显

  • 无论使用GUI还是文本界面,IDA使用了大量热键。(类似vim)
  • IDA几乎所有的输入都通过对话框完成
  • IDA不提供撤销功能

小结

工欲善其事必先利其器,了解IDA的基本信息是学习后续操作的基础