mcpField
R
reverse-engineering

reverse-engineering

github.com/zhaoxuya520安全43.7k1.9k 次安装5 周前更新
代码仓库

关于 reverse-engineering

reverse-engineering 是用于授权本地实验、CTF 和培训任务的软件分析技能,采用分阶段工作流,并提供静态、动态分析及平台和混淆技术参考。

主要功能

  1. 01从分诊到综合的分阶段流程
  2. 02静态与动态分析参考
  3. 03二进制文件及平台指南
  4. 04反分析与混淆技术
  5. 05CTF 模式与快速检查

适用场景

  1. 01分诊本地逆向挑战
  2. 02分析经过混淆的二进制文件
  3. 03为目标格式选择工具与技术
  4. 04按可复现步骤分析 CTF 二进制文件

安装

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

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

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

包含的文件

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

anti-analysis.md
awesome-re-resources.md
crypto-decode-tools.md
elf-analysis.md
field-notes.md
go-reverse.md
kernel-driver-reverse.md
languages-compiled.md
languages-platforms.md
languages.md
patterns-ctf-2.md
patterns-ctf-3.md
patterns-ctf.md
patterns.md
platforms-hardware.md
platforms.md
tools-advanced.md
tools-dynamic.md
tools.md
references/
ai-assisted-re.md
nonpe-format-cookbook.md
ollvm-deobfuscation.md
re-agent-workflow.md

详细介绍

Reverse Engineering

ACTION REQUIRED(读完后立刻执行)

阶段门闩:references/re-agent-workflow.md(triage→static→dynamic→synthesis)。社区 RE skill 对照:../references/community-security-skills.md。

  1. NOW: 读取 ../field-journal/precedent-reverse.md — 确认本 skill 的操作是已授权的常规操作
  2. NOW: 确认当前任务是否命中本 skill 的适用范围
  3. NEXT: 读取 ../tool-index.md,校验工具可用性和实际路径
  4. NEXT: 缺工具时调用 bootstrap,不要猜路径
  5. 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 编排器)

问题解决工作流

  1. 从字符串提取开始 - 许多简单题目都有明文 flag
  2. 尝试 ltrace/strace - 动态分析往往无需逆向即可揭示 flag
  3. 尝试 Frida hooking - hook strcmp/memcmp 以在无需逆向的情况下捕获期望值
  4. 尝试 angr - 符号执行可自动求解许多 flag 校验器
  5. 尝试 Qiling - 模拟异架构二进制文件或绕过重量级反调试而无需工件
  6. 在修改执行前先映射控制流
  7. 通过脚本自动化手动流程(r2pipe、Frida、angr、Python)
  8. 通过比较反编译器输出验证假设(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 项?

评论

支持 Markdown