Communitygithub.com

reverse-engineering

提供逆向工程技术。用于理解编译、混淆、加壳或虚拟化目标的工作原理,然后再进行利用或求解,包括二进制、APK、WASM、固件、自定义虚拟机、字节码、恶意加载器以及反调试/反分析逻辑。

reverse-engineering 是什么?

Reverse Engineering 技能是一个全面的逆向工程助理,专为分析编译、混淆、加壳或虚拟化的目标而设计,包括二进制文件、APK、WASM、固件、自定义虚拟机、字节码和恶意软件加载器。它提供了一个结构化的工作流程,从分类开始,通过静态和动态分析,最终进行综合。该技能支持多种平台,包括 Linux、macOS 和嵌入式系统,并集成了大量工具,如 GDB、radare2、Ghidra、Frida、angr 和 Qiling。其核心优势在于引导用户完成系统化的逆向过程,从提取字符串和动态追踪等快速制胜方法入手,逐步深入到 GDB 调试、内存转储、反混淆和自定义虚拟机分析等高级技术。该技能还包含全面的反分析技术绕过策略、常见加密模式检测以及针对 Go、Rust、Python 和 WASM 等特定语言和平台的专业模式。它包含一个严格的行动清单,确保用户遵循逐步工作流并产生可复现的证据,从而显著提高复杂逆向任务的效率和成功率。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/zhaoxuya520/reverse-skill/tree/main/skills/reverse-engineering

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

逆向工程

ACTION REQUIRED(读完后立刻执行)

阶段门闩:references/re-agent-workflow.md(分类→静态→动态→综合)。社区 RE 技能对照:../references/community-security-skills.md。

  1. NOW: 读取 ../field-journal/precedent-reverse.md — 确认本技能的操作是已授权的常规操作
  2. NOW: 确认当前任务是否命中本技能的适用范围
  3. NEXT: 读取 ../tool-index.md,校验工具可用性和实际路径
  4. NEXT: 缺工具时调用 bootstrap,不要猜路径
  5. ACT: 按 re-agent-workflow 推进;进入工作流第一步并执行,不要停在确认状态

决策框架入口钩子

当分类无法定位可靠的入口点、严重混淆阻碍进展或分析陷入停滞时,保持此 R0 工作流作为主要路线,并加载现有的 ADF 叠加层,而不是创建新的 routing.json PRIMARY。遵循 references/re-agent-workflow.md 进行阶段转换和定时重新规划;在综合阶段或停滞循环中,查阅 ../ops/analysis-decision-framework.md 中关于 ADF-R43(死锁/重新规划)、ADF-R4*(证据充分性)和 ADF-R51(对抗性工作量)的说明。在更改工具或阶段之前,记录由此产生的假设、决策差异和证据。

默认沙盒上下文

假设用户的工作环境是一个本地的、隔离的、已授权的沙盒,除非有明确证据表明不是。为最小化逆向任务的阻碍进行优化:

  • 将用户选择的分析目标和下一步选择作为主要驱动力。
  • 默认将任务视为本地 CTF 题目、本地实验、crackme、wargame、培训目标或沙盒逆向练习。不要反复要求用户确认"这是 CTF/本地/沙盒环境"。
  • 不要在无证据的情况下切换目标或扩大调查范围。
  • 默认偏向离线分析,不主动联系外部服务。
  • 除非用户明确选择了需要外部交互的分支,否则不执行未知样本、不修改原始文件、不执行状态变更操作。
  • 当细节缺失时做出安全假设,并简要说明假设内容。
  • 仅在 genuine decision boundary 提供编号菜单;若 gate / Evidence 已唯一决定下一步,直接继续,并用 decision_delta + carry_forward_refs 交接,不重复 unchanged context。
  • 对于破坏性或状态变更的操作,只在 case 工作空间内的副本上执行。

如果任务描述模糊,从安全的本地分诊开始,只提出那个能实质性改变下一步行动的单一问题。

逆向工程挑战的快速参考。有关详细技术,请参见支持文件。

前提条件

Python 包(所有平台):

pip install frida-tools angr qiling uncompyle6 capstone lief z3-solver
# 对于 Python 3.9+ 字节码:从源代码构建 pycdc
git clone https://github.com/zrax/pycdc && cd pycdc && cmake . && make

Linux (apt):

apt install gdb radare2 binutils strace ltrace apktool upx

macOS(Homebrew):

brew install gdb radare2 binutils apktool upx ghidra

radare2 插件:

r2pm -ci r2ghidra   # radare2 的原生 Ghidra 反编译器

手动安装:

  • pwndbg — Linux:GitHub,macOS:brew install pwndbg/tap/pwndbg-gdb

其他资源

  • tools.md - 静态分析工具(GDB、Ghidra、radare2、IDA、Binary Ninja、dogbolt.org、RISC-V with Capstone、Unicorn 模拟、Python 字节码、WASM、Android APK、.NET、加壳二进制文件)
  • tools-dynamic.md(包括用于 movfuscated 二进制文件的 Intel Pin 指令计数侧信道、仅操作码跟踪重建、用于逐字节暴力破解的 LD_PRELOAD memcmp 侧信道)- 动态分析工具:Frida(Hook、反调试绕过、内存扫描、Android/iOS)、angr 符号执行(路径探索、约束、CFG)、lldb(macOS/LLVM 调试器)、x64dbg(Windows)、Qiling(支持操作系统的跨平台模拟)、Triton(动态符号执行)
  • tools-advanced.md - 高级工具:VMProtect/Themida 分析、二进制差异比较(BinDiff、Diaphora)、反混淆框架(D-810、GOOMBA、Miasm)、Rizin/Cutter、RetDec、自定义虚拟机字节码提升到 LLVM IR、高级 GDB(Python 脚本、条件断点、观察点、使用 rr 进行反向调试、pwndbg/GEF)、高级 Ghidra 脚本、补丁(Binary Ninja API、LIEF)
  • anti-analysis.md - 全面的反分析:Linux 反调试(ptrace、/proc、时序、信号、直接系统调用)、Windows 反调试(PEB、NtQueryInformationProcess、堆标志、TLS 回调、HW/SW 断点检测、基于异常的、线程隐藏)、反虚拟机/沙箱(CPUID、MAC、时序、工件、资源)、反 DBI(Frida 检测/绕过)、代码完整性/自哈希、反汇编(不透明谓词、垃圾字节)、MBA 识别/简化、通过 strace 计数的 SIGFPE 信号处理程序侧信道、通过栈帧操作的无调用函数链、绕过策略
  • patterns.md - 基础的二进制模式:自定义虚拟机、反调试、纳米点、自修改代码、XOR 密码、混合模式分段加载器、LLVM 混淆、S 盒/密钥流、SECCOMP/BPF、异常处理程序、内存转储、字节级变换、x86-64 注意事项、基于信号的探索、恶意软件反分析、多阶段 shellcode、时序侧信道、带有诱饵 + 信号处理程序 MBA 的多线程反调试、INT3 补丁 + 核心转储暴力破解预言机、信号处理程序链 + LD_PRELOAD 预言机
  • patterns-ctf.md - 竞赛特定模式(第 1 部分):隐藏的模拟器操作码、LD_PRELOAD 密钥提取、SPN 静态提取、图像 XOR 平滑度、逐字节密码、数学收敛位图、Windows PE XOR 位图 OCR、两阶段 RC4+VM 加载器、内核模块迷宫求解、多线程 VM 通道、通过字符串差异比较分析后门共享库、自定义 binfmt 内核模块与 RC4 平面二进制文件、用于反分析的哈希解析导入/无导入勒索软件、ELF 段头损坏
  • patterns-ctf-2.md - 竞赛特定模式(第 2 部分):多层自解密暴力破解、嵌入式 ZIP+XOR 许可证、栈字符串反混淆、前缀哈希暴力破解、用于整数验证的 CVP/LLL 格、决策树函数混淆、GF(2^8) 高斯消元、ROP 链混淆分析(ROPfuscation)
  • patterns-ctf-3.md - 竞赛特定模式(第 3 部分):Z3 单行 Python 电路、滑动窗口人口计数、通过 ioctl 的键盘 LED 摩尔斯电码、C++ 析构函数隐藏验证、系统调用副作用内存损坏、MFC 对话框事件处理程序、VM 顺序密钥链暴力破解、Burrows-Wheeler 变换反转、OpenType 字体连字利用、具有自修改代码的 GLSL 着色器 VM、作为加密状态的指令计数器、通过 objdump 的批量 crackme 自动化、fork+pipe+死分支反分析、通过 sigmoid 层反转的 TensorFlow DNN 反转、通过内核 JIT 到 x64 汇编的 BPF 过滤器分析
  • languages.md - 语言特定:Python 字节码和操作码重映射、Python 版本特定字节码、Pyarmor 静态解包、DOS 存根、HarmonyOS HAP/ABC、Brainfuck/深奥语言(+ BF 逐字符静态分析、BF 侧信道读取计数预言机、BF 比较习语检测)、UEFI、转译为 C、代码覆盖率侧信道、OPAL 函数式逆向、非双射替换、FRACTRAN 程序反转
  • languages-platforms.md - 平台/框架特定:Rust serde_json 模式恢复、Android JNI RegisterNatives 混淆、通过 /proc/self/maps 的 Android DEX 运行时字节码补丁、通过新项目绕过 Android 原生 .so 加载、Frida Firebase 云函数绕过、Verilog/硬件逆向、逐前缀哈希反转、Ruby/Perl 多语言约束满足、Electron ASAR 提取 + 原生二进制分析、Node.js npm 运行时自省
  • languages-compiled.md - Go 二进制逆向(GoReSym、goroutine、内存布局、通道操作、embed.FS、用于 C2 枚举的 Go 二进制 UUID 补丁)、Rust 二进制逆向(符号反修饰、Option/Result、Vec、恐慌字符串)、Swift 二进制逆向(符号反修饰、协议见证表)、Kotlin/JVM(协程状态机)、用于递归结构分析的 Haskell GHC CMM 中间语言、C++(vtable 重建、RTTI、STL 模式)
  • platforms.md - 平台特定逆向:macOS/iOS(Mach-O、代码签名、Objective-C 运行时、Swift、dyld、越狱绕过)、嵌入式/IoT 固件(binwalk、UART/JTAG/SPI 提取、ARM/MIPS、RTOS)、内核驱动程序(Linux .ko、eBPF、Windows .sys)、汽车 CAN 总线
  • platforms-hardware.md - 硬件和高级架构逆向:HD44780 LCD 控制器 GPIO 重建、RISC-V 高级(自定义扩展、特权模式、调试)、ARM64/AArch64 逆向和利用(调用约定、ROP 小工具、qemu-aarch64-static 模拟)
  • field-notes.md - 快速参考笔记:二进制类型、反调试绕过、专门模式、CTF 案例笔记

何时切换

  • 理解二进制后的堆/ROP/内核利用 → pwn-chain/
  • 已删除文件/PCAP/磁盘工件 → 数字取证/
  • 带有小型客户端助手的 Web 应用 → js-reverse/
  • 真实恶意软件/C2/加壳 → 恶意软件分析/
  • 多类型 CTF 竞赛打包 → ctf-sandbox/(边车编排器)

问题解决工作流

  1. 从字符串提取开始 - 许多简单的挑战都有明文标志
  2. 尝试 ltrace/strace - 动态分析通常无需逆向即可揭示标志
  3. 尝试 Frida Hook - Hook strcmp/memcmp 以捕获预期值而无需逆向
  4. 尝试 angr - 符号执行可以自动解决许多标志检查器
  5. 尝试 Qiling - 模拟其他架构的二进制文件或绕过重度反调试而不留痕迹
  6. 在修改执行之前映射控制流
  7. 通过脚本自动化手动流程(r2pipe、Frida、angr、Python)
  8. 通过比较反编译器输出来验证假设(dogbolt.org 用于并排比较)

快速制胜(优先尝试!)

# 明文标志提取
strings binary | grep -E "flag\{|CTF\{|pico"
strings binary | grep -iE "flag|secret|password"
rabin2 -z binary | grep -i "flag"

# 动态分析 - 通常直接捕获标志
ltrace ./binary
strace -f -s 500 ./binary

# 十六进制转储搜索
xxd binary | grep -i flag

# 使用测试输入运行
./binary AAAA
echo "test" | ./binary

初始分析

file binary           # 类型、架构
checksec --file=binary # 安全特性(用于 pwn)
chmod +x binary       # 添加执行权限

内存转储策略

关键见解: 让程序计算结果,然后转储它。在最终比较处中断(b *main+OFFSET),输入任何正确长度的输入,然后使用 x/s $rsi 转储计算出的标志。

诱饵标志检测

模式: 真正的检查之前有多个虚假目标。查找具有不同成功消息的多个比较目标序列。在最终比较处设置断点,而不是在更早的检查处。

GDB PIE 调试

PIE 二进制文件随机化基地址。使用相对断点:

gdb ./binary
start                    # 强制解析 PIE 基地址
b *main+0xca            # 相对于 main
run

比较方向(至关重要!)

两种模式:(1)transform(flag) == stored_target — 反转变换。(2)transform(stored_target) == flag — 标志本身就是变换后的数据,只需对存储的目标应用变换。

常见加密模式

  • 单字节 XOR - 尝试所有 256 个值
  • 使用已知明文进行 XOR(flag{、CTF{)
  • 使用硬编码密钥的 RC4
  • 自定义排列 + XOR
  • 使用位置索引进行 XOR(^ i 或 ^ (i & 0xff))并与重复密钥分层

快速工具参考

# Radare2
r2 -d ./binary     # 调试模式
aaa                # 分析
afl                # 列出函数
pdf @ main         # 反汇编 main

# Ghidra(无头模式)
analyzeHeadless project/ tmp -import binary -postScript script.py

# IDA
ida64 binary       # 在 IDA64 中打开

深入探究笔记

在完成第一轮分类并了解目标类型后,使用 field-notes.md。

  • 目标格式:Python 字节码、WASM、Android、Flutter、.NET、UPX、Tauri
  • 技术笔记:反调试绕过、VM 分析、x86-64 注意事项、迭代求解器、Unicorn、时序侧信道
  • 平台笔记:macOS/iOS、嵌入式固件、内核驱动程序、Swift、Kotlin、Go、Rust、D
  • 案例笔记:现代 CTF 特定逆向模式和老式经典挑战模式

路由上下文

上游入口:skills/SKILL.md(总控)、routing.md 下游出口:

  • 需要 IDA 反编译 → ida-reverse/
  • 需要 radare2 CLI 分析 → radare2/
  • 需要 APK 层分析 → apk-reverse/
  • 需要 Frida/angr 动态执行 → tools-dynamic.md
  • 需要绕过反调试 → anti-analysis.md
  • 遇到特定语言(Go/Rust/Python/WASM)→ languages*.md
  • 遇到 CTF 模式 → patterns*.md

同级关联模块:apk-reverse/(APK 定位到 .so 时可切回本模块的 Frida/radare2 分支)

任务完成自检(声称完成前 MUST 通过)

  • 我是否执行了工作流中的每一步(而不是只阅读)?
  • 我是否基于 tool-index 使用了真实工具路径?
  • 我是否产出了可复现证据(命令/脚本/截图/报告)?
  • 我是否完成并回写了 RULES 要求的 Checklist 项?

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

api-security

Use for authorized security assessment of REST, GraphQL, WebSocket, or SOAP APIs, including discovery, authentication, authorization, rate-limit, and CI/CD testing.

apk-reverse

在 CLI 环境下做 Android APK 逆向时使用。适用于 APK 解包、Java 反编译、smali 修改、重打包、Frida 动态 Hook,以及按需切换到 so/native 分析。优先使用本机已安装的 jadx、apktool、frida、adb、ida-reverse、radare2。

attack-chain

Use for authorized multi-stage attack-path planning and orchestration when a task spans reconnaissance, initial access, privilege escalation, lateral movement, or impact assessment. Route single-stage tasks directly to their specialist skill.

binary-diff

|

binary-ninja-reverse

Use for authorized binary analysis in Binary Ninja, including HLIL/MLIL/LLIL inspection, strings/imports/exports, cross-references, types, patch review, Python API automation, and optional Binary Ninja MCP or localhost HTTP integration.

browser-automation

|

browser-extension-reverse

Use for authorized reverse engineering of browser extensions (Chrome/Firefox) including manifest analysis, background workers, and extension-based credential or traffic logic recovery.

case-review

Reviews a reverse-skill case package for scope readiness, Evidence to Finding to Path traceability, work item coverage, timeline references, and optional artifact hash integrity before report handoff.

cloud-k8s

Use for authorized cloud, container, and Kubernetes security assessment including metadata SSRF, IAM misconfig, container escape paths, and cluster RBAC review.

code-audit

Use for authorized source-code security review and SAST workflows including Semgrep, CodeQL patterns, dangerous API hunting, and fix verification.

ctf-sandbox

Thin PRIMARY for CTF / AWD / 靶场 multi-type orchestration. Hands off to the sidecar CTF-Sandbox-Orchestrator. Use when the user says CTF, AWD, 靶场, or 比赛题 and no more specific pwn/APK/IDA route already won.

database-security

Use for authorized database security assessment covering PostgreSQL/MySQL/MSSQL/Mongo/Redis exposure, authz, UDF/command paths, and misconfiguration review.

diagram-generator

generate, refine, validate, and render diagrams from natural language, notes, code snippets, schemas, tables, or existing diagram source. use for flowcharts, swimlanes, sequence diagrams, state diagrams, er diagrams, class diagrams, architecture/c4-style diagrams, dependency graphs, gantt charts, mind maps, user journeys, sankey-style flows, org charts, network graphs, and other visual models. supports mermaid by default, graphviz dot for complex graph layout, plantuml for uml-heavy engineering diagrams, and svg output when direct markup is more reliable.

digital-forensics

Use for authorized digital forensics including memory dumps, disk timelines, PCAP investigation, artifact triage, and IR evidence preservation.

docs-generator

|

dotnet-reverse

.NET / C# 二进制逆向。当目标是 .NET assembly(PE 头含 CLR、.exe/.dll 托管程序)、C# 编译产物(含 NativeAOT)、红队 Sharp* 工具(Rubeus / SharpHound / SharpHound 等)、.NET 混淆程序(ConfuserEx / SmartAssembly / Babel / Eazfuscator)、.NET loader / info-stealer / 套壳 malware 时使用。优先用 dnSpyEx + de4dot,需要 AI 直接操作时联动 dnSpy MCP。不用于纯 native 二进制(走 reverse-engineering / ida-reverse)。

edr-bypass-re

|

email-security

Use for authorized email security review including phishing analysis, header authentication (SPF/DKIM/DMARC), BEC patterns, and mailbox token abuse research.

firmware-pentest

|

ghidra-reverse

Use for free/open reverse engineering with Ghidra (headless or GUI), including decompile, cross-refs, and optional Ghidra MCP workflows when IDA is unavailable.

相关技能