Token导航 LogoToken导航TokenDH.com
Dn Spy MCP logo
开发工具未说明官方级别未说明来源级核验

Dn Spy MCP

MCP Server

dnSpy-MCP是一个基于ICSharpCode.Decompiler的静态.NET程序集分析工具,提供反编译、IL反汇编、元数据检查和保护分析功能,通过MCP协议暴露为工具,且不执行目标程序集。

工具数

23

提示词数

0

GitHub Stars

11

资源数

0
静态分析C#ClaudeClaude DesktopClaudeCursor

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

notgate

提供方

notgate

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

dnSpy MCP

用于静态的模型上下文协议服务器。NET程序集分析,由ICSharpCode提供支持。解压器(dnSpyEx引擎)。通过stdio将反编译、IL反汇编、元数据检查和保护分析作为MCP工具公开。从不执行目标程序集。

需求

  • .NET 8 SDK或更高版本
  • 兼容的MCP客户端(Claude Desktop、Cursor或任何支持MCP stdio传输的客户端)

安装

git clone https://github.com/ZeraTS/dnSpy-MCP.git
cd dnSpy-MCP
dotnet build src/DnSpyMcp/DnSpyMcp.csproj -c Release

Claude桌面配置

增添 claude_desktop_config.json:

{
  "mcpServers": {
    "dnspy-mcp": {
      "command": "dotnet",
      "args": ["/path/to/src/DnSpyMcp/bin/Release/net8.0/DnSpyMcp.dll"]
    }
  }
}

工具

工具说明关键参数
get_pe_info获取PE/COFF头信息、程序集元数据和目标框架assemblyPath
get_resources列出程序集中嵌入的所有清单资源assemblyPath
resolve_token解析元数据令牌(十六进制,例如。 0x02000001)对其定义assemblyPath, tokenHex
list_pinvokes列出程序集中的所有P/Invoke(DllImport)声明assemblyPath
find_attributes查找用特定属性装饰的所有类型和方法assemblyPath, attributeName
get_methods_for_type获取特定类型上定义的所有方法assemblyPath, typeName
decompile_assembly将整个程序集解压缩为C#源代码assemblyPath
decompile_type将特定类型解压缩为C#源代码assemblyPath, typeName
decompile_method将特定方法分解为C#源代码assemblyPath, typeName, methodName
dump_il倾倒IL(CIL)拆卸整个组件、类型或特定方法assemblyPath, typeName?, methodName?
inspect_type检查类型的结构:字段、方法、属性、接口,可选地使用源代码assemblyPath, typeName, includeSource?
inspect_method检查特定方法:签名、参数、反编译源代码,可选ILassemblyPath, typeName, methodName, includeSource?, includeIL?
list_types列出程序集中的所有类型定义assemblyPath
find_methods在程序集中查找方法,可选择按名称模式筛选assemblyPath, pattern?
search_strings在程序集的反编译源代码中搜索字符串文字assemblyPath, pattern, useRegex?
search_members按名称模式搜索类型、方法、字段和属性assemblyPath, pattern
set_breakpoint在特定IL偏移处的方法上设置虚拟断点assemblyPath, typeName, methodName, ilOffset
list_breakpoints列出所有活动虚拟断点
inspect_breakpoint在断点偏移处显示IL,推断堆栈类型,并找到该方法的所有调用者id
clear_breakpoints删除所有虚拟断点或按id删除特定断点id?
detect_anti_debug静态分析,检测7个类别的反调试技术assemblyPath
detect_anti_tamper用于检测混淆和防篡改保护的静态分析assemblyPath
get_protection_report将防调试和防篡改分析汇总到一份报告中,其中包含风险评分(0-10)和绕过建议assemblyPath

保护分析

detect_anti_debug, detect_anti_tamper,以及 get_protection_report 仅执行静态分析。目标程序集从不作为加载。NET类型,从不JIT编译,也从不执行。分析使用ICSharpCode。仅提供反编译器的类型系统和PE阅读器。

反调试检测类别

  • 针对已知反调试API(IsDebuggerPresent、NtQueryInformationProcess等)的P/Invoke声明
  • 托管API使用情况(System.Diagnostics.Debugger.IsAttached等)
  • 基于时间的检查(秒表、GetTickCount、QueryPerformanceCounter模式)
  • 线程隐藏(带ThreadHideFromDebugger的NtSetInformationThread)
  • TLS回调存在(在主入口点之前执行)
  • 硬件断点检测(CONTEXT Dr0-Dr3读取)
  • 基于异常的反调试模式

防篡改检测类别

  • 模糊器指纹识别(ConfusedEx、Dotfuscator、Eazfuscator、.NET Reactor、SmartAssembly、KoiVM等10+)
  • 名称混淆启发式(控制字符、零宽度字符、饱和度)
  • 字符串加密存根(cctor数组初始化模式,int到字符串解密方法签名)
  • 控制流混淆(切换代理,高goto密度)
  • 完整性检查(自哈希、自身程序集上的File.ReadAllBytes、哈希比较后的终止)
  • VM/虚拟化(大型交换机调度程序、加密IL存根)
  • 包装(PE部分名称:UPX、MPRESS、.vmp0、Themida等)

风险评分

get_protection_report 计算风险评分(0-10):

  • 高严重性/置信度发现:+1.5分
  • 中等:+0.75分
  • 低点:+0.25点
  • 上限为10

项目结构

src/DnSpyMcp/
├── Program.cs
├── Core/
│   ├── AssemblyCache.cs        Thread-safe decompiler cache (keyed by path + mtime)
│   └── BreakpointRegistry.cs  In-memory virtual breakpoint store
├── Models/
│   └── Results.cs              All result record types
└── Tools/
    ├── Analysis/
    │   ├── AnalysisTools.cs    PE info, resources, token resolution, P/Invokes, attributes
    │   ├── BreakpointTools.cs  Virtual breakpoints: set, list, inspect, clear
    │   ├── DecompileTools.cs   C# decompilation, IL disassembly
    │   ├── InspectTools.cs     Type and method inspection
    │   └── SearchTools.cs      Type/method/member/string search
    └── Security/
        ├── AntiDebugTools.cs         Anti-debug pattern detection
        ├── AntiTamperTools.cs        Obfuscation and anti-tamper detection
        └── ProtectionReportTools.cs  Aggregated protection report

已知问题

Analysis of heavily obfuscated assemblies may produce false positives in name obfuscation heuristics

名称混淆检测器用单字母名称或编译器生成的名称(包含 ``).标准。NET编译器生成的类型(lambda闭包、异步状态机)将导致混淆名称比率。阈值设置为30%以减少噪声,但大量使用泛型或LINQ的程序集仍可能触发它。

String encryption detection requires obfuscated method names

字符串解密方法检测器仅在方法名称本身被混淆(包含控制字符或是单个字母)时才会触发。如果保护程序为其字符串解密例程使用可读的方法名,则此检查将无法检测到它们。cctor数组初始化模式不受影响。

Assembly resolver errors on assemblies with missing dependencies

ICSharpCode。反编译器尝试从与目标相同的目录中解析引用的程序集。如果缺少依赖项,受影响方法的反编译将退回到部分输出或跳过。PE级操作(get_pe_info, get_resources, resolve_token, list_pinvokes)不受影响。 ThrowOnAssemblyResolveErrors 默认设置为false以抑制解析器错误。

P/Invoke entry point detection is limited to DllImportAttribute

list_pinvokes 防调试P/Invoke扫描程序仅检测用 [DllImport].使用动态P/Invoke模式 NativeLibrary.Load + GetExport, GetProcAddress 通过 Marshal,或手动构建的委托函数指针将不会被检测到。

学分

轻松检测(DIE)

保护检测逻辑 Tools/Security/ 直接从所使用的检测方法中提取 轻松检测 由霍西克。

DIE的核心见解——保护器指纹识别应该对原始二进制字节模式、PE段元数据和元数据字符串堆搜索进行操作,而不是对源代码进行反编译——是该项目亚毫秒检测性能的基础。几个混淆器签名(ConfusedEx、Eazuscator、KoiVM、.NET Reactor、VMProtect、Dotfuscator、MPRESS、Themida等)是从DIE的PE签名脚本改编而来的 db/PE/.DIE由horsicq和贡献者维护,并在MIT许可下可用。

反调试研究

反调试检测类别和API覆盖范围由以下内容通知:

目录标签

目录标签

静态分析C#Claude本地部署反编译元数据检查保护分析开发工具

支持客户端

Claude DesktopClaudeCursor

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

token

工具数量(toolCount,工具数)

23

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明token部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP