windows-exe-decompiler-mcp-server 1.0.0-beta.1 → 1.0.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (309) hide show
  1. package/CHANGELOG.md +138 -0
  2. package/README.md +159 -17
  3. package/README_zh.md +122 -27
  4. package/dist/api/file-server.d.ts +2 -0
  5. package/dist/api/file-server.js +38 -1
  6. package/dist/api/rate-limiter.d.ts +29 -0
  7. package/dist/api/rate-limiter.js +106 -0
  8. package/dist/api/routes/dashboard-api.d.ts +21 -0
  9. package/dist/api/routes/dashboard-api.js +249 -0
  10. package/dist/api/sse-events.d.ts +35 -0
  11. package/dist/api/sse-events.js +108 -0
  12. package/dist/binary-diff-engine.d.ts +117 -0
  13. package/dist/binary-diff-engine.js +123 -0
  14. package/dist/cache-manager.js +0 -1
  15. package/dist/cfg-visual-exports.js +2 -0
  16. package/dist/config-validator.d.ts +24 -0
  17. package/dist/config-validator.js +115 -0
  18. package/dist/config.d.ts +8 -0
  19. package/dist/config.js +8 -0
  20. package/dist/constraint/constraint-extractor.d.ts +68 -0
  21. package/dist/constraint/constraint-extractor.js +212 -0
  22. package/dist/constraint/keygen-synthesizer.d.ts +31 -0
  23. package/dist/constraint/keygen-synthesizer.js +250 -0
  24. package/dist/constraint/mba-simplifier.d.ts +60 -0
  25. package/dist/constraint/mba-simplifier.js +429 -0
  26. package/dist/database.d.ts +5 -0
  27. package/dist/database.js +7 -0
  28. package/dist/debug/debug-session-state.d.ts +46 -0
  29. package/dist/debug/debug-session-state.js +103 -0
  30. package/dist/debug/gdb-mi-client.d.ts +38 -0
  31. package/dist/debug/gdb-mi-client.js +262 -0
  32. package/dist/decompiler-worker.js +1 -1
  33. package/dist/env-validator.js +3 -9
  34. package/dist/format-detect.d.ts +6 -0
  35. package/dist/format-detect.js +47 -0
  36. package/dist/index.d.ts +3 -1
  37. package/dist/index.js +16 -236
  38. package/dist/kb/capa-import.d.ts +13 -0
  39. package/dist/kb/capa-import.js +102 -0
  40. package/dist/kb/kb-export.d.ts +14 -0
  41. package/dist/kb/kb-export.js +79 -0
  42. package/dist/kb/kb-import.d.ts +14 -0
  43. package/dist/kb/kb-import.js +156 -0
  44. package/dist/kb/misp-import.d.ts +19 -0
  45. package/dist/kb/misp-import.js +117 -0
  46. package/dist/kb/seed-loader.d.ts +15 -0
  47. package/dist/kb/seed-loader.js +59 -0
  48. package/dist/llm/auto-trigger.js +2 -2
  49. package/dist/llm/context-manager.d.ts +2 -0
  50. package/dist/llm/context-manager.js +32 -6
  51. package/dist/llm/llm-analyze.d.ts +2 -2
  52. package/dist/llm/llm-analyze.js +2 -3
  53. package/dist/llm/model-router.d.ts +89 -0
  54. package/dist/llm/model-router.js +162 -0
  55. package/dist/pagination.d.ts +21 -0
  56. package/dist/pagination.js +25 -0
  57. package/dist/plugin-registry.d.ts +65 -0
  58. package/dist/plugin-registry.js +143 -0
  59. package/dist/plugins/android/index.d.ts +9 -0
  60. package/dist/plugins/android/index.js +38 -0
  61. package/dist/plugins/android/tools/apk-packer-detect.d.ts +15 -0
  62. package/dist/plugins/android/tools/apk-packer-detect.js +74 -0
  63. package/dist/plugins/android/tools/apk-structure-analyze.d.ts +50 -0
  64. package/dist/plugins/android/tools/apk-structure-analyze.js +87 -0
  65. package/dist/plugins/android/tools/dex-classes-list.d.ts +15 -0
  66. package/dist/plugins/android/tools/dex-classes-list.js +66 -0
  67. package/dist/plugins/android/tools/dex-decompile.d.ts +52 -0
  68. package/dist/plugins/android/tools/dex-decompile.js +90 -0
  69. package/dist/plugins/crackme/index.d.ts +9 -0
  70. package/dist/plugins/crackme/index.js +31 -0
  71. package/dist/plugins/crackme/tools/crackme-locate-validation.d.ts +17 -0
  72. package/dist/plugins/crackme/tools/crackme-locate-validation.js +221 -0
  73. package/dist/plugins/crackme/tools/keygen-verify.d.ts +31 -0
  74. package/dist/plugins/crackme/tools/keygen-verify.js +121 -0
  75. package/dist/plugins/crackme/tools/patch-generate.d.ts +56 -0
  76. package/dist/plugins/crackme/tools/patch-generate.js +273 -0
  77. package/dist/plugins/crackme/tools/symbolic-explore.d.ts +37 -0
  78. package/dist/plugins/crackme/tools/symbolic-explore.js +109 -0
  79. package/dist/plugins/cross-module/index.d.ts +9 -0
  80. package/dist/plugins/cross-module/index.js +22 -0
  81. package/dist/plugins/cross-module/tools/call-graph-cross-module.d.ts +20 -0
  82. package/dist/plugins/cross-module/tools/call-graph-cross-module.js +187 -0
  83. package/dist/plugins/cross-module/tools/cross-binary-compare.d.ts +20 -0
  84. package/dist/plugins/cross-module/tools/cross-binary-compare.js +188 -0
  85. package/dist/plugins/cross-module/tools/dll-dependency-tree.d.ts +20 -0
  86. package/dist/plugins/cross-module/tools/dll-dependency-tree.js +146 -0
  87. package/dist/plugins/debug-session/index.d.ts +10 -0
  88. package/dist/plugins/debug-session/index.js +42 -0
  89. package/dist/plugins/debug-session/tools/debug-session-breakpoint.d.ts +58 -0
  90. package/dist/plugins/debug-session/tools/debug-session-breakpoint.js +108 -0
  91. package/dist/plugins/debug-session/tools/debug-session-continue.d.ts +49 -0
  92. package/dist/plugins/debug-session/tools/debug-session-continue.js +82 -0
  93. package/dist/plugins/debug-session/tools/debug-session-end.d.ts +49 -0
  94. package/dist/plugins/debug-session/tools/debug-session-end.js +71 -0
  95. package/dist/plugins/debug-session/tools/debug-session-inspect.d.ts +58 -0
  96. package/dist/plugins/debug-session/tools/debug-session-inspect.js +110 -0
  97. package/dist/plugins/debug-session/tools/debug-session-start.d.ts +49 -0
  98. package/dist/plugins/debug-session/tools/debug-session-start.js +60 -0
  99. package/dist/plugins/debug-session/tools/debug-session-step.d.ts +49 -0
  100. package/dist/plugins/debug-session/tools/debug-session-step.js +88 -0
  101. package/dist/plugins/dynamic/index.d.ts +9 -0
  102. package/dist/plugins/dynamic/index.js +25 -0
  103. package/dist/plugins/dynamic/tools/dynamic-auto-hook.d.ts +23 -0
  104. package/dist/plugins/dynamic/tools/dynamic-auto-hook.js +220 -0
  105. package/dist/plugins/dynamic/tools/dynamic-memory-dump.d.ts +28 -0
  106. package/dist/plugins/dynamic/tools/dynamic-memory-dump.js +196 -0
  107. package/dist/plugins/dynamic/tools/dynamic-trace-attribute.d.ts +19 -0
  108. package/dist/plugins/dynamic/tools/dynamic-trace-attribute.js +172 -0
  109. package/dist/plugins/frida/index.d.ts +9 -0
  110. package/dist/plugins/frida/index.js +35 -0
  111. package/dist/plugins/frida/tools/frida-runtime-instrument.d.ts +71 -0
  112. package/dist/{tools → plugins/frida/tools}/frida-runtime-instrument.js +189 -122
  113. package/dist/plugins/frida/tools/frida-script-inject.d.ts +71 -0
  114. package/dist/{tools → plugins/frida/tools}/frida-script-inject.js +197 -130
  115. package/dist/{tools → plugins/frida/tools}/frida-trace-capture.d.ts +2 -4
  116. package/dist/{tools → plugins/frida/tools}/frida-trace-capture.js +89 -89
  117. package/dist/plugins/ghidra/index.d.ts +9 -0
  118. package/dist/plugins/ghidra/index.js +37 -0
  119. package/dist/{tools → plugins/ghidra/tools}/ghidra-analyze.d.ts +9 -57
  120. package/dist/{tools → plugins/ghidra/tools}/ghidra-analyze.js +4 -9
  121. package/dist/plugins/ghidra/tools/ghidra-health.d.ts +84 -0
  122. package/dist/{tools → plugins/ghidra/tools}/ghidra-health.js +9 -12
  123. package/dist/plugins/kb-collaboration/index.d.ts +9 -0
  124. package/dist/plugins/kb-collaboration/index.js +20 -0
  125. package/dist/plugins/kb-collaboration/tools/analysis-template.d.ts +23 -0
  126. package/dist/plugins/kb-collaboration/tools/analysis-template.js +202 -0
  127. package/dist/plugins/kb-collaboration/tools/kb-function-match.d.ts +26 -0
  128. package/dist/plugins/kb-collaboration/tools/kb-function-match.js +193 -0
  129. package/dist/plugins/malware/index.d.ts +9 -0
  130. package/dist/plugins/malware/index.js +28 -0
  131. package/dist/plugins/malware/tools/c2-extract.d.ts +16 -0
  132. package/dist/plugins/malware/tools/c2-extract.js +82 -0
  133. package/dist/plugins/malware/tools/malware-classify.d.ts +16 -0
  134. package/dist/plugins/malware/tools/malware-classify.js +98 -0
  135. package/dist/plugins/malware/tools/malware-config-extract.d.ts +16 -0
  136. package/dist/plugins/malware/tools/malware-config-extract.js +83 -0
  137. package/dist/plugins/malware/tools/sandbox-report.d.ts +20 -0
  138. package/dist/plugins/malware/tools/sandbox-report.js +166 -0
  139. package/dist/plugins/memory-forensics/index.d.ts +11 -0
  140. package/dist/plugins/memory-forensics/index.js +205 -0
  141. package/dist/plugins/observability/index.d.ts +11 -0
  142. package/dist/plugins/observability/index.js +139 -0
  143. package/dist/plugins/pe-analysis/index.d.ts +10 -0
  144. package/dist/plugins/pe-analysis/index.js +32 -0
  145. package/dist/{tools → plugins/pe-analysis/tools}/pe-exports-extract.d.ts +2 -5
  146. package/dist/{tools → plugins/pe-analysis/tools}/pe-exports-extract.js +8 -7
  147. package/dist/{tools → plugins/pe-analysis/tools}/pe-fingerprint.d.ts +2 -5
  148. package/dist/{tools → plugins/pe-analysis/tools}/pe-fingerprint.js +6 -5
  149. package/dist/{tools → plugins/pe-analysis/tools}/pe-imports-extract.d.ts +2 -5
  150. package/dist/{tools → plugins/pe-analysis/tools}/pe-imports-extract.js +7 -6
  151. package/dist/{tools → plugins/pe-analysis/tools}/pe-pdata-extract.d.ts +2 -5
  152. package/dist/{tools → plugins/pe-analysis/tools}/pe-pdata-extract.js +6 -5
  153. package/dist/{tools → plugins/pe-analysis/tools}/pe-structure-analyze.d.ts +2 -12
  154. package/dist/{tools → plugins/pe-analysis/tools}/pe-structure-analyze.js +8 -7
  155. package/dist/{tools → plugins/pe-analysis/tools}/pe-symbols-recover.d.ts +2 -10
  156. package/dist/{tools → plugins/pe-analysis/tools}/pe-symbols-recover.js +10 -9
  157. package/dist/plugins/plugin-sandbox-worker.d.ts +13 -0
  158. package/dist/plugins/plugin-sandbox-worker.js +80 -0
  159. package/dist/plugins/plugin-sandbox.d.ts +62 -0
  160. package/dist/plugins/plugin-sandbox.js +142 -0
  161. package/dist/plugins/sdk.d.ts +193 -0
  162. package/dist/plugins/sdk.js +14 -0
  163. package/dist/plugins/threat-intel/index.d.ts +9 -0
  164. package/dist/plugins/threat-intel/index.js +20 -0
  165. package/dist/{tools → plugins/threat-intel/tools}/attack-map.d.ts +2 -5
  166. package/dist/{tools → plugins/threat-intel/tools}/attack-map.js +4 -3
  167. package/dist/{tools → plugins/threat-intel/tools}/ioc-export.d.ts +2 -5
  168. package/dist/{tools → plugins/threat-intel/tools}/ioc-export.js +4 -3
  169. package/dist/plugins/visualization/index.d.ts +9 -0
  170. package/dist/plugins/visualization/index.js +22 -0
  171. package/dist/plugins/visualization/tools/behavior-timeline.d.ts +23 -0
  172. package/dist/plugins/visualization/tools/behavior-timeline.js +200 -0
  173. package/dist/plugins/visualization/tools/data-flow-map.d.ts +20 -0
  174. package/dist/plugins/visualization/tools/data-flow-map.js +246 -0
  175. package/dist/plugins/visualization/tools/report-html-generate.d.ts +23 -0
  176. package/dist/plugins/visualization/tools/report-html-generate.js +255 -0
  177. package/dist/plugins/vuln-scanner/index.d.ts +10 -0
  178. package/dist/plugins/vuln-scanner/index.js +21 -0
  179. package/dist/plugins/vuln-scanner/tools/vuln-pattern-scan.d.ts +58 -0
  180. package/dist/plugins/vuln-scanner/tools/vuln-pattern-scan.js +137 -0
  181. package/dist/plugins/vuln-scanner/tools/vuln-pattern-summary.d.ts +49 -0
  182. package/dist/plugins/vuln-scanner/tools/vuln-pattern-summary.js +128 -0
  183. package/dist/plugins.d.ts +84 -0
  184. package/dist/plugins.js +430 -0
  185. package/dist/policy-guard.js +3 -3
  186. package/dist/python-process-pool.d.ts +55 -0
  187. package/dist/python-process-pool.js +153 -0
  188. package/dist/retry.d.ts +34 -0
  189. package/dist/retry.js +68 -0
  190. package/dist/safe-command.d.ts +23 -0
  191. package/dist/safe-command.js +71 -0
  192. package/dist/sample-finalization.js +11 -0
  193. package/dist/server.d.ts +65 -1
  194. package/dist/server.js +227 -13
  195. package/dist/streaming-progress.d.ts +23 -0
  196. package/dist/streaming-progress.js +41 -0
  197. package/dist/summary-digests.d.ts +2 -2
  198. package/dist/tool-registry.d.ts +27 -0
  199. package/dist/tool-registry.js +362 -0
  200. package/dist/tools/artifact-download.d.ts +4 -4
  201. package/dist/tools/batch-analysis.d.ts +64 -0
  202. package/dist/tools/batch-analysis.js +185 -0
  203. package/dist/tools/binary-diff-summary.d.ts +66 -0
  204. package/dist/tools/binary-diff-summary.js +168 -0
  205. package/dist/tools/binary-diff.d.ts +69 -0
  206. package/dist/tools/binary-diff.js +284 -0
  207. package/dist/tools/binary-role-profile.js +4 -4
  208. package/dist/tools/code-function-explain-apply.d.ts +14 -14
  209. package/dist/tools/code-function-explain-review.d.ts +12 -12
  210. package/dist/tools/code-function-rename-apply.d.ts +6 -6
  211. package/dist/tools/code-function-rename-review.d.ts +24 -24
  212. package/dist/tools/code-functions-rank.d.ts +3 -0
  213. package/dist/tools/code-functions-rank.js +34 -2
  214. package/dist/tools/code-module-review-apply.d.ts +6 -6
  215. package/dist/tools/code-module-review.d.ts +12 -12
  216. package/dist/tools/code-reconstruct-export.js +4 -4
  217. package/dist/tools/config-validate.d.ts +21 -0
  218. package/dist/tools/config-validate.js +39 -0
  219. package/dist/tools/constraint-extract.d.ts +57 -0
  220. package/dist/tools/constraint-extract.js +110 -0
  221. package/dist/tools/crypto-identify.js +2 -2
  222. package/dist/tools/elf-exports-extract.d.ts +51 -0
  223. package/dist/tools/elf-exports-extract.js +97 -0
  224. package/dist/tools/elf-imports-extract.d.ts +51 -0
  225. package/dist/tools/elf-imports-extract.js +105 -0
  226. package/dist/tools/elf-structure-analyze.d.ts +51 -0
  227. package/dist/tools/elf-structure-analyze.js +91 -0
  228. package/dist/tools/kb-export.d.ts +57 -0
  229. package/dist/tools/kb-export.js +68 -0
  230. package/dist/tools/kb-import-bulk.d.ts +54 -0
  231. package/dist/tools/kb-import-bulk.js +142 -0
  232. package/dist/tools/kb-import.d.ts +51 -0
  233. package/dist/tools/kb-import.js +47 -0
  234. package/dist/tools/kb-stats.d.ts +48 -0
  235. package/dist/tools/kb-stats.js +83 -0
  236. package/dist/tools/keygen-synthesize.d.ts +57 -0
  237. package/dist/tools/keygen-synthesize.js +103 -0
  238. package/dist/tools/macho-structure-analyze.d.ts +51 -0
  239. package/dist/tools/macho-structure-analyze.js +91 -0
  240. package/dist/tools/mba-simplify.d.ts +54 -0
  241. package/dist/tools/mba-simplify.js +82 -0
  242. package/dist/tools/plugin-list.d.ts +43 -0
  243. package/dist/tools/plugin-list.js +155 -0
  244. package/dist/tools/report-summarize.js +1 -1
  245. package/dist/tools/rust-binary-analyze.js +2 -2
  246. package/dist/tools/sbom-generate.d.ts +27 -0
  247. package/dist/tools/sbom-generate.js +152 -0
  248. package/dist/tools/smt-solve.d.ts +60 -0
  249. package/dist/tools/smt-solve.js +157 -0
  250. package/dist/tools/system-health.js +2 -0
  251. package/dist/tools/unpack-auto.d.ts +132 -0
  252. package/dist/tools/unpack-auto.js +297 -0
  253. package/dist/tools/vm-detect.d.ts +57 -0
  254. package/dist/tools/vm-detect.js +124 -0
  255. package/dist/tools/vm-disasm-build.d.ts +64 -0
  256. package/dist/tools/vm-disasm-build.js +124 -0
  257. package/dist/tools/vm-emulate.d.ts +69 -0
  258. package/dist/tools/vm-emulate.js +131 -0
  259. package/dist/tools/vm-opcode-extract.d.ts +60 -0
  260. package/dist/tools/vm-opcode-extract.js +122 -0
  261. package/dist/tools/vm-pattern-analyze.d.ts +64 -0
  262. package/dist/tools/vm-pattern-analyze.js +142 -0
  263. package/dist/tools/vm-semantic-diff.d.ts +57 -0
  264. package/dist/tools/vm-semantic-diff.js +83 -0
  265. package/dist/tools/yara-generate-batch.d.ts +60 -0
  266. package/dist/tools/yara-generate-batch.js +169 -0
  267. package/dist/tools/yara-generate.d.ts +63 -0
  268. package/dist/tools/yara-generate.js +168 -0
  269. package/dist/unpack-strategy.d.ts +50 -0
  270. package/dist/unpack-strategy.js +356 -0
  271. package/dist/vm/disassembler-builder.d.ts +36 -0
  272. package/dist/vm/disassembler-builder.js +106 -0
  273. package/dist/vm/opcode-extractor.d.ts +48 -0
  274. package/dist/vm/opcode-extractor.js +148 -0
  275. package/dist/vm/semantic-diff.d.ts +37 -0
  276. package/dist/vm/semantic-diff.js +163 -0
  277. package/dist/vm/vm-detector.d.ts +86 -0
  278. package/dist/vm/vm-detector.js +254 -0
  279. package/dist/vm/vm-emulator.d.ts +89 -0
  280. package/dist/vm/vm-emulator.js +341 -0
  281. package/dist/vuln-patterns.d.ts +43 -0
  282. package/dist/vuln-patterns.js +117 -0
  283. package/dist/worker-pool.d.ts +5 -0
  284. package/dist/worker-pool.js +57 -17
  285. package/dist/workflows/analyze-pipeline.d.ts +2 -0
  286. package/dist/workflows/analyze-pipeline.js +57 -13
  287. package/dist/workflows/function-explanation-review.d.ts +16 -16
  288. package/dist/workflows/function-index-recover.js +2 -2
  289. package/dist/workflows/semantic-name-review.d.ts +36 -36
  290. package/dist/workflows/summarize.d.ts +14 -14
  291. package/dist/workflows/triage.d.ts +3 -3
  292. package/dist/workflows/triage.js +6 -6
  293. package/dist/yara-rule-builder.d.ts +53 -0
  294. package/dist/yara-rule-builder.js +266 -0
  295. package/frida_scripts/android_crypto_trace.js +96 -0
  296. package/frida_scripts/android_root_bypass.js +76 -0
  297. package/frida_scripts/android_ssl_bypass.js +66 -0
  298. package/package.json +12 -2
  299. package/workers/apk_dex_worker.py +415 -0
  300. package/workers/constraint_solver_worker.py +301 -0
  301. package/workers/elf_macho_worker.py +753 -0
  302. package/workers/keygen_verify_worker.py +164 -0
  303. package/workers/malware_config_worker.py +244 -0
  304. package/workers/requirements.txt +1 -0
  305. package/workers/rizin_diff_worker.py +141 -0
  306. package/workers/symbolic_explorer_worker.py +170 -0
  307. package/dist/tools/frida-runtime-instrument.d.ts +0 -381
  308. package/dist/tools/frida-script-inject.d.ts +0 -360
  309. package/dist/tools/ghidra-health.d.ts +0 -214
package/CHANGELOG.md CHANGED
@@ -7,6 +7,144 @@ Versioning where practical.
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ### Plugin System Deep Refactoring
11
+
12
+ - **Plugin directory convention**: All plugin tool handlers migrated from flat `src/tools/` into `src/plugins/<id>/tools/` directories. Each plugin is now fully self-contained.
13
+ - **6 new plugins**: Expanded from 9 → 15 built-in plugins:
14
+ - `vuln-scanner` — Vulnerability pattern scanning and summary (2 tools)
15
+ - `pe-analysis` — PE structure, imports, exports, fingerprint, pdata, symbol recovery (6 tools)
16
+ - `threat-intel` — ATT&CK mapping and IOC export (2 tools)
17
+ - `debug-session` — GDB/LLDB debug session management (6 tools)
18
+ - `memory-forensics` — Memory dump analysis, volatility integration (6 tools)
19
+ - `observability` — Tool call hook tracing (1 tool)
20
+ - **Plugin SDK**: Added `ToolArgs` type to `src/plugins/sdk.ts`; unified handler signature to `(deps: PluginToolDeps)` pattern across all plugins.
21
+ - **Tool count**: 160 MCP tools total (109 registry + 51 plugin-managed).
22
+ - **Test coverage**: 207 test files (194 unit + 13 integration).
23
+
24
+ ### Web Dashboard
25
+
26
+ - **Web Dashboard** (`src/api/dashboard/index.html`): Dark-themed single-page monitoring dashboard served at `http://localhost:18080/dashboard`. 6 tabs: Overview, Tools, Plugins, Samples, Config, System.
27
+ - **Dashboard API** (`src/api/routes/dashboard-api.ts`): 7 JSON REST endpoints (`/api/v1/dashboard/*`) — overview, tools (categorized), plugins, samples (paginated), workers, config validation, system info.
28
+ - **Real-time SSE integration**: Dashboard subscribes to `/api/v1/events` for live analysis event streaming.
29
+ - **Auto-refresh**: Overview tab auto-polls every 15 seconds; tool search and sample pagination are fully client-side.
30
+ - **Docker integration**: Dashboard HTML is copied to dist during build; Dockerfile includes static asset copy; `docker-compose.yml` port comment updated.
31
+
32
+ ### Production Hardening (P0-P3)
33
+
34
+ - **CI test coverage** (P0): `.github/workflows/ci.yml` runs full test suite.
35
+ - **TODO stub completion** (P0): Implemented `keygen-synthesizer`, `worker-pool`, `context-manager`, `decompiler-worker`, `DatabaseManager.getDb()`, `WorkerPool.registerHandler()`.
36
+ - **Config validation** (P0): `src/config-validator.ts` with `validateConfig()` returning `ValidationReport`; `config.validate` MCP tool.
37
+ - **Rate limiting** (P1): `src/api/rate-limiter.ts` integrated into HTTP File Server.
38
+ - **Pagination** (P1): `src/pagination.ts` cursor-based pagination utility.
39
+ - **Retry** (P1): `src/retry.ts` exponential backoff helper for transient failures.
40
+ - **Plugin SDK package** (P2): `packages/plugin-sdk/` standalone npm package for third-party plugin authors.
41
+ - **Plugin scaffolding** (P2): `scripts/create-plugin.js` interactive plugin generator.
42
+ - **Plugin tests** (P2): `tests/unit/plugins.test.ts` — 17 tests covering lifecycle, hooks, hot-load, and dependency resolution.
43
+ - **Plugin registry** (P2): `src/plugin-registry.ts` centralized plugin discovery and management.
44
+ - **LLM multi-model routing** (P3): `src/llm/model-router.ts` supports routing to multiple LLM backends.
45
+ - **Memory forensics** (P3): `src/plugins/memory-forensics.ts` plugin for memory analysis.
46
+ - **SBOM generation** (P3): `src/tools/sbom-generate.ts` Software Bill of Materials export.
47
+ - **Batch analysis** (P3): `src/tools/batch-analysis.ts` multi-sample batch analysis orchestration.
48
+ - **SSE events** (P3): `src/api/sse-events.ts` Server-Sent Events infrastructure for real-time streaming.
49
+
50
+ ### Plugin SDK (Open Extensibility)
51
+
52
+ - **Plugin SDK** (`src/plugins.ts`): Complete rewrite — enhanced `Plugin` interface with `description`, `version`, `dependencies`, `configSchema`, `hooks`, and `teardown` fields. Third-party plugin authors implement this interface for full extensibility.
53
+ - **PluginManager**: Singleton class managing plugin lifecycle — `loadAll()`, `loadOne()`, `hotLoad()`, `unload()`, `fireHook()`, topological dependency sorting, `resolveEnabledPlugins()`.
54
+ - **9 built-in plugins**: Expanded from 4 → 9 plugins. Added `frida` (runtime instrumentation), `ghidra` (headless analysis), `cross-module` (cross-binary comparison), `visualization` (HTML reports, timelines, data-flow maps), `kb-collaboration` (function matching, analysis templates).
55
+ - **Prerequisite checks**: `android` checks jadx binary access, `frida` checks `frida --version`, `ghidra` checks `GHIDRA_INSTALL_DIR` env var. Plugins that fail checks are gracefully skipped.
56
+ - **Plugin auto-discovery**: `plugins/` directory at project root is scanned for `.js`/`.mjs` files that default-export a `Plugin` object — loaded automatically alongside built-ins.
57
+ - **Declarative config schema**: Each plugin declares `configSchema: PluginConfigField[]` (envVar, description, required, defaultValue). Surfaced via `plugin.list` tool.
58
+ - **Dependency resolution**: Plugins declare `dependencies: string[]`. `PluginManager.topoSort()` loads them in correct order; missing deps → `skipped-deps` status.
59
+ - **Lifecycle hooks**: `PluginHooks` interface (`onBeforeToolCall`, `onAfterToolCall`, `onToolError`). Hooks are fired by `MCPServer.callTool()` for tools belonging to hook-equipped plugins.
60
+ - **Hot-load / unload**: `plugin.enable` hot-loads a plugin at runtime, `plugin.disable` calls `teardown()` and unregisters all plugin tools — no server restart required.
61
+ - **Plugin introspection tools**: `plugin.list` (read-only status/config), `plugin.enable`, `plugin.disable` — LLM clients can discover and manage plugins via MCP.
62
+ - **`MCPServer.unregisterTool()`**: New method to remove tools at runtime, enabling plugin unload.
63
+ - **`MCPServer.setPluginManager()`**: Wires PluginManager into server for lifecycle hook dispatch.
64
+ - **Docs**: Comprehensive `docs/PLUGINS.md` rewrite covering SDK types, hook system, auto-discovery, external plugin authoring, and troubleshooting.
65
+
66
+ ### Architecture & Infrastructure
67
+
68
+ - **Tool Registry** (`src/tool-registry.ts`): Centralised registration of all 148 tools, 3 prompts, and 16 resources. `src/index.ts` reduced from ~1,450 lines to ~90 lines.
69
+ - **Plugin Architecture** (`src/plugins.ts`): Four built-in plugins (android, malware, crackme, dynamic) controlled via `PLUGINS` env var. Supports prerequisite checks and custom plugin extensions. Docs: `docs/PLUGINS.md`.
70
+ - **MCP Resources**: 16 helper scripts (8 Frida + 8 Ghidra) exposed as MCP resources discoverable via `resources/list` and readable via `resources/read`.
71
+ - **Streaming Progress** (`src/streaming-progress.ts`): `ProgressReporter` interface for long-running tools. Emits `notifications/progress` MCP notifications when client sends `_meta.progressToken`.
72
+ - **Architecture docs** (`docs/ARCHITECTURE.md`): Comprehensive guide covering tool registry, plugin system, resources, streaming, safe commands, process pool, structured logging, and CI/CD security.
73
+
74
+ ### Security Hardening
75
+
76
+ - **Command injection prevention** (`src/safe-command.ts`): Whitelist regex validation (`SAFE_COMMAND_NAME_RE`), `execFileSync`/`spawnSync` with argument arrays, `safeCommandExists()`, `safeGetCommandVersion()`, `validateGraphvizFormat()`.
77
+ - **env-validator.ts**: Replaced `execSync` shell calls with safe wrappers.
78
+ - **cfg-visual-exports.ts**: Added `validateGraphvizFormat()` whitelist validation.
79
+ - **CI/CD security scanning**: Added `security` job to `.github/workflows/ci.yml` — npm audit, pip-audit, CodeQL SAST.
80
+
81
+ ### Observability
82
+
83
+ - **Structured logging**: Migrated 7 files from `console.log`/`console.error` to Pino structured JSON logging (`policy-guard.ts`, `llm-analyze.ts`, `auto-trigger.ts`, `triage.ts`, `cache-manager.ts`).
84
+ - **Python Process Pool** (`src/python-process-pool.ts`): Queue-based concurrency limiter with `MAX_PYTHON_WORKERS` env var. Stats surfaced through `system.health` tool.
85
+
86
+ ### Testing
87
+
88
+ - **68 new test files** generated for previously untested tools (193 total unit tests, up from 125).
89
+ - **Integration tests**: `tests/integration/full-pipeline.test.ts` (E2E ingest→triage), `tests/integration/beta2-tools.test.ts` (beta.2 tool coverage).
90
+
91
+ ### Documentation
92
+
93
+ - **API docs generation**: `scripts/generate-api-docs.js` + `npm run docs:api` script.
94
+ - New: `docs/ARCHITECTURE.md`, `docs/PLUGINS.md`.
95
+ - Updated: `README.md` (architecture section, project layout), `CONTRIBUTING.md` (tool registration guide, plugin development), `SECURITY.md` (command injection prevention, CI/CD scanning), `docs/API-REFERENCE.md` (MCP resources), `CHANGELOG.md`.
96
+
97
+ ## [1.0.0-beta.2] - 2026-03-30
98
+
99
+ ### Android / APK Analysis
100
+
101
+ - Added `apk.structure.analyze` — APK manifest, permissions, and component extraction via Python worker
102
+ - Added `apk.packer.detect` — APK packer/obfuscator detection (DexGuard, iJiami, Bangcle, etc.)
103
+ - Added `dex.decompile` — DEX-to-Java decompilation via jadx
104
+ - Added `dex.classes.list` — DEX class/method enumeration
105
+ - Added `workers/apk_dex_worker.py` — Unified Python worker for APK/DEX operations
106
+ - Docker: Added jadx v1.5.1 installation (`/opt/jadx/bin/jadx`)
107
+
108
+ ### Symbolic Execution & CrackMe
109
+
110
+ - Added `symbolic.explore` — angr-backed symbolic execution for path exploration and constraint solving
111
+ - Added `keygen.verify` — Keygen/license verification via Qiling or angr backends
112
+ - Added `constraint.solve` — Z3/angr constraint solver for serial/key generation
113
+ - Added `workers/symbolic_explorer_worker.py`, `workers/keygen_verify_worker.py`, `workers/constraint_solver_worker.py`
114
+
115
+ ### Dynamic Analysis
116
+
117
+ - Added `dynamic.auto_hook` — Automated Frida hook generation from static analysis evidence
118
+ - Added `dynamic.memory_dump` — Frida-based runtime memory dump with pattern scanning
119
+
120
+ ### Malware Analysis
121
+
122
+ - Added `malware.config.extract` — Malware configuration extraction (C2, encryption keys, mutexes)
123
+ - Added `malware.classify` — Malware family classification using YARA + capa + behavioral indicators
124
+ - Added `c2.extract` — C2 infrastructure extraction and indicator enrichment
125
+ - Added `workers/malware_config_worker.py`
126
+
127
+ ### Cross-Platform & Visualization
128
+
129
+ - Added `elf.macho.parse` — ELF/Mach-O header and section parsing via Rizin
130
+ - Added `rizin.diff` — Binary diffing via Rizin (function-level and basic-block-level)
131
+ - Added `cfg.visualize` — Control flow graph visualization (DOT/SVG/JSON)
132
+ - Added `timeline.correlate` — Multi-source event timeline correlation
133
+ - Added `cross_module.xref` — Cross-module cross-reference analysis
134
+ - Added `kb.search` — Knowledge base semantic search
135
+ - Added `workers/elf_macho_worker.py`, `workers/rizin_diff_worker.py`
136
+
137
+ ### Quality & Infrastructure
138
+
139
+ - **Config**: Unified Python path resolution via `config.workers.static.pythonPath` across all new tools; added `JADX_PATH` env var support
140
+ - **PolicyGuard**: Applied to 5 high-risk dynamic/symbolic tools (`symbolic.explore`, `keygen.verify`, `patch.generate`, `dynamic.auto_hook`, `dynamic.memory_dump`)
141
+ - **CacheManager**: Applied to 3 malware analysis tools (`malware.config.extract`, `c2.extract`, `malware.classify`)
142
+ - **Worker validation**: Added `os.path.isfile()` input checks to 4 Python workers
143
+ - **Workflow integration**: `workflow.triage` now routes APK/DEX samples to APK-specific analysis tools
144
+ - **Type safety**: Replaced `any` type annotations with proper union types in malware-classify
145
+ - **npm packaging**: Added 7 missing worker files to `package.json` `files` array
146
+ - **Unit tests**: Added test suites for malware-config-extract, apk-structure-analyze, symbolic-explore, and patch-generate
147
+
10
148
  ## [1.0.0-beta.1] - 2026-03-29
11
149
 
12
150
  ### Frida Dynamic Instrumentation
package/README.md CHANGED
@@ -15,6 +15,8 @@ An MCP server for Windows reverse engineering. It exposes PE triage, Ghidra-back
15
15
  - Full Linux analysis image: the Docker distribution now bundles Graphviz, Rizin, YARA-X, UPX, Wine/winedbg, Frida CLI, Qiling, angr, PANDA bindings, and RetDec in addition to the baseline Ghidra/capa/DIE/FLOSS stack.
16
16
  - **Staged nonblocking pipeline**: analysis is organized into explicit stages (`fast_profile`, `enrich_static`, `function_map`, `reconstruct`, `dynamic_plan`, `dynamic_execute`, `summarize`), with preview-first tool contracts and persisted run state for reuse.
17
17
  - **HTTP File Server**: Embedded HTTP API on port 18080 for direct sample uploads, artifact downloads, and upload session management with API key authentication.
18
+ - **Web Dashboard**: Dark-themed real-time monitoring dashboard at `http://localhost:18080/dashboard` — shows all tools, plugins, samples, config diagnostics, system resources, and SSE event stream.
19
+ - **Server-Sent Events (SSE)**: Real-time event streaming at `/api/v1/events` for analysis progress, sample ingestion, and server state changes.
18
20
 
19
21
  ## New in the staged analysis pipeline
20
22
 
@@ -206,6 +208,8 @@ It is designed to help MCP clients:
206
208
  - `sandbox.execute`
207
209
  - `dynamic.trace.import`
208
210
  - `dynamic.memory.import`
211
+ - `dynamic.auto_hook` - Automated Frida hook generation from static evidence
212
+ - `dynamic.memory_dump` - Runtime memory dump with pattern scanning
209
213
  - `attack.map`
210
214
  - `ioc.export`
211
215
  - `report.summarize`
@@ -215,6 +219,34 @@ It is designed to help MCP clients:
215
219
  - `artifacts.diff`
216
220
  - `tool.help`
217
221
 
222
+ ### Android / APK analysis
223
+
224
+ - `apk.structure.analyze` - APK manifest, permissions, component extraction
225
+ - `apk.packer.detect` - APK packer/obfuscator detection
226
+ - `dex.decompile` - DEX-to-Java decompilation via jadx
227
+ - `dex.classes.list` - DEX class/method enumeration
228
+
229
+ ### Symbolic execution & CrackMe
230
+
231
+ - `symbolic.explore` - angr-backed symbolic execution
232
+ - `keygen.verify` - Keygen/license verification (Qiling/angr)
233
+ - `constraint.solve` - Z3/angr constraint solver
234
+
235
+ ### Malware analysis
236
+
237
+ - `malware.config.extract` - Malware configuration extraction
238
+ - `malware.classify` - Family classification (YARA + capa + behavioral)
239
+ - `c2.extract` - C2 infrastructure extraction
240
+
241
+ ### Cross-platform & visualization
242
+
243
+ - `elf.macho.parse` - ELF/Mach-O header/section parsing via Rizin
244
+ - `rizin.diff` - Binary diffing (function/basic-block level)
245
+ - `cfg.visualize` - Control flow graph visualization (DOT/SVG/JSON)
246
+ - `timeline.correlate` - Multi-source event timeline correlation
247
+ - `cross_module.xref` - Cross-module cross-reference analysis
248
+ - `kb.search` - Knowledge base semantic search
249
+
218
250
  ### Semantic review and reconstruction
219
251
 
220
252
  - `code.function.rename.prepare` (deprecated, use `llm.analyze`)
@@ -437,7 +469,7 @@ See [`docs/EXAMPLES.md`](./docs/EXAMPLES.md#场景 -9-frida-运行时 instrument
437
469
 
438
470
  ## Current Development Status
439
471
 
440
- ### Latest Release: v1.0.0-beta.1
472
+ ### Latest Release: v1.0.0-beta.2
441
473
 
442
474
  **Stable Features** (Production Ready):
443
475
  - PE triage and static analysis (`static.capability.triage`, `pe.structure.analyze`, `compiler.packer.detect`)
@@ -446,19 +478,54 @@ See [`docs/EXAMPLES.md`](./docs/EXAMPLES.md#场景 -9-frida-运行时 instrument
446
478
  - Rust and .NET recovery paths
447
479
  - Source-like reconstruction with LLM-assisted review layers
448
480
  - Runtime evidence ingestion and correlation
481
+ - Android/APK analysis (`apk.structure.analyze`, `dex.decompile`, `dex.classes.list`, `apk.packer.detect`)
482
+ - Symbolic execution and CrackMe tools (`symbolic.explore`, `keygen.verify`, `constraint.solve`)
483
+ - Malware analysis (`malware.config.extract`, `malware.classify`, `c2.extract`)
484
+ - Cross-platform binary parsing (`elf.macho.parse`, `rizin.diff`)
485
+ - Visualization and correlation (`cfg.visualize`, `timeline.correlate`, `cross_module.xref`, `kb.search`)
486
+ - Frida dynamic instrumentation (`frida.runtime.instrument`, `frida.script.inject`, `frida.trace.capture`)
487
+ - HTTP File Server with REST API (port 18080) — sample upload, artifact CRUD, SSE events
488
+ - **Web Dashboard** at `http://localhost:18080/dashboard` — real-time monitoring of tools, plugins, samples, config, system
489
+ - **Plugin SDK** with 15 built-in plugins, hot-load/unload, third-party auto-discovery
490
+ - **Production infrastructure**: Rate limiting, config validation, pagination, retry, batch analysis, SBOM generation
491
+ - **SSE real-time events**: Server-Sent Events for live analysis progress streaming
492
+
493
+ ### Full Service Inventory (Docker)
494
+
495
+ When running in Docker (`docker-compose up -d`), the container exposes:
496
+
497
+ | Service | Access | Description |
498
+ |---------|--------|-------------|
499
+ | MCP Server | stdio (`docker exec -i`) | 160 tools, 3 prompts, 16 resources for LLM clients |
500
+ | HTTP API | `http://localhost:18080/api/v1/*` | REST API for samples, artifacts, uploads, health, SSE |
501
+ | Web Dashboard | `http://localhost:18080/dashboard` | Real-time monitoring SPA (6 tabs, dark theme) |
502
+ | SSE Events | `http://localhost:18080/api/v1/events` | Real-time event stream for analysis events |
503
+ | Dashboard API | `http://localhost:18080/api/v1/dashboard/*` | 7 JSON endpoints powering the dashboard |
504
+
505
+ ### Built-in Plugins (15)
506
+
507
+ | Plugin | ID | Tools | Description |
508
+ |--------|----|-------|-------------|
509
+ | Android / APK | `android` | 4 | APK manifest, DEX decompilation, packer detection |
510
+ | Malware Analysis | `malware` | 4 | C2 extraction, config parsing, family classification, sandbox reports |
511
+ | CrackMe Automation | `crackme` | 4 | Validation location, symbolic execution, patching, keygen |
512
+ | Dynamic Analysis | `dynamic` | 3 | Auto Frida hooks, trace attribution, memory dumps |
513
+ | Frida Instrumentation | `frida` | 3 | Runtime instrumentation, script injection, trace capture |
514
+ | Ghidra Integration | `ghidra` | 2 | Headless Ghidra analysis and health checks |
515
+ | Cross-Module Analysis | `cross-module` | 3 | Cross-binary comparison, call graphs, DLL dependency trees |
516
+ | Visualization | `visualization` | 3 | HTML reports, behavior timelines, data-flow maps |
517
+ | Knowledge Base | `kb-collaboration` | 2 | Function signature matching, analysis templates |
518
+ | PE Analysis | `pe-analysis` | 6 | PE structure, imports, exports, fingerprint, pdata, symbol recovery |
519
+ | Vulnerability Scanner | `vuln-scanner` | 2 | Vulnerability pattern scanning and summary |
520
+ | Threat Intelligence | `threat-intel` | 2 | ATT&CK mapping and IOC export |
521
+ | Debug Session | `debug-session` | 6 | GDB/LLDB debug session management |
522
+ | Memory Forensics | `memory-forensics` | 6 | Memory dump analysis, volatility integration |
523
+ | Observability | `observability` | 1 | Tool call hook tracing and metrics |
524
+
525
+ Plugins are controlled via the `PLUGINS` environment variable (`*` = all, `android,malware` = specific, `-dynamic` = exclude). See [`docs/PLUGINS.md`](./docs/PLUGINS.md).
449
526
 
450
527
  ### In Development (Post-beta roadmap)
451
528
 
452
- **Frida Dynamic Instrumentation** - Completed implementation, rolling into the v1 beta line:
453
- - `frida.runtime.instrument` - Spawn and attach mode instrumentation
454
- - `frida.script.inject` - Pre-built and custom script injection
455
- - `frida.trace.capture` - Canonical trace schema with filtering/aggregation
456
- - Full integration with `dynamic.trace.import`, `report.generate`, `report.summarize`
457
- - 101 unit tests + integration test coverage
458
- - Comprehensive documentation in `docs/EXAMPLES.md`
459
-
460
- **Test Coverage**: All 101 tests passing including Frida instrumentation suite.
461
-
462
529
  For the new static triage foundation, the most common optional requirements are:
463
530
 
464
531
  - `flare-capa`
@@ -513,20 +580,93 @@ This summary is surfaced through:
513
580
  - `report.summarize`
514
581
  - `report.generate`
515
582
 
583
+ ## Architecture
584
+
585
+ The server uses a **centralised tool registry** (`src/tool-registry.ts`) that
586
+ imports and wires 109 core MCP tools, 3 prompts, and 16 resources in one place.
587
+ An additional 51 tools are registered by the 15 built-in plugins, bringing the
588
+ total to 160 MCP tools.
589
+ The entry point (`src/index.ts`) is kept under 90 lines.
590
+
591
+ All 15 tool categories — from PE analysis and vulnerability scanning to Android,
592
+ Malware, Frida, Ghidra, and debug sessions — are managed as **plugins** that
593
+ can be toggled via the `PLUGINS` environment variable (default: all enabled).
594
+ See [docs/PLUGINS.md](./docs/PLUGINS.md).
595
+
596
+ Other infrastructure:
597
+
598
+ | Component | File | Purpose |
599
+ |-----------|------|---------|
600
+ | Safe command execution | `src/safe-command.ts` | Whitelist-validated, array-based command invocation — prevents shell injection |
601
+ | Python process pool | `src/python-process-pool.ts` | Concurrency-limited worker pool (`MAX_PYTHON_WORKERS` env var) |
602
+ | Streaming progress | `src/streaming-progress.ts` | MCP `notifications/progress` for long-running tools |
603
+ | MCP resources | `src/tool-registry.ts` | 8 Frida + 8 Ghidra scripts discoverable via `resources/list` |
604
+ | HTTP File Server | `src/api/file-server.ts` | REST API (port 18080) for sample upload, artifact CRUD, SSE events, and dashboard |
605
+ | Web Dashboard | `src/api/dashboard/index.html` | Dark-themed SPA at `/dashboard` — tools, plugins, samples, config, system info |
606
+ | Dashboard API | `src/api/routes/dashboard-api.ts` | 7 JSON endpoints (`/api/v1/dashboard/*`) powering the web dashboard |
607
+ | SSE Events | `src/api/sse-events.ts` | Server-Sent Events for real-time analysis progress and server state |
608
+ | Rate Limiter | `src/api/rate-limiter.ts` | Request rate limiting for the HTTP API |
609
+ | Config Validator | `src/config-validator.ts` | Validates runtime config and surfaces diagnostics via dashboard |
610
+ | CI security scanning | `.github/workflows/ci.yml` | npm audit + pip-audit + CodeQL SAST |
611
+ | Structured logging | `src/logger.ts` | Pino JSON logging, child loggers, audit events |
612
+
613
+ Full details: [docs/ARCHITECTURE.md](./docs/ARCHITECTURE.md)
614
+
516
615
  ## Project layout
517
616
 
518
617
  ```text
519
618
  bin/ npm CLI entrypoint
520
619
  dist/ compiled TypeScript output
521
620
  ghidra_scripts/ Ghidra helper scripts used by the server
621
+ frida_scripts/ Frida instrumentation scripts (also MCP resources)
522
622
  helpers/DotNetMetadataProbe/ .NET metadata helper project
523
623
  src/ TypeScript MCP server source
524
- tests/ unit and integration tests
525
- workers/ Python worker, YARA rules, dynamic helpers
526
- install-to-codex.ps1 local Codex MCP install helper
527
- install-to-copilot.ps1 local GitHub Copilot MCP install helper
528
- install-to-claude.ps1 local Claude Code MCP install helper
529
- docs/QUALITY_EVALUATION.md evaluation checklist for regression and release readiness
624
+ index.ts Entry point (~90 lines)
625
+ server.ts MCPServer class (tools, prompts, resources)
626
+ tool-registry.ts Centralised tool/prompt/resource registration
627
+ plugins.ts Plugin framework (15 built-in + auto-discovery)
628
+ safe-command.ts Command injection prevention
629
+ python-process-pool.ts Concurrency-limited Python worker pool
630
+ streaming-progress.ts MCP progress notification support
631
+ config-validator.ts Runtime config validation with diagnostics
632
+ logger.ts Pino structured logging
633
+ tools/ Individual tool definitions and handlers (~90 files)
634
+ plugins/
635
+ sdk.ts Plugin contract and shared types
636
+ android/ Android/APK analysis plugin
637
+ crackme/ CrackMe automation plugin
638
+ cross-module/ Cross-binary analysis plugin
639
+ debug-session/ GDB/LLDB debug session plugin
640
+ dynamic/ Dynamic analysis plugin
641
+ frida/ Frida instrumentation plugin
642
+ ghidra/ Ghidra integration plugin
643
+ kb-collaboration/ Knowledge base plugin
644
+ malware/ Malware analysis plugin
645
+ memory-forensics/ Memory forensics plugin
646
+ observability/ Tool call tracing plugin
647
+ pe-analysis/ PE binary analysis plugin
648
+ threat-intel/ Threat intelligence plugin
649
+ visualization/ Reporting and visualization plugin
650
+ vuln-scanner/ Vulnerability pattern detection plugin
651
+ api/
652
+ file-server.ts HTTP API server (port 18080)
653
+ rate-limiter.ts Request rate limiting
654
+ auth-middleware.ts API key authentication
655
+ sse-events.ts Server-Sent Events for real-time streaming
656
+ dashboard/index.html Web dashboard SPA (dark theme, 6 tabs)
657
+ routes/
658
+ health.ts Health check endpoint
659
+ dashboard-api.ts Dashboard JSON API (7 endpoints)
660
+ tests/ unit and integration tests (207 test files)
661
+ workers/ Python workers, YARA rules, dynamic helpers
662
+ packages/plugin-sdk/ Standalone Plugin SDK npm package
663
+ docs/ Documentation
664
+ ARCHITECTURE.md Internal architecture guide
665
+ PLUGINS.md Plugin system guide
666
+ DOCKER.md Docker deployment guide (with service inventory)
667
+ API-FILE-SERVER.md HTTP API usage guide
668
+ API-REFERENCE.md Complete API reference
669
+ QUALITY_EVALUATION.md Evaluation checklist for release readiness
530
670
  ```
531
671
 
532
672
  ## Prerequisites
@@ -827,6 +967,8 @@ Current non-goals:
827
967
  ## Contributing and release process
828
968
 
829
969
  - Contributor guide: [`CONTRIBUTING.md`](./CONTRIBUTING.md)
970
+ - Architecture overview: [`docs/ARCHITECTURE.md`](./docs/ARCHITECTURE.md)
971
+ - Plugin development: [`docs/PLUGINS.md`](./docs/PLUGINS.md)
830
972
  - Quality evaluation notes: [`docs/QUALITY_EVALUATION.md`](./docs/QUALITY_EVALUATION.md)
831
973
  - Example benchmark corpus: [`examples/benchmark-corpus.example.json`](./examples/benchmark-corpus.example.json)
832
974
  - Security policy: [`SECURITY.md`](./SECURITY.md)
package/README_zh.md CHANGED
@@ -12,6 +12,11 @@
12
12
  - 运行时证据可回灌:静态证据、trace 导入、内存快照和语义 review 产物都能继续反灌到 reconstruct 和 report。
13
13
  - LLM 可深度介入:函数命名、函数解释、模块级重建 review 都已经是结构化 MCP workflow,而不是零散 prompt。
14
14
  - 适合长任务编排:长耗时 workflow 会返回 `job_id`、进度和 `polling_guidance`,方便客户端按建议 sleep/wait,而不是高频轮询浪费 token。
15
+ - **分阶段非阻塞流水线**:分析按显式阶段组织(`fast_profile`、`enrich_static`、`function_map`、`reconstruct`、`dynamic_plan`、`dynamic_execute`、`summarize`),支持预览优先的工具合约和持久化运行状态。
16
+ - **HTTP 文件服务**:内嵌 HTTP API(端口 18080),支持样本上传、产物下载、上传会话管理,API Key 认证。
17
+ - **Web 实时监控面板**:`http://localhost:18080/dashboard` — 暗色主题,6 个标签页,展示工具、插件、样本、配置、系统资源和 SSE 事件流。
18
+ - **SSE 实时事件**:`/api/v1/events` 实时推送分析进度、样本导入、服务器状态变更。
19
+ - **插件 SDK**:15 个内置插件,热加载/卸载,第三方自动发现。
15
20
 
16
21
  ## 本轮新增的静态初筛能力
17
22
 
@@ -116,6 +121,8 @@
116
121
  - `sandbox.execute`
117
122
  - `dynamic.trace.import`
118
123
  - `dynamic.memory.import`
124
+ - `dynamic.auto_hook` - 基于静态证据自动生成 Frida hook
125
+ - `dynamic.memory_dump` - 运行时内存转储与模式扫描
119
126
  - `attack.map`
120
127
  - `ioc.export`
121
128
  - `report.summarize`
@@ -125,20 +132,56 @@
125
132
  - `artifacts.diff`
126
133
  - `tool.help`
127
134
 
135
+ ### Android / APK 分析
136
+
137
+ - `apk.structure.analyze` - APK 清单、权限、组件提取
138
+ - `apk.packer.detect` - APK 加壳/混淆检测
139
+ - `dex.decompile` - DEX 转 Java 反编译(jadx)
140
+ - `dex.classes.list` - DEX 类/方法枚举
141
+
142
+ ### 符号执行与 CrackMe
143
+
144
+ - `symbolic.explore` - 基于 angr 的符号执行
145
+ - `keygen.verify` - 注册机/许可证验证(Qiling/angr)
146
+ - `constraint.solve` - Z3/angr 约束求解
147
+
148
+ ### 恶意软件分析
149
+
150
+ - `malware.config.extract` - 恶意软件配置提取
151
+ - `malware.classify` - 家族分类(YARA + capa + 行为)
152
+ - `c2.extract` - C2 基础设施提取
153
+
154
+ ### 跨平台与可视化
155
+
156
+ - `elf.macho.parse` - ELF/Mach-O 头部/段解析(Rizin)
157
+ - `rizin.diff` - 二进制差异比较(函数/基本块级别)
158
+ - `cfg.visualize` - 控制流图可视化(DOT/SVG/JSON)
159
+ - `timeline.correlate` - 多源事件时间线关联
160
+ - `cross_module.xref` - 跨模块交叉引用分析
161
+ - `kb.search` - 知识库语义搜索
162
+
128
163
  ### 语义 review 与重建
129
164
 
130
- - `code.function.rename.prepare`
131
- - `code.function.rename.review`
132
- - `code.function.rename.apply`
133
- - `code.function.explain.prepare`
134
- - `code.function.explain.review`
135
- - `code.function.explain.apply`
136
- - `code.module.review.prepare`
137
- - `code.module.review`
138
- - `code.module.review.apply`
165
+ - `code.function.rename.prepare`(已废弃,使用 `llm.analyze`)
166
+ - `code.function.rename.review`(已废弃,使用 `llm.analyze`)
167
+ - `code.function.rename.apply`(已废弃,使用 `llm.analyze`)
168
+ - `code.function.explain.prepare`(已废弃,使用 `llm.analyze`)
169
+ - `code.function.explain.review`(已废弃,使用 `llm.analyze`)
170
+ - `code.function.explain.apply`(已废弃,使用 `llm.analyze`)
171
+ - `code.module.review.prepare`(已废弃,使用 `llm.analyze`)
172
+ - `code.module.review`(已废弃,使用 `llm.analyze`)
173
+ - `code.module.review.apply`(已废弃,使用 `llm.analyze`)
139
174
  - `code.reconstruct.plan`
140
175
  - `code.reconstruct.export`
141
176
 
177
+ ### LLM 辅助分析
178
+
179
+ - `llm.analyze` - 统一 LLM 分析接口(替代已废弃的三步骤工具)
180
+ - `task: 'summarize'` - 精简摘要
181
+ - `task: 'explain'` - 清晰解释
182
+ - `task: 'recommend'` - 可操作建议
183
+ - `task: 'review'` - 代码审查
184
+
142
185
  ## 高层 Workflow
143
186
 
144
187
  ### `workflow.triage`
@@ -350,7 +393,7 @@ pip install frida frida-tools
350
393
 
351
394
  ## 当前开发进度
352
395
 
353
- ### 最新 Release: v1.0.0-beta.1
396
+ ### 最新 Release: v1.0.0-beta.2
354
397
 
355
398
  **稳定功能** (生产环境可用):
356
399
  - PE 初筛与静态分析 (`static.capability.triage`, `pe.structure.analyze`, `compiler.packer.detect`)
@@ -359,18 +402,53 @@ pip install frida frida-tools
359
402
  - Rust 和 .NET 恢复路径
360
403
  - 源码风格重建,支持 LLM 辅助 review 层
361
404
  - 运行时证据导入与关联
362
-
363
- ### 开发中 (beta 后续迭代)
364
-
365
- **Frida 动态 Instrumentation** - 实现已完成,正在并入 v1 beta 线:
366
- - `frida.runtime.instrument` - Spawn 和 attach 模式 instrumentation
367
- - `frida.script.inject` - 预构建和自定义脚本注入
368
- - `frida.trace.capture` - 规范化 trace schema,支持过滤/聚合
369
- - `dynamic.trace.import`, `report.generate`, `report.summarize` 完全集成
370
- - 101 个单元测试 + 集成测试覆盖
371
- - 完整文档见 `docs/EXAMPLES.md`
372
-
373
- **测试覆盖**: 所有 101 个测试通过,包括 Frida instrumentation 套件。
405
+ - Android/APK 分析 (`apk.structure.analyze`, `dex.decompile`, `dex.classes.list`, `apk.packer.detect`)
406
+ - 符号执行与 CrackMe 工具 (`symbolic.explore`, `keygen.verify`, `constraint.solve`)
407
+ - 恶意软件分析 (`malware.config.extract`, `malware.classify`, `c2.extract`)
408
+ - 跨平台二进制解析 (`elf.macho.parse`, `rizin.diff`)
409
+ - 可视化与关联 (`cfg.visualize`, `timeline.correlate`, `cross_module.xref`, `kb.search`)
410
+ - Frida 动态 Instrumentation (`frida.runtime.instrument`, `frida.script.inject`, `frida.trace.capture`)
411
+ - HTTP 文件服务 REST API(端口 18080)— 样本上传、产物 CRUD、SSE 事件
412
+ - **Web 监控面板** (`http://localhost:18080/dashboard`) — 工具、插件、样本、配置、系统实时监控
413
+ - **插件 SDK**:15 个内置插件,热加载/卸载,第三方自动发现
414
+ - **生产基础设施**:限流、配置校验、分页、重试、批量分析、SBOM 生成
415
+ - **SSE 实时事件**:Server-Sent Events 实时推送分析进度
416
+
417
+ ### 服务全景(Docker)
418
+
419
+ Docker 部署时(`docker-compose up -d`),容器暴露:
420
+
421
+ | 服务 | 访问方式 | 说明 |
422
+ |------|----------|------|
423
+ | MCP Server | stdio (`docker exec -i`) | 160 个工具、3 个 prompt、16 个 resource |
424
+ | HTTP API | `http://localhost:18080/api/v1/*` | 样本/产物/上传/健康检查 REST API |
425
+ | Web 面板 | `http://localhost:18080/dashboard` | 实时监控 SPA(6 标签页,暗色主题) |
426
+ | SSE 事件 | `http://localhost:18080/api/v1/events` | 分析事件实时推送 |
427
+ | 面板 API | `http://localhost:18080/api/v1/dashboard/*` | 7 个 JSON 端点 |
428
+
429
+ ### 内置插件(15 个)
430
+
431
+ | 插件 | ID | 工具数 | 说明 |
432
+ |------|----|--------|------|
433
+ | Android / APK | `android` | 4 | APK 清单、DEX 反编译、加壳检测 |
434
+ | 恶意软件分析 | `malware` | 4 | C2 提取、配置解析、家族分类、沙箱报告 |
435
+ | CrackMe 自动化 | `crackme` | 4 | 验证定位、符号执行、补丁、注册机 |
436
+ | 动态分析 | `dynamic` | 3 | 自动 Frida hook、trace 归因、内存转储 |
437
+ | Frida Instrumentation | `frida` | 3 | 运行时 instrumentation、脚本注入、trace 采集 |
438
+ | Ghidra 集成 | `ghidra` | 2 | 无头 Ghidra 分析与健康检查 |
439
+ | 跨模块分析 | `cross-module` | 3 | 跨二进制比较、调用图、DLL 依赖树 |
440
+ | 可视化 | `visualization` | 3 | HTML 报告、行为时间线、数据流图 |
441
+ | 知识库 | `kb-collaboration` | 2 | 函数签名匹配、分析模板 |
442
+ | PE 分析 | `pe-analysis` | 6 | PE 结构、导入、导出、指纹、pdata、符号恢复 |
443
+ | 漏洞扫描 | `vuln-scanner` | 2 | 漏洞模式扫描与摘要 |
444
+ | 威胁情报 | `threat-intel` | 2 | ATT&CK 映射与 IOC 导出 |
445
+ | 调试会话 | `debug-session` | 6 | GDB/LLDB 调试会话管理 |
446
+ | 内存取证 | `memory-forensics` | 6 | 内存转储分析、volatility 集成 |
447
+ | 可观测性 | `observability` | 1 | 工具调用 hook 追踪与指标 |
448
+
449
+ 插件通过 `PLUGINS` 环境变量控制(`*` = 全部, `android,malware` = 指定, `-dynamic` = 排除)。详见 [`docs/PLUGINS.md`](./docs/PLUGINS.md)。
450
+
451
+ ### 开发中(beta 后续迭代)
374
452
 
375
453
  对于新的静态初筛能力,最常见的可选依赖是:
376
454
 
@@ -401,14 +479,31 @@ pip install frida frida-tools
401
479
  bin/ npm CLI 入口
402
480
  dist/ 编译后的 TypeScript 输出
403
481
  ghidra_scripts/ Ghidra 辅助脚本
482
+ frida_scripts/ Frida instrumentation 脚本(同时作为 MCP resource)
404
483
  helpers/DotNetMetadataProbe/ .NET 元数据辅助项目
405
484
  src/ MCP Server 源码
406
- tests/ 单元与集成测试
485
+ index.ts 入口(~90 行)
486
+ server.ts MCPServer 类
487
+ tool-registry.ts 集中式工具/prompt/resource 注册
488
+ plugins.ts 插件框架(15 个内置 + 自动发现)
489
+ safe-command.ts 命令注入防护
490
+ python-process-pool.ts Python worker 并发池
491
+ streaming-progress.ts MCP 进度通知
492
+ config-validator.ts 运行时配置校验
493
+ logger.ts Pino 结构化日志
494
+ tools/ 工具定义与处理器(~90 个文件)
495
+ plugins/ 插件目录(15 个内置插件)
496
+ api/
497
+ file-server.ts HTTP API(端口 18080)
498
+ rate-limiter.ts 请求限流
499
+ sse-events.ts Server-Sent Events
500
+ dashboard/index.html Web 监控面板
501
+ routes/
502
+ dashboard-api.ts 面板 JSON API(7 个端点)
503
+ tests/ 单元与集成测试(207 个测试文件)
407
504
  workers/ Python worker、YARA 规则、动态分析辅助
408
- install-to-codex.ps1 Codex 本地安装脚本
409
- install-to-copilot.ps1 GitHub Copilot 本地安装脚本
410
- install-to-claude.ps1 Claude Code 本地安装脚本
411
- docs/QUALITY_EVALUATION.md 回归与发版质量检查说明
505
+ packages/plugin-sdk/ 独立 Plugin SDK npm 包
506
+ docs/ 文档
412
507
  ```
413
508
 
414
509
  ## 环境要求
@@ -23,11 +23,13 @@ export declare class FileServer {
23
23
  private server;
24
24
  private effectivePort;
25
25
  private readonly authMiddleware;
26
+ private readonly rateLimiter;
26
27
  constructor(config: FileServerConfig, dependencies: FileServerDependencies);
27
28
  start(): Promise<void>;
28
29
  stop(): Promise<void>;
29
30
  getPort(): number;
30
31
  private handleRequest;
32
+ private serveDashboardHtml;
31
33
  private requireApiKey;
32
34
  private sendJson;
33
35
  private sendBuffer;