2026/10/13 17:26:57

Decepticon Reverser 逆向技能目录全解析:从二进制分流到知识图谱的完整工作流

Decepticon Reverser 逆向技能目录全解析:从二进制分流到知识图谱的完整工作流 【免费下载链接】DecepticonAutonomous Hacking Agent for Red Team项目地址https://gitcode.com/gh_mirrors/de/Decepticon点击查看免费下载导读本文围绕 Decepticon自主红队攻击代理项目中的reverser逆向工程技能通道lane展开完整解读其根技能文档 SKILL.md 所定义的技能目录结构、能力契约与 10 步工作流。读完本文你将掌握 Decepticon 在二进制逆向场景下的完整作业路径从 ELF/PE/Mach-O 快速分流、加壳识别与脱壳、字符串分类提取、符号风险分级到 Ghidra 深度分析与知识图谱落盘以及 Hosted 与 Standalone OSS 两种运行模式下 REA 工具链的正确调用方式。一、技能定位reverse-engineering 通道的根指针reverser/SKILL.md是 Decepticon 二进制逆向通道subdomain: reverse-engineering的**根指针Root pointer**文档。它的职责不是替代理完成某一次具体分析而是告诉代理什么时候该进入这条通道——通过when_to_use字段声明触发词reverser binary reversing triage strings packer unpack rop ghidra firmware VMProtect VMP2 Themida virtualized protectors overview routing以一张Playbooks 目录表将通道内的子技能triage、firmware、packer-unpacking、virtualized-protectors、rop-chain、anti-debug-bypass、ghidra、windows-internals、game-security 等串成一张可路由的作战地图以一份capability_contract能力契约明确该通道的能力边界、运行环境、证据要求与验收口径。这条通道的目标产物非常明确把不透明的 ELF/PE/Mach-O/固件二进制转化为结构化情报——危险导入、内嵌机密、加壳签名、ROP 指令片段清单、Ghidra 深度分析反编译、交叉引用、P-code 仿真与 radare2 侦察脚本。二、能力契约通道的边界与证据口径根文档 frontmatter 中的capability_contract是理解整个通道设计哲学的关键契约字段值含义lanereverse-engineering通道标识用于技能路由scopeisolated-lab仅在隔离实验环境内作业environment[analysis-container, disposable-vm]分析容器或一次性虚拟机required_tools[ghidra, radare2, sanitizer]必备工具栈evidence[binary-sha256, function-map, dynamic-trace, minimized-input]必须保存的证据类型二进制 SHA-256、函数映射、动态轨迹、最小化输入verificationreproduce the claimed behavior against the pinned binary hash所有结论必须对着固定哈希的二进制可复现negative_controlrun a benign corpus input through the same harness必须运行良性语料作为阴性对照scorecard[reproducer-rate, root-cause-rate, artifact-completeness]复现率、根因率、产物完整度三项评分benchmarkheld-out-reversing对应留出式held-out逆向基准这套契约直接决定了下文工作流中反复出现的两个纪律一切结论都要锚定binary-sha256例如 Ghidra 技能明确要求记录二进制哈希、Evidence ID 与地址一切动态结论都要有阴性对照例如 fuzzing 技能要求以良性语料跑同一 harness 作为 negative control。这与仓库中 windows-internals、game-security 等技能里名字匹配只是线索lead不是发现finding的判定规则完全一致——Decepticon 的逆向通道刻意把可验证性放在了产出质量的首位。三、Playbooks 目录九大子技能的路由表根文档用一张表格定义了九个核心子技能及其适用场景技能用途reverser/triage第一轮 ELF/PE/Mach-O 快速分流reverser/firmware路由器 / IoT 固件提取reverser/packer-unpackingUPX / ASPack / Themida / VMProtect 脱壳reverser/virtualized-protectorsVMProtect / VMP2 / Themida 虚拟化保护工作流reverser/rop-chain面向漏洞利用的 gadget 搜索reverser/anti-debug-bypassIsDebuggerPresent、ptrace、NtGlobalFlag 等反调试绕过reverser/ghidraGhidra 深度分析——反编译、交叉引用、导入、P-codereverser/windows-internals一次性 Windows 虚拟机中的防御性驱动暴露评估reverser/game-security自托管游戏客户端、协议、回放与服务端权威性研究值得注意的是从仓库实际目录看packages/decepticon/decepticon/skills/standard/reverser/下的子技能远不止九项还包含深度分析类deep-analysis单函数/函数簇的深度优先逆向循环、ctf-triageCTF 题目分流与解题方法论恶意样本专项malware-triage15 分钟快速判定、android-malwareAPK 静态/动态分析、ios-static、dotnet-malware.NET 反混淆与配置提取、fileless-malware内存驻留与无文件攻击、ransomware-analysis、rootkit-analysis检测与猎杀类yara-huntingYARA 规则编写与大规模猎杀、fuzzingAFL / libFuzzer 覆盖率引导模糊测试。路由逻辑非常清晰triage负责找到信号deep-analysis负责沿着信号挖到底遇到加壳则进入packer-unpacking或virtualized-protectors发现可利用的内存破坏点则加载rop-chain。每个子技能同样带 frontmatter 与 MITRE ATTCK 映射例如packer-unpacking对应 T1027.002、rop-chain对应 T1203/T1055方便与整体红队杀伤链对齐。四、核心工作流10 步逆向作战循环根文档给出的 10 步工作流是整条通道的主干道。下面按步骤展开并结合源码说明每个环节的底层实现。第 1 步探测运行环境——Hosted 与 Standalone OSS 的分流Check which reversing tools the active runtime exposes. Hosted runs use an isolated REA/Ghidra companion and mirrored GUI; standalone OSS starts thereversingworkload for REA native analysis.Decepticon 存在两种运行形态Hosted托管运行使用隔离的 REA/Ghidra 伴生容器界面可镜像 CodeBrowser参与方代理把/workspace下发现的二进制交给rea_open_binaryStandalone OSS独立开源运行启动可选的reversingworkload通过rea_find_tools(binary_path, query)固定二进制并发现当前 Ghidra provider 暴露的原生工具。从源码看REA 工具链实现在 rea.py它通过环境变量DECEPTICON_REA_URL判断是否配置了 REA workloadrea_configured()并通过_request把GET /health、POST /find、POST /call三个 HTTP 端点包装成三个 LangChain 工具rea_status检查 REA/Ghidra workload 是否在运行GET /healthrea_find_tools(binary_path, query, cursor, limit)打开/workspace下二进制并分页发现可用的 Ghidra 会话工具每个工具的完整 schema 以 JSON 返回该调用会保留会话并固定二进制字节POST /findrea_call_tool(binary_path, name, arguments_json)按工具名与 JSON 参数执行已发现的 REA 工具结果返回前会保存结构化 Evidence 与 bundle manifestPOST /call。对应代理提示词 reverser.md 中的规则同样强调rea_status可用时先检查它REA 不可用时退回 radare2bin_r2_script bash只有 REA 未配置时才走 legacyanalyzeHeadless路径。第 2 步bin_identify—— 格式 / 架构 / NX / PIE 识别bin_identify— format, arch, NX/PIE工具定义位于 tools.pytool def bin_identify(path: str) - str: Parse a binarys header and return format, arch, bitness, NX/PIE, entry point. info identify_binary(path) return _json(info.to_dict())代理拿到结果后需记录format格式、arch架构、bitness位数、NX、PIE、entry point入口点并在知识图谱中添加带这些属性的file节点。这一步是整个分流的前提——后续能否直接用 ROP、是否需要先绕过 ASLR都取决于这里的 NX/PIE 判定。第 3 步bin_packer—— 熵值 签名识别加壳bin_packer— entropy signature其底层实现 packer.py 逻辑非常直白计算整文件的 Shannon 熵shannon_entropy以 bit/byte 计在文件字节中匹配内置签名表_SIGNATURES覆盖UPX!/UPX0/UPX1、.aspack、.Themida、.vmp0/.vmp1、.enigma1/.enigma2、.MPRESS1/.MPRESS2、PEBundle、.petite、.mew、NSPack、PECompact2、Y0da等判定规则entropy 7.0 或命中任何签名 → likely_packedTrue熵值超过 7.5 却无签名时会提示可能是自定义壳熵值低于 4.0 则提示大概率未加壳或文本密集。代理提示词对此有硬性纪律Ifbin_packersays likely_packed, STOP and unpack first——在加壳二进制上跑符号分析是浪费整个迭代。第 4 步加壳 → 进入脱壳子技能脱壳后重新识别If packed → follow the packer-unpacking skill, re-identify after unpack这一步路由到 packer-unpacking。该子技能给出完整的分级处置思路检测除了bin_packer还可用ent、自定义 Python 熵脚本、radare2 的r2 -qc iSj做节级熵分析以及detect-it-easy/diec和 YARA 包规则常见加壳签名表UPXUPX!magic、UPX0/UPX1节、ASPack.aspack节、Themida.themida节 反调试/反虚拟机、VMProtect.vmp0/.vmp1 虚拟化 handler、MPRESS.MPRESS1/2、PECompactpec1、Enigma.enigma1/2、Petite、FSG、MEW、Armadillo自动脱壳UPX 用upx -d若报 not packed by UPX说明版本字段被篡改可用 Python 把UPX!后的版本字节改回0x0d再脱ASPack 用unaspack或 x64dbg ScyllaMPRESS 用quickunpackPECompact/FSG 可用unpacme或沙箱内存转储手动脱壳Themida/VMProtect/Enigma 等商业壳没有可靠自动工具时采用通用手法——禁用 ASLR/DEP、入口点下断、单步跟踪解包 stub、观察大块VirtualAlloc与memset后写入解密代码、在尾跳tail jump常为JMP reg或 PUSHAD/POPAD 后的 RET处到达 OEP用 Scylla 转储并重建 IAT反脱壳对抗IsDebuggerPresent用 ScyllaHide 或 NOP 补丁、rdtsc计时检测用 timing 插件、INT3 扫描改用硬件断点、自校验需找到校验循环打补丁、TLS 回调在入口前执行需在 TLS 列表下断、CPUID 虚拟化位检测需在裸机或 CPUID masking 的 KVM 上运行。脱壳完成后必须重新执行 triagere-run triage on the dumped file并把结果写入知识图谱先以packed: packer-name观察节点记录样本 SHA-256 与熵值再以unpacked: sha256产物节点记录原哈希与所用脱壳工具。第 5 步bin_strings—— 分类字符串提取为图谱播种bin_strings— categoryurl/ip/crypto/secret/version to seed the graph字符串工具源码 strings.py 展示了完整的分类体系。extract_strings同时提取可打印 ASCII 与 UTF-16LE 字符串_classify按优先级将其归类到十个桶分类判定依据图谱用途urlhttp/https/ftp/ws://前缀潜在 entrypoint / C2 候选ipIPv4 字面量逐段校验 0-255潜在 entrypoint / C2 候选emailRFC 风格邮箱情报线索pathUnix/Windows 路径文件系统行为线索crypto32/40/48/56/64/96/128 位十六进制串、PEM 标记secret 候选节点versionX.Y.Z(.W)版本串CVE 查询种子formatprintf 风格格式串格式化串漏洞候选secretsk-、AKIAAWS、AIzaGoogle、ghp_GitHub PAT、xox*Slack、JWT 等启发式secret 节点importmalloc/free/memcpy/system/socket 等危险符号提示风险导入text其余兜底工作流要求按category_filtersecret、url、crypto、version分别拉取secret/crypto 命中全部建secret节点url/ip 考虑建entrypoint或 C2 候选节点。工具函数 bin_strings 会返回category_counts与截断后的字符串明细代理可据此精确播种。第 6 步bin_symbols_report—— 符号风险分级bin_symbols_report— risk bucket classification代理先用 shell 提取导入表nm -D ... | awk $2U{print $3}或objdump -T ...把符号清单交给 bin_symbols_report底层summarize_symbols会把符号按风险桶分类输出 JSON 报告。工作流判定risk_score 10 的符号值得深入。子技能 triage 还补充了另一个维度——缓解措施核查checksec --file... --formatjson检查 stack canary、RELRO、fortify缺失的缓解措施以vulnerability节点severitymedium入图。第 7 步版本串 →cve_lookup/cve_by_packageVersion strings →cve_lookupcve_by_package对第 5 步发现的每个版本串若对应已知库则调用cve_by_package取候选 CVE ID再用cve_lookup打分排序。这两个工具实现在 research/tools.pycve_lookup(cve_ids)针对 NVD EPSS 查询返回按可利用性排序的记录综合评分融合了 CVSS base0-10、EPSS 概率log 缩放与 CISA KEV 成员资格KEV 命中最低 9.0cve_by_package(package, version, ecosystem)按 OSV 查询生态内packageversion的漏洞生态支持 PyPI、npm、crates.io、Go、Maven、RubyGems、NuGet、Packagist、Pub、Hex。在固件场景firmware中对提取出的 busybox/kernel/dropbear/openssl 版本逐一执行这两个查询如cve_by_package(busybox, 1.27.2, OSS-Fuzz)即可把固件审计快速对接到漏洞情报。第 8 步REA 打开二进制并发现原生工具In hosted runs, the engagement agent passes a discovered/workspacebinary torea_open_binaryand discovers available native tools withrea_find_tools. In standalone OSS, callrea_find_tools(binary_path, query)to pin the binary and discover the active Ghidra providers tools.无论哪种运行形态二进制必须已存在于该次交战的/workspace下不需要单独上传。rea_find_tools(binary_path, query)的语义是固定字节 保留 Ghidra 会话返回分页的工具列表每个工具的 schema 是完整 JSON。ghidra 子技能对这一步有几条关键纪律打开查看器不等于分析了二进制Opening the viewer alone does not imply that a binary was analyzed——必须真正跑分析并拿到 Evidence 结果不要从完整包目录推断工具可用性Do not infer tool availability from the full package catalog一律用rea_find_tools按任务相关查询地址级调用可以驱动镜像 GUI 的 Listing 与 Decompiler 导航但在声称操作员看到了该位置之前必须先核实 GUI 结果若导航失败保留 REA 分析结果并单独说明缺少视觉确认每个发现都要记录二进制哈希、Evidence ID 与地址。Standalone OSS 下sidecar 会固定字节并把原始 Evidence bundle 持久化到/workspace/.analysis/rea/runId/然后才交付成功结果——这正对应能力契约里的evidence: [binary-sha256, function-map, dynamic-trace, minimized-input]。第 9 步深度分析与 r2 回退Inspect functions and cross-references with REA native tools, preserving each Evidence ID and bundle manifest. Hosted GUI visibility is a separate readback claim. In standalone OSS, userea_call_toolfor deep analysis andbin_r2_scriptas a fallback when REA is unavailable.REA 可用时用rea_call_tool(binary_path, name, arguments_json)执行发现的 Ghidra 原生工具做函数与交叉引用分析每个结论引用对应 Evidence ID 与 bundle manifestREA 不可用时bin_r2_script会生成一份 radare2 侦察脚本tools.py通过r2 -i喂入legacyghidra_analyze/ghidra_decompile/ghidra_xrefs自动选择 Ghidra MCP 或 headlessanalyzeHeadless仍作为回退路径。这里还要区分两个层次的深度分析若目标是把单个函数彻底看懂加载 deep-analysis 的Decompile→Rename→Retype→Comment→Re-read 循环并以每 3-5 次工具调用做一次 on-task 检查、最多深入 3 层调用必须写知识图谱笔记防止 context-rot上下文漂移密码学原语识别可通过搜索已知常量ChaCha20 sigma、AES S-box、MD5/SHA-256 初始值、TEA delta或capa完成若目标是VMProtect / VMP2 / Themida 虚拟化保护加载 virtualized-protectors不要承诺自动去虚拟化Do not promise automatic devirtualization核心纪律是避免脆弱的 VM-handler 模式匹配优先做增量提升incremental lifting与控制流恢复——通过bin_r2_script/Ghidra 定位 VMEnter stub、handler-table 引用、VIP 移动、VMEXIT 分类并记录栈位移证据报告需给出 protector 类型、候选 VMEnter 地址及理由、dispatch 位置、VIP 来源、VMEXIT 分类与恢复计划。第 10 步全量落盘知识图谱Record every observation in the knowledge graph每一步的观察都以kg_add_node/kg_add_edge落盘。各子技能给出了具体图模型例如triagefile节点format/arch/NX/PIE 属性→vulnerability缺失缓解medium→secret/entrypoint/ C2 候选packer-unpackingpacked: name观察节点sample、entropy、packer属性加exhibits边脱壳后unpacked: sha256产物节点original、unpacker属性rop-chainexploit_chain节点target、gadget_count、libc_required用enables边连接 BOF 漏洞、用achieves边连接 crown jewelanti-debug-bypassanti-debug: check-name观察节点check、bypassed属性。代理提示词 reverser.md 还要求每个观察落到findings/FIND-NNN.md与findings/binaries/binary.md并显式交叉引用相关观察——PERSIST是操作循环的第 10 条说明图谱与文件化双轨记录是强制项。五、关键子技能速览工作流的延伸5.1 ROP 链构建rop-chain当 triage 发现NX/PIE 均关闭且存在危险 C 导入时这就是首要漏洞利用开发目标直接加载 rop-chain 子技能。其流程缓解清单checksec/pwn checksec确认 NX、PIE、RELRO、Canary、ASLR 状态Gadget 发现ROPgadget --binary X --depth 8过滤pop rdi ; ret、pop rsi ; ret、pop rdx ; ret、syscall ; ret、裸ret备选ropper、one_gadget链型模板直接 syscallexecve(/bin/sh)x86_64 需按序布置pop rax/rdi/rsi/rdxsyscall、libc 泄露后调system注意用RETgadget 对齐栈、满足约束的one_gadget单跳Write-what-where无初始泄露时先puts(puts_got)泄 libc 基址再回main重入现代绕过栈迁移pop rbp; retleave; ret、SROPrt_sigreturn一次设置全部寄存器、JOP针对 CET/shadow stack 的ENDBR64gadgetCVSS 口径可用 RCE 链 9.8-10.0、需本地交互 7-8、跨运行稳定击败 ASLR 的链 10.0。5.2 固件提取firmwarebinwalk -eM递归解包 → 定位squashfs-root/rootfs→ 检查/etc/passwd、/etc/shadow哈希喂 hashcat、init 脚本 → 定位 web 服务二进制httpd/lighttpd/nginx/boa并对每个执行bin_identifybin_stringsbin_symbols_report→ 优先审计www/cgi-bin/常直接以查询参数调system()→ 在strcmp附近手工审计硬编码口令 → 认证绕过审计/debug、/cgi-bin/shell、UART/JTAG→ 版本交叉引用 CVE。5.3 反调试绕过anti-debug-bypass枚举bin_anti_debug_scan/ 静态 grep / YARA→ 按检查项一一对应绕过Windows 侧IsDebuggerPresent改 PEB.BeingDebugged、CheckRemoteDebuggerPresent/NtQueryInformationProcess(ProcessDebugPort/Flags/Handle)hook 返回、PEB.NtGlobalFlag清零、NtSetInformationThread(ThreadHideFromDebugger)、INT 2D/3、硬件断点检测清零 DR0-3Linux 侧ptrace(PTRACE_TRACEME)、/proc/self/status的TracerPid附 LD_PRELOAD 挂钩源码示例、prctl(PR_SET_DUMPABLE,0)、getppid()父进程名、rdtsc计时。动态绕过主力是 x64dbg ScyllaHide、gdb 的catch syscall ptracereturn 0静态绕过可把检查函数 patch 为xor eax,eax; ret注意自校验。5.4 恶意样本专项与检测猎杀malware-triage15 分钟四阶段静态 5 分钟 → 动态 5 分钟 → 脱壳 → 判定 CLEAN/SUSPICIOUS/MALICIOUS/NEEDS-DEEPER并输出 IOC 提取模板yara-hunting从指纹样本转向指纹技术给出带pe/hash模块、filesize 边界、2 of约束的规则模板以及 VT Retrohunt / MalwareBazaar / 本地语料三种猎杀通道和六类常见坑短字符串误报、无边界扫描、通配符爆炸等fuzzing目标范围界定 → 选择 AFL/libFuzzer → ASanUBSan 插桩构建 → harness 骨架 → 种子语料精选 → 崩溃复现与afl-tmin最小化 → 按 ASan 前缀评估可利用性 → 每个崩溃保留最小输入 SHA-256 sanitizer 输出 良性对照作为validate_workspace_finding的输入。六、从源码看工具链的落点这条通道的实操层全部由 tools/reversing 目录下的实现支撑值得按模块追踪工具实现文件关键行为bin_identifytools.py → binary.py解析头部输出 format/arch/bitness/NX/PIE/entrybin_stringstools.py → strings.pyASCII UTF-16LE 提取十类自动分类bin_packertools.py → packer.py熵 7.0 或签名命中 → likely_packedbin_roptools.pyRET 结尾字节扫描非反汇编器喂给 Ropper/ROPgadgetbin_symbols_reporttools.py → symbols.py符号风险桶分类bin_ghidra_script/bin_r2_scripttools.py → scripts.py生成可落盘的 Ghidra headless / r2 侦察脚本ghidra_analyze/decompile/xrefs/statustools.py → ghidra.py自动选择 Ghidra MCP 或 headless 后端rea_status/find_tools/call_toolrea.pyREA workload 健康检查、工具发现分页、按 schema 调用并保存 Evidencecve_lookup/cve_by_packageresearch/tools.pyNVDEPSSKEV 综合打分 / OSV 按包查漏洞代理身份提示词 reverser.md 把以上工具收敛为 10 条操作循环TRIAGE → UNPACK → HARVEST → RISK → RADARE2 → DEEPEN → VIRT → XREFS → EXPLOIT → PERSIST并定义了四条猎杀通道应用二进制、固件、恶意样本防御性研判、漏洞利用开发与本根文档的 10 步工作流互为印证。七、使用前提与边界运行环境该通道设计运行于isolated-lab分析容器或一次性虚拟机Windows 驱动评估windows-internals与游戏安全研究game-security都带明确的范围约束授权主机清单 / 自托管靶标并明令禁止加载易受攻击驱动、关闭 HVCI/VBS、开发反作弊绕过等行为工具可用性REA 工具链依赖DECEPTICON_REA_URL配置与reversingworkload 是否启动REA 不可用时radare2 与 legacy Ghidra headless 是文档明确指定的回退路径结论分级无证据支撑的观察只是 triage lead可报告的 finding 必须满足固定哈希 可复现 阴性对照三要素这是贯穿整个通道的统一验收标准。综上reverser/SKILL.md不是一篇孤立的技术文档而是 Decepticon 逆向通道的总调度页它用能力契约划定边界用 Playbooks 表实现技能路由用 10 步工作流串起从二进制分流到知识图谱落盘的全过程。对于希望在 Decepticon 体系中开展二进制逆向与漏洞利用开发的工程实践者这条通道提供了从工具调用到证据管理的完整参考实现。赞分享【免费下载链接】DecepticonAutonomous Hacking Agent for Red Team项目地址https://gitcode.com/gh_mirrors/de/Decepticon点击查看免费下载相关推荐Decepticon Reverser Agent 逆向分析全流程指南从二进制 TRIAGE 到 REA 深度反编译Decepticon Reverser Agent 逆向分析全流程指南从二进制 TRIAGE 到 REA 深度反编译 导读 本文基于 Decepticon使用 CodeScope 知识图谱进行 Bug 根因分析从 GitHub Issue 到代码定位的完整工作流使用 CodeScope 知识图谱进行 Bug 根因分析从 GitHub Issue 到代码定位的完整工作流 本文以 qwen code 仓库内置的 Code人工智能AI Agent代码智能体工具调用交互助手CLIQwen深入解析angr控制流图分析二进制程序逆向工程的核心技术在二进制安全分析和逆向工程领域angr框架的控制流图分析技术为研究人员提供了强大的程序理解能力。作为angr平台的核心功能之一控制流图能够准确揭示程序的执行应用安全开发工具创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考