dnSpy 强大的.NET 反编译软件

2018 年 12 月 20 日 DotNet

(给DotNet加星标,提升.Net技能


转自:.NET西安社区

cnblogs.com/xiandnc/p/10132491.html


说起.NET的反编译软件,大家首先想到的就是Reflector,ILSpy,dotPeek等等。而dnSpy同样是一款优秀的反编译软件,同时它是开源免费的。


官方的描述是: dnSpy是一个调试器和.NET组件编辑器。 即使您没有任何可用的源代码,也可以使用它来编辑和调试程序集。



这个是官方的图片,可以看出和VS的风格还是很像的,使用起来也有很多相似的地方,善于用VS的人,可以很快的上手这个软件。当然除了这个深色的主题以外,还有浅色主题可以切换。


dnSpy使用ILSpy反编译器引擎和Roslyn(C#/ Visual Basic)编译器以及许多其他开源库,可以编译.Net Framework, .Net Core和Unity游戏部件,不需要源码。


今天将给大家演示一下,dnSpy强大的调试和编辑应用程序的功能。


一、Debug外部引用的Dll文件


首先准备一个简单的程序,期待的结果是输入人数得到促销后的总价,界面如下:



看一下程序,其实就是简单的取得输入的人数,然后调用第三方类库的方法,得到结果:




这里的Calculator.GetAmountByPromotion方法是_3rdCalculator的第三方类库提供的,我们无法直接确定其内部实现。


输入一下测试数据:



再输入一下新的测试数据:



会发现很难推测出内部的逻辑。这个时候就可以进行debug了。


打开dnSpy.exe。这个时候请注意,由于这个项目用的是.net core并且是publish的,所以可以直接用dnSpy直接打开publish目录下的要debug的dll文件。



在需要的地方打上断点,然后使用attach的快捷键Ctrl+Alt+P,在弹出的列表里选择



再点击页面的提交按钮触发事件:



这个时候可以看到结果显示在下面Locals的窗口里面。


需要注意的是,如果是不需要publish的,而是直接把整个代码放在IIS下,然后每次编译就是一次发布的情况,不要直接使用代码下面的bin目录里的dll文件,因为IIS会把build出来的dll文件,动态生成一份出来,存到类似于\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\c8367e31\abdb5fb1\assembly\dl3下面的目录里,这个时候要先搜索到你想debug的方法在哪个dll文件里,然后搜索到这个文件位置,再用dnSpy打开它,dnSpy会自动加载和这个dll有关联的所有dll文件,然后启动网站,这个再附加到w3p.exe上就可以了。


二、调试应用程序


1、调试应用程序


还是以上一个例子为例,这次生成一个exe的文件。


代码如下



运行,窗口如下:



打开dnSpy,找到exe文件的位置,打开要调试的dll文件:



在需要的地方打上断点,点击上面的Start开始调试:



弹出的窗口设置保持默认就可以,程序执行,输入人数后,进入断点,就可以正常调试了:


注意,一般dnSpy会把相关的dll都自动加入进来,但是如果是不在一个地方,工具检测不到的,但是有依赖的,必须手动加入进来。


三、修改exe文件的内容


dnSpy编辑dll文件的功能很方便,不用其他插件或者辅助,就可以进行修改。


例如上面的例子,我想把计算逻辑增加超过10个人的时候,优惠更高,那么我可以直接修改dll里面的方法。


首先找到要修改的方法,然后在方法上点击右键:


在弹出的新窗口上直接修改方法:



编辑结束后,点击下面的Compile. 然后点击保存所有。继续点OK。



这个时候点击exe文件,输入人数,会发现比10个人的时候还要便宜了很多,就是代码生效了:



以上就是比较常用的功能,当然dnSpy还有很多贴心和有用的功能,有待大家去发现。


官方地址:https://github.com/0xd4d/dnSpy


推荐阅读

(点击标题可跳转阅读)

ASP.NET Core Web API 和 Vue.js 搭建前后端分离项目

ASP.NET Core 利用文件监视进行快速测试开发

基于.NET Core 微服务的另类实现


看完本文有收获?请转发分享给更多人

关注「DotNet」加星标,提升.Net技能 

登录查看更多
1

相关内容

【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
60+阅读 · 2020年6月26日
【新书册】贝叶斯神经网络,41页pdf
专知会员服务
179+阅读 · 2020年6月3日
Python导论,476页pdf,现代Python计算
专知会员服务
264+阅读 · 2020年5月17日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
122+阅读 · 2020年5月10日
深度神经网络实时物联网图像处理,241页pdf
专知会员服务
78+阅读 · 2020年3月15日
【论文】欺骗学习(Learning by Cheating)
专知会员服务
28+阅读 · 2020年1月3日
用 Python 开发 Excel 宏脚本的神器
私募工场
26+阅读 · 2019年9月8日
AWVS12 V12.0.190530102 windows正式版完美破解版
黑白之道
29+阅读 · 2019年8月24日
ISeeYou一款强大的社工工具
黑白之道
32+阅读 · 2019年5月17日
使用 C# 和 Blazor 进行全栈开发
DotNet
6+阅读 · 2019年4月15日
C# 10分钟完成百度人脸识别
DotNet
3+阅读 · 2019年2月17日
WebAssembly在QQ邮箱中的一次实践
IMWeb前端社区
13+阅读 · 2018年12月19日
Python3.8新特性概览
Python程序员
4+阅读 · 2018年12月8日
.NET Core 环境下构建强大且易用的规则引擎
Python3.7中一种懒加载的方式
Python程序员
3+阅读 · 2018年4月27日
Arxiv
102+阅读 · 2020年3月4日
Factor Graph Attention
Arxiv
6+阅读 · 2019年4月11日
A Comprehensive Survey on Graph Neural Networks
Arxiv
13+阅读 · 2019年3月10日
Arxiv
53+阅读 · 2018年12月11日
Feature Selection Library (MATLAB Toolbox)
Arxiv
7+阅读 · 2018年8月6日
Arxiv
9+阅读 · 2018年5月7日
Arxiv
8+阅读 · 2018年3月17日
VIP会员
相关VIP内容
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
60+阅读 · 2020年6月26日
【新书册】贝叶斯神经网络,41页pdf
专知会员服务
179+阅读 · 2020年6月3日
Python导论,476页pdf,现代Python计算
专知会员服务
264+阅读 · 2020年5月17日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
122+阅读 · 2020年5月10日
深度神经网络实时物联网图像处理,241页pdf
专知会员服务
78+阅读 · 2020年3月15日
【论文】欺骗学习(Learning by Cheating)
专知会员服务
28+阅读 · 2020年1月3日
相关资讯
用 Python 开发 Excel 宏脚本的神器
私募工场
26+阅读 · 2019年9月8日
AWVS12 V12.0.190530102 windows正式版完美破解版
黑白之道
29+阅读 · 2019年8月24日
ISeeYou一款强大的社工工具
黑白之道
32+阅读 · 2019年5月17日
使用 C# 和 Blazor 进行全栈开发
DotNet
6+阅读 · 2019年4月15日
C# 10分钟完成百度人脸识别
DotNet
3+阅读 · 2019年2月17日
WebAssembly在QQ邮箱中的一次实践
IMWeb前端社区
13+阅读 · 2018年12月19日
Python3.8新特性概览
Python程序员
4+阅读 · 2018年12月8日
.NET Core 环境下构建强大且易用的规则引擎
Python3.7中一种懒加载的方式
Python程序员
3+阅读 · 2018年4月27日
相关论文
Arxiv
102+阅读 · 2020年3月4日
Factor Graph Attention
Arxiv
6+阅读 · 2019年4月11日
A Comprehensive Survey on Graph Neural Networks
Arxiv
13+阅读 · 2019年3月10日
Arxiv
53+阅读 · 2018年12月11日
Feature Selection Library (MATLAB Toolbox)
Arxiv
7+阅读 · 2018年8月6日
Arxiv
9+阅读 · 2018年5月7日
Arxiv
8+阅读 · 2018年3月17日
Top
微信扫码咨询专知VIP会员