docs: update documentation for v0.4.0 features
- Add dump_package tool documentation to README and API.md - Document generate_pdb and use_pdb_variable_names parameters - Update tool count from 14 to 15 in API.md - Add DumpPackageRequest/Response models to API.md - Add v0.4.0 and v0.3.0 entries to CHANGELOG - Renumber API.md tools to accommodate new dump_package tool
This commit is contained in:
parent
8776c9cf74
commit
ad72b013ca
23
CHANGELOG.md
23
CHANGELOG.md
@ -5,6 +5,29 @@ All notable changes to mcilspy will be documented in this file.
|
|||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
||||||
and this project adheres to [Calendar Versioning](https://calver.org/) for major releases.
|
and this project adheres to [Calendar Versioning](https://calver.org/) for major releases.
|
||||||
|
|
||||||
|
## [0.4.0] - 2026-02-11
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- **PDB Generation** (`generate_pdb` flag) - Generate portable PDB files from decompiled assemblies for IDE debugging
|
||||||
|
- **PDB Variable Names** (`use_pdb_variable_names` flag) - Use original variable names from existing PDB files for improved readability
|
||||||
|
- **`dump_package` tool** - Extract all assemblies from NuGet package folder structures for bulk analysis
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- `decompile_assembly` now exposes all ilspycmd CLI options - mcilspy has 100% feature coverage
|
||||||
|
- Updated documentation with new tool and parameter descriptions
|
||||||
|
- Tool count increased from 14 to 15
|
||||||
|
|
||||||
|
## [0.3.0] - 2026-02-10
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- **Type parsing regex** - Fixed `list_types` returning empty results (regex expected "Class:" but ilspycmd outputs "Class ")
|
||||||
|
- **UserStringHeap data access** - Fixed Python name mangling issue in `search_strings` causing crash
|
||||||
|
- **Decompile stdout mode** - Added `_decompile_to_stdout()` method for simple decompilation without output directory
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- Merged comprehensive code review fixes from parallel taskmaster branches (security, architecture, performance, testing)
|
||||||
|
- All 165 tests passing
|
||||||
|
|
||||||
## [0.2.0] - 2026-02-07
|
## [0.2.0] - 2026-02-07
|
||||||
|
|
||||||
### Security
|
### Security
|
||||||
|
|||||||
32
README.md
32
README.md
@ -78,10 +78,10 @@ Learn from decompiled implementations when documentation falls short.
|
|||||||
|
|
||||||
| Tool | What It Does | Requires ilspycmd? |
|
| Tool | What It Does | Requires ilspycmd? |
|
||||||
|------|--------------|:------------------:|
|
|------|--------------|:------------------:|
|
||||||
| `decompile_assembly` | Full C# source recovery | Yes |
|
| `decompile_assembly` | Full C# source recovery (with PDB generation) | Yes |
|
||||||
| `list_types` | Enumerate classes, interfaces, enums | Yes |
|
| `list_types` | Enumerate classes, interfaces, enums | Yes |
|
||||||
| `search_types` | Find types by name pattern | Yes |
|
| `search_types` | Find types by name pattern | Yes |
|
||||||
| `search_strings` | Find hardcoded strings (URLs, keys) | Yes |
|
| `search_strings` | Find hardcoded strings (URLs, keys) | No |
|
||||||
| `search_methods` | Find methods by name | No |
|
| `search_methods` | Find methods by name | No |
|
||||||
| `search_fields` | Find fields and constants | No |
|
| `search_fields` | Find fields and constants | No |
|
||||||
| `search_properties` | Find properties by name | No |
|
| `search_properties` | Find properties by name | No |
|
||||||
@ -89,11 +89,12 @@ Learn from decompiled implementations when documentation falls short.
|
|||||||
| `list_resources` | Find embedded files/images | No |
|
| `list_resources` | Find embedded files/images | No |
|
||||||
| `get_metadata_summary` | Assembly stats and references | No |
|
| `get_metadata_summary` | Assembly stats and references | No |
|
||||||
| `generate_diagrammer` | Interactive HTML type diagrams | Yes |
|
| `generate_diagrammer` | Interactive HTML type diagrams | Yes |
|
||||||
|
| `dump_package` | Extract assemblies from NuGet packages | Yes |
|
||||||
| `get_assembly_info` | Version, framework, signing info | Yes |
|
| `get_assembly_info` | Version, framework, signing info | Yes |
|
||||||
| `check_ilspy_installation` | Diagnose setup issues | No |
|
| `check_ilspy_installation` | Diagnose setup issues | No |
|
||||||
| `install_ilspy` | Auto-install .NET SDK + ilspycmd | No |
|
| `install_ilspy` | Auto-install .NET SDK + ilspycmd | No |
|
||||||
|
|
||||||
**6 tools work immediately** (via [dnfile](https://github.com/malwarefrank/dnfile)) — no .NET SDK required.
|
**7 tools work immediately** (via [dnfile](https://github.com/malwarefrank/dnfile)) — no .NET SDK required.
|
||||||
**8 more tools** unlock with `ilspycmd` for full decompilation power.
|
**8 more tools** unlock with `ilspycmd` for full decompilation power.
|
||||||
|
|
||||||
---
|
---
|
||||||
@ -164,11 +165,14 @@ The primary reverse-engineering tool. Decompiles .NET assemblies to readable C#.
|
|||||||
| `create_project` | No | Generate compilable .csproj structure |
|
| `create_project` | No | Generate compilable .csproj structure |
|
||||||
| `language_version` | No | C# version (default: Latest) |
|
| `language_version` | No | C# version (default: Latest) |
|
||||||
| `show_il_code` | No | Output IL bytecode instead of C# |
|
| `show_il_code` | No | Output IL bytecode instead of C# |
|
||||||
|
| `generate_pdb` | No | Generate portable PDB for debugging (requires `output_dir`) |
|
||||||
|
| `use_pdb_variable_names` | No | Use original variable names from existing PDB |
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"assembly_path": "/path/to/MyApp.dll",
|
"assembly_path": "/path/to/MyApp.dll",
|
||||||
"type_name": "MyApp.Services.AuthService"
|
"type_name": "MyApp.Services.AuthService",
|
||||||
|
"use_pdb_variable_names": true
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
</details>
|
</details>
|
||||||
@ -246,6 +250,26 @@ Generates an HTML visualization of type hierarchies and relationships.
|
|||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><strong>dump_package</strong> — Extract assemblies from NuGet packages</summary>
|
||||||
|
|
||||||
|
Extracts all assemblies from a NuGet package folder structure into a flat directory for bulk analysis.
|
||||||
|
|
||||||
|
| Parameter | Required | Description |
|
||||||
|
|-----------|:--------:|-------------|
|
||||||
|
| `assembly_path` | Yes | Path to assembly or NuGet package folder |
|
||||||
|
| `output_dir` | Yes | Directory to dump assemblies into |
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"assembly_path": "/path/to/packages/Newtonsoft.Json",
|
||||||
|
"output_dir": "./extracted-assemblies"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Useful for analyzing package dependencies or bulk decompilation of NuGet packages.
|
||||||
|
</details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary><strong>get_assembly_info</strong> — Get assembly metadata</summary>
|
<summary><strong>get_assembly_info</strong> — Get assembly metadata</summary>
|
||||||
|
|
||||||
|
|||||||
72
docs/API.md
72
docs/API.md
@ -4,7 +4,7 @@ This document provides detailed API documentation for mcilspy.
|
|||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
|
|
||||||
mcilspy provides a Model Context Protocol (MCP) interface to the ILSpy .NET decompiler. It exposes **14 tools** and two prompts for interacting with .NET assemblies.
|
mcilspy provides a Model Context Protocol (MCP) interface to the ILSpy .NET decompiler. It exposes **15 tools** and two prompts for interacting with .NET assemblies.
|
||||||
|
|
||||||
### Tool Categories
|
### Tool Categories
|
||||||
|
|
||||||
@ -44,6 +44,8 @@ Decompiles a .NET assembly to C# source code. This is the primary tool for rever
|
|||||||
| `remove_dead_stores` | boolean | ✗ | false | Remove unused variable assignments |
|
| `remove_dead_stores` | boolean | ✗ | false | Remove unused variable assignments |
|
||||||
| `show_il_sequence_points` | boolean | ✗ | false | Include debugging sequence points in IL output |
|
| `show_il_sequence_points` | boolean | ✗ | false | Include debugging sequence points in IL output |
|
||||||
| `nested_directories` | boolean | ✗ | false | Use nested directories for namespaces |
|
| `nested_directories` | boolean | ✗ | false | Use nested directories for namespaces |
|
||||||
|
| `generate_pdb` | boolean | ✗ | false | Generate portable PDB file (requires `output_dir`) |
|
||||||
|
| `use_pdb_variable_names` | boolean | ✗ | false | Use original variable names from existing PDB |
|
||||||
|
|
||||||
**Language Versions:**
|
**Language Versions:**
|
||||||
- `CSharp1` through `CSharp12_0`
|
- `CSharp1` through `CSharp12_0`
|
||||||
@ -206,9 +208,39 @@ Generates an interactive HTML diagram showing assembly type relationships.
|
|||||||
**Response:**
|
**Response:**
|
||||||
Returns success status and output directory path. The HTML file can be opened in a web browser to view the interactive diagram.
|
Returns success status and output directory path. The HTML file can be opened in a web browser to view the interactive diagram.
|
||||||
|
|
||||||
### 6. get_assembly_info
|
### 6. dump_package
|
||||||
|
|
||||||
Gets metadata and version information about a .NET assembly.
|
Dump package assemblies into a folder. Extracts all assemblies from a NuGet package folder structure into a flat directory for easier analysis.
|
||||||
|
|
||||||
|
**Parameters:**
|
||||||
|
|
||||||
|
| Parameter | Type | Required | Default | Description |
|
||||||
|
|-----------|------|----------|---------|-------------|
|
||||||
|
| `assembly_path` | string | ✓ | - | Path to the assembly or NuGet package folder to extract from |
|
||||||
|
| `output_dir` | string | ✓ | - | Directory to dump assemblies into (will be created if needed) |
|
||||||
|
|
||||||
|
**Use Cases:**
|
||||||
|
- Bulk decompilation of NuGet packages
|
||||||
|
- Analyzing package dependencies
|
||||||
|
- Extracting DLLs from complex package structures
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"name": "dump_package",
|
||||||
|
"arguments": {
|
||||||
|
"assembly_path": "/path/to/packages/Newtonsoft.Json.13.0.1",
|
||||||
|
"output_dir": "./extracted-assemblies"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Response:**
|
||||||
|
Returns a summary including output directory path and list of extracted assemblies.
|
||||||
|
|
||||||
|
### 7. get_assembly_info
|
||||||
|
|
||||||
|
Gets metadata and version information about a .NET assembly. Uses ilspycmd to extract detailed assembly attributes.
|
||||||
|
|
||||||
**Parameters:**
|
**Parameters:**
|
||||||
|
|
||||||
@ -241,7 +273,7 @@ Returns assembly metadata including:
|
|||||||
|
|
||||||
These tools use [dnfile](https://github.com/malwarefrank/dnfile) for direct PE/metadata parsing. They do **not require ilspycmd** to be installed.
|
These tools use [dnfile](https://github.com/malwarefrank/dnfile) for direct PE/metadata parsing. They do **not require ilspycmd** to be installed.
|
||||||
|
|
||||||
### 7. search_methods
|
### 8. search_methods
|
||||||
|
|
||||||
Search for methods in an assembly by name pattern. Uses direct metadata parsing of the MethodDef table.
|
Search for methods in an assembly by name pattern. Uses direct metadata parsing of the MethodDef table.
|
||||||
|
|
||||||
@ -278,7 +310,7 @@ Search for methods in an assembly by name pattern. Uses direct metadata parsing
|
|||||||
**Response:**
|
**Response:**
|
||||||
Returns matching methods grouped by declaring type, showing visibility modifiers (public, static, virtual, abstract).
|
Returns matching methods grouped by declaring type, showing visibility modifiers (public, static, virtual, abstract).
|
||||||
|
|
||||||
### 8. search_fields
|
### 9. search_fields
|
||||||
|
|
||||||
Search for fields and constants in an assembly. Uses direct metadata parsing of the Field table.
|
Search for fields and constants in an assembly. Uses direct metadata parsing of the Field table.
|
||||||
|
|
||||||
@ -312,7 +344,7 @@ Search for fields and constants in an assembly. Uses direct metadata parsing of
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### 9. search_properties
|
### 10. search_properties
|
||||||
|
|
||||||
Search for properties in an assembly by name pattern. Uses direct metadata parsing of the Property table.
|
Search for properties in an assembly by name pattern. Uses direct metadata parsing of the Property table.
|
||||||
|
|
||||||
@ -332,7 +364,7 @@ Search for properties in an assembly by name pattern. Uses direct metadata parsi
|
|||||||
- Locate data model fields
|
- Locate data model fields
|
||||||
- Discover API response/request properties
|
- Discover API response/request properties
|
||||||
|
|
||||||
### 10. list_events
|
### 11. list_events
|
||||||
|
|
||||||
List all events defined in an assembly. Uses direct metadata parsing of the Event table.
|
List all events defined in an assembly. Uses direct metadata parsing of the Event table.
|
||||||
|
|
||||||
@ -349,7 +381,7 @@ List all events defined in an assembly. Uses direct metadata parsing of the Even
|
|||||||
- Discover observer patterns
|
- Discover observer patterns
|
||||||
- Analyze UI event handlers
|
- Analyze UI event handlers
|
||||||
|
|
||||||
### 11. list_resources
|
### 12. list_resources
|
||||||
|
|
||||||
List all embedded resources in an assembly. Uses direct metadata parsing of the ManifestResource table.
|
List all embedded resources in an assembly. Uses direct metadata parsing of the ManifestResource table.
|
||||||
|
|
||||||
@ -364,7 +396,7 @@ List all embedded resources in an assembly. Uses direct metadata parsing of the
|
|||||||
- Discover localization resources
|
- Discover localization resources
|
||||||
- Locate embedded assemblies
|
- Locate embedded assemblies
|
||||||
|
|
||||||
### 12. get_metadata_summary
|
### 13. get_metadata_summary
|
||||||
|
|
||||||
Get a comprehensive metadata summary with accurate statistics. Uses dnfile for direct metadata counts.
|
Get a comprehensive metadata summary with accurate statistics. Uses dnfile for direct metadata counts.
|
||||||
|
|
||||||
@ -395,7 +427,7 @@ Returns comprehensive assembly information including:
|
|||||||
|
|
||||||
These tools help manage ilspycmd installation and diagnose issues.
|
These tools help manage ilspycmd installation and diagnose issues.
|
||||||
|
|
||||||
### 13. check_ilspy_installation
|
### 14. check_ilspy_installation
|
||||||
|
|
||||||
Check if ilspycmd and dotnet CLI are installed and working. Use this to diagnose issues with decompilation tools.
|
Check if ilspycmd and dotnet CLI are installed and working. Use this to diagnose issues with decompilation tools.
|
||||||
|
|
||||||
@ -415,7 +447,7 @@ Returns installation status including:
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### 14. install_ilspy
|
### 15. install_ilspy
|
||||||
|
|
||||||
Install or update ilspycmd, the ILSpy command-line decompiler. Automatically detects your platform and package manager to provide optimal installation instructions.
|
Install or update ilspycmd, the ILSpy command-line decompiler. Automatically detects your platform and package manager to provide optimal installation instructions.
|
||||||
|
|
||||||
@ -549,6 +581,24 @@ class DecompileRequest(BaseModel):
|
|||||||
remove_dead_stores: bool = False
|
remove_dead_stores: bool = False
|
||||||
show_il_sequence_points: bool = False
|
show_il_sequence_points: bool = False
|
||||||
nested_directories: bool = False
|
nested_directories: bool = False
|
||||||
|
generate_pdb: bool = False # Generate portable PDB file
|
||||||
|
use_pdb_variable_names: bool = False # Use variable names from existing PDB
|
||||||
|
```
|
||||||
|
|
||||||
|
### DumpPackageRequest
|
||||||
|
```python
|
||||||
|
class DumpPackageRequest(BaseModel):
|
||||||
|
assembly_path: str # Path to assembly or NuGet package folder
|
||||||
|
output_dir: str # Required: directory to dump assemblies into
|
||||||
|
```
|
||||||
|
|
||||||
|
### DumpPackageResponse
|
||||||
|
```python
|
||||||
|
class DumpPackageResponse(BaseModel):
|
||||||
|
success: bool
|
||||||
|
output_path: str | None = None
|
||||||
|
assemblies_dumped: list[str] = []
|
||||||
|
error_message: str | None = None
|
||||||
```
|
```
|
||||||
|
|
||||||
### TypeInfo
|
### TypeInfo
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user