ILSpy借助reflexil修改C# DLL(assembly-csharp.dll修改)

createh52个月前 (02-01)技术教程19

今天有同事找我求助,想让我帮他改一些参数,但是这是参数都是用C#写在程序里面的,目前的源代码无法确定是否最新,所以不敢贸然编译替换线上的DLL,整个公司的同事都是做Java,对C#几乎不怎么了解

DotPeek和Reflector

公司生产上有一项业务,是基于C#和外部公司交互的,但是不是很稳定,经常因为超时问题导致业务异常,偶尔出现一次也还能接受,可是最近愈发频繁,客户已经无法容忍了,公司领导也是高度重视。外部公司的建议是把超时时间加长,由于项目比较老,代码管理混乱,现在也不知道目前的源代码是否和生产一致,涉及到钱的东西,也不敢冒险。所以就想着直接修改DLL。

C#的反编译工具很多,比如:DotPeekILSpyReflector等,这几款方便工具算是比较常用的,我用得比较多是DotPeek,它的功能比较强大,还原度也比较高,可以直接将DLL导出为解决方案。


但是DotPeek在修改DLL方面就显得有些力不从心了,再以前,我用过Reflectorreflexil,可是Reflector这货要花钱啊,当然,可以免费用15天.另外,Reflector还会优化代码,来演示一把


上面这段代码公司前人留下来的祖传代码,嵌套了多层
if-else,如果通过Reflector反编译出来后,部分if-else会被优化掉


不得不说,
Reflector还是很厉害的,但是有时候,我们就想看看最原始的代码,现在我们用DotPeek反编译试试

这效果还是挺不错的,在多年前,我还是很喜欢用Reflectorreflexil来改一些C#的DLL,后来也就慢慢喜欢用开源免费的东西了。所以接下来就要介绍ILSpyreflexil的组合了

ILSpy+reflexil修改C# DLL

ILSpy和reflexil都是开源的,在Github上都能够找到,这里我分别下载的是
ILSpy_binaries_7.1.0.6543.zip和
reflexil.for.ILSpy.2.7.AIO.bin.zip,ILSpy的安装非常简单,直接解压后双击
ILSpy.exe即可使用,我们来看看反编译的效果

现在,我们进入今天的主题,修改DLL,此时需要安装reflexil插件,这非常简单,直接解压
reflexil.for.ILSpy.2.7.AIO.bin.zip
,将解压后的Reflexil.ILSpy.Plugin.dll直接复制到ILSpy的解压根目录,然后重启ILSpy即可,此时,ILSpy会多出一个小图标

一切准备就绪了,我们开始干活了,其实,今天的目的很简单,就是要把1000毫秒改为120000毫秒

先通过ILSpy找到该类,然后点击多少设置图标按钮,下方就会出现reflexil面板

找到要修改的值,然后右键->Edit就会弹出编辑框,此时,输入想要修改的值后,点击Update按钮



此时在程序集中选中我们自己的程序集点击右键,然后选择
Save As保存,把保存后的DLL覆盖现有的DLL即可



最后我们用ILSpy打开新的DLL,确认一下对应的值是否有修改到

其实这次提到的场景非常简单,一般情况下我们也只会做这些修改,当然reflexil的功能不仅仅是修改一个属性值,更多功能就需要大伙们去解锁了。

相关文章

这几个开源的Java、Apk反编译工具,你可曾用过

Java开发神器IDEA,有自带class反编译功能,而且调试也非常方便。那么,除了IDEA可以反编译之外,还有其它的反编译工具吗?这里就分享几个Github中开源的反编译工具。jadxJadx可以将...

达内java培训专家:7款开源Java反编译工具

反编译听起来是一个非常高上大的技术词汇,通俗的说,反编译是一个对目标可执行程序进行逆向分析,从而得到原始代码的过程。达内java培训(java.tedu.cn)专家今天要来分享一些关于Java的反编译...

Java反编译工具 JD-GUI安装使用(jdgui反编译jar)

我们知道,将源代码转换成二进制执行代码的过程叫“编译”,那么反编译就是将二进制执行代码转换成源代码。在java开发里,源代码是.java文件,然后经过编译后生成计算机识别的.class文件,但是.cl...

记一次噩梦般的经历--论学会反编译的重要性

最近在做一个android项目,因为非开源,github上也没购有私有库,所以就没有提交github管理。昨天我感觉写到了一定程度,一个小的版本已经出来了,于是就想U盘和网盘都备份一下。结果出现了下面...

初试安卓软件反编译破解软件的方法

出于对反编译的好奇心,今天特意测试了一下安卓软件的反编译,好吧,废话少说,直奔主题。首先下载软件,apk编辑器。像这样。不是旁边那个编译器。第二步,安装。这个都会。第三步,直接打开。看下图在这里,你可...

年年势头强劲,Java不死,尔等永远是太子

小编插一句(php是世界上最好的语言)不服来战。TIOBE 编程社区指数是编程语言流行度的指标,该榜单每月更新一次,指数基于全球技术工程师、课程和第三方供应商的数量。包括流行的搜索引擎,如谷歌、必应、...