关于 deobf-all
面向逆向工程和恶意软件分析的混淆代码处理技能集合。它先判断目标类型与保护方式,再按路由加载相关子技能,避免一次性读取全部内容。
主要功能
- 01识别代码类型与混淆方式
- 02按需加载分层子技能
- 03覆盖原生二进制与 JavaScript 分析
- 04提供 Android、Java 与 PowerShell 路径
- 05以静态分析为先并验证结果
适用场景
- 01分析受混淆保护的原生程序
- 02整理混淆的 JavaScript 或恶意脚本
- 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_skill | 1–2 |
| 路由 | 判断是否需要 P1/P2 | 0 |
| 加载 P1/P2 | 仅对路由要求的技能调用 read_skill | 0–3 |
目标:除非目标确实未知,否则每次调用的 read_skill 次数不得超过 5 次。
1. 子技能清单
| # | 技能 | 用途 | 层级 |
|---|---|---|---|
| 1 | code-obfuscation-deobfuscation | 原生二进制反混淆:CFF、不透明谓词、字符串加密、导入隐藏、反反汇编 | P0 |
| 2 | ast-deobfuscation | JavaScript AST 反混淆:模式检测、流水线、站点专用适配器 | P0(仅限 JS) |
| 3 | vm-and-bytecode-reverse | VM 保护器(VMProtect/Themida)、自定义 VM 分发器、操作码映射 | P1 |
| 4 | anti-debugging-techniques | 反调试检测与绕过(ptrace、PEB、计时、TLS、VEH) | P1 |
| 5 | symbolic-execution-tools | angr/Z3/Triton:自动约束求解、仿真脱壳 | P1 |
| 6 | binary-protection-bypass | 绕过 ASLR/NX/PIE/Canary/RELRO | P2 |
| 7 | ctf-reverse | CTF 逆向工程方法论 | P2 |
| 8 | anti-reversing-techniques | 反逆向技术识别与规避 | P2 |
| 9 | deep-analysis | 深度逆向工程分流(综合分析) | P2 |
| 10 | java-decompile | Java 字节码反编译:CFR/Procyon/Fernflower | P2 |
| 11 | jadx | Android APK 反编译:DEX → Java 源代码 | P2 |
| 12 | apktool | APK 解包、smali 反汇编、资源提取 | P3 |
| 13 | reverse-engineering-android-malware-with-jadx | 使用 JADX 的 Android 恶意软件逆向工程工作流 | P3 |
| 14 | firebase-apk-scanner | Firebase APK 配置安全扫描 | P3 |
| 15 | deobf-string | 通过模式分析和自动解密,解密或恢复混淆字符串 | P3 |
| 16 | deobf-indirect | 通过符号执行 + BFS 反混淆间接分支(CSEL+BR) | P3 |
| 17 | llvm-obfuscation | 基于 LLVM 的混淆:OLLVM、CFF、字符串加密、伪造控制流 | P3 |
| 18 | binary-lifting | 将机器码提升为 LLVM IR,用于分析、反编译和重新编译 | P3 |
| 19 | deobfuscating-javascript-malware | JS 恶意软件反混淆:Web 攻击、钓鱼页面、投放脚本 | P3 |
| 20 | deobfuscating-powershell-obfuscated-malware | 通过 AST + 动态分析进行多层 PowerShell 反混淆 | P3 |
| 21 | binary-analysis-patterns | 二进制分析:反汇编、反编译、CFG 分析、代码修补 | P3 |
| 22 | yara-rule-authoring | 编写 YARA 规则,用于恶意软件分类和威胁搜寻 | P3 |
| 23 | ghidra-headless | Ghidra 无头分析器:自动反编译、脚本分析 | P3 |
| 24 | frida-17 | Frida 17 JS API 兼容性:钩取、跟踪、动态插桩 | P3 |
| 25 | reverse-engineering-malware-with-ghidra | 使用 Ghidra 的恶意软件逆向工程工作流:导入项、字符串、解密、脱壳 | P3 |
| 26 | radare2 | radare2 逆向工程:反汇编、调试、脚本编写 | P3 |
2. 分类 — 先执行此步骤(再读取任何技能)
检查目标并确定:
- 目标类型:原生二进制文件(ELF/PE/Mach-O)/ JavaScript / 字节码(DotNet/Java/Python)/ Android APK / 其他
- 混淆类型(如可识别):CFF、VM 保护、字符串加密、加壳、JS 混淆器(obfuscator.io、JSFuck 等)
- 是否存在反调试 / 反逆向层
- 背景: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. 后备方案 — 无法确定分类时
如果检查后仍无法确定目标类型:
- 对
deep-analysis执行read_skill(P2) - 按照 deep-analysis 方法对目标进行分类
- 根据分类结果返回路由矩阵
- 加载相应的 P0/P1 技能
这是唯一应在 P0 之前加载 P2 技能的情况。
6. 快速参考清单
原生二进制文件
- 初步分类:识别保护器 / 加壳器(file、DIE、PEiD)
- 加载 P0:
code-obfuscation-deobfuscation - 是否有反调试?→ 加载
anti-debugging-techniques - 是否受虚拟机保护?→ 加载
vm-and-bytecode-reverse - 是否卡在 CFF?→ 加载
symbolic-execution-tools - 是否加壳 / 受保护?→ 加载
binary-protection-bypass - 是否有反逆向?→ 加载
anti-reversing-techniques - 是否有字符串加密?→ 加载
deobf-string - 是否有间接分支混淆?→ 加载
deobf-indirect - 是否经过 LLVM 混淆(OLLVM)?→ 加载
llvm-obfuscation - 是否需要二进制提升 / 重新编译?→ 加载
binary-lifting - 是否需要反汇编 / CFG / 修补?→ 加载
binary-analysis-patterns - 是否需要动态插桩 / 挂钩?→ 加载
frida-17 - 是否需要大规模 Ghidra 无头分析?→ 加载
ghidra-headless - 是否需要 Ghidra 恶意软件工作流?→ 加载
reverse-engineering-malware-with-ghidra - 是否优先使用 radare2?→ 加载
radare2 - 是否需要分析后的 YARA 签名?→ 加载
yara-rule-authoring - 反混淆 → 验证
JavaScript
- 初步判断:识别混淆器(obfuscator.io、JSFuck、自定义)
- 加载 P0:
ast-deobfuscation - 运行
scripts/detect-patterns.js,识别网站/框架 - 应用匹配的流水线(减少 CFF、解密字符串、内联分发器)
- 混淆程度较高?→ 另外加载
code-obfuscation-deobfuscation - JavaScript 恶意软件/网络钓鱼/下载器?→ 加载
deobfuscating-javascript-malware - 混有 PowerShell 载荷?→ 加载
deobfuscating-powershell-obfuscated-malware - 每个阶段后重新解析 → 验证
CTF
- 加载 P2:
ctf-reverse+deep-analysis - 识别题目类型(VM、加壳、加密、自定义)
- 根据路由矩阵加载 P0/P1
- 题目中有字符串加密?→ 加载
deobf-string - 基于 VM 的题目?→ 也可考虑
deobf-indirect - OLLVM/CFF 题目?→ 也可考虑
llvm-obfuscation - 需要动态分析?→ 加载
frida-17或radare2 - 求解 → 验证 flag
Java / Android
- 初步判断:是 JAR/class 文件还是 Android APK?
- Java 字节码 → 加载 P2:
java-decompile - Android APK → 加载 P2:
jadx(如需解包,还要加载apktool) - Android 恶意软件分析 → 另外加载
reverse-engineering-android-malware-with-jadx - 扫描 Firebase 配置 → 加载 P3:
firebase-apk-scanner - 字符串混淆?→ 另外加载
deobf-string - 动态插桩?→ 加载
frida-17 - 反编译 → 分析 → 验证
PowerShell / JS 恶意软件
- 初步判断:识别混淆层(base64、XOR、压缩、eval 链)
- PowerShell → 加载 P3:
deobfuscating-powershell-obfuscated-malware - JavaScript 恶意软件 → 加载 P0:
ast-deobfuscation,并另外加载deobfuscating-javascript-malware - 应用分层反混淆(Unicode → 解码 → AST 清理)
- 分析后需要 YARA 特征码?→ 加载
yara-rule-authoring - 验证行为等价性
通用 P3 工具 — 出现瓶颈时加载
- 字符串加密?→
deobf-string - 间接分支/CFG 受阻?→
deobf-indirect - LLVM 混淆?→
llvm-obfuscation - 二进制提升?→
binary-lifting - 通用二进制分析?→
binary-analysis-patterns - 自动化 Ghidra?→
ghidra-headless - Ghidra 恶意软件工作流?→
reverse-engineering-malware-with-ghidra - 实时挂钩/跟踪?→
frida-17 - radare2 脚本编写?→
radare2 - YARA 特征码?→
yara-rule-authoring