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

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 (295) hide show
  1. package/CHANGELOG.md +180 -0
  2. package/CLAUDE_INSTALLATION.md +57 -0
  3. package/CODEX_INSTALLATION.md +23 -0
  4. package/COPILOT_INSTALLATION.md +26 -0
  5. package/README.md +462 -25
  6. package/README_zh.md +631 -0
  7. package/bin/windows-exe-decompiler-mcp-docker.js +5 -0
  8. package/bin/windows-exe-decompiler-mcp-server.js +10 -1
  9. package/dist/analysis-budget-scheduler.d.ts +96 -0
  10. package/dist/analysis-budget-scheduler.js +608 -0
  11. package/dist/analysis-coverage.d.ts +290 -0
  12. package/dist/analysis-coverage.js +178 -0
  13. package/dist/analysis-evidence.d.ts +232 -0
  14. package/dist/analysis-evidence.js +337 -0
  15. package/dist/analysis-provenance.d.ts +300 -154
  16. package/dist/analysis-provenance.js +27 -0
  17. package/dist/analysis-run-state.d.ts +576 -0
  18. package/dist/analysis-run-state.js +563 -0
  19. package/dist/analysis-task-runner.d.ts +4 -1
  20. package/dist/analysis-task-runner.js +173 -2
  21. package/dist/api/auth-middleware.d.ts +29 -0
  22. package/dist/api/auth-middleware.js +62 -0
  23. package/dist/api/file-server.d.ts +47 -0
  24. package/dist/api/file-server.js +520 -0
  25. package/dist/api/multipart-parser.d.ts +19 -0
  26. package/dist/api/multipart-parser.js +96 -0
  27. package/dist/api/routes/health.d.ts +17 -0
  28. package/dist/api/routes/health.js +19 -0
  29. package/dist/artifact-inventory.js +3 -0
  30. package/dist/async-tool-wrapper.d.ts +28 -0
  31. package/dist/async-tool-wrapper.js +75 -0
  32. package/dist/cache-manager.d.ts +10 -0
  33. package/dist/cache-manager.js +67 -0
  34. package/dist/cfg-visual-exports.d.ts +100 -0
  35. package/dist/cfg-visual-exports.js +651 -0
  36. package/dist/chunked-analysis-evidence.d.ts +20 -0
  37. package/dist/chunked-analysis-evidence.js +45 -0
  38. package/dist/confidence-semantics.d.ts +39 -19
  39. package/dist/confidence-semantics.js +53 -0
  40. package/dist/config.d.ts +462 -207
  41. package/dist/config.js +250 -0
  42. package/dist/crypto-breakpoint-analysis.d.ts +920 -0
  43. package/dist/crypto-breakpoint-analysis.js +873 -0
  44. package/dist/crypto-planning-artifacts.d.ts +30 -0
  45. package/dist/crypto-planning-artifacts.js +149 -0
  46. package/dist/database.d.ts +281 -0
  47. package/dist/database.js +995 -0
  48. package/dist/decompiler-worker.d.ts +51 -1
  49. package/dist/decompiler-worker.js +468 -55
  50. package/dist/explanation-graphs.d.ts +714 -0
  51. package/dist/explanation-graphs.js +238 -0
  52. package/dist/frida/script-generator.d.ts +21 -0
  53. package/dist/frida/script-generator.js +93 -0
  54. package/dist/ghidra-analysis-status.d.ts +26 -0
  55. package/dist/ghidra-config.d.ts +21 -0
  56. package/dist/ghidra-config.js +165 -8
  57. package/dist/ghidra-execution-summary.d.ts +158 -0
  58. package/dist/ghidra-execution-summary.js +174 -0
  59. package/dist/index.js +81 -10
  60. package/dist/intent-routing.d.ts +279 -0
  61. package/dist/intent-routing.js +445 -0
  62. package/dist/job-queue.d.ts +21 -1
  63. package/dist/job-queue.js +79 -11
  64. package/dist/kb/function-kb.d.ts +24 -0
  65. package/dist/kb/function-kb.js +127 -0
  66. package/dist/kb/kb-database.d.ts +58 -0
  67. package/dist/kb/kb-database.js +99 -0
  68. package/dist/kb/kb-llm-integration.d.ts +37 -0
  69. package/dist/kb/kb-llm-integration.js +42 -0
  70. package/dist/kb/sample-kb.d.ts +43 -0
  71. package/dist/kb/sample-kb.js +45 -0
  72. package/dist/kb/search-kb.d.ts +30 -0
  73. package/dist/kb/search-kb.js +107 -0
  74. package/dist/kb/team-kb.d.ts +17 -0
  75. package/dist/kb/team-kb.js +45 -0
  76. package/dist/llm/auto-trigger.d.ts +39 -0
  77. package/dist/llm/auto-trigger.js +113 -0
  78. package/dist/llm/context-manager.d.ts +72 -0
  79. package/dist/llm/context-manager.js +142 -0
  80. package/dist/llm/llm-analyze.d.ts +93 -0
  81. package/dist/llm/llm-analyze.js +166 -0
  82. package/dist/logger.js +6 -3
  83. package/dist/nonblocking-analysis.d.ts +21 -0
  84. package/dist/nonblocking-analysis.js +54 -0
  85. package/dist/npm-docker-launcher.d.ts +22 -0
  86. package/dist/npm-docker-launcher.js +160 -0
  87. package/dist/performance-benchmark.d.ts +105 -0
  88. package/dist/performance-benchmark.js +217 -0
  89. package/dist/polling-guidance.d.ts +28 -0
  90. package/dist/polling-guidance.js +78 -0
  91. package/dist/prompts/function-explanation-review.js +2 -0
  92. package/dist/prompts/module-reconstruction-review.js +2 -0
  93. package/dist/prompts/semantic-name-review.js +2 -0
  94. package/dist/runtime-correlation.d.ts +42 -0
  95. package/dist/runtime-correlation.js +76 -0
  96. package/dist/runtime-paths.js +36 -3
  97. package/dist/runtime-worker-pool.d.ts +79 -0
  98. package/dist/runtime-worker-pool.js +317 -0
  99. package/dist/sample-finalization.d.ts +28 -0
  100. package/dist/sample-finalization.js +148 -0
  101. package/dist/selection-diff.d.ts +1050 -513
  102. package/dist/selection-diff.js +20 -4
  103. package/dist/server.d.ts +32 -3
  104. package/dist/server.js +295 -46
  105. package/dist/setup-guidance.d.ts +65 -33
  106. package/dist/setup-guidance.js +501 -6
  107. package/dist/static-analysis-artifacts.d.ts +28 -0
  108. package/dist/static-analysis-artifacts.js +127 -0
  109. package/dist/static-analysis-environment.d.ts +10 -0
  110. package/dist/static-analysis-environment.js +103 -0
  111. package/dist/static-backend-discovery.d.ts +39 -0
  112. package/dist/static-backend-discovery.js +455 -0
  113. package/dist/storage/cleanup-job.d.ts +24 -0
  114. package/dist/storage/cleanup-job.js +150 -0
  115. package/dist/storage/metadata-logger.d.ts +47 -0
  116. package/dist/storage/metadata-logger.js +98 -0
  117. package/dist/storage/storage-manager.d.ts +118 -0
  118. package/dist/storage/storage-manager.js +456 -0
  119. package/dist/string-xref-analysis.d.ts +629 -0
  120. package/dist/string-xref-analysis.js +577 -0
  121. package/dist/string-xref-artifacts.d.ts +30 -0
  122. package/dist/string-xref-artifacts.js +149 -0
  123. package/dist/summary-artifacts.d.ts +33 -0
  124. package/dist/summary-artifacts.js +149 -0
  125. package/dist/summary-digests.d.ts +2459 -0
  126. package/dist/summary-digests.js +653 -0
  127. package/dist/tool-name-normalization.d.ts +7 -0
  128. package/dist/tool-name-normalization.js +44 -0
  129. package/dist/tool-surface-guidance.d.ts +6 -0
  130. package/dist/tool-surface-guidance.js +12 -0
  131. package/dist/tools/analysis-context-link.d.ts +275 -0
  132. package/dist/tools/analysis-context-link.js +654 -0
  133. package/dist/tools/artifact-download.d.ts +102 -0
  134. package/dist/tools/artifact-download.js +154 -0
  135. package/dist/tools/artifact-read.d.ts +146 -146
  136. package/dist/tools/artifact-read.js +4 -0
  137. package/dist/tools/artifacts-diff.d.ts +546 -546
  138. package/dist/tools/artifacts-list.d.ts +368 -368
  139. package/dist/tools/artifacts-list.js +1 -0
  140. package/dist/tools/attack-map.d.ts +154 -154
  141. package/dist/tools/binary-role-profile.d.ts +933 -820
  142. package/dist/tools/binary-role-profile.js +122 -15
  143. package/dist/tools/breakpoint-smart.d.ts +436 -0
  144. package/dist/tools/breakpoint-smart.js +288 -0
  145. package/dist/tools/code-function-cfg.d.ts +940 -31
  146. package/dist/tools/code-function-cfg.js +419 -55
  147. package/dist/tools/code-function-decompile.d.ts +20 -20
  148. package/dist/tools/code-function-disassemble.d.ts +12 -12
  149. package/dist/tools/code-function-explain-apply.d.ts +170 -170
  150. package/dist/tools/code-function-explain-prepare.d.ts +344 -344
  151. package/dist/tools/code-function-explain-review.d.ts +258 -258
  152. package/dist/tools/code-function-explain-review.js +17 -2
  153. package/dist/tools/code-function-rename-apply.d.ts +164 -164
  154. package/dist/tools/code-function-rename-prepare.d.ts +350 -350
  155. package/dist/tools/code-function-rename-review.d.ts +400 -400
  156. package/dist/tools/code-function-rename-review.js +17 -2
  157. package/dist/tools/code-functions-define.d.ts +242 -242
  158. package/dist/tools/code-functions-list.d.ts +6 -6
  159. package/dist/tools/code-functions-rank.d.ts +4 -4
  160. package/dist/tools/code-functions-reconstruct.d.ts +2812 -2367
  161. package/dist/tools/code-functions-reconstruct.js +4 -1
  162. package/dist/tools/code-functions-search.d.ts +20 -20
  163. package/dist/tools/code-functions-search.js +2 -1
  164. package/dist/tools/code-functions-smart-recover.d.ts +254 -254
  165. package/dist/tools/code-module-review-apply.d.ts +150 -150
  166. package/dist/tools/code-module-review-prepare.d.ts +566 -566
  167. package/dist/tools/code-module-review.d.ts +328 -328
  168. package/dist/tools/code-module-review.js +17 -2
  169. package/dist/tools/code-reconstruct-export.d.ts +1300 -1036
  170. package/dist/tools/code-reconstruct-plan.d.ts +168 -168
  171. package/dist/tools/code-xrefs-analyze.d.ts +272 -0
  172. package/dist/tools/code-xrefs-analyze.js +344 -0
  173. package/dist/tools/com-role-profile.d.ts +232 -232
  174. package/dist/tools/compiler-packer-detect.d.ts +822 -0
  175. package/dist/tools/compiler-packer-detect.js +401 -0
  176. package/dist/tools/crypto-identify.d.ts +756 -0
  177. package/dist/tools/crypto-identify.js +670 -0
  178. package/dist/tools/dll-export-profile.d.ts +420 -420
  179. package/dist/tools/docker-backend-tools.d.ts +2471 -0
  180. package/dist/tools/docker-backend-tools.js +1692 -0
  181. package/dist/tools/dotnet-metadata-extract.d.ts +320 -320
  182. package/dist/tools/dotnet-reconstruct-export.d.ts +406 -406
  183. package/dist/tools/dotnet-types-list.d.ts +224 -224
  184. package/dist/tools/dynamic-dependencies.d.ts +147 -147
  185. package/dist/tools/dynamic-dependencies.js +143 -8
  186. package/dist/tools/frida-runtime-instrument.d.ts +381 -0
  187. package/dist/tools/frida-runtime-instrument.js +381 -0
  188. package/dist/tools/frida-script-inject.d.ts +360 -0
  189. package/dist/tools/frida-script-inject.js +401 -0
  190. package/dist/tools/frida-trace-capture.d.ts +365 -0
  191. package/dist/tools/frida-trace-capture.js +504 -0
  192. package/dist/tools/ghidra-analyze.d.ts +189 -32
  193. package/dist/tools/ghidra-analyze.js +89 -44
  194. package/dist/tools/ghidra-health.d.ts +137 -137
  195. package/dist/tools/ghidra-health.js +7 -3
  196. package/dist/tools/ioc-export.d.ts +130 -130
  197. package/dist/tools/packer-detect.d.ts +86 -86
  198. package/dist/tools/packer-detect.js +16 -20
  199. package/dist/tools/pe-exports-extract.d.ts +90 -90
  200. package/dist/tools/pe-exports-extract.js +16 -20
  201. package/dist/tools/pe-fingerprint.d.ts +138 -138
  202. package/dist/tools/pe-fingerprint.js +16 -20
  203. package/dist/tools/pe-imports-extract.d.ts +42 -42
  204. package/dist/tools/pe-imports-extract.js +16 -20
  205. package/dist/tools/pe-pdata-extract.d.ts +328 -328
  206. package/dist/tools/pe-structure-analyze.d.ts +500 -0
  207. package/dist/tools/pe-structure-analyze.js +246 -0
  208. package/dist/tools/pe-symbols-recover.d.ts +154 -154
  209. package/dist/tools/report-generate.d.ts +601 -111
  210. package/dist/tools/report-generate.js +233 -7
  211. package/dist/tools/report-summarize.d.ts +7991 -3588
  212. package/dist/tools/report-summarize.js +1188 -49
  213. package/dist/tools/runtime-detect.d.ts +62 -62
  214. package/dist/tools/runtime-detect.js +16 -20
  215. package/dist/tools/rust-binary-analyze.d.ts +1540 -1540
  216. package/dist/tools/rust-demangle.d.ts +49 -0
  217. package/dist/tools/rust-demangle.js +202 -0
  218. package/dist/tools/sample-ingest.d.ts +73 -38
  219. package/dist/tools/sample-ingest.js +180 -154
  220. package/dist/tools/sample-profile-get.d.ts +340 -218
  221. package/dist/tools/sample-profile-get.js +112 -12
  222. package/dist/tools/sample-request-upload.d.ts +92 -0
  223. package/dist/tools/sample-request-upload.js +91 -0
  224. package/dist/tools/sandbox-execute.d.ts +302 -302
  225. package/dist/tools/setup-remediate.d.ts +495 -0
  226. package/dist/tools/setup-remediate.js +259 -0
  227. package/dist/tools/static-capability-triage.d.ts +666 -0
  228. package/dist/tools/static-capability-triage.js +305 -0
  229. package/dist/tools/static-worker-client.d.ts +41 -0
  230. package/dist/tools/static-worker-client.js +59 -0
  231. package/dist/tools/strings-extract.d.ts +1019 -252
  232. package/dist/tools/strings-extract.js +293 -43
  233. package/dist/tools/strings-floss-decode.d.ts +752 -74
  234. package/dist/tools/strings-floss-decode.js +133 -31
  235. package/dist/tools/system-health.d.ts +411 -385
  236. package/dist/tools/system-health.js +165 -13
  237. package/dist/tools/system-setup-guide.d.ts +125 -125
  238. package/dist/tools/system-setup-guide.js +21 -7
  239. package/dist/tools/task-cancel.d.ts +4 -4
  240. package/dist/tools/task-status.d.ts +131 -10
  241. package/dist/tools/task-status.js +324 -61
  242. package/dist/tools/task-sweep.d.ts +4 -4
  243. package/dist/tools/tool-help.d.ts +236 -222
  244. package/dist/tools/tool-help.js +575 -20
  245. package/dist/tools/trace-condition.d.ts +1118 -0
  246. package/dist/tools/trace-condition.js +366 -0
  247. package/dist/tools/yara-scan.d.ts +358 -358
  248. package/dist/tools/yara-scan.js +16 -20
  249. package/dist/types.d.ts +5 -1
  250. package/dist/unpack-debug-runtime.d.ts +421 -0
  251. package/dist/unpack-debug-runtime.js +542 -0
  252. package/dist/visualization/call-graph.d.ts +57 -0
  253. package/dist/visualization/call-graph.js +147 -0
  254. package/dist/visualization/crypto-flow.d.ts +50 -0
  255. package/dist/visualization/crypto-flow.js +152 -0
  256. package/dist/visualization/data-flow.d.ts +51 -0
  257. package/dist/visualization/data-flow.js +154 -0
  258. package/dist/visualization/visualization-integration.d.ts +53 -0
  259. package/dist/visualization/visualization-integration.js +50 -0
  260. package/dist/workflows/analyze-auto.d.ts +690 -0
  261. package/dist/workflows/analyze-auto.js +882 -0
  262. package/dist/workflows/analyze-pipeline.d.ts +7624 -0
  263. package/dist/workflows/analyze-pipeline.js +2017 -0
  264. package/dist/workflows/deep-static.d.ts +402 -16
  265. package/dist/workflows/deep-static.js +203 -49
  266. package/dist/workflows/function-explanation-review.d.ts +4756 -3005
  267. package/dist/workflows/function-explanation-review.js +13 -0
  268. package/dist/workflows/function-index-recover.d.ts +224 -224
  269. package/dist/workflows/module-reconstruction-review.d.ts +4717 -2966
  270. package/dist/workflows/module-reconstruction-review.js +13 -0
  271. package/dist/workflows/reconstruct.d.ts +5898 -3334
  272. package/dist/workflows/reconstruct.js +309 -10
  273. package/dist/workflows/semantic-name-review.d.ts +4878 -3127
  274. package/dist/workflows/semantic-name-review.js +13 -0
  275. package/dist/workflows/summarize.d.ts +5839 -0
  276. package/dist/workflows/summarize.js +825 -0
  277. package/dist/workflows/triage.d.ts +1046 -405
  278. package/dist/workflows/triage.js +1177 -28
  279. package/dist/workspace-manager.d.ts +10 -0
  280. package/dist/workspace-manager.js +29 -0
  281. package/frida_scripts/README.md +90 -0
  282. package/frida_scripts/anti_debug_bypass.js +220 -0
  283. package/frida_scripts/api_trace.js +227 -0
  284. package/frida_scripts/crypto_finder.js +216 -0
  285. package/frida_scripts/file_registry_monitor.js +416 -0
  286. package/frida_scripts/string_decoder.js +210 -0
  287. package/ghidra_scripts/AnalyzeCrossReferences.java +644 -0
  288. package/package.json +18 -5
  289. package/requirements.txt +2 -0
  290. package/workers/frida_worker.py +814 -0
  291. package/workers/requirements-dynamic.txt +4 -0
  292. package/workers/requirements-qiling.txt +5 -0
  293. package/workers/requirements.txt +1 -0
  294. package/workers/rizin_preview_worker.py +84 -0
  295. package/workers/static_worker.py +817 -33
package/CHANGELOG.md ADDED
@@ -0,0 +1,180 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on Keep a Changelog, and this project follows Semantic
6
+ Versioning where practical.
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [1.0.0-beta.1] - 2026-03-29
11
+
12
+ ### Frida Dynamic Instrumentation
13
+
14
+ - Added Frida runtime instrumentation with `frida.runtime.instrument` supporting spawn and attach modes
15
+ - Added Frida script injection via `frida.script.inject` with pre-built script library:
16
+ - `api_trace.js` - Windows API tracing with argument logging
17
+ - `string_decoder.js` - Runtime string decryption
18
+ - `anti_debug_bypass.js` - Anti-debug detection neutralization
19
+ - `crypto_finder.js` - Cryptographic API detection
20
+ - `file_registry_monitor.js` - File/registry operation tracking
21
+ - Added Frida trace capture via `frida.trace.capture` with canonical MCP trace schema
22
+ - Implemented trace filtering, aggregation, artifact persistence, and provenance tracking
23
+ - Integrated Frida traces into `dynamic.trace.import`, `report.generate`, and `report.summarize`
24
+ - Added async job support for long-running Frida traces via `task.status` / `task.cancel`
25
+ - Added evidence scope selection (`all`/`latest`/`session`) and compare/baseline support for Frida traces
26
+ - Added comprehensive Frida documentation: installation guides, workflow examples, troubleshooting guidance
27
+ - Added `frida_scripts/` library with README documentation
28
+ - Added comprehensive unit tests for Frida tools:
29
+ - `tests/unit/frida-runtime-instrument.test.ts` - Runtime instrumentation tests (11 tests)
30
+ - `tests/unit/frida-script-inject.test.ts` - Script injection tests (13 tests)
31
+ - `tests/unit/frida-trace-capture.test.ts` - Trace capture/normalization tests (19 tests)
32
+ - `tests/unit/setup-guidance.test.ts` - Setup guidance behavior tests (24 tests)
33
+ - Added integration tests for Frida workflows:
34
+ - `tests/integration/frida-workflow.test.ts` - End-to-end spawn/attach/capture workflow tests
35
+ - Tests graceful degradation when Frida unavailable with structured setup guidance
36
+ - Tests concurrent operations and artifact persistence
37
+
38
+ ### Static Analysis Foundation
39
+
40
+ - Added a static triage foundation for the upcoming `0.2.0` line: `static.capability.triage`, `pe.structure.analyze`, and `compiler.packer.detect`
41
+ - Added worker/config/setup support for `flare-capa`, `pefile`, `lief`, `CAPA_RULES_PATH`, and `DIE_PATH`
42
+ - Integrated static capability, PE structure, and compiler/packer attribution into `workflow.triage`, `report.summarize`, and `report.generate`
43
+ - Added static artifact persistence, provenance, scope selection, and compare/baseline support for the new analysis families
44
+ - Updated MCP docs, install guides, and release notes to cover early-stage static triage chaining and optional dependency bootstrap
45
+
46
+ ### HTTP File Server
47
+
48
+ - Added embedded HTTP file server on port 18080 for direct sample uploads and artifact downloads
49
+ - Implemented REST API endpoints:
50
+ - `POST /api/v1/samples` - Direct sample upload with multipart/form-data support
51
+ - `GET /api/v1/samples/:id` - Sample metadata retrieval and optional file download
52
+ - `GET /api/v1/artifacts` - List artifacts with optional sample filtering
53
+ - `GET/DELETE /api/v1/artifacts/:id` - Artifact metadata, download, and deletion
54
+ - `GET /api/v1/health` - Health check endpoint
55
+ - `POST/GET /api/v1/uploads/:token` - Upload session management
56
+ - Added API key authentication via `X-API-Key` header (optional, configurable via `API_KEY`)
57
+ - Added MCP tools for file access:
58
+ - `sample.download` - Download sample by ID with metadata
59
+ - `artifact.download` - Download artifact by ID with optional content parsing
60
+ - Added PowerShell CLI tools:
61
+ - `scripts/upload-api.ps1` - Sample upload with progress display and error handling
62
+ - `scripts/download-artifact.ps1` - Artifact download with metadata support
63
+ - Implemented storage management:
64
+ - `StorageManager` - Unified storage operations with date partitioning
65
+ - `cleanup-job.ts` - Automatic retention-based cleanup (configurable via `API_RETENTION_DAYS`)
66
+ - `metadata-logger.ts` - Audit logging for upload tracking
67
+ - Added comprehensive documentation:
68
+ - `docs/API-FILE-SERVER.md` - API usage guide with examples
69
+ - `docs/API-REFERENCE.md` - Complete API reference with error codes
70
+ - Updated `README.md` and `INSTALL.md` with API configuration
71
+ - Added Docker configuration:
72
+ - Exposed port 18080 in Dockerfile
73
+ - Added storage volume mounting in docker-compose.yml
74
+ - Added API environment variables in .env.example
75
+ - Added unit tests:
76
+ - `tests/unit/api/auth-middleware.test.ts` - Authentication tests
77
+ - `tests/unit/api/sample-upload.test.ts` - Upload workflow tests
78
+ - `tests/unit/api/storage-manager.test.ts` - Storage operation tests
79
+ - `tests/unit/api/api-endpoints.test.ts` - Endpoint contract tests
80
+ - `tests/unit/api/upload-workflow.test.ts` - E2E workflow tests
81
+
82
+ ### MCP Server Optimization (Phase 1-8)
83
+
84
+ - **Cache Layer Optimization** (Phase 1):
85
+ - Implemented smart cache key generation filtering 18 unstable parameters
86
+ - Added parameter normalization for deterministic key generation
87
+ - Implemented cache hit rate statistics and monitoring
88
+ - Expected improvement: +30-50% cache hit rate
89
+ - New modules: `src/smart-cache.ts`, `src/cache-manager.ts` extensions
90
+
91
+ - **Tiered Response System** (Phase 2):
92
+ - Implemented L1/L2/L3 response tiering to reduce token consumption
93
+ - Created `TieredResponse` interface and `BaseTool` abstract class
94
+ - L1 Summary (100-500 tokens), L2 Structured data, L3 Artifact references
95
+ - Expected improvement: -80-90% token consumption
96
+ - New module: `src/tiered-response.ts`
97
+
98
+ - **JobQueue Enhancement** (Phase 3):
99
+ - Added progress tracking API (`updateProgress`)
100
+ - Added cancellation check API (`isCancelled`)
101
+ - Improved workflow observability
102
+ - Modified: `src/job-queue.ts`
103
+
104
+ - **Artifact Lifecycle Management** (Phase 4):
105
+ - Implemented artifact age calculation and retention bucket classification
106
+ - Added gzip compression for artifacts older than 7 days
107
+ - Implemented automatic cleanup with configurable retention policy
108
+ - Added dry-run mode for preview
109
+ - Expected improvement: -50-70% disk usage
110
+ - New module: `src/artifact-lifecycle.ts`
111
+
112
+ - **Error Recovery Enhancement** (Phase 5):
113
+ - Implemented intelligent error classification (9 categories)
114
+ - Added auto-recovery actions (5 types: install, retry, downgrade, etc.)
115
+ - Implemented exponential backoff retry logic
116
+ - Added lite mode fallback for resource exhaustion
117
+ - New module: `src/error-handler-enhanced.ts`
118
+
119
+ - **MCP Resources Protocol** (Phase 6):
120
+ - Implemented `resources/list` and `resources/read` endpoints
121
+ - Added `artifact://` and `sample://` URI schemes
122
+ - Added resource change notifications
123
+ - New module: `src/mcp-resources.ts`
124
+
125
+ - **Token Budget Tracking** (Phase 7):
126
+ - Implemented SQLite `token_usage` table for persistence
127
+ - Added simple usage recording and querying
128
+ - Provides tool-based statistics and recent usage history
129
+ - Lightweight implementation focused on core recording needs
130
+ - New module: `src/token-budget.ts`
131
+
132
+ - **Performance Benchmarking** (Phase 8):
133
+ - Created benchmark suite for cache, response, and disk optimization
134
+ - Implemented token reduction measurement
135
+ - Added optimization report generation
136
+ - Added tuning recommendations
137
+ - New module: `src/performance-benchmark.ts`
138
+
139
+ ## [0.1.4] - 2026-03-14
140
+
141
+ - Added safer Ghidra defaults for `GHIDRA_PROJECT_ROOT` / `GHIDRA_LOG_ROOT`, automatic project-parent creation, and safer Windows defaults that avoid unstable per-repo relative paths
142
+ - Fixed bundled `ghidra_scripts` resolution so helper scripts are loaded from the installed package or repository root instead of the current working directory
143
+ - Added richer Ghidra diagnostics: persisted command/runtime logs, parsed Java exception summaries, normalized remediation hints, and stage progress callbacks for queued analysis
144
+ - Surfaced structured `ghidra_execution` summaries through `workflow.reconstruct`, `workflow.semantic_name_review`, `workflow.function_explanation_review`, `workflow.module_reconstruction_review`, `report.summarize`, and `report.generate`
145
+ - Added Java runtime detection and Java 21+ setup guidance across `ghidra.health`, `system.health`, `system.setup.guide`, and high-level workflows
146
+ - Extended module reconstruction review refresh so all three high-level semantic review workflows now expose the same Ghidra project/log/progress context after export refresh
147
+ - Stabilized unit coverage for Ghidra analysis failure handling, timeout reporting, Java fallback extraction, and degraded function-index recovery
148
+
149
+ ## [0.1.3] - 2026-03-14
150
+
151
+ - Added DLL- and COM-oriented profiling with `dll.export.profile` and `com.role.profile`
152
+ - Added module-level LLM review primitives: `code.module.review.prepare`, `code.module.review`, `code.module.review.apply`, prompt `reverse.module_reconstruction_review`, and `workflow.module_reconstruction_review`
153
+ - Extended `workflow.reconstruct` with role-aware export strategy so DLL/COM/Rust preflight can influence module grouping and reconstruction priority
154
+ - Improved runtime memory ingestion with segment/module hints, region ownership, and richer runtime provenance
155
+ - Added structured setup guidance with `system.setup.guide` and surfaced install/input requirements from health checks and high-level workflows
156
+ - Refined README, installation docs, and release packaging for the `0.1.3` npm/GitHub release
157
+
158
+ ## [0.1.2] - 2026-03-12
159
+
160
+ - Upgraded `workflow.reconstruct` with universal preflight orchestration, including binary role profiling, Rust-specific profiling, and optional automatic function-index recovery before export
161
+ - Aligned `workflow.semantic_name_review` and `workflow.function_explanation_review` with reconstruct refresh preflight, provenance, and selection diff semantics
162
+ - Added `.pdata`-driven PE recovery tooling: `pe.pdata.extract`, `code.functions.smart_recover`, `pe.symbols.recover`, and `code.functions.define`
163
+ - Added `workflow.function_index_recover` and `rust_binary.analyze` to make Rust and hard-to-index native samples recoverable even when Ghidra function extraction fails
164
+ - Hardened sample/original and Ghidra project fallback handling so analysis can continue when older workspaces are incomplete
165
+ - Stabilized runtime state defaults by moving workspace, database, cache, and audit paths to persistent user-level configuration roots
166
+
167
+ ## [0.1.1] - 2026-03-11
168
+
169
+ - Added `binary.role.profile` for universal EXE/DLL/.NET/driver role profiling, export surface triage, and COM/service/plugin indicators
170
+ - Added quality scaffolding with benchmark corpus example and evaluation guidance for future regression baselines
171
+ - Added async job mode for `workflow.reconstruct`, `workflow.semantic_name_review`, and `workflow.function_explanation_review`
172
+ - Wired queued workflow execution into the background analysis task runner
173
+ - Integrated binary role profile output into `report.summarize` and `report.generate`
174
+ - Added report coverage for runtime/semantic provenance plus binary role context in generated markdown and JSON output
175
+ - Continued repository and packaging cleanup for public GitHub/npm release
176
+
177
+ ## [0.1.0] - 2026-03-11
178
+
179
+ - Initial public packaging baseline
180
+ - MCP server with static PE analysis, Ghidra integration hooks, runtime evidence tools, and reconstruction workflows
@@ -38,6 +38,20 @@ It also pins:
38
38
  - `DB_PATH`
39
39
  - `CACHE_ROOT`
40
40
  - `AUDIT_LOG_PATH`
41
+ - `GHIDRA_PROJECT_ROOT`
42
+ - `GHIDRA_LOG_ROOT`
43
+
44
+ Optional static-analysis inputs can also be provided through:
45
+
46
+ - `CAPA_RULES_PATH`
47
+ - `DIE_PATH`
48
+
49
+ The server's bundled `ghidra_scripts/` directory is resolved from the installed
50
+ package or repository root, not from the shell's current working directory. You
51
+ do not need to manually point Claude at `ExtractFunctions.py`.
52
+
53
+ For Ghidra 12.0.4, keep Java 21+ available. If Java is installed outside the
54
+ system default location, also set `JAVA_HOME`.
41
55
 
42
56
  ## Pass Ghidra Explicitly
43
57
 
@@ -47,6 +61,11 @@ It also pins:
47
61
 
48
62
  The script writes both `GHIDRA_PATH` and `GHIDRA_INSTALL_DIR`.
49
63
 
64
+ If you want to pin Ghidra project/log roots explicitly, set:
65
+
66
+ - `GHIDRA_PROJECT_ROOT`
67
+ - `GHIDRA_LOG_ROOT`
68
+
50
69
  If you want a different persistent workspace root:
51
70
 
52
71
  ```powershell
@@ -123,6 +142,44 @@ dynamic-analysis extras, or Ghidra configuration, ask it to call:
123
142
  These tools return structured `setup_actions` and `required_user_inputs`
124
143
  instead of only failing with a generic error.
125
144
 
145
+ For the static capability / PE structure / compiler attribution layer, the most
146
+ common optional requirements are:
147
+
148
+ - `python -m pip install flare-capa pefile lief`
149
+ - a capa rules bundle referenced by `CAPA_RULES_PATH`
150
+ - Detect It Easy CLI referenced by `DIE_PATH`
151
+
152
+ ### Frida Dynamic Instrumentation (Optional)
153
+
154
+ For runtime API tracing and behavioral analysis, install Frida:
155
+
156
+ ```powershell
157
+ pip install frida frida-tools
158
+ ```
159
+
160
+ **Verify Frida installation:**
161
+
162
+ ```powershell
163
+ python -c "import frida; print(frida.__version__)"
164
+ frida --version
165
+ ```
166
+
167
+ **Environment Variables** (optional):
168
+
169
+ - `FRIDA_SERVER_PATH` - Path to Frida server binary for USB/remote device analysis
170
+ - `FRIDA_DEVICE` - Device ID or "usb" for USB device selection (default: local spawn)
171
+
172
+ When Frida is unavailable, tools like `frida.runtime.instrument`, `frida.script.inject`, and `frida.trace.capture` return structured setup guidance instead of generic errors.
173
+
174
+ **Pre-built Scripts** are included in `frida_scripts/`:
175
+ - `api_trace.js` - Windows API tracing
176
+ - `string_decoder.js` - Runtime string decryption
177
+ - `anti_debug_bypass.js` - Anti-debug neutralization
178
+ - `crypto_finder.js` - Cryptographic API detection
179
+ - `file_registry_monitor.js` - File/registry operation tracking
180
+
181
+ See [`docs/EXAMPLES.md`](./docs/EXAMPLES.md#场景 -9-frida-运行时 instrumentation) for Frida workflow examples.
182
+
126
183
  ## References
127
184
 
128
185
  - Claude Code MCP overview: https://docs.anthropic.com/en/docs/claude-code/mcp
@@ -23,6 +23,20 @@ It also pins:
23
23
  - `DB_PATH`
24
24
  - `CACHE_ROOT`
25
25
  - `AUDIT_LOG_PATH`
26
+ - `GHIDRA_PROJECT_ROOT`
27
+ - `GHIDRA_LOG_ROOT`
28
+
29
+ Optional static-analysis inputs can also be provided through:
30
+
31
+ - `CAPA_RULES_PATH`
32
+ - `DIE_PATH`
33
+
34
+ The server's bundled `ghidra_scripts/` directory is resolved from the installed
35
+ package or repository root, not from the shell's current working directory. You
36
+ do not need to manually configure a script path for `ExtractFunctions.py`.
37
+
38
+ For Ghidra 12.0.4, keep Java 21+ available. If Java is installed in a custom
39
+ location, set `JAVA_HOME` before starting Codex.
26
40
 
27
41
  If Ghidra is not already configured through `GHIDRA_PATH` or
28
42
  `GHIDRA_INSTALL_DIR`, pass it explicitly:
@@ -44,6 +58,8 @@ If you want a different persistent workspace root:
44
58
  - updates `~/.codex/config.toml`
45
59
  - writes `WORKSPACE_ROOT` so workspaces do not depend on the current repo path
46
60
  - writes `GHIDRA_PATH` and `GHIDRA_INSTALL_DIR` when a Ghidra path is provided
61
+ - honors `GHIDRA_PROJECT_ROOT` and `GHIDRA_LOG_ROOT` when you want Ghidra
62
+ projects and runtime logs under a fixed location
47
63
 
48
64
  ## Manual configuration example
49
65
 
@@ -82,6 +98,13 @@ configuration, ask it to call:
82
98
  - `system.health`
83
99
  - `ghidra.health`
84
100
 
101
+ For the static capability / PE structure / compiler attribution layer, the most
102
+ common optional requirements are:
103
+
104
+ - `python -m pip install flare-capa pefile lief`
105
+ - a capa rules bundle referenced by `CAPA_RULES_PATH`
106
+ - Detect It Easy CLI referenced by `DIE_PATH`
107
+
85
108
  ## Troubleshooting
86
109
 
87
110
  - `dist/index.js was not found`
@@ -15,6 +15,20 @@ It also pins:
15
15
  - `DB_PATH`
16
16
  - `CACHE_ROOT`
17
17
  - `AUDIT_LOG_PATH`
18
+ - `GHIDRA_PROJECT_ROOT`
19
+ - `GHIDRA_LOG_ROOT`
20
+
21
+ Optional static-analysis inputs can also be provided through:
22
+
23
+ - `CAPA_RULES_PATH`
24
+ - `DIE_PATH`
25
+
26
+ The server's bundled `ghidra_scripts/` directory is resolved from the installed
27
+ package or repository root, not from the shell's current working directory. You
28
+ do not need to separately point Copilot at `ExtractFunctions.py`.
29
+
30
+ For Ghidra 12.0.4, keep Java 21+ available. If Java is installed outside the
31
+ default system location, set `JAVA_HOME` before launching Copilot clients.
18
32
 
19
33
  Build the project first:
20
34
 
@@ -28,6 +42,11 @@ If Ghidra is not already configured in the environment, pass it explicitly:
28
42
  .\install-to-copilot.ps1 -GhidraPath "C:\tools\ghidra"
29
43
  ```
30
44
 
45
+ If you want to pin Ghidra projects and logs under a fixed location, set:
46
+
47
+ - `GHIDRA_PROJECT_ROOT`
48
+ - `GHIDRA_LOG_ROOT`
49
+
31
50
  If you want a different persistent workspace root:
32
51
 
33
52
  ```powershell
@@ -87,6 +106,13 @@ packages, dynamic-analysis extras, or Ghidra configuration, ask Copilot to call:
87
106
 
88
107
  These tools return structured setup actions and missing user inputs.
89
108
 
109
+ For the static capability / PE structure / compiler attribution layer, the most
110
+ common optional requirements are:
111
+
112
+ - `python -m pip install flare-capa pefile lief`
113
+ - a capa rules bundle referenced by `CAPA_RULES_PATH`
114
+ - Detect It Easy CLI referenced by `DIE_PATH`
115
+
90
116
  ## References
91
117
 
92
118
  - https://code.visualstudio.com/docs/copilot/customization/mcp-servers