mcpField
D
deobf-all

deobf-all

github.com/zeij-drive安全1343 次安装10 周前更新
代码仓库

关于 deobf-all

面向逆向工程和恶意软件分析的混淆代码处理技能集合。它先判断目标类型与保护方式,再按路由加载相关子技能,避免一次性读取全部内容。

主要功能

  1. 01识别代码类型与混淆方式
  2. 02按需加载分层子技能
  3. 03覆盖原生二进制与 JavaScript 分析
  4. 04提供 Android、Java 与 PowerShell 路径
  5. 05以静态分析为先并验证结果

适用场景

  1. 01分析受混淆保护的原生程序
  2. 02整理混淆的 JavaScript 或恶意脚本
  3. 03为 Android APK 逆向分析选择流程

安装

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

$npx skills add https://github.com/zeij-drive/deobf --skill deobf-all

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

详细介绍

Deobf-All — 统一反混淆分发器

遇到任何经过混淆或保护的代码时,此技能会先对目标进行分流, 然后仅加载相关子技能,而不是一次性加载全部 26 个技能。 这样可最大限度减少工具调用和上下文占用。

0. 执行约定(请先阅读)

DO NOT read_skill all 26 sub-skills blindly.
Instead: triage → load P0 → route → load P1/P2 only if needed.
阶段操作工具调用次数
分流检查目标文件,确定类型0–1(read_file / file 命令)
加载 P0对 1–2 个核心技能调用 read_skill1–2
路由判断是否需要 P1/P20
加载 P1/P2仅对路由要求的技能调用 read_skill0–3

目标:除非目标确实未知,否则每次调用的 read_skill 次数不得超过 5 次。

1. 子技能清单

#技能用途层级
1code-obfuscation-deobfuscation原生二进制反混淆:CFF、不透明谓词、字符串加密、导入隐藏、反反汇编P0
2ast-deobfuscationJavaScript AST 反混淆:模式检测、流水线、站点专用适配器P0(仅限 JS)
3vm-and-bytecode-reverseVM 保护器(VMProtect/Themida)、自定义 VM 分发器、操作码映射P1
4anti-debugging-techniques反调试检测与绕过(ptrace、PEB、计时、TLS、VEH)P1
5symbolic-execution-toolsangr/Z3/Triton:自动约束求解、仿真脱壳P1
6binary-protection-bypass绕过 ASLR/NX/PIE/Canary/RELROP2
7ctf-reverseCTF 逆向工程方法论P2
8anti-reversing-techniques反逆向技术识别与规避P2
9deep-analysis深度逆向工程分流(综合分析)P2
10java-decompileJava 字节码反编译:CFR/Procyon/FernflowerP2
11jadxAndroid APK 反编译:DEX → Java 源代码P2
12apktoolAPK 解包、smali 反汇编、资源提取P3
13reverse-engineering-android-malware-with-jadx使用 JADX 的 Android 恶意软件逆向工程工作流P3
14firebase-apk-scannerFirebase APK 配置安全扫描P3
15deobf-string通过模式分析和自动解密,解密或恢复混淆字符串P3
16deobf-indirect通过符号执行 + BFS 反混淆间接分支(CSEL+BR)P3
17llvm-obfuscation基于 LLVM 的混淆:OLLVM、CFF、字符串加密、伪造控制流P3
18binary-lifting将机器码提升为 LLVM IR,用于分析、反编译和重新编译P3
19deobfuscating-javascript-malwareJS 恶意软件反混淆:Web 攻击、钓鱼页面、投放脚本P3
20deobfuscating-powershell-obfuscated-malware通过 AST + 动态分析进行多层 PowerShell 反混淆P3
21binary-analysis-patterns二进制分析:反汇编、反编译、CFG 分析、代码修补P3
22yara-rule-authoring编写 YARA 规则,用于恶意软件分类和威胁搜寻P3
23ghidra-headlessGhidra 无头分析器:自动反编译、脚本分析P3
24frida-17Frida 17 JS API 兼容性:钩取、跟踪、动态插桩P3
25reverse-engineering-malware-with-ghidra使用 Ghidra 的恶意软件逆向工程工作流:导入项、字符串、解密、脱壳P3
26radare2radare2 逆向工程:反汇编、调试、脚本编写P3

2. 分类 — 先执行此步骤(再读取任何技能)

检查目标并确定:

  1. 目标类型:原生二进制文件(ELF/PE/Mach-O)/ JavaScript / 字节码(DotNet/Java/Python)/ Android APK / 其他
  2. 混淆类型(如可识别):CFF、VM 保护、字符串加密、加壳、JS 混淆器(obfuscator.io、JSFuck 等)
  3. 是否存在反调试 / 反逆向层
  4. 背景:CTF 挑战?生产环境分析?快速清理?

输出:一行分类信息,例如:TRIAGE: native PE, VMProtect, has anti-debug → P0:code-obfuscation-deobfuscation P1:vm-and-bytecode-reverse,anti-debugging-techniques

3. 路由矩阵 — 仅加载所需内容

根据分类结果,仅对标记为 ✓ 的技能调用 read_skill:

3a. 核心路由 — P0 / P1 / P2
目标P0 核心反混淆P0 AST 反混淆P1 VM 逆向P1 反调试P1 符号执行P2 二进制绕过P2 CTF 逆向P2 反逆向P2 深入分析P2 Java 反编译P2 jadx
原生二进制文件,一般情况✓
原生二进制文件 + VM 保护✓✓
原生二进制文件 + VM + 反调试✓✓✓
原生二进制文件 + CFF(OLLVM)✓✓
原生二进制文件 + 加壳 + 反逆向✓✓✓
JavaScript(任意类型)✓
JavaScript + 重度混淆✓✓
JavaScript 恶意软件 / 钓鱼✓✓
DotNet/Java/Python 字节码✓✓✓
Java 字节码(JAR/class)✓
Android APK✓
Android 恶意软件分析✓✓✓
PowerShell 混淆
CTF 逆向挑战✓✓✓
未知 / 不明确✓

规则:如果单元格为空,则不要加载该技能。这样可以尽量减少工具调用。

3b. P3 工具选择器 — 深入分析需要时加载

根据核心矩阵加载 P0-P2 后,如果反混淆遇到特定瓶颈,则加载对应的 P3 工具:

场景要加载的 P3 技能
检测到字符串加密(运行时解密循环、.rdata 中的编码字符串)deobf-string
间接分支(CSEL/BR 模式)阻碍 CFG 恢复deobf-indirect
LLVM 混淆的二进制文件(OLLVM、虚假 CF、CFF)llvm-obfuscation
需要将二进制文件提升为 LLVM IR,以便重新编译或进行高级分析binary-lifting
JavaScript 恶意软件(钓鱼、投放器、Web 攻击)deobfuscating-javascript-malware
多层 PowerShell 载荷deobfuscating-powershell-obfuscated-malware
需要进行反汇编 / CFG / 代码修补分析binary-analysis-patterns
分析后生成签名(威胁狩猎、分类)yara-rule-authoring
大规模自动化 Ghidra 无头反编译ghidra-headless
需要动态插桩 / 运行时挂钩frida-17
Ghidra 恶意软件分析工作流(导入、解密、解包)reverse-engineering-malware-with-ghidra
更倾向于使用 radare2 进行反汇编、调试或脚本编写radare2

规则:每次仅加载一个 P3 技能,并且仅当 P0-P2 工作流遇到该 P3 工具能够解决的特定瓶颈时才加载。

4. 工作流

步骤 1:分类(0–1 次工具调用)

检查目标。源代码使用 read_file,二进制文件使用 file/DIE/PEiD 输出。生成分类信息行。

步骤 2:加载 P0(1–2 次工具调用)

对路由要求的 P0 技能调用 read_skill。对于原生二进制文件,加载 code-obfuscation-deobfuscation;对于 JavaScript,加载 ast-deobfuscation。

步骤 3:仅在路由要求时加载 P1/P2(0–3 次工具调用)

仅对路由矩阵中与你的目标类型对应的 P1/P2 技能调用 read_skill。

步骤 4:反混淆
  • 优先静态分析:模式匹配、CFF 简化、字符串解密、分发器内联
  • 受阻时进行动态分析:调试器脚本、仿真、符号执行
  • 对于 JS:先运行 ast-deobfuscation 中的 scripts/detect-patterns.js,然后应用匹配的流水线
  • 对于 JS 恶意软件 / 网络钓鱼:加载 deobfuscating-javascript-malware(P3),获取 Web 专用反混淆模式
  • 对于 PowerShell:加载 deobfuscating-powershell-obfuscated-malware(P3),进行分层 AST / 动态分析
  • 对于原生代码:在选择策略前识别保护器(VMProtect/Themida/OLLVM/自定义)
  • 对于带字符串加密的原生代码:加载 deobf-string(P3),自动解密运行时解密循环
  • 对于带间接分支混淆(CSEL+BR)的原生代码:加载 deobf-indirect(P3),恢复 CFG
  • 对于经过 LLVM 混淆的目标:加载 llvm-obfuscation(P3),简化 OLLVM/CFF/伪控制流
  • 对于二进制提升 / 重新编译:加载 binary-lifting(P3),将机器码转换为 LLVM IR
  • 对于反汇编 / CFG / 代码修补:加载 binary-analysis-patterns(P3),作为通用分析辅助工具
  • 对于分析后的 YARA 签名编写:加载 yara-rule-authoring(P3)
  • 对于自动化 Ghidra 无头分析:加载 ghidra-headless(P3)
  • 对于 Ghidra 恶意软件分析工作流:加载 reverse-engineering-malware-with-ghidra(P3)
  • 对于动态插桩 / 运行时挂钩:加载 frida-17(P3)
  • 对于 radare2 反汇编 / 调试 / 脚本编写:加载 radare2(P3)
  • 对于 Java 字节码:使用 java-decompile(CFR/Procyon/Fernflower)反编译
  • 对于带字符串混淆的 Java 字节码:同时加载 deobf-string(P3)
  • 对于 Android APK:使用 apktool 解包,然后使用 jadx 反编译 DEX
  • 对于 Android 恶意软件:同时加载 reverse-engineering-android-malware-with-jadx,并可选择使用 firebase-apk-scanner 扫描 Firebase 配置
步骤 5:验证
  • 将反混淆后的输出与原始症状进行比较
  • 验证功能等价性
  • 检查是否残留 / 嵌套混淆层

5. 后备方案 — 无法确定分类时

如果检查后仍无法确定目标类型:

  1. 对 deep-analysis 执行 read_skill(P2)
  2. 按照 deep-analysis 方法对目标进行分类
  3. 根据分类结果返回路由矩阵
  4. 加载相应的 P0/P1 技能

这是唯一应在 P0 之前加载 P2 技能的情况。

6. 快速参考清单

原生二进制文件
  1. 初步分类:识别保护器 / 加壳器(file、DIE、PEiD)
  2. 加载 P0:code-obfuscation-deobfuscation
  3. 是否有反调试?→ 加载 anti-debugging-techniques
  4. 是否受虚拟机保护?→ 加载 vm-and-bytecode-reverse
  5. 是否卡在 CFF?→ 加载 symbolic-execution-tools
  6. 是否加壳 / 受保护?→ 加载 binary-protection-bypass
  7. 是否有反逆向?→ 加载 anti-reversing-techniques
  8. 是否有字符串加密?→ 加载 deobf-string
  9. 是否有间接分支混淆?→ 加载 deobf-indirect
  10. 是否经过 LLVM 混淆(OLLVM)?→ 加载 llvm-obfuscation
  11. 是否需要二进制提升 / 重新编译?→ 加载 binary-lifting
  12. 是否需要反汇编 / CFG / 修补?→ 加载 binary-analysis-patterns
  13. 是否需要动态插桩 / 挂钩?→ 加载 frida-17
  14. 是否需要大规模 Ghidra 无头分析?→ 加载 ghidra-headless
  15. 是否需要 Ghidra 恶意软件工作流?→ 加载 reverse-engineering-malware-with-ghidra
  16. 是否优先使用 radare2?→ 加载 radare2
  17. 是否需要分析后的 YARA 签名?→ 加载 yara-rule-authoring
  18. 反混淆 → 验证
JavaScript
  1. 初步判断:识别混淆器(obfuscator.io、JSFuck、自定义)
  2. 加载 P0:ast-deobfuscation
  3. 运行 scripts/detect-patterns.js,识别网站/框架
  4. 应用匹配的流水线(减少 CFF、解密字符串、内联分发器)
  5. 混淆程度较高?→ 另外加载 code-obfuscation-deobfuscation
  6. JavaScript 恶意软件/网络钓鱼/下载器?→ 加载 deobfuscating-javascript-malware
  7. 混有 PowerShell 载荷?→ 加载 deobfuscating-powershell-obfuscated-malware
  8. 每个阶段后重新解析 → 验证
CTF
  1. 加载 P2:ctf-reverse + deep-analysis
  2. 识别题目类型(VM、加壳、加密、自定义)
  3. 根据路由矩阵加载 P0/P1
  4. 题目中有字符串加密?→ 加载 deobf-string
  5. 基于 VM 的题目?→ 也可考虑 deobf-indirect
  6. OLLVM/CFF 题目?→ 也可考虑 llvm-obfuscation
  7. 需要动态分析?→ 加载 frida-17 或 radare2
  8. 求解 → 验证 flag
Java / Android
  1. 初步判断:是 JAR/class 文件还是 Android APK?
  2. Java 字节码 → 加载 P2:java-decompile
  3. Android APK → 加载 P2:jadx(如需解包,还要加载 apktool)
  4. Android 恶意软件分析 → 另外加载 reverse-engineering-android-malware-with-jadx
  5. 扫描 Firebase 配置 → 加载 P3:firebase-apk-scanner
  6. 字符串混淆?→ 另外加载 deobf-string
  7. 动态插桩?→ 加载 frida-17
  8. 反编译 → 分析 → 验证
PowerShell / JS 恶意软件
  1. 初步判断:识别混淆层(base64、XOR、压缩、eval 链)
  2. PowerShell → 加载 P3:deobfuscating-powershell-obfuscated-malware
  3. JavaScript 恶意软件 → 加载 P0:ast-deobfuscation,并另外加载 deobfuscating-javascript-malware
  4. 应用分层反混淆(Unicode → 解码 → AST 清理)
  5. 分析后需要 YARA 特征码?→ 加载 yara-rule-authoring
  6. 验证行为等价性
通用 P3 工具 — 出现瓶颈时加载
  1. 字符串加密?→ deobf-string
  2. 间接分支/CFG 受阻?→ deobf-indirect
  3. LLVM 混淆?→ llvm-obfuscation
  4. 二进制提升?→ binary-lifting
  5. 通用二进制分析?→ binary-analysis-patterns
  6. 自动化 Ghidra?→ ghidra-headless
  7. Ghidra 恶意软件工作流?→ reverse-engineering-malware-with-ghidra
  8. 实时挂钩/跟踪?→ frida-17
  9. radare2 脚本编写?→ radare2
  10. YARA 特征码?→ yara-rule-authoring

评论

支持 Markdown