逆向工具随笔
逆向工具随笔
ZEROKO14逆向工具盘点
X64DBG
插件安装方式
置于根目录下plugins目录
记录一个xdbg过vmprotect保护的反调试插件HyperHide
记录一个提供类似IDA的反编译功能的插件MapoAnalyzer
ApiBreakPoint
显示各种系统API,方便下断点
ClawSearch
在xdbg中提供类似CE搜索的简单功能
xAnalyzer
抓包
IDA用法
IDA
64位生成伪代码的参考性较低,32位相对较高
IDA的启动
New新建文件
可以打开动态库,exe,静态库,中间文件(obj),apk等等二进制文件
go仅仅打开ida
Processor type选MetaPC:表示自动猜测处理器
绿色的球表示分析完成
当前模块的信息在IDA View窗口拖到最上面可以看到,如下:
IDA的基本菜单
文件file下
file-load file
- IDS/IDT file 符号文件
- PDB file 调试信息文件
- DBG file 调试信息文件
- TDS file 调试信息文件(少见)
- FLIRT signature file 签名文件
- Parse C header file C的头文件
Produce file 生成文件
MAP file 映射表文件
ASML file 反汇编文件
INC file 汇编当中用到的头文件
LST file 列出一个类似映射表的文件
EXE file 生成exe文件
DIF file 两个二进制文件的差异,在git中经常用到的文件
C file 生成一个C文件
html file
flow chart 流程图(gdl文件) 哪些函数怎么调用到我这里来
call graph 函数调用关系图(gdl文件) 调用了哪些函数
上面的gdl文件可以通过ida目录中的
qwingraph.exe来打开看到图IDC file 脚本文件(脚本文件一般用python写的)
save和save as可以保存成IDB文件,即 ida的数据库
take database snapshot 使用数据库快照
编辑edit下
- Begin selection 选择两个点,选中中间的代码(可以在view中跨图选中代码)
- Export data 导出数据,选择东西,点这个导出数据可以转换成各种类型的数据
- Code 鼠标选中的行按照代码解析
- Data 鼠标选中的行按照数据解析
- Struct var 鼠标选中的行按照结构体变量解析
- Strings 鼠标选中的行按照字符串解析,子目录有很多种类的字符串选择.
- Array 鼠标选中的行按照数组解析
- Undefine 取消选中的原本的解析
- Rename 重命名 (可以选择包含到名字列表中,即作为公用名称,但这样就要注意不能重复设置同名了)
- Operand type 操作数类型修改 (操作数代表了某个含义的变量,可以通过Manual,自行输入含义,方便理解)
- Comments 注释 分号注释会覆盖掉冒号注释和反斜杠注释
- Segments 段 子目录中的Rebase program为重新设置基址.
- Structs 结构体 自定义结构体解析,修改联合体成员,强制解析为0偏移结构体等等
- function 函数 删除函数(解析错误,不是函数识别错了),set function end设置函数结尾,Stack variables识别为本地变量,rename register重命名寄存器,change stack pointer改变栈指针,set type设置函数类型
- patch program 修补程序 其中可以盘点全部修改项
- Other 指令涂色
- Plugins 插件
jump跳转
jump to operand跳转到操作数,比如说jnz loc_18001F150,双击也能跳转,选该项也可以跳转
jump in a new window在一个新窗口跳转,同上,只是开一个新窗口
jump to previous position跳转到上一个位置
jump to next position 跳转到下一个位置
empty navigation stack 清空导航堆栈,就无法跳转到上一个与下一个了
jump to pseudocode 跳转到伪代码,用于在汇编与伪代码之间的跳转,方便比对
jump to address 跳转到地址(很常用)
jump by name 按函数和变量名称跳转
jump to function跳转到函数
jump to segment 跳转到段
jump to segment register 跳转到段寄存器
jump ot problem 跳转到ida解析有问题的地方
list cross references to 列出引用了选中位置的位置
list cross references from 列出选中位置引用了的位置 (列出参考选定操作数的引用位置)
jump to xref to operand 跳到引用操作数(跳转到应用到操作数的位置)
jump to entry point 跳转到入口点
jump to file offset 跳转到文件偏移地址
mark position 标记位置
jump to marked position 跳转到标记位置
clear mark 清理标记
search搜索
(省略意义不明和意义不大的项)
- immediate value 搜索立即数
- text 搜索文本
- sequence of bytes 搜索字节序
- error operand 跳转到ida认为解析有误的操作数
- search direction 搜索方向,点击可以改变搜索方向
view视图
- Open subView 打开子视图,就是打开子窗口
- Proximity browser临近浏览器,实际上就是个附近调用关系的视图
- generate pseudocode生成伪代码 ;
- hex dump 16进制数据展示;
- exports 导出函数窗口 ;
- imports 导入函数窗口(可用于判断导入了哪些函数,因此确定导入了哪些库);
- Names 名称窗口,窗口内小图标绿色的F表示内部实现的函数,浅蓝色f表示外部实现的函数,绿色箭头图标表示完全外部实现的,D表示数据,A表示字符串
- functions 函数窗口 粉红色表示外部函数,青色表示库函数等等..
- Strings 字符串窗口
- Signatures 签名,可以获取一些信息,甚至利用别人的签名
- struct 结构体窗口
- function calls 函数调用窗口,包含其他函数调用自身,和自身调用其他函数两个窗口
- Patched bytes 修补的字节窗口
- Graphs 图像
- function calls 函数调用全流程图
- Xrefs to 调用到选中函数的流程图
- Xrefs from 选中函数调用了哪些函数的流程图
- toolbars 工具栏
- calculator 计算器
- graph overview 图形概览 (用于汇编的view窗口的概览)
- datebase snapshot manager数据库快照管理
AI插件
下面两插件目前能确定的是支持7.7,最新版实测不支持
Gepetto插件
使用方式:将Gepetto-1.1文件夹整个移动到IDA目录下plugins目录下,然后将gepetto-locales和gepetto.py移动到plugins文件夹中
WPeChatGPT插件
基于Gepetto,国内开发的WPeChatGPT
与二进制文件直接对话的项目
该项目依赖于RetDec项目
RetDec自行编译
从源码编译RetDec:这样可以使用系统现有的OpenSSL版本:
1 | 1. 克隆RetDec仓库 |
在linux和mac上均测试
mac上显示openssl无法找到,和x86有关系,然而使用brew安装openssl@1.1却显示已经弃用
linux上一切配置似乎都正常,但是无法连接上网络,打印如下:
1 | [14:07:27] Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by command_line.py:33 |


