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.
- package/CHANGELOG.md +180 -0
- package/CLAUDE_INSTALLATION.md +57 -0
- package/CODEX_INSTALLATION.md +23 -0
- package/COPILOT_INSTALLATION.md +26 -0
- package/README.md +462 -25
- package/README_zh.md +631 -0
- package/bin/windows-exe-decompiler-mcp-docker.js +5 -0
- package/bin/windows-exe-decompiler-mcp-server.js +10 -1
- package/dist/analysis-budget-scheduler.d.ts +96 -0
- package/dist/analysis-budget-scheduler.js +608 -0
- package/dist/analysis-coverage.d.ts +290 -0
- package/dist/analysis-coverage.js +178 -0
- package/dist/analysis-evidence.d.ts +232 -0
- package/dist/analysis-evidence.js +337 -0
- package/dist/analysis-provenance.d.ts +300 -154
- package/dist/analysis-provenance.js +27 -0
- package/dist/analysis-run-state.d.ts +576 -0
- package/dist/analysis-run-state.js +563 -0
- package/dist/analysis-task-runner.d.ts +4 -1
- package/dist/analysis-task-runner.js +173 -2
- package/dist/api/auth-middleware.d.ts +29 -0
- package/dist/api/auth-middleware.js +62 -0
- package/dist/api/file-server.d.ts +47 -0
- package/dist/api/file-server.js +520 -0
- package/dist/api/multipart-parser.d.ts +19 -0
- package/dist/api/multipart-parser.js +96 -0
- package/dist/api/routes/health.d.ts +17 -0
- package/dist/api/routes/health.js +19 -0
- package/dist/artifact-inventory.js +3 -0
- package/dist/async-tool-wrapper.d.ts +28 -0
- package/dist/async-tool-wrapper.js +75 -0
- package/dist/cache-manager.d.ts +10 -0
- package/dist/cache-manager.js +67 -0
- package/dist/cfg-visual-exports.d.ts +100 -0
- package/dist/cfg-visual-exports.js +651 -0
- package/dist/chunked-analysis-evidence.d.ts +20 -0
- package/dist/chunked-analysis-evidence.js +45 -0
- package/dist/confidence-semantics.d.ts +39 -19
- package/dist/confidence-semantics.js +53 -0
- package/dist/config.d.ts +462 -207
- package/dist/config.js +250 -0
- package/dist/crypto-breakpoint-analysis.d.ts +920 -0
- package/dist/crypto-breakpoint-analysis.js +873 -0
- package/dist/crypto-planning-artifacts.d.ts +30 -0
- package/dist/crypto-planning-artifacts.js +149 -0
- package/dist/database.d.ts +281 -0
- package/dist/database.js +995 -0
- package/dist/decompiler-worker.d.ts +51 -1
- package/dist/decompiler-worker.js +468 -55
- package/dist/explanation-graphs.d.ts +714 -0
- package/dist/explanation-graphs.js +238 -0
- package/dist/frida/script-generator.d.ts +21 -0
- package/dist/frida/script-generator.js +93 -0
- package/dist/ghidra-analysis-status.d.ts +26 -0
- package/dist/ghidra-config.d.ts +21 -0
- package/dist/ghidra-config.js +165 -8
- package/dist/ghidra-execution-summary.d.ts +158 -0
- package/dist/ghidra-execution-summary.js +174 -0
- package/dist/index.js +81 -10
- package/dist/intent-routing.d.ts +279 -0
- package/dist/intent-routing.js +445 -0
- package/dist/job-queue.d.ts +21 -1
- package/dist/job-queue.js +79 -11
- package/dist/kb/function-kb.d.ts +24 -0
- package/dist/kb/function-kb.js +127 -0
- package/dist/kb/kb-database.d.ts +58 -0
- package/dist/kb/kb-database.js +99 -0
- package/dist/kb/kb-llm-integration.d.ts +37 -0
- package/dist/kb/kb-llm-integration.js +42 -0
- package/dist/kb/sample-kb.d.ts +43 -0
- package/dist/kb/sample-kb.js +45 -0
- package/dist/kb/search-kb.d.ts +30 -0
- package/dist/kb/search-kb.js +107 -0
- package/dist/kb/team-kb.d.ts +17 -0
- package/dist/kb/team-kb.js +45 -0
- package/dist/llm/auto-trigger.d.ts +39 -0
- package/dist/llm/auto-trigger.js +113 -0
- package/dist/llm/context-manager.d.ts +72 -0
- package/dist/llm/context-manager.js +142 -0
- package/dist/llm/llm-analyze.d.ts +93 -0
- package/dist/llm/llm-analyze.js +166 -0
- package/dist/logger.js +6 -3
- package/dist/nonblocking-analysis.d.ts +21 -0
- package/dist/nonblocking-analysis.js +54 -0
- package/dist/npm-docker-launcher.d.ts +22 -0
- package/dist/npm-docker-launcher.js +160 -0
- package/dist/performance-benchmark.d.ts +105 -0
- package/dist/performance-benchmark.js +217 -0
- package/dist/polling-guidance.d.ts +28 -0
- package/dist/polling-guidance.js +78 -0
- package/dist/prompts/function-explanation-review.js +2 -0
- package/dist/prompts/module-reconstruction-review.js +2 -0
- package/dist/prompts/semantic-name-review.js +2 -0
- package/dist/runtime-correlation.d.ts +42 -0
- package/dist/runtime-correlation.js +76 -0
- package/dist/runtime-paths.js +36 -3
- package/dist/runtime-worker-pool.d.ts +79 -0
- package/dist/runtime-worker-pool.js +317 -0
- package/dist/sample-finalization.d.ts +28 -0
- package/dist/sample-finalization.js +148 -0
- package/dist/selection-diff.d.ts +1050 -513
- package/dist/selection-diff.js +20 -4
- package/dist/server.d.ts +32 -3
- package/dist/server.js +295 -46
- package/dist/setup-guidance.d.ts +65 -33
- package/dist/setup-guidance.js +501 -6
- package/dist/static-analysis-artifacts.d.ts +28 -0
- package/dist/static-analysis-artifacts.js +127 -0
- package/dist/static-analysis-environment.d.ts +10 -0
- package/dist/static-analysis-environment.js +103 -0
- package/dist/static-backend-discovery.d.ts +39 -0
- package/dist/static-backend-discovery.js +455 -0
- package/dist/storage/cleanup-job.d.ts +24 -0
- package/dist/storage/cleanup-job.js +150 -0
- package/dist/storage/metadata-logger.d.ts +47 -0
- package/dist/storage/metadata-logger.js +98 -0
- package/dist/storage/storage-manager.d.ts +118 -0
- package/dist/storage/storage-manager.js +456 -0
- package/dist/string-xref-analysis.d.ts +629 -0
- package/dist/string-xref-analysis.js +577 -0
- package/dist/string-xref-artifacts.d.ts +30 -0
- package/dist/string-xref-artifacts.js +149 -0
- package/dist/summary-artifacts.d.ts +33 -0
- package/dist/summary-artifacts.js +149 -0
- package/dist/summary-digests.d.ts +2459 -0
- package/dist/summary-digests.js +653 -0
- package/dist/tool-name-normalization.d.ts +7 -0
- package/dist/tool-name-normalization.js +44 -0
- package/dist/tool-surface-guidance.d.ts +6 -0
- package/dist/tool-surface-guidance.js +12 -0
- package/dist/tools/analysis-context-link.d.ts +275 -0
- package/dist/tools/analysis-context-link.js +654 -0
- package/dist/tools/artifact-download.d.ts +102 -0
- package/dist/tools/artifact-download.js +154 -0
- package/dist/tools/artifact-read.d.ts +146 -146
- package/dist/tools/artifact-read.js +4 -0
- package/dist/tools/artifacts-diff.d.ts +546 -546
- package/dist/tools/artifacts-list.d.ts +368 -368
- package/dist/tools/artifacts-list.js +1 -0
- package/dist/tools/attack-map.d.ts +154 -154
- package/dist/tools/binary-role-profile.d.ts +933 -820
- package/dist/tools/binary-role-profile.js +122 -15
- package/dist/tools/breakpoint-smart.d.ts +436 -0
- package/dist/tools/breakpoint-smart.js +288 -0
- package/dist/tools/code-function-cfg.d.ts +940 -31
- package/dist/tools/code-function-cfg.js +419 -55
- package/dist/tools/code-function-decompile.d.ts +20 -20
- package/dist/tools/code-function-disassemble.d.ts +12 -12
- package/dist/tools/code-function-explain-apply.d.ts +170 -170
- package/dist/tools/code-function-explain-prepare.d.ts +344 -344
- package/dist/tools/code-function-explain-review.d.ts +258 -258
- package/dist/tools/code-function-explain-review.js +17 -2
- package/dist/tools/code-function-rename-apply.d.ts +164 -164
- package/dist/tools/code-function-rename-prepare.d.ts +350 -350
- package/dist/tools/code-function-rename-review.d.ts +400 -400
- package/dist/tools/code-function-rename-review.js +17 -2
- package/dist/tools/code-functions-define.d.ts +242 -242
- package/dist/tools/code-functions-list.d.ts +6 -6
- package/dist/tools/code-functions-rank.d.ts +4 -4
- package/dist/tools/code-functions-reconstruct.d.ts +2812 -2367
- package/dist/tools/code-functions-reconstruct.js +4 -1
- package/dist/tools/code-functions-search.d.ts +20 -20
- package/dist/tools/code-functions-search.js +2 -1
- package/dist/tools/code-functions-smart-recover.d.ts +254 -254
- package/dist/tools/code-module-review-apply.d.ts +150 -150
- package/dist/tools/code-module-review-prepare.d.ts +566 -566
- package/dist/tools/code-module-review.d.ts +328 -328
- package/dist/tools/code-module-review.js +17 -2
- package/dist/tools/code-reconstruct-export.d.ts +1300 -1036
- package/dist/tools/code-reconstruct-plan.d.ts +168 -168
- package/dist/tools/code-xrefs-analyze.d.ts +272 -0
- package/dist/tools/code-xrefs-analyze.js +344 -0
- package/dist/tools/com-role-profile.d.ts +232 -232
- package/dist/tools/compiler-packer-detect.d.ts +822 -0
- package/dist/tools/compiler-packer-detect.js +401 -0
- package/dist/tools/crypto-identify.d.ts +756 -0
- package/dist/tools/crypto-identify.js +670 -0
- package/dist/tools/dll-export-profile.d.ts +420 -420
- package/dist/tools/docker-backend-tools.d.ts +2471 -0
- package/dist/tools/docker-backend-tools.js +1692 -0
- package/dist/tools/dotnet-metadata-extract.d.ts +320 -320
- package/dist/tools/dotnet-reconstruct-export.d.ts +406 -406
- package/dist/tools/dotnet-types-list.d.ts +224 -224
- package/dist/tools/dynamic-dependencies.d.ts +147 -147
- package/dist/tools/dynamic-dependencies.js +143 -8
- package/dist/tools/frida-runtime-instrument.d.ts +381 -0
- package/dist/tools/frida-runtime-instrument.js +381 -0
- package/dist/tools/frida-script-inject.d.ts +360 -0
- package/dist/tools/frida-script-inject.js +401 -0
- package/dist/tools/frida-trace-capture.d.ts +365 -0
- package/dist/tools/frida-trace-capture.js +504 -0
- package/dist/tools/ghidra-analyze.d.ts +189 -32
- package/dist/tools/ghidra-analyze.js +89 -44
- package/dist/tools/ghidra-health.d.ts +137 -137
- package/dist/tools/ghidra-health.js +7 -3
- package/dist/tools/ioc-export.d.ts +130 -130
- package/dist/tools/packer-detect.d.ts +86 -86
- package/dist/tools/packer-detect.js +16 -20
- package/dist/tools/pe-exports-extract.d.ts +90 -90
- package/dist/tools/pe-exports-extract.js +16 -20
- package/dist/tools/pe-fingerprint.d.ts +138 -138
- package/dist/tools/pe-fingerprint.js +16 -20
- package/dist/tools/pe-imports-extract.d.ts +42 -42
- package/dist/tools/pe-imports-extract.js +16 -20
- package/dist/tools/pe-pdata-extract.d.ts +328 -328
- package/dist/tools/pe-structure-analyze.d.ts +500 -0
- package/dist/tools/pe-structure-analyze.js +246 -0
- package/dist/tools/pe-symbols-recover.d.ts +154 -154
- package/dist/tools/report-generate.d.ts +601 -111
- package/dist/tools/report-generate.js +233 -7
- package/dist/tools/report-summarize.d.ts +7991 -3588
- package/dist/tools/report-summarize.js +1188 -49
- package/dist/tools/runtime-detect.d.ts +62 -62
- package/dist/tools/runtime-detect.js +16 -20
- package/dist/tools/rust-binary-analyze.d.ts +1540 -1540
- package/dist/tools/rust-demangle.d.ts +49 -0
- package/dist/tools/rust-demangle.js +202 -0
- package/dist/tools/sample-ingest.d.ts +73 -38
- package/dist/tools/sample-ingest.js +180 -154
- package/dist/tools/sample-profile-get.d.ts +340 -218
- package/dist/tools/sample-profile-get.js +112 -12
- package/dist/tools/sample-request-upload.d.ts +92 -0
- package/dist/tools/sample-request-upload.js +91 -0
- package/dist/tools/sandbox-execute.d.ts +302 -302
- package/dist/tools/setup-remediate.d.ts +495 -0
- package/dist/tools/setup-remediate.js +259 -0
- package/dist/tools/static-capability-triage.d.ts +666 -0
- package/dist/tools/static-capability-triage.js +305 -0
- package/dist/tools/static-worker-client.d.ts +41 -0
- package/dist/tools/static-worker-client.js +59 -0
- package/dist/tools/strings-extract.d.ts +1019 -252
- package/dist/tools/strings-extract.js +293 -43
- package/dist/tools/strings-floss-decode.d.ts +752 -74
- package/dist/tools/strings-floss-decode.js +133 -31
- package/dist/tools/system-health.d.ts +411 -385
- package/dist/tools/system-health.js +165 -13
- package/dist/tools/system-setup-guide.d.ts +125 -125
- package/dist/tools/system-setup-guide.js +21 -7
- package/dist/tools/task-cancel.d.ts +4 -4
- package/dist/tools/task-status.d.ts +131 -10
- package/dist/tools/task-status.js +324 -61
- package/dist/tools/task-sweep.d.ts +4 -4
- package/dist/tools/tool-help.d.ts +236 -222
- package/dist/tools/tool-help.js +575 -20
- package/dist/tools/trace-condition.d.ts +1118 -0
- package/dist/tools/trace-condition.js +366 -0
- package/dist/tools/yara-scan.d.ts +358 -358
- package/dist/tools/yara-scan.js +16 -20
- package/dist/types.d.ts +5 -1
- package/dist/unpack-debug-runtime.d.ts +421 -0
- package/dist/unpack-debug-runtime.js +542 -0
- package/dist/visualization/call-graph.d.ts +57 -0
- package/dist/visualization/call-graph.js +147 -0
- package/dist/visualization/crypto-flow.d.ts +50 -0
- package/dist/visualization/crypto-flow.js +152 -0
- package/dist/visualization/data-flow.d.ts +51 -0
- package/dist/visualization/data-flow.js +154 -0
- package/dist/visualization/visualization-integration.d.ts +53 -0
- package/dist/visualization/visualization-integration.js +50 -0
- package/dist/workflows/analyze-auto.d.ts +690 -0
- package/dist/workflows/analyze-auto.js +882 -0
- package/dist/workflows/analyze-pipeline.d.ts +7624 -0
- package/dist/workflows/analyze-pipeline.js +2017 -0
- package/dist/workflows/deep-static.d.ts +402 -16
- package/dist/workflows/deep-static.js +203 -49
- package/dist/workflows/function-explanation-review.d.ts +4756 -3005
- package/dist/workflows/function-explanation-review.js +13 -0
- package/dist/workflows/function-index-recover.d.ts +224 -224
- package/dist/workflows/module-reconstruction-review.d.ts +4717 -2966
- package/dist/workflows/module-reconstruction-review.js +13 -0
- package/dist/workflows/reconstruct.d.ts +5898 -3334
- package/dist/workflows/reconstruct.js +309 -10
- package/dist/workflows/semantic-name-review.d.ts +4878 -3127
- package/dist/workflows/semantic-name-review.js +13 -0
- package/dist/workflows/summarize.d.ts +5839 -0
- package/dist/workflows/summarize.js +825 -0
- package/dist/workflows/triage.d.ts +1046 -405
- package/dist/workflows/triage.js +1177 -28
- package/dist/workspace-manager.d.ts +10 -0
- package/dist/workspace-manager.js +29 -0
- package/frida_scripts/README.md +90 -0
- package/frida_scripts/anti_debug_bypass.js +220 -0
- package/frida_scripts/api_trace.js +227 -0
- package/frida_scripts/crypto_finder.js +216 -0
- package/frida_scripts/file_registry_monitor.js +416 -0
- package/frida_scripts/string_decoder.js +210 -0
- package/ghidra_scripts/AnalyzeCrossReferences.java +644 -0
- package/package.json +18 -5
- package/requirements.txt +2 -0
- package/workers/frida_worker.py +814 -0
- package/workers/requirements-dynamic.txt +4 -0
- package/workers/requirements-qiling.txt +5 -0
- package/workers/requirements.txt +1 -0
- package/workers/rizin_preview_worker.py +84 -0
- 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
|
package/CLAUDE_INSTALLATION.md
CHANGED
|
@@ -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
|
package/CODEX_INSTALLATION.md
CHANGED
|
@@ -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`
|
package/COPILOT_INSTALLATION.md
CHANGED
|
@@ -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
|