candor2013 发表于 2021-6-10 17:39

破解.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即可。







hanicegoby 发表于 2022-1-11 16:24

为什么不直接NOP掉呢,多简单。

yasenhacker 发表于 2021-6-21 16:46

兄弟,你用的是网上流传的破解版 reactor6.5加密的还是 reactor 6.5 demo版本???,如果是你用破解版加密的然后出来这个提示,应该就是伪破解reactor.   注册版reactor混淆就不会提示这个

First丶云心 发表于 2021-6-10 17:53

Me祝 发表于 2021-6-10 18:50


谢谢分享,学习学习!

tek2y 发表于 2021-6-10 21:00

牛逼,膜拜大佬

hackgsl 发表于 2021-6-10 21:23

学习到了

流星之忆 发表于 2021-6-10 22:01

感谢分享

十一不是一 发表于 2021-6-10 22:11

感谢分享

deTrident 发表于 2021-6-10 23:10

第一遍没看懂 后面才知道是干啥用的

hpx19880528 发表于 2021-6-10 23:24

感谢分享,学习学习

夜泉 发表于 2021-6-10 23:47

其实直接全局搜索 2021 就跳到那儿了,然后直接把 Exception 那行 Nop 掉或者按照你的方式把 14 改成 -1 就行了
页: [1] 2 3
查看完整版本: 破解.net reactor6.5生成dll日期限制