wwh1004 发表于 2018-7-7 11:19

爆破.NET Reactor v5.0

本帖最后由 wwh1004 于 2018-7-15 14:31 编辑

如果文字没有说清楚,可以看我录的视频:https://www.bilibili.com/video/av26315130
视频下载: https://pan.baidu.com/s/1cmncmF9-McKPOzk7M69j9Q 密码: ra2d
视频里面打错个东西,是NullReferenceException而不是ArgumentNullException,我的锅..

成品:https://www.52pojie.cn/thread-762218-1-1.html

先丢de4dot里,看看脱壳之后能不能运行,测试之后可以
这时字符串都被de4dot还原出来,所以我们用dnSpy打开脱壳之后文件,搜索"Demo",并查找调用

多看下调用方法和被调用方法,可以发现WinForm1.smethod_13(string[])是最可疑的,因为它给这个成员赋值为"Full Version"了
这个时候反编译会卡死,因为WinForm1类里面有个巨大的方法,6万行IL,手动转到这个方法或者把显示C#代码改成显示IL代码

分析一下这个方法,发现它会调用WinForm1.smethod_71()来判断是否注册

所以我们暴力地编辑IL,把IL改成
ldc.i4.1
ret
清空局部变量和异常处理程序

我们保存,运行,发现这个还是Demo版本,重新看看WinForm1.smethod_13(string[]),发现这个里面还有判断

if (Class459.smethod_30().Count > 0)
{
    if (text.ToUpper() == "JAMES ROULEAU" || (text2.ToUpper() == "JAMES" && text3.ToUpper() == "ROULEAU"))
    {
      //这个应该是黑名单...
      Class586.QwgqvCejwQk = false;
      Class459.smethod_3(false);
      Class586.string_1 = " Demo ";
    }
}
else
{
    //sortedlist为空
    Class586.QwgqvCejwQk = false;
    Class459.smethod_3(false);
    Class586.string_1 = " Demo ";
}
看看Class459.smethod_30()返回了什么,发现是一个SortedList

查看调用

暴力修改静态构造器IL代码
在new出SortedList后加
dup
ldstr "REG_NAME"
ldstr "随便写个试试"
callvirt instance void System.Collections.SortedList::Add(object, object)

保存,再运行,发现破解成功了


个鬼(至少说明Demo版本和Full版本是有区别的,之前测试过,不是魔改IL代码导致的)
打开dnSpy,调试,取消所有异常捕获,显示C#代码改成显示IL代码

找到了,smethod_52 IL_B44F处,好吧,卡死了,人肉翻译一下(dnSpy卡死了,毕竟5.5万行的IL代码)

Type x=Type.GetType("字符串仅供参考,请以实际图片为准");
x.GetMethhods();
就是这里出问题了,这个类之前是被改名了,但是拖de4dot的时候被重命名了,所以返回了null
这里x是null,自然弹出NullReferenceException。不确定这样的地方有多少处,所以只有一个快捷的办法,带参数运行de4dot取消命名。

用--dont-rename参数,可以看到名称都保留了,这下应该可以正常破解了。重新爆破一遍,和上文说的一样,也可以看视频,视频里面有完整的过程
几分钟过去了~~~~~~~~~~~~~~~
完成!

随便点,无报错

跑得快有糖吃 发表于 2019-12-21 17:13

本帖最后由 跑得快有糖吃 于 2019-12-23 08:29 编辑

哇!大佬发帖正好我也有一个.NET想破解跟着学习一下~
大佬:先丢de4dot里,看看脱壳之后能不能运行,测试之后可以
我:先丢de4dot里,看看脱壳之后能不能运行,测试之后不可以,卒
------------------------------------------------------------------------------------------------
小白提问,他不能运行并且de4dot还报错:
ERROR: Error calculating max stack value. If the method's obfuscated, set CilBody.KeepOldMaxStack or MetadataOptions.Flags (KeepOldMaxStack, global option) to ignore this error. Otherwise fix your generated CIL code so it conforms to the ECMA standard.
ERROR: Local/arg index doesn't fit in a UInt16
ERROR: Local/arg index doesn't fit in a Byte. Use the longer ldloc/ldarg/stloc/starg instruction.
ERROR: Method System.RuntimeTypeHandle Internal.????????????????????????????????????::e53w34m968awCm9P85taUZe(System.Int32) (06000648) is not defined in this module (xxxx.exe). A method was removed that is still referenced by this module.
是因为啥,求指导.....@wwh1004

wwh1004 发表于 2018-7-9 07:12

雾落尘 发表于 2018-7-8 14:15
大佬最近我在看nicelabel的注册机,也是类似这样,一点思绪都没有 能不能指教一下

下载了个看看,注册机直接引用了nicelabel本身的代码(de4dot去混淆后的)

吾情qq 发表于 2018-7-7 11:23

路过,,,,,,,,,,,,,

神秘阿凯 发表于 2018-7-7 11:48

我真的事路过

w5645060 发表于 2018-7-7 11:51

zhangbaida 发表于 2018-7-7 12:12

成品帖子地址怎么和这个一样

tiantianxiao 发表于 2018-7-7 12:15

谢谢分享

曾经的树叶 发表于 2018-7-7 12:27

楼主真厉害

eilljs 发表于 2018-7-7 13:45

热心回复!

专业户 发表于 2018-7-7 13:53


这还需要注册啊

MYLQG2ZHX 发表于 2018-7-7 14:04

谢谢分享
页: [1] 2 3 4
查看完整版本: 爆破.NET Reactor v5.0