mcpField
R
reverse-engineering

reverse-engineering

github.com/r00tedbrain-backup安全294 次安装27 周前更新
代码仓库

关于 reverse-engineering

面向逆向工程与调试任务的技能,提供静态、动态分析及漏洞利用方法,并按目标格式和任务类型引导选择参考资料。还附带 IDA 导出插件和 Android DEX 转储脚本。

主要功能

  1. 01按格式和任务选择分析指南
  2. 02涵盖静态与动态调试流程
  3. 03提供漏洞发现方法
  4. 04附带 IDA 导出插件
  5. 05提供 Android DEX 转储脚本

适用场景

  1. 01初步检查未知二进制文件
  2. 02分析移动应用或恶意软件
  3. 03调试崩溃并定位漏洞
  4. 04使用 Ghidra 或 IDA 编写分析脚本

MCP 相关

提供连接 ida-pro-mcp、GhidraMCP 和 r2mcp 等上游 MCP 服务的配置说明,并介绍实时查询工作流。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/r00tedbrain-backup/skills --skill reverse-engineering

安装后在 Claude Code 中输入/reverse-engineering确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
android-re.md
anticheat-re.md
dynamic-debugging.md
exploit-dev.md
firmware-embedded.md
frida.md
ghidra-scripting.md
idapython.md
ios-re.md
macos-kernel-re.md
malware-analysis.md
managed-code-re.md
protocol-re.md
static-analysis.md
struct-recovery.md
symbol-recovery.md
unicorn-emulation.md
windows-re.md
tools/
dex_memory_dumper.js
ida_export_plugin.py
README.md
tools/mcp/
claude-config-snippets.json
cline-config-snippets.json
continue-config-snippets.json
cursor-config-snippets.json
ghidra-mcp.md
ida-pro-mcp.md
opencode-config-snippets.json
README.md
windsurf-config-snippets.json

详细介绍

逆向工程与调试

静态分析、动态分析、调试和二进制利用的专业方法。

快速参考 — 加载正确的参考文件

任务参考文件
静态分析、反汇编、Ghidra、radare2、objdump、修补references/static-analysis.md
GDB(+ pwndbg/gef/peda)、LLDB、strace/ltrace、崩溃分析references/dynamic-debugging.md
Android APK、DEX、smali、ADB、在 Android 上使用 Frida、重新打包references/android-re.md
iOS IPA、Mach-O、class-dump、Frida ObjC/Swift、Keychainreferences/ios-re.md
macOS XPC、launchd、kext、SIP、Linux 内核模块references/macos-kernel-re.md
Windows PE、WinDbg、x64dbg、.NET/dnSpy、内核驱动references/windows-re.md
Frida 脚本、Hook Java/Native/ObjC、SSL 取消固定、gadgetreferences/frida.md
.NET IL、dnSpy、de4dot、Java/JVM、Kotlin、Unity/IL2CPP、Monoreferences/managed-code-re.md
恶意软件、混淆、加壳程序分析、IOC 提取、Volatilityreferences/malware-analysis.md
CTF pwn/rev、BOF、ROP、堆利用、pwntools、angr/Z3references/exploit-dev.md
网络协议逆向、Wireshark、mitmproxy、Protobuf、gRPC、Lua dissector、Boofuzzreferences/protocol-re.md
固件、binwalk、QEMU 仿真、JTAG/UART、U-Boot、IoTreferences/firmware-embedded.md
EAC、BattlEye、Vanguard、FACEIT、VAC、内核级反作弊分析references/anticheat-re.md
Ghidra Python/Java 脚本、无头模式、漏洞查找、自定义分析器references/ghidra-scripting.md
IDAPython / IDALib 脚本、Hex-Rays API、批量反编译、OLLVM 辅助工具references/idapython.md
Unicorn 引擎仿真、函数级仿真、JNI 存根、系统调用模拟references/unicorn-emulation.md
恢复已剥离的符号、魔数、成对调用、交叉引用分析references/symbol-recovery.md
C/C++ 结构恢复、虚函数表、std::string/vector/map、字段类型推断references/struct-recovery.md

捆绑工具(tools/)

此技能附带开箱即用的配套实用工具(均为原创作品,采用 MIT 许可证):

工具用途
tools/ida_export_plugin.pyIDA Pro 插件(Ctrl-Shift-E)——将 IDB 导出到 decompile/ 目录,其中包含 Agent 可直接读取的纯文本文件
tools/dex_memory_dumper.jsFrida Agent——通过内存扫描和 ClassLoader 遍历,从正在运行的 Android 进程转储 DEX
tools/mcp/用于将 Agent 连接到上游 MCP 服务(ida-pro-mcp、GhidraMCP、r2mcp)的设置说明和配置片段

有关用法详情,请参阅 tools/README.md。tools/mcp/ 目录介绍了实时查询工作流(文件导出的替代方案)——上述方法文件支持这两种模式。


通用第一步

加载任何参考文件之前,请先了解上下文:

1. 识别目标
file <binary>           # file type, arch, bits, stripped?
xxd <binary> | head -4  # magic bytes
strings -a <binary> | head -60
checksec --file=<binary>  # NX, PIE, RELRO, stack canary, ASLR

二进制格式决策树:

  • ELF → Linux 原生程序 → references/static-analysis.md + references/dynamic-debugging.md
  • PE/PE32+ → Windows 原生程序 → references/windows-re.md + references/static-analysis.md
  • 带有 .NET 元数据的 PE → references/managed-code-re.md(优先使用 dnSpy)
  • Mach-O → macOS/iOS → references/macos-kernel-re.md + references/ios-re.md
  • DEX/APK/AAB → Android → references/android-re.md
  • JAR/WAR/AAR → Java → references/managed-code-re.md
  • .sys 驱动程序 → references/windows-re.md(内核部分)或 references/anticheat-re.md
  • Assembly-CSharp.dll → Unity → references/managed-code-re.md(Unity 部分)
  • 未知格式/固件 → references/firmware-embedded.md(binwalk + 熵分析)

任务类型决策树(适用于任何格式):

  • 已剥离符号的二进制文件,函数未知 → references/symbol-recovery.md
  • 反编译中结构体布局未知 → references/struct-recovery.md
  • 需要单独运行某个函数 → references/unicorn-emulation.md
  • 使用 IDA Pro 进行分析 → references/idapython.md
  • 使用 Ghidra 进行分析 → references/ghidra-scripting.md
2. 确定范围

询问用户(或根据上下文推断):

  • 目标:理解逻辑 / 查找漏洞 / 绕过保护 / 修补 / 获取 CTF flag / 查找恶意软件 IOCs?
  • 平台:Linux / Windows / macOS / Android / iOS / 嵌入式?
  • 可用工具:Ghidra / IDA / radare2 / Binary Ninja / Hopper?
  • 是否可以动态分析?:能否运行?虚拟机?模拟器?实体设备?
3. 选择分析模式
Static only  → No execution risk, slower understanding
Dynamic only → Fast but misses dead code
Static + Dynamic (recommended) → Static for map, dynamic for runtime truth

核心工具链概览

静态分析
工具最适合
Ghidra完整反编译、脚本编写、免费
radare2 / cutter强大的命令行工具、脚本编写、嵌入式
Binary NinjaAPI 优先、快速、商业软件
IDA Pro / IDA Free行业标准、签名库最佳
objdump快速反汇编,无需安装
readelf / nm检查 ELF 符号/节
jadxAndroid DEX → Java,图形界面
apktoolAPK 解包 / 重新打包 / smali
动态分析
工具最适合
GDB + pwndbg/peda/gefLinux ELF 调试
LLDBmacOS/iOS/Swift 调试
Frida跨平台挂钩,无需源代码
strace / ltrace系统调用 / 库调用跟踪
Valgrind内存错误、Helgrind
WinDbgWindows 内核 + 用户模式
x64dbgWindows 图形界面调试器
网络
工具最适合
Wireshark / tshark数据包捕获 + 解析
mitmproxy / Burp SuiteHTTP/S 中间人攻击
Frida进程内 SSL 证书锁定绕过
tcpdump无界面捕获

方法论框架

静态分析工作流
1. file + strings + checksec           → quick triage
2. Entropy analysis                    → packed/encrypted?
3. Import table / symbol table         → understand capabilities
4. Load in decompiler                  → rename, retype, annotate
5. Identify key functions              → main(), crypto, network, anti-debug
6. Trace data flow                     → user input → sink
7. Document findings                   → comment inline
动态分析工作流
1. Set up isolated environment         → VM / container / device
2. Run with strace/ltrace first        → understand syscall footprint
3. Attach debugger                     → set breakpoints at key functions
4. Observe runtime behavior            → memory, registers, branches taken
5. Correlate with static              → validate decompiler output
6. Patch / hook as needed             → bypass checks, log values
漏洞发现工作流
1. Attack surface mapping             → inputs: file, network, env vars, args
2. Dangerous function search          → strcpy, gets, sprintf, memcpy, system
3. Integer overflow candidates        → size calculations, loops
4. Format string candidates           → printf(user_input)
5. UAF / double-free candidates       → heap allocation patterns
6. Trigger + confirm                  → crash → controlled → exploitable

绕过反分析 — 快速参考

反调试检测
# Check if binary detects debugger
strings <bin> | grep -iE "ptrace|debugger|isDebuggerPresent|TracerPid"

# Linux: ptrace self-detection
# Bypass: preload hook or patch the ptrace call
常见保护
保护检测方式绕过方法
ptrace 反调试strace 显示 ptrace(TRACEME)将 JNZ 修补为 JMP,或使用 LD_PRELOAD 伪造 ptrace
时间检查循环中调用 rdtsc / clock_gettime修补比较指令,或替换为 NOP
校验和/完整性检查对自身 .text 节进行哈希在解密后、检查前修补
加壳(UPX 等)熵高 + 导入项少upx -d / 解壳后从内存转储
字符串混淆没有可读字符串运行程序并从内存提取 / 使用 Frida 挂钩
SSL 证书锁定(移动端)应用无法联网使用 Frida 解除 SSL 锁定 / 参见 references/frida.md

输出规范

报告逆向工程(RE)发现时,始终按以下结构组织输出:

## Binary: <name>
- **Format**: ELF64 / PE32+ / DEX / Mach-O
- **Arch**: x86_64 / ARM64 / ARMv7 / MIPS
- **Stripped**: Yes/No | **PIE**: Yes/No | **NX**: Yes/No

## Key Findings
1. <function name @ offset> — <what it does>
2. ...

## Vulnerability / Behavior
- <description with evidence>
- Offset: 0x<addr>
- Triggerable via: <input vector>

## Recommended Next Steps
- [ ] <action>

反编译器工作命名规范

在 Ghidra / IDA / r2 中添加注释时遵循以下规范:

Functions:  verb_noun_context      → decrypt_config_xor, check_license_hwid
Variables:  type_purpose           → buf_user_input, sz_packet, ptr_heap_chunk
Structs:    ST_<name>              → ST_PacketHeader, ST_LicenseData
Labels:     loc_<purpose>         → loc_anti_debug_fail, loc_success

脚本快速入门

完整的 Frida 模式见 references/frida.md。

GDB Python 单行命令(记录函数参数)
# In GDB: source this file
import gdb
class LogArgs(gdb.Breakpoint):
    def stop(self):
        frame = gdb.selected_frame()
        print(f"[*] {frame.name()} rdi={gdb.parse_and_eval('$rdi')} rsi={gdb.parse_and_eval('$rsi')}")
        return False  # don't stop, just log
LogArgs("target_function")
radare2 批量分析
r2 -A -q -c "afl~suspicious; pdf @ sym.check_license" <binary>
Ghidra 无界面分析
$GHIDRA_HOME/support/analyzeHeadless /tmp/proj MyProject \
  -import <binary> -postScript PrintAST.java -scriptPath ~/ghidra_scripts

评论

支持 Markdown