想不想对.net语言编写的EXE或DLL文件进行反编译处理?现在好用的NET程序反编译工具屈指可数,其中dnspy算是比较好用的一款了。dnspy是一款免费开源的NET程序反编译工具,有了它您只需点点鼠标即可轻松对net程序进行反编译了。
界面预览图:
dnSpy 是一个免费开源的.NET程序调试器与.NET汇编编辑器,有了dnSpy 就算您没有任何可用的源代码,也可以使用它来编辑与调试程序集。
有时您可能唯有软件,但是无程序代码。这个时候软件的继续开发与调试与问题排查就成了问题,dnspy可以解决以上问题,它是反编译工具,用于调试没有源码的.net程序。说白了就是说开发人员可以使用dnSpy 反编译.NET代码,了解.NET程序是怎么工作的,分析依赖关系、检测混淆等。
dnSpy对Unity3D游戏Dll文件反编译非常实用,它的优势在于,它可以在完全没有源码的情况下即时调试程序,甚至还可以修改程序,dnSpy 比ilspy与.NET Reflector更好用。可以将.NET开发的Exe与Dll程序反编译为C#代码,同时支持断点调试与代码二次编辑,如果您唯有编译后的程序集,在没有源码的情况想还原C#源码,dnSpy绝对是首选。
功能:
=========调试器=========
支持.NET Framework、.NET与Unity游戏程序集,不需要源代码
设置断点并单步执行任何程序集
当地人,手表,汽车窗户
变量窗口支持保存变量(例如,解密字节数组)到磁盘或查看他们在十六进制编辑器(内存窗口)
对象id
可以同时调试多个进程
模块加载时断开
跟踪点与条件断点
导出/导入断点与跟踪点
调用堆栈、线程、模块、进程窗口
在抛出异常时中断(第一次机会)
变量窗口支持计算C# / Visual Basic表达式
动态模块可以被调试(但动态方法不能被调试,这是于编译器的限制)
输出窗口记录多种调试事件,默认情况下显示时间戳:)
可以调试在运行时自行解密的程序集,dnSpy将使用内存中的映像。您还可以强制dnSpy一直使用内存中的映像而不是磁盘文件。
公共API,您可以编写扩展或使用C#交互窗口来控制调试器
=========编辑器=========
所有元数据都能编辑
使用IntelliSense在C#或Visual Basic中编辑方法与类,不需要源代码
在C#或Visual Basic中添加新方法、类或成员
用于低级别IL方法体编辑的IL编辑器
可以编辑低级元数据表。这在内部使用十六进制编辑器。
=========十六进制编辑器=========
点击反编译代码中的地址,在十六进制编辑器中转到其IL代码
与上面相反,在十六进制编辑器中的IL主体中按F12以转到反编译代码或位的其他高级表示。找出补丁修改了哪个语句是很不错的。
突出显示.NET元数据结构与PE结构
工具提示显示有关所选.NET元数据/ PE字段的详细信息
进入位置,文件,RVA
转到.NET元数据标记、方法体、#Blob / #Strings / #US堆偏移量或#Blob堆索引
跟随参考(Ctrl+F12)
=========其他=========
BAML反编译器
蓝色、浅色与深色主题(与深色高对比度主题)
书签
C#交互式窗口可用于编写dnSpy脚本
在程序集中搜索类、方法、字符串等
分析类与方法的使用情况,查找调用者等
多个选项卡与选项卡组
引用被突出显示,使用Tab / Shift+Tab移动到下一个引用
转到入口点与模块初始化器命令
转到元数据标记或元数据行命令
代码工具提示(C#与Visual Basic)
导出到项目
特点:
1、反编译代码
将已编译的 .NET 程序集(IL 中间语言)转换回可读的 C# 或 VB.NET 代码。
支持查看类、方法、属性、资源文件等程序结构。
2、动态调试
允许设置断点、单步执行、查看变量值等,类似 Visual Studio 的调试体验。
可调试第三方库或没有源代码的应用程序。
3、代码修改与重新编译
直接编辑反编译后的代码(C#),实时修改程序逻辑。
修改后重新编译为新的程序集文件(EXE/DLL),实现程序行为变更。
4、资源编辑
查看与提取内嵌的资源文件(下图可供参考片、字符串、配置文件等)。
修改资源内容并重新打包到程序集中。
dnspy反编译net程序教程:
=========反编译=========
运行软件,依次点击文件-打开-找到对应的DLL/exe文件就OK了。或者直接将dll/exe文件直接拖动过来也可以。
=========修改代码=========
在代码处,右键点击----编译方法。会弹出一个窗口,小伙伴们可以在上面进行修改。
注意:选择编辑类也可以的,但是为了免除不需要要的麻烦,选择编辑方法。意思是编辑当前方法,开销最小。
=========导出编译=========
修改完,点击下面的编译就可以。如果没有生成DLL文件,依次点击文件-保存模块,会弹出一个窗口。
可以选择另一个路径,默认是覆盖,随后点击确定,则一个新的dll就生成了。
=========调试=========
dnspy的调试方法与vs类似,打断点,选择.exe可执行文件。
点击F5,开始调试
下面的调试信息可以看到实际的值
注意事项:
dnspy软件分32位与64位,两个版本,压缩包中同时进行了打包,请根据需要选择使用,绿色版本不需要安装,找到dnSpy.exe双击即可启动。
运行本.net反编译、反汇编软件,需要你电脑上安装使用.NET Core,,如果dnSpy.exe无法启动,请尝试:
安装VC依赖项:https://support.microsoft.com/help/2977003/the-latest-supported-visual-c-downloads
Windows 7:必须安装KB2999226与KB2533623
小编总结:
总体来讲,dnSpy 是一个非常棒的开源.NET 程序反编译与调试工具,也是诸多.NET 开发者、安全研究人员与逆向工程师的实用工具。主要可用于分析、修改与调试基于.NET Framework或.NET Core编译的应用程序(如EXE、DLL文件)。现在官方dnSpy已停止更新,可考虑社区维护的分支(如 dnSpyEx,支持 .NET 6+)。dnSpyEx:https://github.com/dnSpyEx/dnSpy