This assembly is protected by an unregistered version of Eziriz's ".NET Reactor"

2022-02-16  乐帮网

破解 net reactor

使用.NET Reactor官网提供的试用版加密了我的程序,但是使用一段时间后发现报错了,内容如下:
This assembly is protected by an unregistered version of Eziriz's ".NET Reactor"! This assembly won't further work"
产生这个的原因是我们使用了试用版的软件来加的密,默认加密出来的有效期是14天,需要我们注册软件后才能自定义设置有效期。
如果需要破解这个日期限制可以参考:https://www.52pojie.cn/thread-1456894-1-1.html

 

使用工具:dnSpy

相关IL命令说明:
Blt:第一个值小于第二个值
Ble:第一个值小于第二个值(小于等于)
Bgt:第一个值大于第二个值(大于等于)
Bge:第一个值大于第二个值
ret:从当前方法返回

原因分析:.net reactor在每一个类被初始化的时候都执行检查当前日期的操作。如果当前日期相对特定日期超过14天则抛出异常。

解决思路:修改对应比较函数

解决样例:
一、定位到类初始化位置。我的dll初始化的第一句话就调用了判定方法。

class

二、进入该方法,可以看到类似代码:

while (Math.Abs(timeSpan.Days) >= 14)
            {
                if (DiwBNSJ4WOEUbrmHCQ.upmJokbFi0ox1rE71uQ())
                {
                    goto IL_6E;
                }
            }
            return;
            IL_6E:
            throw new Exception(I8Q7vdWUDoVO4Ds8RS.NtgSYQbhd4(1110));

大概意思是日期的绝对值大于14,goto IL_6E,执行抛出。否则return。
那么我们将这个大于14改成小于-1即可(任何数的绝对值都不可能小于0.自然不会执行后面的判断)

三、修改IL指令
首先找到关键数字14

code

第一个数(一个绝对值)小于14,执行ret(返回当前方法)
那么我们让它大于-1,则可以永远执行ret。
即:修改14为-1,修改blt为bge

003

点击确定,查看外面的代码已经修改好了。

005

四、保存dll,再次调用该dll即可。

公众号二维码

关注我的微信公众号
在公众号里留言交流
投稿邮箱:1052839972@qq.com

庭院深深深几许?杨柳堆烟,帘幕无重数。
玉勒雕鞍游冶处,楼高不见章台路。
雨横风狂三月暮。门掩黄昏,无计留春住。
泪眼问花花不语,乱红飞过秋千去。

欧阳修

付款二维码

如果感觉对您有帮助
欢迎向作者提供捐赠
这将是创作的最大动力