Communitygithub.com

逆向工程

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

逆向工程 是什麼?

此技能专为需要深入理解编译或混淆软件内部机制的开发者与安全研究人员设计。它提供了一个完整的逆向工程工作流,涵盖从初步文件分析、字符串提取、动态调试(如使用 Frida、GDB)到高级符号执行(angr)和固件模拟(Qiling)的各个阶段。该技能支持多种平台(包括 Linux、macOS、Windows、Android、iOS)和文件格式(ELF、PE、Mach-O、APK、WASM、Python 字节码等),并内置了大量针对 CTF 挑战和恶意软件分析的模式库(如反调试绕过、自定义虚拟机还原、加密算法识别)。通过详细的参考文档和清单,它能引导用户系统性地攻克高度混淆或加壳的目标,并自动判断何时应切换到其他专用技能(如漏洞利用或数字取证)。

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

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

逆向工程 是做什麼的?

操作前必须执行(读完后立刻执行)

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

  1. 立即: 读取 ../field-journal/precedent-reverse.md — 确认本次操作是已授权的常规操作
  2. 立即: 确认当前任务是否属于本技能的适用范围
  3. 下一步: 读取 ../tool-index.md,校验工具可用性和实际路径
  4. 下一步: 缺少工具时调用 bootstrap,不要猜测路径
  5. 执行: 按照 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/本地/沙盒环境”。
  • 不要在无证据的情况下切换目标或扩大调查范围。
  • 默认偏向离线分析,不主动联系外部服务。
  • 除非用户明确选择了需要外部交互的分支,否则不执行未知样本、不修改原始文件、不执行状态变更操作。
  • 当细节缺失时做出安全假设,并简要说明假设内容。
  • 仅在真正的决策边界提供编号菜单;若门/证据已唯一决定下一步,直接继续,并用 decision_delta + carry_forward_refs 交接,不重复未更改的上下文。
  • 对于破坏性或状态变更的操作,只在案例工作空间内的副本上执行。

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

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

先决条件

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, 含 Capstone 的 RISC-V, Unicorn 模拟, Python 字节码, WASM, Android APK, .NET, 加壳二进制文件)
  • tools-dynamic.md(包括用于 movfuscated 二进制文件的 Intel Pin 指令计数侧信道、仅操作码的踪迹重建、用于逐字节暴力破解的 LD_PRELOAD memcmp 侧信道)- 动态分析工具:Frida(钩子、反调试绕过、内存扫描、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 - 基础二进制模式:自定义虚拟机、反调试、nanomites、自修改代码、XOR 密码、混合模式加载器、LLVM 混淆、S盒/密钥流、SECCOMP/BPF、异常处理器、内存转储、字节级变换、x86-64 陷阱、基于信号的探索、恶意软件反分析、多阶段 shellcode、时序侧信道、带诱饵 + 信号处理器 MBA 的多线程反调试、INT3 补丁 + coredump 暴力破解预言机、信号处理器链 + LD_PRELOAD 预言机
  • patterns-ctf.md - 竞赛特定模式(第1部分):隐藏的模拟器操作码、LD_PRELOAD 密钥提取、SPN 静态提取、图像 XOR 平滑度、逐字节密码、数学收敛位图、Windows PE XOR 位图 OCR、两级 RC4+VM 加载器、内核模块迷宫求解、多线程 VM 通道、通过字符串差异化的后门共享库检测、带 RC4 扁平二进制文件的自定义 binfmt 内核模块、用于反分析的哈希解析导入 / 无导入勒索软件、ELF 段头损坏
  • patterns-ctf-2.md - 竞赛特定模式(第2部分):多层自解密暴力破解、嵌入式 ZIP+XOR 许可证、栈字符串去混淆、前缀哈希暴力破解、CVP/LLL 格用于整数验证、决策树函数混淆、GF(2^8) 高斯消元、ROP 链混淆分析(ROPfuscation)
  • patterns-ctf-3.md - 竞赛特定模式(第3部分):Z3 单行 Python 电路、滑动窗口 popcount、通过 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 Cloud Functions 绕过、Verilog/硬件逆向工程、逐前缀哈希反转、Ruby/Perl 多语言约束满足、Electron ASAR 提取 + 原生二进制分析、Node.js npm 运行时内省
  • languages-compiled.md - Go 二进制逆向(GoReSym, goroutines, 内存布局, 通道操作, embed.FS, 用于 C2 枚举的 Go 二进制 UUID 修补)、Rust 二进制逆向(demangling, Option/Result, Vec, panic 字符串)、Swift 二进制逆向(demangling, 协议见证表)、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 gadgets、qemu-aarch64-static 模拟)
  • field-notes.md - 快速参考笔记:二进制类型、反调试绕过、专用模式、CTF 案例笔记

何时切换

  • 在理解二进制后需要堆/ROP/内核利用 → pwn-chain/
  • 已删除文件/PCAP/磁盘工件 → digital-forensics/
  • 带小型客户端助手的 Web 应用 → js-reverse/
  • 真实恶意软件/C2/加壳 → malware-analysis/
  • 多类型 CTF 竞赛打包 → ctf-sandbox/(sidecar 编排器)

问题解决工作流

  1. 从字符串提取开始 - 许多简单挑战有明文标志
  2. 尝试 ltrace/strace - 动态分析通常无需逆向即可揭示标志
  3. 尝试 Frida 钩子 - 钩子 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 分支)

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

  • 我是否执行了工作流中的每一步(而不是只阅读)?
  • 我是否基于 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.

相關技能