上面这段代码公司前人留下来的祖传代码,嵌套了多层,如果通过反编译出来后,部分会被优化掉
不得不说,还是很厉害的,但是有时候,我们就想看看最原始的代码,现在我们用反编译试试
此时在程序集中选中我们自己的程序集点击右键,然后选择保存,把保存后的DLL覆盖现有的DLL即可
我们用ILSpy打开新的DLL,确认一下对应的值是否有修改到
今天有同事找我求助,想让我帮他改一些参数,但是这是参数都是用C#写在程序里面的,目前的源代码无法确定是否最新,所以不敢贸然编译替换线上的DLL,整个公司的同事都是做Java,对C#几乎不怎么了解
DotPeek和Reflector
公司生产上有一项业务,是基于C#和外部公司交互的,但是不是很稳定,经常因为超时问题导致业务异常,偶尔出现一次也还能接受,可是最近愈发频繁,客户已经无法容忍了,公司领导也是高度重视。外部公司的建议是把超时时间加长,由于项目比较老,代码管理混乱,现在也不知道目前的源代码是否和生产一致,涉及到钱的东西,也不敢冒险。所以就想着直接修改DLL。
C#的反编译工具很多,比如:、、等,这几款方便工具算是比较常用的,我用得比较多是,它的功能比较强大,还原度也比较高,可以直接将DLL导出为解决方案。
DotPeek
ILSpy
Reflector
DotPeek
![](http://dingyue.ws.126.net/2022/0310/4feae755j00r8ifbd0053c000pa00gkm.jpg)
![](http://dingyue.ws.126.net/2022/0310/d1263491j00r8ifbi004zc000rs00j0m.jpg)
但是在修改方面就显得有些力不从心了,再以前,我用过和,可是这货要花钱啊,当然,可以免费用15天.另外,还会优化代码,来演示一把
DotPeek
DLL
Reflector
reflexil
Reflector
Reflector
![](http://dingyue.ws.126.net/2022/0310/77b23137j00r8ifbc001pc000po00j5m.jpg)
if-else
Reflector
if-else
![](http://dingyue.ws.126.net/2022/0310/2b2642d8j00r8ifbh0018c000jt00dgm.jpg)
Reflector
DotPeek
![](http://dingyue.ws.126.net/2022/0310/c14b4df2j00r8ifbc0014c000ss00d0m.jpg)
这效果还是挺不错的,在多年前,我还是很喜欢用和来改一些C#的DLL,后来也就慢慢喜欢用开源免费的东西了。所以接下来就要介绍和的组合了
Reflector
reflexil
ILSpy
reflexil
ILSpy+reflexil修改C# DLL
ILSpy和reflexil都是开源的,在上都能够找到,这里我分别下载的是ILSpy_binaries_7.1.0.6543.zip和reflexil.for.ILSpy.2.7.AIO.bin.zip,ILSpy的安装非常简单,直接解压后双击即可使用,我们来看看反编译的效果
Github
ILSpy.exe
![](http://dingyue.ws.126.net/2022/0310/58ab6435j00r8ifbf0010c000rm00c5m.jpg)
现在,我们进入今天的主题,修改DLL,此时需要安装插件,这非常简单,直接解压,将解压后的直接复制到的解压根目录,然后重启即可,此时,会多出一个小图标
reflexil
reflexil.for.ILSpy.2.7.AIO.bin.zip
Reflexil.ILSpy.Plugin.dll
ILSpy
ILSpy
ILSpy
![](http://dingyue.ws.126.net/2022/0310/b1271395p00r8ifbc0003c0009l001pm.png)
一切准备就绪了,我们开始干活了,其实,今天的目的很简单,就是要把1000毫秒改为120000毫秒
![](http://dingyue.ws.126.net/2022/0310/cd19a3f3p00r8ifbc0006c00082003pm.png)
先通过找到该类,然后点击多少设置图标按钮,下方就会出现面板
ILSpy
reflexil
![](http://dingyue.ws.126.net/2022/0310/b9bedae7j00r8ifbd003yc000xh00pjm.jpg)
找到要修改的值,然后->就会弹出编辑框,此时,输入想要修改的值后,点击按钮
右键
Edit
Update
![](http://dingyue.ws.126.net/2022/0310/04a15d59j00r8ifbc000uc000jp005pm.jpg)
![](http://dingyue.ws.126.net/2022/0310/7c83e98bj00r8ifbc000lc000fc004vm.jpg)
Save As
![](http://dingyue.ws.126.net/2022/0310/73db6d21j00r8ifbc000yc0009500fwm.jpg)
![](http://dingyue.ws.126.net/2022/0310/525f2459p00r8ifbh000bc000ob003tm.png)
![](http://dingyue.ws.126.net/2022/0310/8bd117a3j00r8ifbj002qc000pm00lem.jpg)
其实这次提到的场景非常简单,一般情况下我们也只会做这些修改,当然的功能不仅仅是修改一个属性值,更多功能就需要大伙们去解锁了。
reflexil
热门跟贴