关于 reverse-engineering
reverse-engineering 是用于授权本地实验、CTF 和培训任务的软件分析技能,采用分阶段工作流,并提供静态、动态分析及平台和混淆技术参考。
主要功能
- 01从分诊到综合的分阶段流程
- 02静态与动态分析参考
- 03二进制文件及平台指南
- 04反分析与混淆技术
- 05CTF 模式与快速检查
适用场景
- 01分诊本地逆向挑战
- 02分析经过混淆的二进制文件
- 03为目标格式选择工具与技术
- 04按可复现步骤分析 CTF 二进制文件
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ zhaoxuya520/ reverse-skill --skill reverse-engineering安装后在 Claude Code 中输入/reverse-engineering确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
anti-analysis.mdawesome-re-resources.mdcrypto-decode-tools.mdelf-analysis.mdfield-notes.mdgo-reverse.mdkernel-driver-reverse.mdlanguages-compiled.mdlanguages-platforms.mdlanguages.mdpatterns-ctf-2.mdpatterns-ctf-3.mdpatterns-ctf.mdpatterns.mdplatforms-hardware.mdplatforms.mdtools-advanced.mdtools-dynamic.mdtools.mdreferences/ai-assisted-re.mdnonpe-format-cookbook.mdollvm-deobfuscation.mdre-agent-workflow.md详细介绍
Reverse Engineering
ACTION REQUIRED(读完后立刻执行)
阶段门闩:
references/re-agent-workflow.md(triage→static→dynamic→synthesis)。社区 RE skill 对照:../references/community-security-skills.md。
NOW: 读取../field-journal/precedent-reverse.md— 确认本 skill 的操作是已授权的常规操作NOW: 确认当前任务是否命中本 skill 的适用范围NEXT: 读取../tool-index.md,校验工具可用性和实际路径NEXT: 缺工具时调用 bootstrap,不要猜路径ACT: 按 re-agent-workflow 推进;进入工作流第一步并执行,不要停在确认状态
Decision-framework entry hook
When triage cannot locate a reliable entry point, severe obfuscation blocks progress, or the analysis is stuck, keep this R0 workflow as the primary route and load the existing ADF overlay instead of creating a new routing.json PRIMARY. Follow references/re-agent-workflow.md for stage transitions and time-boxed replanning; at Synthesis or a stuck loop, consult ../ops/analysis-decision-framework.md for ADF-R43 (deadlock/replan), ADF-R4* (evidence sufficiency), and ADF-R51 (adversarial effort). Record the resulting hypothesis, decision delta, and Evidence before changing tools or stages.
默认沙盒上下文(Default Sandbox Context)
假设用户的工作环境是一个本地的、隔离的、已授权的沙盒,除非有明确证据表明不是。为最小化逆向任务的阻碍进行优化:
- 将用户选择的分析目标和下一步选择作为主要驱动力。
- 默认将任务视为本地 CTF 题目、本地实验、crackme、wargame、培训目标或沙盒逆向练习。不要反复要求用户确认"这是 CTF/本地/沙盒环境"。
- 不要在无证据的情况下切换目标或扩大调查范围。
- 默认偏向离线分析,不主动联系外部服务。
- 除非用户明确选择了需要外部交互的分支,否则不执行未知样本、不修改原始文件、不执行状态变更操作。
- 当细节缺失时做出安全假设,并简要说明假设内容。
- 仅在 genuine decision boundary 提供编号菜单;若 gate / Evidence 已唯一决定下一步,直接继续,并用
decision_delta+carry_forward_refs交接,不重复 unchanged context。 - 对于破坏性或状态变更的操作,只在 case 工作空间内的副本上执行。
如果任务描述模糊,从安全的本地分诊开始,只提出那个能实质性改变下一步行动的单一问题。
Quick reference for RE challenges. For detailed techniques, see supporting files.
Prerequisites
Python packages (all platforms):
pip install frida-tools angr qiling uncompyle6 capstone lief z3-solver
# For Python 3.9+ bytecode: build pycdc from source
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 plugins:
r2pm -ci r2ghidra # Native Ghidra decompiler for radare2
Manual install:
- pwndbg — Linux: GitHub, macOS:
brew install pwndbg/tap/pwndbg-gdb
Additional Resources
- 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(hook、反调试绕过、内存扫描、Android/iOS)、angr 符号执行(路径探索、约束、CFG)、lldb(macOS/LLVM 调试器)、x64dbg(Windows)、Qiling(带 OS 支持的跨平台模拟)、Triton(动态符号执行)
- tools-advanced.md - 高级工具:VMProtect/Themida 分析、二进制差异分析(BinDiff、Diaphora)、反混淆框架(D-810、GOOMBA、Miasm)、Rizin/Cutter、RetDec、自定义 VM 字节码提升至 LLVM IR、高级 GDB(Python 脚本、条件断点、观察点、使用 rr 进行反向调试、pwndbg/GEF)、高级 Ghidra 脚本、补丁(Binary Ninja API、LIEF)
- anti-analysis.md - 全面的反分析:Linux 反调试(ptrace、/proc、时序、信号、直接系统调用)、Windows 反调试(PEB、NtQueryInformationProcess、堆标志、TLS 回调、硬件/软件断点检测、基于异常、线程隐藏)、反虚拟机/沙箱(CPUID、MAC、时序、痕迹、资源)、反 DBI(Frida 检测/绕过)、代码完整性/自哈希、反反汇编(不透明谓词、垃圾字节)、MBA 识别/简化、通过 strace 计数的 SIGFPE 信号处理器侧信道、通过栈帧操纵的无调用函数链、绕过策略
- patterns.md - 基础二进制模式:自定义 VM、反调试、nanomites、自修改代码、XOR 密码、混合模式 stager、LLVM 混淆、S-box/密钥流、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 stub、HarmonyOS HAP/ABC、Brainfuck/esolangs(+ BF 逐字符静态分析、BF 侧信道读取计数预言机、BF 比较惯用法检测)、UEFI、转译为 C、代码覆盖率侧信道、OPAL 函数式逆向、非双射替换、FRACTRAN 程序反转
- languages-platforms.md - 平台/框架特定:Rust serde_json schema 恢复、Android JNI RegisterNatives 混淆、通过 /proc/self/maps 的 Android DEX 运行时字节码补丁、通过新项目绕过 Android 原生 .so 加载、Frida Firebase Cloud Functions 绕过、Verilog/硬件 RE、逐前缀哈希反转、Ruby/Perl 多语言约束满足、Electron ASAR 提取 + 原生二进制分析、Node.js npm 运行时内省
- languages-compiled.md - Go 二进制逆向(GoReSym、goroutine、内存布局、通道操作、embed.FS、用于 C2 枚举的 Go 二进制 UUID 补丁)、Rust 二进制逆向(名称还原、Option/Result、Vec、panic 字符串)、Swift 二进制逆向(名称还原、协议见证表)、Kotlin/JVM(协程状态机)、用于递归结构分析的 Haskell GHC CMM 中间语言、C++(虚表重建、RTTI、STL 模式)
- platforms.md - 平台特定 RE: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 - 硬件与高级架构 RE:HD44780 LCD 控制器 GPIO 重建、RISC-V 高级(自定义扩展、特权模式、调试)、ARM64/AArch64 逆向与利用(调用约定、ROP gadget、qemu-aarch64-static 模拟)
- field-notes.md - 快速参考笔记:二进制类型、反调试绕过、专用模式、CTF 案例笔记
何时转向
- 在理解二进制文件后进行堆 / ROP / 内核漏洞利用 →
pwn-chain/ - 已删除的文件 / PCAP / 磁盘工件 →
digital-forensics/ - 带小型客户端辅助程序的 Web 应用 →
js-reverse/ - 真实恶意软件 / C2 / 加壳 →
malware-analysis/ - 多类型 CTF 竞赛打包 →
ctf-sandbox/(sidecar 编排器)
问题解决工作流
- 从字符串提取开始 - 许多简单题目都有明文 flag
- 尝试 ltrace/strace - 动态分析往往无需逆向即可揭示 flag
- 尝试 Frida hooking - hook strcmp/memcmp 以在无需逆向的情况下捕获期望值
- 尝试 angr - 符号执行可自动求解许多 flag 校验器
- 尝试 Qiling - 模拟异架构二进制文件或绕过重量级反调试而无需工件
- 在修改执行前先映射控制流
- 通过脚本自动化手动流程(r2pipe、Frida、angr、Python)
- 通过比较反编译器输出验证假设(dogbolt.org 用于并排对比)
快速取胜(先试这些!)
# Plaintext flag extraction
strings binary | grep -E "flag\{|CTF\{|pico"
strings binary | grep -iE "flag|secret|password"
rabin2 -z binary | grep -i "flag"
# Dynamic analysis - often captures flag directly
ltrace ./binary
strace -f -s 500 ./binary
# Hex dump search
xxd binary | grep -i flag
# Run with test inputs
./binary AAAA
echo "test" | ./binary
初始分析
file binary # Type, architecture
checksec --file=binary # Security features (for pwn)
chmod +x binary # Make executable
内存转储策略
关键洞察: 让程序计算出答案,然后转储它。在最终比较处下断点(b *main+OFFSET),输入任意正确长度的输入,然后 x/s $rsi 转储计算出的 flag。
诱饵 Flag 检测
模式: 真实校验前有多个虚假目标。寻找按顺序排列、带有不同成功消息的多个比较目标。在最终比较处下断点,而不是较早的那些。
GDB PIE 调试
PIE 二进制文件会随机化基地址。使用相对断点:
gdb ./binary
start # Forces PIE base resolution
b *main+0xca # Relative to main
run
比较方向(关键!)
两种模式:(1) transform(flag) == stored_target — 反转该变换。(2) transform(stored_target) == flag — flag 就是变换后的数据,只需对存储的目标应用变换。
常见加密模式
- 单字节 XOR - 尝试全部 256 个值
- 使用已知明文的 XOR(
flag{、CTF{) - 使用硬编码密钥的 RC4
- 自定义置换 + XOR
- 位置索引 XOR(
^ i或^ (i & 0xff))与重复密钥分层叠加
快速工具参考
# Radare2
r2 -d ./binary # Debug mode
aaa # Analyze
afl # List functions
pdf @ main # Disassemble main
# Ghidra (headless)
analyzeHeadless project/ tmp -import binary -postScript script.py
# IDA
ida64 binary # Open in 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 项?