dnSpy 命令行反编译 C# DLL(实测可用)
目录结构:
dnSpy.exe—— GUI 版,手动使用dnSpy.Console.exe—— CLI 入口,但直接执行会崩溃:入口Main中Console.OutputEncoding = Encoding.UTF8抛System.IO.IOException: 句柄无效(当前终端不是真实控制台)bin\—— 自包含 net5.0 运行时 +dnSpy.Console.dllout\—— 预留输出目录
可用调用方式(用 dotnet 宿主并允许运行时前滚):
$env:DOTNET_ROLL_FORWARD='LatestMajor'
dotnet "D:\my2024\dnspy\bin\dnSpy.Console.dll" -o "<输出目录>" "<目标.dll>"
参数要点:
-o <目录>是输出目录(不是文件),会生成solution.sln+.csproj+ 反编译出的.cs源码工程- 位置参数可传 dll、目录或通配符,支持多个;
-r递归子目录 -t <类型名>只反编译指定类型到标准输出;--md 0x0600xxxx按元数据标记反编译成员-l切换语言:C# / Visual Basic / IL;--asm-path指定依赖搜索路径;--no-color关闭高亮
实测结论:dnSpy.Console.dll、dnSpy.Decompiler.dll 均反编译成功,退出码 0,类型与成员签名还原正常。
另:本机已装 ilspycmd,但运行即触发 CET 断言(AreCetShadowStacksEnabled)崩溃,暂不可用,优先使用上述 dnSpy 方式。
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/caimouse/article/details/170348354



