windows-exe-decompiler-mcp-server 0.1.1 → 0.1.4
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 +51 -0
- package/CLAUDE_INSTALLATION.md +143 -0
- package/CODEX_INSTALLATION.md +36 -1
- package/COPILOT_INSTALLATION.md +43 -1
- package/LICENSE +21 -21
- package/README.md +315 -112
- package/README_zh.md +532 -0
- package/dist/analysis-provenance.d.ts +50 -2
- package/dist/analysis-provenance.js +1 -0
- package/dist/analysis-task-runner.js +29 -0
- package/dist/config.d.ts +78 -16
- package/dist/config.js +94 -3
- package/dist/database.js +115 -115
- package/dist/decompiler-worker.d.ts +24 -6
- package/dist/decompiler-worker.js +547 -106
- package/dist/dynamic-trace.d.ts +6 -0
- package/dist/dynamic-trace.js +52 -1
- package/dist/ghidra-analysis-status.d.ts +26 -0
- package/dist/ghidra-config.d.ts +21 -0
- package/dist/ghidra-config.js +159 -9
- package/dist/ghidra-execution-summary.d.ts +158 -0
- package/dist/ghidra-execution-summary.js +174 -0
- package/dist/index.js +32 -4
- package/dist/pe-runtime-functions.d.ts +90 -0
- package/dist/pe-runtime-functions.js +452 -0
- package/dist/polling-guidance.d.ts +28 -0
- package/dist/polling-guidance.js +75 -0
- package/dist/prompts/module-reconstruction-review.d.ts +5 -0
- package/dist/prompts/module-reconstruction-review.js +65 -0
- package/dist/runtime-correlation.d.ts +5 -0
- package/dist/runtime-correlation.js +179 -2
- package/dist/sample-workspace.d.ts +28 -0
- package/dist/sample-workspace.js +186 -0
- package/dist/semantic-name-suggestion-artifacts.d.ts +56 -0
- package/dist/semantic-name-suggestion-artifacts.js +87 -0
- package/dist/server.js +1 -1
- package/dist/setup-guidance.d.ts +75 -0
- package/dist/setup-guidance.js +302 -0
- package/dist/tools/artifact-read.d.ts +8 -8
- package/dist/tools/artifacts-diff.d.ts +8 -8
- package/dist/tools/artifacts-list.d.ts +8 -8
- package/dist/tools/attack-map.d.ts +8 -8
- package/dist/tools/binary-role-profile.d.ts +448 -68
- package/dist/tools/binary-role-profile.js +155 -6
- package/dist/tools/code-function-explain-apply.d.ts +12 -12
- package/dist/tools/code-function-explain-prepare.d.ts +12 -12
- package/dist/tools/code-function-explain-review.d.ts +16 -16
- package/dist/tools/code-function-rename-apply.d.ts +12 -12
- package/dist/tools/code-function-rename-prepare.d.ts +14 -14
- package/dist/tools/code-function-rename-review.d.ts +18 -18
- package/dist/tools/code-functions-define.d.ts +337 -0
- package/dist/tools/code-functions-define.js +337 -0
- package/dist/tools/code-functions-list.js +1 -1
- package/dist/tools/code-functions-rank.js +1 -1
- package/dist/tools/code-functions-reconstruct.d.ts +324 -14
- package/dist/tools/code-functions-reconstruct.js +130 -10
- package/dist/tools/code-functions-smart-recover.d.ts +352 -0
- package/dist/tools/code-functions-smart-recover.js +190 -0
- package/dist/tools/code-module-review-apply.d.ts +233 -0
- package/dist/tools/code-module-review-apply.js +209 -0
- package/dist/tools/code-module-review-prepare.d.ts +756 -0
- package/dist/tools/code-module-review-prepare.js +343 -0
- package/dist/tools/code-module-review.d.ts +474 -0
- package/dist/tools/code-module-review.js +566 -0
- package/dist/tools/code-reconstruct-export.d.ts +199 -27
- package/dist/tools/code-reconstruct-export.js +578 -21
- package/dist/tools/code-reconstruct-plan.d.ts +14 -14
- package/dist/tools/com-role-profile.d.ts +353 -0
- package/dist/tools/com-role-profile.js +186 -0
- package/dist/tools/dll-export-profile.d.ts +625 -0
- package/dist/tools/dll-export-profile.js +230 -0
- package/dist/tools/dotnet-metadata-extract.d.ts +19 -19
- package/dist/tools/dotnet-reconstruct-export.d.ts +27 -27
- package/dist/tools/dotnet-types-list.d.ts +18 -18
- package/dist/tools/dynamic-dependencies.d.ts +144 -8
- package/dist/tools/dynamic-dependencies.js +20 -1
- package/dist/tools/dynamic-memory-import.js +105 -2
- package/dist/tools/ghidra-analyze.d.ts +22 -0
- package/dist/tools/ghidra-analyze.js +18 -3
- package/dist/tools/ghidra-health.d.ts +177 -0
- package/dist/tools/ghidra-health.js +32 -0
- package/dist/tools/ioc-export.d.ts +8 -8
- package/dist/tools/packer-detect.d.ts +10 -10
- package/dist/tools/packer-detect.js +6 -9
- package/dist/tools/pe-exports-extract.d.ts +8 -8
- package/dist/tools/pe-exports-extract.js +6 -9
- package/dist/tools/pe-fingerprint.d.ts +36 -36
- package/dist/tools/pe-imports-extract.d.ts +8 -8
- package/dist/tools/pe-imports-extract.js +6 -9
- package/dist/tools/pe-pdata-extract.d.ts +448 -0
- package/dist/tools/pe-pdata-extract.js +219 -0
- package/dist/tools/pe-symbols-recover.d.ts +227 -0
- package/dist/tools/pe-symbols-recover.js +316 -0
- package/dist/tools/report-generate.d.ts +6 -0
- package/dist/tools/report-generate.js +132 -15
- package/dist/tools/report-summarize.d.ts +2053 -62
- package/dist/tools/report-summarize.js +178 -8
- package/dist/tools/runtime-detect.d.ts +8 -8
- package/dist/tools/runtime-detect.js +2 -12
- package/dist/tools/rust-binary-analyze.d.ts +2047 -0
- package/dist/tools/rust-binary-analyze.js +443 -0
- package/dist/tools/sample-profile-get.d.ts +135 -16
- package/dist/tools/sample-profile-get.js +35 -32
- package/dist/tools/sandbox-execute.d.ts +8 -8
- package/dist/tools/strings-extract.d.ts +8 -8
- package/dist/tools/strings-extract.js +2 -12
- package/dist/tools/strings-floss-decode.d.ts +8 -8
- package/dist/tools/system-health.d.ts +172 -36
- package/dist/tools/system-health.js +19 -0
- package/dist/tools/system-setup-guide.d.ts +179 -0
- package/dist/tools/system-setup-guide.js +67 -0
- package/dist/tools/task-status.js +36 -4
- package/dist/tools/tool-help.js +171 -0
- package/dist/tools/yara-scan.d.ts +8 -8
- package/dist/types.d.ts +2 -0
- package/dist/workflows/deep-static.js +7 -0
- package/dist/workflows/function-explanation-review.d.ts +3312 -17
- package/dist/workflows/function-explanation-review.js +93 -0
- package/dist/workflows/function-index-recover.d.ts +333 -0
- package/dist/workflows/function-index-recover.js +291 -0
- package/dist/workflows/module-reconstruction-review.d.ts +3905 -0
- package/dist/workflows/module-reconstruction-review.js +367 -0
- package/dist/workflows/reconstruct.d.ts +2436 -211
- package/dist/workflows/reconstruct.js +529 -12
- package/dist/workflows/semantic-name-review.d.ts +1710 -22
- package/dist/workflows/semantic-name-review.js +55 -0
- package/dist/workflows/triage.d.ts +8 -8
- package/ghidra_scripts/DecompileFunction.java +487 -487
- package/ghidra_scripts/ExtractCFG.java +256 -256
- package/ghidra_scripts/ExtractFunctions.java +442 -442
- package/ghidra_scripts/README.md +112 -112
- package/ghidra_scripts/SearchFunctionReferences.java +380 -380
- package/helpers/DotNetMetadataProbe/DotNetMetadataProbe.csproj +9 -9
- package/helpers/DotNetMetadataProbe/Program.cs +566 -566
- package/install-to-claude.ps1 +432 -0
- package/install-to-codex.ps1 +256 -178
- package/install-to-copilot.ps1 +389 -303
- package/package.json +6 -2
- package/requirements.txt +9 -9
- package/workers/requirements-dynamic.txt +11 -11
- package/workers/requirements.txt +8 -8
- package/workers/speakeasy_compat.py +175 -175
- package/workers/static_worker.py +3474 -3474
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
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
|
+
## [0.1.4] - 2026-03-14
|
|
11
|
+
|
|
12
|
+
- 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
|
|
13
|
+
- Fixed bundled `ghidra_scripts` resolution so helper scripts are loaded from the installed package or repository root instead of the current working directory
|
|
14
|
+
- Added richer Ghidra diagnostics: persisted command/runtime logs, parsed Java exception summaries, normalized remediation hints, and stage progress callbacks for queued analysis
|
|
15
|
+
- 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`
|
|
16
|
+
- Added Java runtime detection and Java 21+ setup guidance across `ghidra.health`, `system.health`, `system.setup.guide`, and high-level workflows
|
|
17
|
+
- 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
|
|
18
|
+
- Stabilized unit coverage for Ghidra analysis failure handling, timeout reporting, Java fallback extraction, and degraded function-index recovery
|
|
19
|
+
|
|
20
|
+
## [0.1.3] - 2026-03-14
|
|
21
|
+
|
|
22
|
+
- Added DLL- and COM-oriented profiling with `dll.export.profile` and `com.role.profile`
|
|
23
|
+
- 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`
|
|
24
|
+
- Extended `workflow.reconstruct` with role-aware export strategy so DLL/COM/Rust preflight can influence module grouping and reconstruction priority
|
|
25
|
+
- Improved runtime memory ingestion with segment/module hints, region ownership, and richer runtime provenance
|
|
26
|
+
- Added structured setup guidance with `system.setup.guide` and surfaced install/input requirements from health checks and high-level workflows
|
|
27
|
+
- Refined README, installation docs, and release packaging for the `0.1.3` npm/GitHub release
|
|
28
|
+
|
|
29
|
+
## [0.1.2] - 2026-03-12
|
|
30
|
+
|
|
31
|
+
- Upgraded `workflow.reconstruct` with universal preflight orchestration, including binary role profiling, Rust-specific profiling, and optional automatic function-index recovery before export
|
|
32
|
+
- Aligned `workflow.semantic_name_review` and `workflow.function_explanation_review` with reconstruct refresh preflight, provenance, and selection diff semantics
|
|
33
|
+
- Added `.pdata`-driven PE recovery tooling: `pe.pdata.extract`, `code.functions.smart_recover`, `pe.symbols.recover`, and `code.functions.define`
|
|
34
|
+
- 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
|
|
35
|
+
- Hardened sample/original and Ghidra project fallback handling so analysis can continue when older workspaces are incomplete
|
|
36
|
+
- Stabilized runtime state defaults by moving workspace, database, cache, and audit paths to persistent user-level configuration roots
|
|
37
|
+
|
|
38
|
+
## [0.1.1] - 2026-03-11
|
|
39
|
+
|
|
40
|
+
- Added `binary.role.profile` for universal EXE/DLL/.NET/driver role profiling, export surface triage, and COM/service/plugin indicators
|
|
41
|
+
- Added quality scaffolding with benchmark corpus example and evaluation guidance for future regression baselines
|
|
42
|
+
- Added async job mode for `workflow.reconstruct`, `workflow.semantic_name_review`, and `workflow.function_explanation_review`
|
|
43
|
+
- Wired queued workflow execution into the background analysis task runner
|
|
44
|
+
- Integrated binary role profile output into `report.summarize` and `report.generate`
|
|
45
|
+
- Added report coverage for runtime/semantic provenance plus binary role context in generated markdown and JSON output
|
|
46
|
+
- Continued repository and packaging cleanup for public GitHub/npm release
|
|
47
|
+
|
|
48
|
+
## [0.1.0] - 2026-03-11
|
|
49
|
+
|
|
50
|
+
- Initial public packaging baseline
|
|
51
|
+
- MCP server with static PE analysis, Ghidra integration hooks, runtime evidence tools, and reconstruction workflows
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# Claude Installation
|
|
2
|
+
|
|
3
|
+
This repository can be installed into Claude Code as an MCP server in three
|
|
4
|
+
scopes:
|
|
5
|
+
|
|
6
|
+
- `local`: machine-local config for the current project, stored in
|
|
7
|
+
`~/.claude.json`
|
|
8
|
+
- `user`: machine-wide config for your user, stored in `~/.claude.json`
|
|
9
|
+
- `project`: project-scoped config written to `.mcp.json` in the repo root
|
|
10
|
+
|
|
11
|
+
On this Windows setup, writing the config file directly is more reliable than
|
|
12
|
+
shelling out to `claude mcp add`, so the install script uses the config-file
|
|
13
|
+
path directly and then verifies the result with `claude mcp get`.
|
|
14
|
+
|
|
15
|
+
## Prerequisites
|
|
16
|
+
|
|
17
|
+
- Claude Code CLI installed and available as `claude`
|
|
18
|
+
- Node.js available as `node`
|
|
19
|
+
- Project already built with `npm run build`
|
|
20
|
+
|
|
21
|
+
## Recommended Install
|
|
22
|
+
|
|
23
|
+
From the repository root:
|
|
24
|
+
|
|
25
|
+
```powershell
|
|
26
|
+
.\install-to-claude.ps1
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
The default scope is `user`, so this installs the server once for your account
|
|
30
|
+
and makes it available in all Claude Code projects on this machine.
|
|
31
|
+
|
|
32
|
+
The script also writes a stable `WORKSPACE_ROOT` by default:
|
|
33
|
+
|
|
34
|
+
- `%USERPROFILE%/.windows-exe-decompiler-mcp-server/workspaces`
|
|
35
|
+
|
|
36
|
+
It also pins:
|
|
37
|
+
|
|
38
|
+
- `DB_PATH`
|
|
39
|
+
- `CACHE_ROOT`
|
|
40
|
+
- `AUDIT_LOG_PATH`
|
|
41
|
+
- `GHIDRA_PROJECT_ROOT`
|
|
42
|
+
- `GHIDRA_LOG_ROOT`
|
|
43
|
+
|
|
44
|
+
The server's bundled `ghidra_scripts/` directory is resolved from the installed
|
|
45
|
+
package or repository root, not from the shell's current working directory. You
|
|
46
|
+
do not need to manually point Claude at `ExtractFunctions.py`.
|
|
47
|
+
|
|
48
|
+
For Ghidra 12.0.4, keep Java 21+ available. If Java is installed outside the
|
|
49
|
+
system default location, also set `JAVA_HOME`.
|
|
50
|
+
|
|
51
|
+
## Pass Ghidra Explicitly
|
|
52
|
+
|
|
53
|
+
```powershell
|
|
54
|
+
.\install-to-claude.ps1 -GhidraPath "C:\path\to\ghidra"
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
The script writes both `GHIDRA_PATH` and `GHIDRA_INSTALL_DIR`.
|
|
58
|
+
|
|
59
|
+
If you want to pin Ghidra project/log roots explicitly, set:
|
|
60
|
+
|
|
61
|
+
- `GHIDRA_PROJECT_ROOT`
|
|
62
|
+
- `GHIDRA_LOG_ROOT`
|
|
63
|
+
|
|
64
|
+
If you want a different persistent workspace root:
|
|
65
|
+
|
|
66
|
+
```powershell
|
|
67
|
+
.\install-to-claude.ps1 -WorkspaceRoot "D:\reverse-data\workspaces"
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Change Scope
|
|
71
|
+
|
|
72
|
+
Examples:
|
|
73
|
+
|
|
74
|
+
```powershell
|
|
75
|
+
.\install-to-claude.ps1 -Scope local
|
|
76
|
+
.\install-to-claude.ps1 -Scope user
|
|
77
|
+
.\install-to-claude.ps1 -Scope project
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
If you choose `project`, the script writes `.mcp.json` into the repository
|
|
81
|
+
root. If you choose `local` or `user`, the script updates `~/.claude.json`.
|
|
82
|
+
Use `local` only when you want this repo to override the global `user`
|
|
83
|
+
registration.
|
|
84
|
+
|
|
85
|
+
If both `user` and `local` registrations exist, Claude will show the `local`
|
|
86
|
+
scope while you are inside that repository, and the `user` scope everywhere
|
|
87
|
+
else.
|
|
88
|
+
|
|
89
|
+
## Manual Config Format
|
|
90
|
+
|
|
91
|
+
Claude Code recognizes the standard MCP config shape:
|
|
92
|
+
|
|
93
|
+
```json
|
|
94
|
+
{
|
|
95
|
+
"mcpServers": {
|
|
96
|
+
"windows-exe-decompiler": {
|
|
97
|
+
"command": "node",
|
|
98
|
+
"args": ["E:/Playground/Reverse/dist/index.js"],
|
|
99
|
+
"cwd": "E:/Playground/Reverse",
|
|
100
|
+
"env": {
|
|
101
|
+
"WORKSPACE_ROOT": "C:/Users/<you>/.windows-exe-decompiler-mcp-server/workspaces",
|
|
102
|
+
"GHIDRA_PATH": "C:/path/to/ghidra",
|
|
103
|
+
"GHIDRA_INSTALL_DIR": "C:/path/to/ghidra"
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
That same server object works in:
|
|
111
|
+
|
|
112
|
+
- repo-local `.mcp.json` for `project` scope
|
|
113
|
+
- top-level `mcpServers` in `~/.claude.json` for `user` scope
|
|
114
|
+
- `projects["E:/path/to/repo"].mcpServers` in `~/.claude.json` for `local`
|
|
115
|
+
scope
|
|
116
|
+
|
|
117
|
+
## Verify
|
|
118
|
+
|
|
119
|
+
```powershell
|
|
120
|
+
claude mcp list
|
|
121
|
+
claude mcp get windows-exe-decompiler
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
If you used `project` scope, `claude mcp get` should report `Scope: Project
|
|
125
|
+
config (shared via .mcp.json)`. If you used `local` or `user`, it should report
|
|
126
|
+
the corresponding Claude config scope from `~/.claude.json`.
|
|
127
|
+
|
|
128
|
+
## First-run setup guidance
|
|
129
|
+
|
|
130
|
+
If Claude can connect to the MCP server but reports missing Python packages,
|
|
131
|
+
dynamic-analysis extras, or Ghidra configuration, ask it to call:
|
|
132
|
+
|
|
133
|
+
- `system.setup.guide`
|
|
134
|
+
- `system.health`
|
|
135
|
+
- `ghidra.health`
|
|
136
|
+
|
|
137
|
+
These tools return structured `setup_actions` and `required_user_inputs`
|
|
138
|
+
instead of only failing with a generic error.
|
|
139
|
+
|
|
140
|
+
## References
|
|
141
|
+
|
|
142
|
+
- Claude Code MCP overview: https://docs.anthropic.com/en/docs/claude-code/mcp
|
|
143
|
+
- Claude Code MCP management and CLI behavior: https://docs.anthropic.com/en/docs/claude-code/mcp#manage-mcp-servers
|
package/CODEX_INSTALLATION.md
CHANGED
|
@@ -14,6 +14,25 @@ Then run the helper script from the repository root:
|
|
|
14
14
|
.\install-to-codex.ps1
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
+
By default, the script writes a stable `WORKSPACE_ROOT` under your user profile:
|
|
18
|
+
|
|
19
|
+
- `%USERPROFILE%/.windows-exe-decompiler-mcp-server/workspaces`
|
|
20
|
+
|
|
21
|
+
It also pins:
|
|
22
|
+
|
|
23
|
+
- `DB_PATH`
|
|
24
|
+
- `CACHE_ROOT`
|
|
25
|
+
- `AUDIT_LOG_PATH`
|
|
26
|
+
- `GHIDRA_PROJECT_ROOT`
|
|
27
|
+
- `GHIDRA_LOG_ROOT`
|
|
28
|
+
|
|
29
|
+
The server's bundled `ghidra_scripts/` directory is resolved from the installed
|
|
30
|
+
package or repository root, not from the shell's current working directory. You
|
|
31
|
+
do not need to manually configure a script path for `ExtractFunctions.py`.
|
|
32
|
+
|
|
33
|
+
For Ghidra 12.0.4, keep Java 21+ available. If Java is installed in a custom
|
|
34
|
+
location, set `JAVA_HOME` before starting Codex.
|
|
35
|
+
|
|
17
36
|
If Ghidra is not already configured through `GHIDRA_PATH` or
|
|
18
37
|
`GHIDRA_INSTALL_DIR`, pass it explicitly:
|
|
19
38
|
|
|
@@ -21,12 +40,21 @@ If Ghidra is not already configured through `GHIDRA_PATH` or
|
|
|
21
40
|
.\install-to-codex.ps1 -GhidraPath "C:\tools\ghidra"
|
|
22
41
|
```
|
|
23
42
|
|
|
43
|
+
If you want a different persistent workspace root:
|
|
44
|
+
|
|
45
|
+
```powershell
|
|
46
|
+
.\install-to-codex.ps1 -WorkspaceRoot "D:\reverse-data\workspaces"
|
|
47
|
+
```
|
|
48
|
+
|
|
24
49
|
## What the script does
|
|
25
50
|
|
|
26
51
|
- validates that `dist/index.js` exists
|
|
27
52
|
- registers the MCP server with Codex
|
|
28
53
|
- updates `~/.codex/config.toml`
|
|
54
|
+
- writes `WORKSPACE_ROOT` so workspaces do not depend on the current repo path
|
|
29
55
|
- writes `GHIDRA_PATH` and `GHIDRA_INSTALL_DIR` when a Ghidra path is provided
|
|
56
|
+
- honors `GHIDRA_PROJECT_ROOT` and `GHIDRA_LOG_ROOT` when you want Ghidra
|
|
57
|
+
projects and runtime logs under a fixed location
|
|
30
58
|
|
|
31
59
|
## Manual configuration example
|
|
32
60
|
|
|
@@ -41,7 +69,7 @@ cwd = "E:/path/to/repo"
|
|
|
41
69
|
startup_timeout_sec = 30
|
|
42
70
|
tool_timeout_sec = 300
|
|
43
71
|
enabled = true
|
|
44
|
-
env = { GHIDRA_PATH = "C:/tools/ghidra", GHIDRA_INSTALL_DIR = "C:/tools/ghidra" }
|
|
72
|
+
env = { WORKSPACE_ROOT = "C:/Users/<you>/.windows-exe-decompiler-mcp-server/workspaces", GHIDRA_PATH = "C:/tools/ghidra", GHIDRA_INSTALL_DIR = "C:/tools/ghidra" }
|
|
45
73
|
```
|
|
46
74
|
|
|
47
75
|
## Verify
|
|
@@ -58,6 +86,13 @@ Then ask Codex to call one of these tools:
|
|
|
58
86
|
- `sample.ingest`
|
|
59
87
|
- `workflow.triage`
|
|
60
88
|
|
|
89
|
+
If Codex reports missing Python packages, dynamic-analysis extras, or Ghidra
|
|
90
|
+
configuration, ask it to call:
|
|
91
|
+
|
|
92
|
+
- `system.setup.guide`
|
|
93
|
+
- `system.health`
|
|
94
|
+
- `ghidra.health`
|
|
95
|
+
|
|
61
96
|
## Troubleshooting
|
|
62
97
|
|
|
63
98
|
- `dist/index.js was not found`
|
package/COPILOT_INSTALLATION.md
CHANGED
|
@@ -6,6 +6,25 @@ This repository includes a helper script for local GitHub Copilot clients:
|
|
|
6
6
|
.\install-to-copilot.ps1
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
+
By default, the script writes a stable `WORKSPACE_ROOT` under your user profile:
|
|
10
|
+
|
|
11
|
+
- `%USERPROFILE%/.windows-exe-decompiler-mcp-server/workspaces`
|
|
12
|
+
|
|
13
|
+
It also pins:
|
|
14
|
+
|
|
15
|
+
- `DB_PATH`
|
|
16
|
+
- `CACHE_ROOT`
|
|
17
|
+
- `AUDIT_LOG_PATH`
|
|
18
|
+
- `GHIDRA_PROJECT_ROOT`
|
|
19
|
+
- `GHIDRA_LOG_ROOT`
|
|
20
|
+
|
|
21
|
+
The server's bundled `ghidra_scripts/` directory is resolved from the installed
|
|
22
|
+
package or repository root, not from the shell's current working directory. You
|
|
23
|
+
do not need to separately point Copilot at `ExtractFunctions.py`.
|
|
24
|
+
|
|
25
|
+
For Ghidra 12.0.4, keep Java 21+ available. If Java is installed outside the
|
|
26
|
+
default system location, set `JAVA_HOME` before launching Copilot clients.
|
|
27
|
+
|
|
9
28
|
Build the project first:
|
|
10
29
|
|
|
11
30
|
```powershell
|
|
@@ -18,6 +37,17 @@ If Ghidra is not already configured in the environment, pass it explicitly:
|
|
|
18
37
|
.\install-to-copilot.ps1 -GhidraPath "C:\tools\ghidra"
|
|
19
38
|
```
|
|
20
39
|
|
|
40
|
+
If you want to pin Ghidra projects and logs under a fixed location, set:
|
|
41
|
+
|
|
42
|
+
- `GHIDRA_PROJECT_ROOT`
|
|
43
|
+
- `GHIDRA_LOG_ROOT`
|
|
44
|
+
|
|
45
|
+
If you want a different persistent workspace root:
|
|
46
|
+
|
|
47
|
+
```powershell
|
|
48
|
+
.\install-to-copilot.ps1 -WorkspaceRoot "D:\reverse-data\workspaces"
|
|
49
|
+
```
|
|
50
|
+
|
|
21
51
|
## What the script updates
|
|
22
52
|
|
|
23
53
|
- workspace config: `.vscode/mcp.json`
|
|
@@ -60,12 +90,24 @@ or:
|
|
|
60
90
|
/mcp show windows-exe-decompiler
|
|
61
91
|
```
|
|
62
92
|
|
|
93
|
+
## First-run setup guidance
|
|
94
|
+
|
|
95
|
+
If Copilot can reach the MCP server but the server reports missing Python
|
|
96
|
+
packages, dynamic-analysis extras, or Ghidra configuration, ask Copilot to call:
|
|
97
|
+
|
|
98
|
+
- `system.setup.guide`
|
|
99
|
+
- `system.health`
|
|
100
|
+
- `ghidra.health`
|
|
101
|
+
|
|
102
|
+
These tools return structured setup actions and missing user inputs.
|
|
103
|
+
|
|
63
104
|
## References
|
|
64
105
|
|
|
65
106
|
- https://code.visualstudio.com/docs/copilot/customization/mcp-servers
|
|
66
107
|
- https://code.visualstudio.com/docs/copilot/reference/mcp-configuration
|
|
67
108
|
- https://docs.github.com/copilot/how-tos/copilot-cli/customize-copilot/add-mcp-servers
|
|
68
109
|
- https://docs.github.com/en/enterprise-cloud@latest/copilot/reference/cli-command-reference
|
|
110
|
+
- https://docs.github.com/en/copilot/how-tos/use-copilot-agents/coding-agent/extend-coding-agent-with-mcp
|
|
69
111
|
|
|
70
112
|
## Scope
|
|
71
113
|
|
|
@@ -74,4 +116,4 @@ These instructions are for local Copilot clients such as:
|
|
|
74
116
|
- VS Code with GitHub Copilot
|
|
75
117
|
- GitHub Copilot CLI
|
|
76
118
|
|
|
77
|
-
They do not configure GitHub.com hosted coding agents.
|
|
119
|
+
They do not configure GitHub.com hosted coding agents. For hosted coding-agent MCP setup, use the GitHub MCP coding-agent documentation linked above.
|
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|