一说起.net的反编译软件,大家首先想到的就是Reflector,ILSpy,dotPeek等等。而dnSpy同样是一款优秀的反编译软件,同时它是开源免费的。官方的描述是: dnSpy是一个调试器和.NET组件编辑器。 即使您没有任何可用的源代码,也可以使用它来编辑和调试程序集。

这个是官方的图片,可以看出和VS的风格还是很像的,使用起来也有很多相似的地方,善于用VS的人,可以很快的上手这个软件。当然除了这个深色的主题以外,还有浅色主题可以切换。
dnSpy使用ILSpy反编译器引擎和Roslyn(C#/ Visual Basic)编译器以及许多其他开源库,可以编译.Net Framework, .Net Core和Unity游戏部件,不需要源码。今天将给大家演示一下,dnSpy强大的调试和编辑应用程序的功能。

1. 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上就可以了。

2. 调试应用程序

  1. 调试应用程序
    还是以上一个例子为例,这次生成一个exe的文件。
    代码如下

    运行,窗口如下:

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

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

    弹出的窗口设置保持默认就可以,程序执行,输入人数后,进入断点,就可以正常调试了:
    [此处输入图片的描述][13]
    注意,一般dnSpy会把相关的dll都自动加入进来,但是如果是不在一个地方,工具检测不到的,但是有依赖的,必须手动加入进来。

    3. 修改exe文件的内容

    dnSpy编辑dll文件的功能很方便,不用其他插件或者辅助,就可以进行修改。例如上面的例子,我想把计算逻辑增加超过10个人的时候,优惠更高,那么我可以直接修改dll里面的方法。
    首先找到要修改的方法,然后在方法上点击右键:
    [此处输入图片的描述][14]
    在弹出的新窗口上直接修改方法:

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

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

    以上就是比较常用的功能,当然dnSpy还有很多贴心和有用的功能,有待大家去发现。附上官方地址,请大家自己去挖掘了。谢谢大家。

原文地址: https://www.cnblogs.com/xiandnc/p/10132491.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

dnSpy 强大的.Net反编译软件相关推荐

  1. 小程序反编译 g is not defined_身边程序用的IDA Pro for Mac(静态反编译软件)

    ida pro mac版专为Mac用户设计,目前最优秀的静态反编译软件之一,这款mac安全工具它不仅可以应用在反编译和动态调试等强大的逆向工程领域,还支持对多种处理器不同类型的可执行模块进行反汇编处理 ...

  2. 反编译软件dnSpy中修改baml文件

    问题: 使用wpf的visifiref插件,但是会有水印和文本显示,想修改界面去掉文本 you are using the trial version 步骤1: 用反编译软件打开dl文件 步骤2: 搜 ...

  3. java decompiler 3.11_Java反编译软件(DJ Java Decompiler)下载 v3.11.11.95官方版-第五资源...

    DJ Java Decompiler是一款十分实用的Java反编译软件,该软件可以将编译过的CLASS文件编译还原成为Java原始文件,并且不需要额外安装JVM(Java Virtual Machin ...

  4. 最新.NET反编译软件Red Gate .NET Reflector V10.1.3.1218

    最新.NET反编译软件Red Gate .NET Reflector V10.1.3.1218 软件是一个可以将以.NET Framework为基础开发出来的的DLL或EXE文件,反编译为原始程序的工 ...

  5. Window7 安装开源swf反编译软件JPEXS Free Flash Decompiler(FFdec)实录

    FFdec是一个免费开源的swf反编译软件,在Windows,Linux,Mac上都能用,比那个硕思闪客精灵厚道多了,功能也不比它差,我以后就用FFdec了. 官网地址如下: http://www.f ...

  6. java反编器中文版,java反编译软件下载

    java反编译软件是一款专为软件编码制作的反编工具,能够享有便捷的编写界面模式,享有最清晰的运行操作窗口,实现自动检测以及安全提示功能,能够实现便捷的操作方式,运行使用方便,操作简单,欢迎到当易网下载 ...

  7. java 反编译软件

    1.小颖反编译软件. 最新的Java反编译工具,支持目录级的反编译,也支持双击.class文件就可查看源文件. 2.『XJad』简要介绍 =============================== ...

  8. 如何保护swf文件不被反编译软件破解?

    How to protect SWFs from decompilers? 如何保护swf文件不被反编译软件破解? [ April 24, 2004 ] by Eric Lin 原作:EricLin ...

  9. java反编译软件_安卓强大的逆向软件,媲美MT管理器!

    手机上目前功能最强大的反编译工具是MT管理器,为手机用户提供了强大的逆向功能. 包括APK签名,优化,共存以及dex反编译等功能 虽然功能强大,但是目前很多功能都要收费,一百多的价格对一般用户来说,确 ...

最新文章

  1. 身为 Java 程序员必须掌握的 10 款开源工具!
  2. 张一鸣宣布卸任字节CEO!网友:完不成OKR被优化了!
  3. 你要的人工智能答案,在这里!
  4. php根据IP地址跳转对应的城市,淘宝REST api调用地址直接使用
  5. 使用 header 头下载文件
  6. nginx下虚拟目录配置301域名重定向
  7. IE9 新功能 五大新特点
  8. 电话号码正则表达式 (包含电话号码 和 手机号码)
  9. 三层交换机配置DHCP的解决方案
  10. pytorch如何增加维度_Pytorch中的LSTM:如何添加/更改序列长度维度?-问答-阿里云开发者社区-阿里云...
  11. javascript焦点图自动播放
  12. 幸运抽奖游戏系统带后台源码
  13. 微博视频下载去水印 视频消重
  14. c语言矩阵连乘递归算法,动态规划求解矩阵连乘问题
  15. 中兴服务器默认用户名密码是什么,中兴路由器登录地址默认用户名密码
  16. PS压缩图片至指定大小(500K,20K等)
  17. golang中的并发竞争态
  18. 计算机二级c语言预测,计算机二级C语言考前预测上机试题及解析
  19. 动态规划----最长子序列
  20. time_t c语言 2038,什么是2038问题?

热门文章

  1. 计算机网络udp实验时间戳请求报文与应答报文的表格填写,自考计算机网络管理历年(2007.1-2013.1)试题及答案(标有页码)...
  2. zookeeper和etcd有状态服务部署
  3. Spring下载地址
  4. 怎样用原生js配合css的transition写个无缝滚动
  5. Swoole入门指南:PHP7安装Swoole详细教程(一)
  6. 加速你的Hibernate引擎(上)
  7. Restive.js – 轻松让网站变成响应式和自适应
  8. 可能会紧急用到的Linux命令
  9. iPhone Development Blog系列: 如何制作服务条例窗口
  10. Delphi 与 DirectX 之 DelphiX(46): TDIB.DoAntiAlias;