21.12版本与最新版本的注册检查基本是一样的.
到虚拟机后,
类为: #=qm_50B3$cVADTp5H6iOJ9ZMRcBoNnWZEPA6y3qzKBhfI=
行数约为5256
运行时 代码长度:0x136, 代码位置0x132
找到返回值, Type=A(21.12为F), enum值=0 ,改1
22.12改后代码:
private void #=zTH5Pl0gDZD0tm0CKKRTkN9omY3gld_$d87CYtbY=(bool #=zUJkdsSk=)
{
uint length = this.Length;
if (length > 2U)
{
length = this.Length;
}
for (;;)
{
try
{
while (!this.#=z8ZwEMDw=)
{
//增加的判断1
if (length == 96U && this.currentPos == 84U)
{
this.toJump = new uint?(92U);
}
if (this.toJump != null)
{
this.currentPos = this.toJump.Value;
this.#=znP1PEiEUBgTfaLHP3Ot4C1Q=((long)((ulong)this.currentPos));
this.toJump = null;
}
else
{
if (this.currentPos >= length)
{
break;
}
增加的判断2
if (length == 310U && this.currentPos == 306U)
{
#=qpzzw2sRRKqV6Cx6jXg4XoSknPUWbgn9BUi5$7NwN2lk= #=qpzzw2sRRKqV6Cx6jXg4XoSknPUWbgn9BUi5$7NwN2lk= = new #=qpzzw2sRRKqV6Cx6jXg4XoSknPUWbgn9BUi5$7NwN2lk=((#=zWWIg__NOqvzZDlGzruWYaMY=)1);
this.returnValue = #=qpzzw2sRRKqV6Cx6jXg4XoSknPUWbgn9BUi5$7NwN2lk=;
}
}
this.#=zWfla83DTwoJYSZ7gbsezml02HgF4gC6zeVFSCjc=();
}
}
catch (object obj)
{
this.#=zoXWVqMxkPHYY5ivu9oSGaH4sjltm8VvqF2bygtQ=(obj, 0U);
if (#=zUJkdsSk=)
{
continue;
}
this.#=zTH5Pl0gDZD0tm0CKKRTkN9omY3gld_$d87CYtbY=(true);
}
break;
}
}
IL指令(第二节)修改如下(添加局部变量 类型 #=qhRkB3agCPUmfXc531hGbRaVdl6EPTJfotcwQXAau8zU=):
53 0083 ldloc.0
54 0084 ldc.i4 0x136
55 0089 bne.un.s 72 (00B9) ldarg.0
56 008B ldarg.0
57 008C ldfld uint32 '#=qNAOtm5VeKnzVN8j5xURamTkGPsR7zohV6tvdV6HyyMI='::currentPos
58 0091 ldc.i4 0x132
59 0096 bne.un.s 72 (00B9) ldarg.0
60 0098 ldarg.0
61 0099 ldflda valuetype [mscorlib]System.Nullable`1<uint32> '#=qNAOtm5VeKnzVN8j5xURamTkGPsR7zohV6tvdV6HyyMI='::JumpTo
62 009E initobj valuetype [mscorlib]System.Nullable`1<uint32>
63 00A4 nop
64 00A5 ldc.i4.1
65 00A6 box '#=zrqKMN9CvFhRhORenoYEOD2o='
66 00AB newobj instance void '#=qhRkB3agCPUmfXc531hGbRaVdl6EPTJfotcwQXAau8zU='::.ctor(class [mscorlib]System.Enum)
67 00B0 stloc.2
68 00B1 ldarg.0
69 00B2 ldloc.2
70 00B3 stfld class '#=qsu7llZcNp_rR7IMMiijtT4wVaLj2oASbkvbKHUxZ$0c=' '#=qNAOtm5VeKnzVN8j5xURamTkGPsR7zohV6tvdV6HyyMI='::returnValue
71 00B8 nop
21.12版本这样就行了
22.12在 new Document的时候增加了判断(时出时不出),改后程序会卡死,于是有第一处代码增加
运行时代码长度:0x60, 代码位置0x54,需跳过到0x5c
IL指令如下:
20 0029 ldloc.0
21 002A ldc.i4 0x60
22 002F bne.un.s 36 (0053) ldarg.0
23 0031 ldarg.0
24 0032 ldfld uint32 '#=qm_50B3$cVADTp5H6iOJ9ZMRcBoNnWZEPA6y3qzKBhfI='::currentPos
25 0037 ldc.i4 0x54
26 003C bne.un.s 36 (0053) ldarg.0
27 003E nop
28 003F ldarg.0
29 0040 ldc.i4 0x5C
30 0045 newobj instance void valuetype [System.Runtime]System.Nullable`1<uint32>::.ctor(!0)
31 004A stfld valuetype [System.Runtime]System.Nullable`1<uint32> '#=qm_50B3$cVADTp5H6iOJ9ZMRcBoNnWZEPA6y3qzKBhfI='::toJump