.Net反编译软件

https://www.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强大的调试和编辑应用程序的功能。

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

  1. 调试应用程序
    调试应用程序
    还是以上一个例子为例,这次生成一个exe的文件。
    代码如下
    此处输入图片的描述
    运行,窗口如下:
    此处输入图片的描述
    打开dnSpy,找到exe文件的位置,打开要调试的dll文件:
    此处输入图片的描述
    在需要的地方打上断点,点击上面的Start开始调试:
    此处输入图片的描述
    弹出的窗口设置保持默认就可以,程序执行,输入人数后,进入断点,就可以正常调试了:
    [此处输入图片的描述][13]
    注意,一般dnSpy会把相关的dll都自动加入进来,但是如果是不在一个地方,工具检测不到的,但是有依赖的,必须手动加入进来。

  2. 修改exe文件的内容
    dnSpy编辑dll文件的功能很方便,不用其他插件或者辅助,就可以进行修改。例如上面的例子,我想把计算逻辑增加超过10个人的时候,优惠更高,那么我可以直接修改dll里面的方法。
    首先找到要修改的方法,然后在方法上点击右键:
    [此处输入图片的描述][14]
    在弹出的新窗口上直接修改方法:
    此处输入图片的描述
    编辑结束后,点击下面的Compile. 然后点击保存所有。继续点OK。
    此处输入图片的描述
    这个时候点击exe文件,输入人数,会发现比10个人的时候还要便宜了很多,就是代码生效了:
    此处输入图片的描述
    以上就是比较常用的功能,当然dnSpy还有很多贴心和有用的功能,有待大家去发现。附上官方地址,请大家自己去挖掘了。谢谢大家。

.Net反编译软件的更多相关文章

  1. dnSpy 强大的.Net反编译软件

    作者:D.泡沫 一说起.net的反编译软件,大家首先想到的就是Reflector,ILSpy,dotPeek等等.而dnSpy同样是一款优秀的反编译软件,同时它是开源免费的.官方的描述是: dnSpy ...

  2. ILSpy反编译软件的使用

    早期.Net平台下的反编译软件一般用reflector,但自从其商业化后就没有使用了,现在主要用ILSpy查看dll的源码,其开源.免费的特点很快就流行开来,功能和性能丝毫不逊于reflector   ...

  3. (转)dnSpy 强大的.Net反编译软件

    目录 1. Debug外部引用的Dll文件2. 调试应用程序3. 修改exe文件的内容 作者:D.泡沫 一说起.net的反编译软件,大家首先想到的就是Reflector,ILSpy,dotPeek等等 ...

  4. 破解C#反编译软件Reflector 11.1.0.2167(最新版)(附补丁下载)

    本文为原创作品,转载请注明出处,作者:Chris.xisaer E-mail:69920579@qq.com QQ群3244694 补丁下载地址:https://download.csdn.net/d ...

  5. 推荐一款C#反编译软件(开源)

    大二的时候老师要求做过一个小项目,大概4个人左右一组.当时交流不是特别到位,项目在一个同学的电脑上建成了就一直在他的电脑上(所以好东西不要烂在你的硬盘里),也不知道什么源码管理,可悲到项目做完我还没有 ...

  6. 专注于C#.Net WPF软件开发-软件反编译-软件破解-逆向-靖芯科技-包括安卓APK反编译

    靖芯科技提供.Net软件开发,软件修改定制二次开发,软件破解,反编译,逆向等各项优质服务: 包括安卓APK软件反编译. 包括但不限于C#,WPF,Surface,Winform,Asp.net.JAV ...

  7. java反编译软件

    1.Java反编译插件 —— Jadclipse JadClipse是Jad的Eclipse插件,是一款非常实用而且方便地Java反编译插件,我们只需将下载的插件包复制到eclipse的plugins ...

  8. 反编译软件jad

    http://blog.csdn.net/small____fish/article/details/7687261 这是原网址,挺全的. 官网上下载jad,再把jad.exe 复制到javahome ...

  9. linux在下面APK反编译软件和过程的描述

    需要的工具: 1.apktool apk打包工具 下载地址:http://android-apktool.googlecode.com/files/apktool1.5.2.tar.bz2 安装:直接 ...

随机推荐

  1. ansible-role写法

    一.role目录的创建: cd /etc/ansible/ mkdir -pv roles/{websrvs,dbsrvs}/{tasks,files,templates,meta,handlers, ...

  2. 【转】同一个SQL查询语句,为什么使用到的索引不同?

    问: 同一个SQL查询语句,只是修改where条件中的一个值,为什么使用到的索引情况也会不同?谢谢! 1) explain执行结果,如下图: 2) 表中的数据如下图: 3) 表结构如下图: 4) 创建 ...

  3. windows下安装ElasticSearch 5

    ElasticSearch简介 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用 ...

  4. ROS教程0 环境配置

    1安装环境配置(桌面进入命令行) echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc source ~/.bas ...

  5. [转]Qt状态栏(statusbar)的使用

    状态栏显示的信息分3种 1. 一般信息,用QLabel 代表 2. 永久信息,文本会一直显示在状态栏的最右边. 3. 临时信息,指定信息现实的时间.时间到即信息消失 QLabel *locationL ...

  6. 利用 ProtoThreads实现Arduino多线程处理(2)

    转载请注明:@小五义http://www.cnblogs.com/xiaowuyiQQ群:64770604 感谢小V分享给大家的博文. 我在做产品设计的课题的时候,小五义推荐我使用Protothrea ...

  7. Linux命令——head/tail

    一.head head主要是用来显示档案的开头至标准输出中,默认打印相应文件的开头10 行. 1)命令格式 head [参数] [文件] 2)常用参数 -q     隐藏文件名-v     显示文件名 ...

  8. 4-(基础入门篇)学会刷Wi-Fi模块固件(刷AT指令固件)

    http://www.cnblogs.com/yangfengwu/p/8965054.html 基础教程源码链接如果失效,请在淘宝介绍中下载,由于链接很容易失效,如果失效请联系卖家,谢谢 https ...

  9. 使用Quartz实现定时任务

    一:Quertz的用途 Quertz是一个开源的作业任务调度框架,他可以完成像JavaScript定时器类式的功能,其实Java中Timer也可实现部分功能,但相比Quertz还是略逊一筹,本人这次需 ...

  10. SPOJ1557 GSS2 Can you answer these queries II 历史最值线段树

    传送门 题意:给出一个长度为$N$的数列,$Q$次询问,每一次询问$[l,r]$之间的最大子段和,相同的数只计算一次.所有数字的绝对值$\leq 10^5$ GSS系列中不板子的大火题,单独拿出来写 ...