qands 发表于 2023-11-3 22:47

aspose.cell 23.10 有过期注册码或无注册码绕过,去暗桩

1.用DNSPY打开dll
2.在aspose里找到类 \u0006\u0018 然后查找;; 到虚拟机的核心位置


3.点击跳转值的那个变量,到定义的地方,他下面的是他的返回值存储的变量.

这4个变量是需要观察的关键点.

4.可以把这几个关键变量改个名字方便看 ,分别是totalLength,jumpto,currentPos,returnValue;

5.在while的地方下断,按F5运行, 会看见totalLength发生改变

6.如果你有过期的注册码, 当totallength==0x4db时,是在检验注册码
如果你点击this.\u000E();到方法的最后处下断,然后一直F5,你会看见currentpos和returnvalue一直在改变
当currentpos==0x39c时,他开始取注册信息中的过期时间
当currentpos==0x431时,他开始年月日逐一比较
当currentpos==0x3DF时,如果过期他会跳0x46b, 没过期跳0x484
于是关键就是在这个位置让他跳484
有过期码的时候,就这样了.

7.当totallength==0x18C时,是在判断是否正版

当currentpos==0x17C时,他开始判断正版.是正版jumpto==null,不是的时候跳0x184
于是关键就是这里不能让它跳.
没注册码时就这样了

8.暗桩
当totallength==0xE5时说明进入到暗桩判断.
不一定每次都进,随机进入的
当currentpos==0xd9时,观察returnValue,如果是1,则暗桩生效,生成的文件错误.,0则不生效
于是关键就是在此处把 retuelValue的1改成0

9,更改后这段代码是这样的


10,更改后的IL 参考
0        0000        ldarg.0
1        0001        ldfld        uint32 '\u0006\u0018'::totalLength
2        0006        stloc.0
3        0007        nop
4        0008        br        58 (00A0) ldarg.0
5        000D        nop
6        000E        ldloc.0
7        000F        ldc.i4        0x18C
8        0014        bne.un.s        18 (0032) ldloc.0
9        0016        ldarg.0
10        0017        ldfld        uint32 '\u0006\u0018'::currentPos
11        001C        ldc.i4        0x17C
12        0021        bne.un.s        18 (0032) ldloc.0
13        0023        ldarg.0
14        0024        ldflda        valuetype System.Nullable`1<uint32> '\u0006\u0018'::jumpTo
15        0029        initobj        valuetype System.Nullable`1<uint32>
16        002F        br.s        34 (0058) ldarg.0
17        0031        nop
18        0032        ldloc.0
19        0033        ldc.i4        0xE5
20        0038        bne.un.s        34 (0058) ldarg.0
21        003A        ldarg.0
22        003B        ldfld        uint32 '\u0006\u0018'::currentPos
23        0040        ldc.i4        0xD9
24        0045        bne.un.s        34 (0058) ldarg.0
25        0047        nop
26        0048        ldc.i4.0
27        0049        newobj        instance void '\b\u0010'::.ctor(int32)
28        004E        stloc.2
29        004F        ldarg.0
30        0050        ldloc.2
31        0051        stfld        class '\u000e\u0003' '\u0006\u0018'::returnValue
32        0056        nop
33        0057        nop
34        0058        ldarg.0
35        0059        ldflda        valuetype System.Nullable`1<uint32> '\u0006\u0018'::jumpTo
36        005E        call        instance bool valuetype System.Nullable`1<uint32>::get_HasValue()
37        0063        brfalse.s        52 (0091) ldarg.0
38        0065        ldarg.0
39        0066        ldarg.0
40        0067        ldflda        valuetype System.Nullable`1<uint32> '\u0006\u0018'::jumpTo
41        006C        call        instance !0 valuetype System.Nullable`1<uint32>::get_Value()
42        0071        stfld        uint32 '\u0006\u0018'::currentPos
43        0076        ldarg.0
44        0077        ldarg.0
45        0078        ldfld        uint32 '\u0006\u0018'::currentPos
46        007D        conv.u8
47        007E        call        instance void '\u0006\u0018'::'\u0002'(int64)
48        0083        ldarg.0
49        0084        ldflda        valuetype System.Nullable`1<uint32> '\u0006\u0018'::jumpTo
50        0089        initobj        valuetype System.Nullable`1<uint32>
51        008F        br.s        56 (009A) ldarg.0
52        0091        ldarg.0
53        0092        ldfld        uint32 '\u0006\u0018'::currentPos
54        0097        ldloc.0
55        0098        bge.un.s        61 (00AB) leave.s 74 (00CA)
56        009A        ldarg.0
57        009B        call        instance void '\u0006\u0018'::'\u000e'()
58        00A0        ldarg.0
59        00A1        ldfld        bool '\u0006\u0018'::'\u0002\u000f'
60        00A6        brfalse        5 (000D) nop
61        00AB        leave.s        74 (00CA) ret
62        00AD        stloc.1
63        00AE        ldarg.0
64        00AF        ldloc.1
65        00B0        ldc.i4.0
66        00B1        call        instance void '\u0006\u0018'::'\u0002'(object, uint32)
67        00B6        ldarg.1
68        00B7        brtrue.s        73 (00C5) leave 3 (0007)
69        00B9        ldarg.0
70        00BA        ldc.i4.1
71        00BB        call        instance void '\u0006\u0018'::'\b\u0002'(bool)
72        00C0        leave        74 (00CA) ret
73        00C5        leave        3 (0007) nop
74        00CA        ret


qands 发表于 2023-11-4 18:20

夜泉 发表于 2023-11-4 12:19
可否也把 aspose.word分析下?

有过期注册码 totallength==0x14b currentPos=0x72不要跳
无注册码 totallength==0x18e ,currentPos=0x4 直接跳到0x142

3yu3 发表于 2023-11-4 12:19

这是个EAZ的虚拟化壳?

cux666 发表于 2023-11-4 08:04

有点深奥,谢谢分享。

qiangxinglin 发表于 2023-11-4 08:50

能讲下如何定位的就更好了{:1_918:}

zwtstc 发表于 2023-11-4 09:59

谢谢分享,有用

jimgreen 发表于 2023-11-4 11:35

谢谢分享。!

夜泉 发表于 2023-11-4 12:19

可否也把 aspose.word分析下?

drdc 发表于 2023-11-4 14:26

能不能讲通俗一下呢?

ling168 发表于 2023-11-4 15:09

能不能讲通俗一下呢?
页: [1] 2 3
查看完整版本: aspose.cell 23.10 有过期注册码或无注册码绕过,去暗桩