api-relay-audit
toby-bridges
Local security audit for AI API relays and LLM proxies: detects prompt injection, model substitution, tool-call rewriting, SSE anomalies, error leakage, and Web3 wallet risks.
Cristallin2006/ghidra-skill-for-dsh
Custom-built for dsh (DeepSeek Harness): persistent Ghidra headless daemon + reverse-engineering agent skills (triage/unpack/decompile/pwn/pcap/APK) with circuit breakers against agent failure loops. 为 dsh 深度定制:会熔断、能从复盘进化的逆向 skill 家族。
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:Cristallin2006/ghidra-skill-for-dsh
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
面向 dsh(DeepSeek Harness)的逆向工程 agent skill 家族:Ghidra 12.x headless 常驻 daemon(~0.2s/命令,无 Jython/GUI/MCP 依赖)+ 八场景方法论。覆盖 CTF 逆向、crackme、恶意样本分诊、漏洞预筛、二进制利用(pwn)、pcap 取证、APK 分析。
Reverse-engineering agent skills for dsh: a Ghidra headless RPC daemon (vendored ghidra-rpc + dsh patches) plus eight scenario skills — triage / unpack / static / vuln-audit / dynamic / pwn / traffic / android-re — for CTF reverse engineering, unpacking, malware triage, binary exploitation, pcap forensics and APK analysis.
全部结果为真实 CTF 题独立求解(不参考旧台账/WP),经原程序正负对照验证、session 逐行审计确认。
| 题目 | 题型 | 成绩 | 关键证据 |
|---|---|---|---|
| encode | UPX 壳 + 换表 base64 + RC4 | 40 min 做不出 → 16 min 解出 | 调校前后同题对比;提速来自机制而非模型:常驻 daemon + 三道脚本闸门 + 函数级 Oracle + 脱壳域 |
| Reverse-chal | Cython 3.0.10 CPython 扩展;IDEA 变体(mod-65537 乘)+ SM4 S 盒 + 随机掩码诱饵门 | 30 min 解出(同题最快,首解 55 min) | 语义建模路径:识别算法族后重建分组密码求逆;flag 结论带 --program-accept 落账 |
| AegisTrace | pcap 三字段半字节隐信道 + 零引用置换表 + 自定义协议完整利用链 | 29 min / 169 步盲测解出 | 判例文件与全部答案要素脱敏移出后重测(对照组 20 min);golden 值首现于 oracle 命中输出,结论经原程序 8/8 次接受回执终审 |
| vt(长城杯铁人三项初赛 · 赛时零解题) | PE32+ 反扫描装甲:28 节中 25 个伪壳节名(.vmp0/.enigma1/UPX0/.petite/logicoma…)+ 伪 Enigma/Denuvo 加密痕迹 + 96 函数共享同一 unwind 的 .pdata 伪模板;真实代码藏在线程误转字节码里 | 28 min 解出 | 自写递归下降反汇编器还原 15,997 条真实指令 → 校验收敛为标准 CRC-32 目标 → 2 字节密钥 65,536 空间穷举出唯一解 → unicorn 仿真打包器从 heap 直读 flag;正负对照成立(79BC 接受 / 79BD·79BB·0000 拒绝),全程未 patch、未查 WP |
同题三轮回放(Reverse-chal,2026-09-30)——每次失败都归因落地为机械修复,直到解出:
4ccec36c 骨架弃用投降(121 min 无 flag)→ 落地四处修复:骨架使用闸 / 否定论断强制落账 / stop_check 带路径投降闸 / cone_invert.py 锥形反推29bf99c0 谎称「上下文将尽」投降(19 min 无 flag,实测 1M 窗口占用不足三成)→ 再落三处修复:矛盾分类判词 / --diff-symbolize 输入字面量自动符号化 / 未收敛投降闸ddf11a87 30 min 解出,两道机械闸门按设计拦截持续硬化指标(多轮真题复盘 + 第三方对抗审计,happyVm / DEFCON26 quals 等):
| 目录 | 职责 |
|---|---|
ghidra-core |
唯一放代码的底座:engine(ghidra-rpc + dsh 补丁)、rpc_driver.py 统一入口、doctor.py 环境自检、三道闸门 ledger.py / read_views.py / crypto_sanity.py、分析脚本层(decomp_lint 伪码体检 / jt_resolve 跳转表 / frame_map 栈帧 / const_audit 常量对照 / emulate_program 整程序仿真 / model_diff 模型对拍 / oracle_family 打桩因子隔离等,全部自包含可独立调用) |
re-triage |
未知二进制第一步:判型/语言/壳三信号交叉(节名 + magic + 结构),输出路线决策;foreign-arch ELF 路由(Ghidra processor 反编译优先,objdump 只核对单点) |
re-unpack |
脱壳 + 强制验证:UPX/ASPack/Themida/VMProtect/多层壳,PyInstaller 一条龙(pycdc 覆盖 Python ≥3.9) |
ghidra-static |
静态深挖:反编译/xref/标注/patch/交付;Go/Rust stripped 指纹、CTF 模式库(含 fp16 自检向量) |
vuln-audit |
漏洞模式 checklist:内存破坏/格式化串/整数溢出/命令注入等 8 类,可达性优先 |
re-dynamic |
跑起来看:函数级 Oracle(qiling)、打桩 oracle 家族(单因子隔离)、模型差分校验、跨架构 qemu-user/gdb-multiarch、Frida 时间/随机源 hook、Windows GUI 消息驱动 |
pwn-exploit |
从洞到 flag:pwn_triage 保护矩阵硬门、checksec 决策树、ROP/fmtstr/堆/FSOP/内核配方库(370KB 按需 grep)、pwntools 模板五件套、游戏/文字冒险题专章(references/game-pwn.md:经济溢出/数值墙路标/道具编辑堆原语);「本地通≠远程通」验证门强制远程回显落账 |
traffic-analysis |
pcap 分诊、DNS/ICMP/时序隐信道、USB HID 还原、WPA/TLS 解密;脚本全零依赖 + tshark |
android-re |
纯 DEX APK:多 dex 启发式、jadx 四档反编译、Toast 锚点定位、真机 oracle、v1 重签 |
docs |
横向文档:smoke-tests.md(新脚本/新能力的最小冒烟判据——防"写了但永远不走")、legacy-plugin-pitfalls.md(旧插件坑归档)、cases/(真题判例归档,含完整题解,仅供写 smoke 判据时人工参考,不链回 skill) |
边界规则:执行代码在 core,场景 skill 只有方法论;知识存 references/ 可 grep 的纯数据文件,路由靠触发点指针,不建"知识库 skill"。
v0.9-market(收录版,不含尚在实测的 pwn-exploit;见 Release 页);手动安装走下面:~/.dsh/skills/(pwn-exploit / traffic-analysis / android-re 独立可选;pwn-exploit 的 exp 执行依赖 WSL 工具链,见 TOOLCHAIN.md)python3.12 -m venv ~/ghidra-rpc-venv
~/ghidra-rpc-venv/Scripts/python.exe -m pip install -e ~/.dsh/skills/ghidra-core/engine/ghidra-rpc
doctor.py toolchain 节为准)GHIDRA_INSTALL_DIR(Ghidra 12.x 安装目录)与 JAVA_HOME(JDK 21+);可选 DSH_GHIDRA_WS 指定工作区python ~/.dsh/skills/ghidra-core/scripts/doctor.py(全绿 exit 0)Windows 注意:Ghidra 的 ProjectLocator 拒绝以 . 开头的路径元素,~/.dsh/... 不能直接传给 JVM——底座自动走 junction ~/dsh-ghidra-workspace。
SK=~/.dsh/skills/ghidra-core/scripts
python "$SK/rpc_driver.py" ensure /path/to/binary # daemon 起停 + 导入分析(幂等)
python "$SK/rpc_driver.py" triage /path/to/binary # 一键分诊
python "$SK/rpc_driver.py" decompile /path/to/binary main # 反编译
python "$SK/rpc_driver.py" rename-function /path/to/binary FUN_00401000 check_flag
python "$SK/rpc_driver.py" version-track old.exe new.exe --changed-only
@绝对路径 作首个参数 = 完整 JSON 落盘;写操作即刻生效并自动存盘。完整命令清单见 ghidra-core/SKILL.md。
@out 落盘ledger.py(同区回访强制 --delta、结论写入即锁定、resolve 缺证据 exit 2 的反向门、hypothesis/plan 落账、--kind model 结论强制 --anchor L2 左逆锚定实测、hypothesis 三态闭环 confirmed/killed/waived)、read_views.py(渲染文本 vs 真实字节对照)、crypto_sanity.py(求逆前后合法性检查),违规一律 exit 2oracle_family.py 打桩隔离单因子(基线无输出自动抑制因果判词)、model_diff.py 模型对拍输出分歧指纹(宽度级 16/32 位半块规律 + 字节级 nibble 规律 ⇒ 接口错不是算法错;宽度级命中绝不落"疑似算法错")catalog 只注入 skill 的 description,SKILL.md 正文和铁律不在上下文里——"AI 不遵守 skill 准则"多源于此。dsh-hooks/ 用 dsh 内置的 hooks-claude-code 桥把关键纪律变成机械门:
gate_sample.py 对无台账样本的分析类直读(xxd/strings/objdump…)exit 2 阻断并给出流程指引(建台账后放行,pcap 修头等合法开局已豁免);gate_explore.py 熔断 heredoc/cat 落盘式探索——angr 禁项(无帧槽位/仿真证据不许上符号执行)、Cython 前置、变体枚举熔断(直指 model_diff.py)、30min ≥25 次探索且零 stuck 强制落账;gate_longrun.py 长任务强制落盘gate_stuck.py 卡点自述熔断——会话日志近 45min 内自述卡住(强措辞 1 次/弱措辞 ≥2 条)而台账零 stuck → exit 2 强制落账(判例 b781ff3c:4 次自述零落账,两个半边事实 30min 未接线,38min 零 exploit);每 episode 只拦一次,无活跃台账不执勤gate_churn.py 拟合熔断——目录 24h ≥8 个 .py 且活跃台账零 stuck → 逼 stuck 落账或升级 z3/emulate;可重触发:一次台账接触换 8 个脚本额度,用尽重新熔断(判例 116cdc04:stuck 落账一次后旧版永久放行,之后又堆 20+ 脚本)stop_check.py 收尾核对(默认启用,会话归属判定)——本会话台账有 observe 无下文 / flag 结论缺 program_accept / 存在 open hypothesis → deny 强制核对安装:dsh-hooks/ 拷到 ~/.dsh/hooks/,在 profile 的 cordis.patch.yml 插入 hooks-claude-code 挂载条目(完整 YAML 与排障回滚见 dsh-hooks/README.md)。改动需重启 dsh 服务 + 新开会话生效。
本仓库代码以 MIT 发布。衍生自以下来源,感谢原作者:
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: agent-skills、dsh-skills、cybersecurity。