破解.net reactor6.5生成dll日期限制
起因:混淆的dll突然无法使用,提示"This assembly is protected by an unregistered version of Eziriz's ".NET Reactor"! This assembly won't further work"使用工具:dnSpy
相关IL命令说明:
Blt:第一个值小于第二个值
Ble:第一个值小于第二个值(小于等于)
Bgt:第一个值大于第二个值(大于等于)
Bge:第一个值大于第二个值
ret:从当前方法返回
原因分析:.net reactor在每一个类被初始化的时候都执行检查当前日期的操作。如果当前日期相对特定日期超过14天则抛出异常。
解决思路:修改对应比较函数
解决样例:
一、定位到类初始化位置。我的dll初始化的第一句话就调用了判定方法。
二、进入该方法,可以看到类似代码:
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
第一个数(一个绝对值)小于14,执行ret(返回当前方法)
那么我们让它大于-1,则可以永远执行ret。
即:修改14为-1,修改blt为bge
点击确定,查看外面的代码已经修改好了。
四、保存dll,再次调用该dll即可。
为什么不直接NOP掉呢,多简单。 兄弟,你用的是网上流传的破解版 reactor6.5加密的还是 reactor 6.5 demo版本???,如果是你用破解版加密的然后出来这个提示,应该就是伪破解reactor. 注册版reactor混淆就不会提示这个
谢谢分享,学习学习! 牛逼,膜拜大佬 学习到了 感谢分享 感谢分享 第一遍没看懂 后面才知道是干啥用的 感谢分享,学习学习 其实直接全局搜索 2021 就跳到那儿了,然后直接把 Exception 那行 Nop 掉或者按照你的方式把 14 改成 -1 就行了