[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80087":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":14,"stars7d":16,"stars30d":17,"stars90d":15,"forks30d":15,"starsTrendScore":18,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":21,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":35,"readmeContent":36,"aiSummary":37,"trendingCount":15,"starSnapshotCount":15,"syncStatus":16,"lastSyncTime":38,"discoverSource":39},80087,"algokiller-plugin","icloudza\u002Falgokiller-plugin","icloudza","ARM64 trace evidence analysis & cipher algorithm recovery — Claude Desktop plugin with skills + local MCP server driving the native ak_search engine over GB-scale trace files","https:\u002F\u002Fgithub.com\u002Ficloudza\u002Falgokiller-plugin",null,"Python",62,19,1,0,2,3,4,47.2,"MIT License",false,"main",true,[25,26,27,28,29,30,31,32,33,34],"arm64","binary-analysis","claude-code","claude-desktop","cryptanalysis","frida","gumtrace","mcp","reverse-engineering","trace-analysis","2026-06-12 04:01:26","# algokiller-plugin\n\n**语言**：**中文** | [English](README.en.md)\n\n面向 ARM64 trace 证据分析与算法\u002F密文还原的 **Claude 插件**（同时兼容 Claude Code CLI 与 Claude Desktop App）。把 AlgoKiller 方法论打包为 skill，配本地 MCP server 驱动 native `ak_search` 引擎（14 个 subcommand，专攻 GB 级 trace）。\n\n> **方法论 + ak_search 引擎原作**：[AlgoKiller](https:\u002F\u002Fgithub.com\u002Flidongyooo\u002FAlgoKiller) by [@lidongyooo](https:\u002F\u002Fgithub.com\u002Flidongyooo)\n> 上游贡献 `match` \u002F `context` \u002F `daemon` 三个核心子命令（mmap + BMH + 行号索引 + tab 协议 daemon）以及原始方法论 harness。\n> 本仓库在此之上额外扩展了 11 个 native 子命令（`regflow` \u002F `producer` \u002F `semop` \u002F `lint` \u002F `fold` \u002F `callgraph` \u002F `modgraph` \u002F `hexblock` \u002F `constscan` \u002F `cryptoinstr` \u002F `bytes`，详见 [tools\u002Fsearch\u002FREADME.md](tools\u002Fsearch\u002FREADME.md)）并把整套打包为 Claude 插件（Claude Code \u002F Desktop 都能加载）。原始代码版权归上游作者；plugin 自身的扩展代码 MIT。\n\n---\n\n## 🚀 快速安装\n\n```bash\nclaude plugin marketplace add icloudza\u002Falgokiller-plugin\nclaude plugin install ak@ak-suite\n```\n\n更新：\n\n```bash\nclaude plugin marketplace update\nclaude plugin update ak@ak-suite\n```\n\n> Claude Code REPL 里也可以用 `\u002Fplugin marketplace add ...` \u002F `\u002Fplugin install ...` slash 等价命令。手动安装方式见下方 [完整安装说明](#安装)。\n\n**Cursor \u002F Codex**：本仓库也提供标准 stdio MCP server 配置示例。Cursor 可直接使用 `.cursor\u002Fmcp.json`；Codex 可复制 `examples\u002Fmcp\u002Fcodex.config.toml` 到 `~\u002F.codex\u002Fconfig.toml`。详见 [Cursor and Codex MCP setup](docs\u002Fmcp-clients.md)。注意：非 Claude 客户端只能直接使用 MCP 工具，不会自动获得 Claude slash commands \u002F skill 自动加载。\n\n---\n\n## 能力\n\n1. **Skills**（model-invoked 自动加载）\n   - `ak:ciphertext-recovery` —— 密文 \u002F header \u002F token 反向还原加密、签名、编码算法\n   - `ak:trace-analysis` —— 字段语义 \u002F 执行流 \u002F 检测点 \u002F buffer 生命周期等开放问题\n2. **Slash commands**（5 个，`\u002Fak:` 命名空间）\n   - `\u002Fak:ciphertext \u003Ctrace> \u003Ctask>` —— 强激活：密文 \u002F 算法还原模式\n   - `\u002Fak:general \u003Ctrace> \u003Ctask>` —— 强激活：通用 trace 分析模式\n   - `\u002Fak:status` —— 当前 session digest（绑定 \u002F output_dir \u002F ledger 摘要 \u002F artifacts）\n   - `\u002Fak:rebind` —— 同 trace 新 `\u003Ctimestamp>\u002F` 重绑（多次分析对照不冲突）\n   - `\u002Fak:fold` —— 折叠当前 trace（hash loop 类 99% 压缩，然后可选 rebind 到折叠版）\n3. **26 个 MCP 工具**(19 trace\u002Fartifact\u002Fstatic + 7 hypothesis-ledger)\n   - 绑定 \u002F 制品：`bind_trace` \u002F `pick_output_dir`（弹原生目录选择器）\u002F `write_artifact` \u002F `list_artifacts` \u002F `read_artifact`\n   - 基础检索：`trace_search` \u002F `trace_context`\n   - 数据流：`trace_regflow`（寄存器演化）\u002F `trace_producer`（找值的最近写入者）\u002F `trace_semop`（指令语义分类，11 类）\n   - 体检与降噪：`trace_lint`（一遍 JSON 体检）\u002F `trace_fold`（block-aware 折叠，115 MB → 1.1 MB）\n   - 调用图：`trace_callgraph`（Top-K \u002F xref）\u002F `trace_modgraph`（跨模块矩阵）\u002F `trace_hexblock`（call+args+hexdump+ret 结构化）\n   - 密码学指纹：`trace_constscan`（**97 个** hash\u002Fcipher\u002Fecc\u002Fcrc\u002Fmac 常数指纹 — 95 个 scalar literal + 2 个 NEON SIMD 广播；含 MD5 init+T 表 \u002F SHA-256 init+K 表 \u002F SM3 init+T_j \u002F SHA-3 \u002F CRC32 \u002F AES sbox+Te0 \u002F SM4 \u002F ChaCha20 \u002F Poly1305 \u002F SipHash \u002F HMAC ipad-opad (scalar + SIMD) \u002F P-256 \u002F secp256k1 \u002F Ed25519 \u002F Curve25519；带 `verdict` 分级 `real` \u002F `real_simd` \u002F `weak` \u002F `alu_only`；MD5.T[i] 等主循环常数附 `block_count_estimate`）\u002F `trace_cryptoinstr`（ARM Crypto Extensions 硬件指令：AES\u002FSHA-1\u002FSHA-256\u002FSHA-512\u002FSHA-3\u002FSM3\u002FSM4\u002FGHASH）\u002F `trace_bytes`（hex 字面量含自动反序变体）\n   - 静态分析：`run_static_tool` —— 白名单调用系统 CLI（radare2 \u002F binutils \u002F LLVM \u002F jtool2 \u002F class-dump \u002F ripgrep \u002F jq）\n4. **反漂移注入**\n   - 每次工具返回带 `discipline_reminder`；每 20 次附 `discipline_full_reinjection` 完整规则段\n5. **Sub-agents**（4 个，全部 read-only 隔离）\n   - `hypothesis-reviewer` —— 独立 context 蓝军，`hypothesis_conclude(high)` 之前主 agent spawn 它做独立证据审查。详见 [docs\u002Fagents.md](docs\u002Fagents.md)。\n   - `trace-hexdump-extractor` —— 大 hexdump 在子上下文里解析成结构化字段返回，主会话不被 raw bytes 淹没\n   - `binary-static-inspector` —— 包 Binary Ninja MCP \u002F BinAssistMCP \u002F `run_static_tool`，主会话只接收符号 \u002F decompile 结论而非 50 KB disassembly\n   - `ledger-curator` —— 写交付物前的 ledger 一致性 audit，识别未引用的 concluded 假设\n6. **Hooks**（v1.0.0 新增；6 类 + 2 matcher 共 7 条注册）\n   - `PreCompact(auto)` —— 长 scan 持锁中阻断 auto-compact + dump session 摘要到磁盘\n   - `PreCompact(manual)` —— 用户主动 `\u002Fcompact` 时不阻断，仍 dump 摘要\n   - `SessionStart(compact)` —— compact 后注入 ledger 摘要 + `[H\u003Cn>]` 引用规则\n   - `SessionStart(startup|resume)` —— 自动装 `pyright`（驱动 .lsp.json）+ 环境诊断\n   - `Stop` —— 写 `session-summary.md`\n   - `SubagentStop` —— 校验 `hypothesis-reviewer` 真的落了 `mark_hypothesis_reviewed`\n   - `PreToolUse(write_artifact)` —— 客户端预警：draft 里 `[H\u003Cn>]` 引用数 \u003C ledger concluded 数时 emit warning\n7. **大 trace 多线程扫描**\n   - `trace_constscan` \u002F `trace_cryptoinstr` 自动按 CPU 数据并行（默认 = 主机核数，封顶 16，可经 `threads` 参数覆盖）。4.5 GB \u002F 48 M 行 trace 上 `constscan` 8 线程 ≈ 19 s（单线程 121 s），输出对所有线程数 byte-identical。\n   - 长 scan 通过 `~\u002F.algokiller\u002Factive-scans.lock` 持 kernel-flock；PreCompact 钩子据此阻断 auto-compact，进程崩溃时内核自动释放锁，无 stale-lock 风险。\n\n---\n\n## 平台要求\n\n- **macOS**（Apple Silicon \u002F Intel，`bin\u002Fak_search` 按本机架构编译）\n- **Python 3.11+**\n- **零 Python 外部依赖**（MCP server 用纯标准库讲 JSON-RPC 2.0 over stdio）\n\n二进制架构不匹配时重编：\n\n```bash\ncd tools\u002Fsearch && make\ncp ak_search ..\u002F..\u002Fserver\u002Fbin\u002Fak_search\n```\n\n---\n\n## 安装\n\n> 一行装机命令见顶部 [🚀 快速安装](#-快速安装)。\n\n**手动安装（备选）**：克隆仓库后\n- **Claude Desktop**：`+` → **Plugins** → **Add plugin** → 选本地目录\n- **Claude Code**：在仓库根目录跑 `claude plugin install .`（或把仓库路径加进 `claude plugin marketplace add \u003Clocal>`）\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Ficloudza\u002Falgokiller-plugin\n```\n\n装完应能看到 `ak` 在 **Plugins** 菜单，`\u002Fak:ciphertext` 和 `\u002Fak:general` 在 **Slash commands**。\n\n> 如果之前以本地目录方式注册过同名 plugin，marketplace 装新版后用 `claude plugin uninstall \u003Cname>@\u003Cold-source>` 卸掉老版本，避免双注册。\n\n---\n\n## 如何生成 trace\n\n本 plugin 期待的 trace 格式由配套采集器 **[GumTrace](https:\u002F\u002Fgithub.com\u002Flidongyooo\u002FGumTrace)** 生成 —— 基于 Frida Gum Stalker 引擎的 ARM64 动态指令追踪工具，作者 [@lidongyooo](https:\u002F\u002Fgithub.com\u002Flidongyooo)。\n\n| 维度 | 说明 |\n|---|---|\n| 平台 | Android (ARM64) + iOS (ARM64) |\n| 引擎 | Frida Gum Stalker |\n| 输出 | `[module] 0xABS!0xREL mnemonic operands; ...` + `call func:` + `ret:` 等 5 类行 |\n| 与本 plugin 关系 | **配套工具链**：GumTrace 出 trace → algokiller plugin 分析 trace |\n\n### 端到端工作流\n\n```bash\n# 1. 编译 GumTrace（首次）\ngit clone https:\u002F\u002Fgithub.com\u002Flidongyooo\u002FGumTrace.git\ncd GumTrace\n.\u002Fbuild_android.sh    # 或 .\u002Fbuild_ios.sh\n\n# 2. 推送到设备并 Frida 注入\nadb push build_android\u002FlibGumTrace.so \u002Fdata\u002Flocal\u002Ftmp\u002F\nfrida -U -f com.example.app -l example.js\n\n# 3. 在 App 里触发要分析的操作（登录 \u002F 发消息 \u002F token 生成等）\n\n# 4. 拉回 trace 文件到 macOS\nadb pull \u002Fdata\u002Fdata\u002Fcom.example.app\u002Ftrace.log ~\u002Fcaptures\u002Flogin.trace.log\n\n# 5. 喂给本 plugin（在 Claude Code \u002F Claude Desktop 自然语言触发或敲 slash）\n#    例如：\"用 algokiller ciphertext 模式分析 ~\u002Fcaptures\u002Flogin.trace.log，还原 X-Sign 密文 a3b2c1...\"\n```\n\n详细 hook 写法见 GumTrace 的 [example.js](https:\u002F\u002Fgithub.com\u002Flidongyooo\u002FGumTrace\u002Fblob\u002Fmain\u002Fexample.js) \u002F [example_ios.js](https:\u002F\u002Fgithub.com\u002Flidongyooo\u002FGumTrace\u002Fblob\u002Fmain\u002Fexample_ios.js)，以及本仓库 [`examples\u002Ffrida-gumtrace\u002F`](examples\u002Ffrida-gumtrace\u002F) 的三个实战模板（含 anti-jailbreak bypass + spawn 范式）。\n\n> **iOS 越狱设备部署完整步骤**（iproxy + scp + ldid + 反越狱 \u002F 反 frida 检测处理）详见 **[docs\u002Fsetup-ios.md](docs\u002Fsetup-ios.md)** —— Dopamine 越狱、known_hosts 冲突、TweakInject 注入失败、Dopamine 隐藏越狱与 GumTrace 加载冲突、大 trace 文件 USB 续传等坑都有命令级处置方案。\n\n> Frida 原生 trace（`frida-trace` \u002F Stalker 默认 emit）格式不兼容本 plugin —— 必须用 GumTrace 的自定义 emitter。\n\n---\n\n## 使用\n\n**强激活（推荐）**：\n\n```\n\u002Fak:ciphertext \u002FUsers\u002Fyou\u002Flogin.trace.log 还原 header X-Sign 中的密文 a3b2c1d4...\n\u002Fak:general    \u002FUsers\u002Fyou\u002Frisk.trace.log  说明第 99999 行 x0 返回值是怎么计算出来的\n```\n\n**自由输入**（让 Claude 按 skill description 自动加载）：\n\n> 这里有 ARM64 trace `\u002Fpath\u002Fto\u002Ftrace.log`，帮我还原生成密文 `a3b2c1...` 的算法。\n\nSlash command 形式更确定，自由输入更自然。\n\n---\n\n## 交付物存放路径\n\n每次 `bind_trace` 自动按 **5 段优先级** 解析输出目录，并把结果通过 response 的 `output_dir_resolved` + `output_dir_source` 两个字段告诉 agent；agent 必须在首次 `write_artifact` 之前把位置告诉用户。\n\n```\n① bind_trace(output_dir=...)              ← 显式参数\n② $ALGOKILLER_OUTPUT_DIR                  ← env 全局覆盖（CI \u002F 高级用户）\n③ \u003Cproject>\u002F.algokiller.toml [output] dir ← 项目级配置\n④ \u003Cproject>\u002F.algokiller\u002F\u003Ctrace>\u002F\u003Cts>\u002F     ← trace 路径上溯 4 层找项目标记\n                                            (.git \u002F pyproject.toml \u002F Cargo.toml \u002F\n                                             package.json \u002F go.mod \u002F Makefile 等)\n⑤ \u003CDocuments>\u002FAlgoKiller-Reports\u002F\u003Ctrace>\u002F\u003Cts>\u002F   ← 兜底\n   (Linux 优先 XDG_DOCUMENTS_DIR；macOS\u002FWindows 用 ~\u002FDocuments)\n```\n\n每次 bind 都新建 `\u003Cts>\u002F` 子目录，方便横向对照。\n\n**`pick_output_dir`**：用户想交互式选位置时，agent 调这个工具弹原生选择器——macOS Finder `choose folder`、Windows `FolderBrowserDialog`、Linux `zenity` \u002F `kdialog`；headless \u002F web 客户端返回 `unsupported`，agent 收到 hint 后改走\"让用户在对话里说路径\"。\n\n**`.algokiller.toml` 项目配置示例**（放在项目根）：\n\n```toml\n[output]\ndir = \"build\u002Falgokiller-reports\"   # 相对路径相对于项目根；也支持绝对路径\n```\n\n`write_artifact(\"recovered.py\", source)` 写 `recovered_CIPHERTEXT_\u003Cts>.py`。不再写 `.notes.md` sidecar——报告本身就承载所有上下文，sidecar 是冗余的 token 开销。\n\n---\n\n## 目录结构\n\n```\nalgokiller-plugin\u002F\n├── .claude-plugin\u002Fplugin.json\n├── .mcp.json                       # MCP server 声明\n├── LICENSE                         # MIT\n├── server\u002F                         # JSON-RPC 2.0 MCP server (stdio)\n│   ├── algokiller_mcp.py\n│   ├── state.py \u002F daemon.py \u002F discipline.py \u002F artifacts.py\n│   ├── static_tools.py             # 白名单 CLI runner\n│   └── bin\u002Fak_search               # native 搜索引擎 (Mach-O)，**不进 Bash PATH**\n├── skills\u002F                         # 所有 skill（含 slash 激活入口和方法论）\n│   ├── ciphertext\u002FSKILL.md         # \u002Fak:ciphertext 强激活（user-only）\n│   ├── general\u002FSKILL.md            # \u002Fak:general 强激活（user-only）\n│   ├── ciphertext-recovery\u002FSKILL.md  # 完整密文还原方法论（model + user）\n│   └── trace-analysis\u002FSKILL.md       # 完整通用 trace 分析方法论（model + user）\n└── README.md \u002F README.en.md\n```\n\n---\n\n## 本地 smoke test（不进任何 Claude 客户端）\n\n```bash\nprintf '%s\\n' \\\n  '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2024-11-05\",\"capabilities\":{}}}' \\\n  '{\"jsonrpc\":\"2.0\",\"method\":\"notifications\u002Finitialized\"}' \\\n  '{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"tools\u002Flist\"}' \\\n  | python3 server\u002Falgokiller_mcp.py\n```\n\n期望：`initialize` 响应 + `tools\u002Flist` 返回 26 个工具（19 个 trace\u002Fartifact\u002Fstatic 工具 + 7 个 hypothesis-ledger 工具，含 `pick_output_dir` \u002F `mark_hypothesis_reviewed` \u002F `hypothesis_archive`）。\n\n---\n\n## 配合 Binary Ninja MCP（动静结合）\n\ntrace 看\"发生了什么\"，BN 看\"代码长什么样\"。装任一 BN MCP 自动启用联动：\n\n| Plugin | License | Transport |\n|---|---|---|\n| [fosdickio\u002Fbinary_ninja_mcp](https:\u002F\u002Fgithub.com\u002Ffosdickio\u002Fbinary_ninja_mcp) | GPL-3.0 | stdio |\n| [jtang613\u002FBinAssistMCP](https:\u002F\u002Fgithub.com\u002Fjtang613\u002FBinAssistMCP) | MIT | HTTP\u002FSSE |\n\n均为 Binary Ninja plugin，要求本机有 BN 商业 license。SKILL 通过 namespace（`binary_ninja_mcp.*` \u002F `binassist.*`）自动识别，无需配置。BN 不在线时 plugin 仍可单跑——SKILL 不会假装调 BN 工具，且会在交付的\"未确认缺口\"里建议补做静态分析。\n\n---\n\n## 系统 CLI 工具联动 — `run_static_tool`\n\n白名单受控 shell（argv 模式，无 injection 可能）。用户机器已装的 CLI 装了就有：\n\n| 类别 | 工具 |\n|---|---|\n| 基础 | `file`、`lipo`、`rax2`、`rg`、`jq`、`c++filt`、`llvm-cxxfilt`、`addr2line` |\n| radare2 | `rabin2`、`rasm2`、`r2`（严格边界）|\n| binutils | `readelf`、`objdump`、`nm`、`strings` |\n| LLVM | `llvm-objdump`、`llvm-nm`、`llvm-readelf`、`llvm-strings` |\n| Mach-O \u002F iOS | `otool`、`jtool2`、`class-dump` |\n\n未安装时返回 `hint` 字段告知 brew 命令。\n\n**r2 边界**：必含 `-q -2 -n -c \"\u003Csingle cmd>\"`；禁 `-A` \u002F `aaa` \u002F `aac` 等完整分析命令。\n\n**优先级**：`binary_ninja_mcp.*` 在线 > `run_static_tool` > trace-only。\n\n---\n\n## 故障排查\n\n### Plugin 装上但工具不可见\n\n最常见原因：`${CLAUDE_PLUGIN_ROOT}` 未被这版 Desktop 展开。手动改安装后的 `.mcp.json` 为绝对路径：\n\n```json\n{\n  \"mcpServers\": {\n    \"algokiller\": {\n      \"command\": \"python3\",\n      \"args\": [\"-u\", \"\u002FABS\u002FPATH\u002Fserver\u002Falgokiller_mcp.py\"],\n      \"cwd\": \"\u002FABS\u002FPATH\",\n      \"env\": {\n        \"ALGOKILLER_PLUGIN_ROOT\": \"\u002FABS\u002FPATH\",\n        \"PYTHONUNBUFFERED\": \"1\"\n      }\n    }\n  }\n}\n```\n\n查 Claude 客户端的 MCP server 日志（Claude Desktop 在应用日志里，Claude Code 在 session stderr），找 `[algokiller-mcp]` 开头的 stderr 行定位。\n\n### `bind_trace` 报 binary not found \u002F Permission denied\n\nplugin 启动时自动 `chmod +x` + `xattr -d com.apple.quarantine`。失败时手动：\n\n```bash\nchmod +x server\u002Fbin\u002Fak_search\nxattr -d com.apple.quarantine server\u002Fbin\u002Fak_search\nfile server\u002Fbin\u002Fak_search   # 应为 Mach-O 64-bit executable arm64\n```\n\n架构不匹配时重编：`cd tools\u002Fsearch && make && cp ak_search ..\u002F..\u002Fserver\u002Fbin\u002F`。\n\n### `bind_trace` 在 GB trace 上看似卡住\n\n`ak_search` 首次建索引，5GB 约 30-60s。`pgrep -lf ak_search` 看到进程 CPU 满载即正常。索引完成后所有调用毫秒级。\n\n### artifacts 累积\n\n```bash\nls -dt ~\u002FAlgoKiller\u002Fartifacts\u002F*\u002F*\u002F | tail -n +11 | xargs rm -rf\n```\n\n### daemon 残留\n\nplugin 已注册 `atexit` + SIGTERM\u002FSIGINT cleanup。Desktop 强杀时偶发残留：\n\n```bash\npkill -f \"ak_search daemon\"\n```\n\ndaemon 无状态，下次 `bind_trace` 自动重启。\n","algokiller-plugin 是一个专为 ARM64 trace 证据分析和加密算法恢复设计的 Claude 插件，支持 Claude Code CLI 和 Claude Desktop App。项目基于 AlgoKiller 方法论，通过本地 MCP 服务器驱动原生 `ak_search` 引擎，能够处理 GB 级别的 trace 文件。核心功能包括密文与算法还原、字段语义分析、执行流追踪等，并提供了 26 个 MCP 工具用于数据流分析、调用图生成及密码学指纹识别。该项目特别适用于需要对大规模二进制文件进行逆向工程、加密算法分析以及安全审计的场景。","2026-06-11 03:59:12","CREATED_QUERY"]