IDA Pro扩展——脚本+插件

关于逆向工具IDA Pro的基本知识和扩展——脚本+插件(基于IDA7.0)。

1.基础

A.IDA文件目录简介

B.IDA常用快捷键功能

  • 空格键:反汇编窗口切换文本跟图形
  • Esc:在反汇编窗口中使用为后退到上个操作的地址处
  • Shift +F5:打开签名窗口
  • shift+F12:自动分析出参考字符串
  • ALT+T:搜索字符串(文本搜索)
  • ALT+L:标记(Lable)
  • ALT+M:设置标签(mark)
  • ALT+G:转换局部变量为结构体
  • ALT+Enter:跳转到新的窗口
  • Alt+B:快捷键用于搜索十六进制字节序列,通常在分析过程中可以用来搜索opcode
  • CTRL+M:列举出当前已经添加的标签
  • CTRL+S列举出二进制程序的段的开始地址、结束地址、权限等信息
  • F9:动态调试程序(其实IDA主要用作静态分析用的)
  • F5:将一个函数逆向出来(生成c伪代码)
  • G:跳转到指定地址
  • A:将选择的信息转换成ASCII(转换成可读性跟强的字符串)
  • X(ctrl+X):交叉引用,类似于OD中的栈回溯操作
  • N:对符号重命名
  • :&;(冒号&分号):光标所在位置添加常规注释和可重复注释
  • P:创建函数
  • T:解析结构体偏移
  • M:转换为枚举类型常量
  • Y:设置变量类型
  • H:转换16进制
  • C:光标所在地址处的内容解析成代码
  • D:光标所在地址处的内容解析成数据
  • A:光标所在地址处的内容解析成ascll码字符串
  • U:光标所在地址处的内容解析成未定义内容。

IDA pro介绍
《IDA Pro权威指南》

2.IDA脚本

A.支持语言

  • python
  • IDA的脚本语言——IDC

其中,python语言就不用过多的介绍了,下面简单介绍一下IDC语言。

IDC语言

在IDA软件的帮助选项中,包含着对IDC语言的语法和函数的介绍(相当于官方说明/API手册),如下图所示。

一些常见的IDC函数介绍如下(包括但不限于,用到可查询API手册)——

(1)读取和修改数据的函数

(2)用户交互函数

(3)字符串操纵函数

(4)代码交叉引用函数

B.运行方式

在IDA中运行python、IDC脚本/命令有三种方式,如下图所示。

C.脚本示例

枚举一个函数的调用方。

3.IDA插件

A.基础

插件开发:c++开发的dll文件。具体的知识(如插件的开发、安装、执行等)可以参考《IDA Pro权威指南》中第17章的内容。

B.常见插件

IDA中自带的插件如下图所示。

接下来列出一些开源的可用的IDA插件。

(1)静态分析

  • IDA FLIRT Signature Database——用于识别静态编译的可执行文件中的库函数
  • IDA signsrch——寻找二进制文件所使用的加密、压缩算法
  • IDA scope——自动识别windows函数和压缩、加密算法
  • Ponce—— 污点分析和符号化执行工具
  • snowman decompiler——C/C++反汇编插件(F3 进行反汇编)
  • keystone—— 二进制文件修改工具,可以直接修改汇编
  • CodeXplorer——自动类型重建以及对象浏览(C++)(jump to disasm)
  • IDA Ref——汇编指令注释(支持arm,x86,mips)
  • Hexlight——大括号高亮匹配及跳转(B跳转到匹配括号)
  • auto re——函数自动重命名
  • nao——dead code 清除
  • HexRaysPyTools——类/结构体创建和虚函数表检测
  • findcrypt-yara——寻找常用加密算法中的常数

(2)动态调试

IDA sploiter——漏洞利用开发工具,寻找gadget
DIE——动态调试增强工具,保存函数调用上下文信息
sk3wldbg——IDA动态调试器,支持多平台
idaemu——模拟代码执行(支持X86、ARM平台)

(3)其他

Keypatch——ida补丁神器
IFL
FRIEND——FRIEND is an IDA plugin created to improve disassembly and bring register/instruction documentation right into IDA View.
x86emu——Embedded x86 emulator for Ida Pro.
Lighthouse——Code Coverage Explorer for IDA Pro
AndroidAttacher
python Editor——what it Does: I always hated the Old Run script command, so i set up making my own editor for ida pro. Just like the ida one but much nicer and better Python language. Run Scripts files and apps within ida.
ret-sync——ret-sync stands for Reverse-Engineering Tools synchronization. It’s a set of plugins that help to synchronize a debugging session (WinDbg/GDB/LLDB/OllyDbg/OllyDbg2/x64dbg) with IDA disassembler. The underlying idea is simple: take the best from both worlds (static and dynamic analysis).让调试器(WinDbg / GDB / LLDB / OllyDbg / OllyDbg2 / x64dbg)与IDA同步的一个插件。

C.参考链接

IDA插件收集
来自FLARE团队的IDA Pro实用程序
FLARE IDA Pro的脚本系列:自动化提取函数参数
火眼(FireEye)实验室FLARE IDA Pro脚本系列:MSDN注释插件