0043183F |. 93 vReadMemSs4 DWORD v82 = GetBytes(MD5, 0, 4)
004DA066 |. A4 vReadMemSs4 DWORD v83 = GetBytes(MD5, 0C, 4)
004D9FDD |. 2B vReadMemSs4 DWORD v84 = GetBytes(MD5, 8, 4)
0042B0C3 |. 49 vWriteMemSs1 EXIT BYTE v85 = (GetBytes(v51, 0, 1) ^ v46) + (GetBytes(MD5, 0, 1) ^ 0AA)
0042AF7A |. 2B vReadMemSs4 DWORD v86 = GetBytes(MD5, 4, 4)
004AB52C |. D3 vWriteMemSs1 EXIT BYTE v87 = (GetBytes(v51, 1, 1) ^ v48) + (GetBytes(MD5, 5, 1) ^ 0BB)
004B20AF |. 38 vWriteMemSs1 EXIT BYTE v88 = (v49 ^ GetBytes(v51, 2, 1)) + (GetBytes(MD5, 0A, 1) ^ 0CC)
00482E81 |. 38 vWriteMemSs1 EXIT BYTE v89 = (GetBytes(MD5, 0F, 1) ^ 0DD) + (GetBytes(v51, 3, 1) ^ v50)
0045F1B8 |. E1 vDiv4 DWORD v90 = 0 : (v82 ^ (v83 ^ v84 ^ v86)) % 5
004D277E |. 2B vReadMemSs4 DWORD m27 = DWORD SS:[Ja(SubFlag(v90, 4)) + 0FFFFFFE8]
004D275E |. 19 vPushReg4 vR11 DWORD v91 = v84
004D274B |. 94 vJmp_00411670
if
(v90 > 4) goto VMPCrack.00470963
0047C94E |. 8C vReadMemDs4 DWORD m28 = DWORD DS:[(v90 << 2) + 40609C]
0047C920 |.- 06 vJmp_00411670 switch (v90)
004DD0F5 |> F3 vPopReg4 vR2
//switch
0
00437358 |. 31 vWriteMemSs4 EXIT DWORD v92 = (v82 ^ 11223344) + (v86 ^ 22334455)
004B3409 |> 03 vPopReg4 vR6
//switch
1
004B31D6 |. C7 vNand4 DWORD v93 = v91 ^ 44556677
0048CF6D |. 31 vWriteMemSs4 EXIT DWORD v92 = v93 + (v86 ^ 33445566)
0048CD9F |. 1D vPushReg4 vR12 DWORD v91 = v93
0047C627 |> FB vPopReg4 vR4
//switch
2
0049ED8F |. 00 vNand4 DWORD v94 = v91 ^ 55667788
004E19BC |. 31 vWriteMemSs4 EXIT DWORD v92 = v94 + (v83 ^ 66778899)
004E18D6 |. F1 vPushReg4 vR1 DWORD v91 = v94
004A9743 |> EF vPopReg4 vR1
//switch
3
00472BED |. 31 vWriteMemSs4 EXIT DWORD v92 = (v83 ^ 778899AA) + (v82 ^ 8899AABB)
0045E0BA |> 0B vPopReg4 vR8
//switch
4
0045DF80 |. 00 vNand4 DWORD v95 = v91 ^ 0AABBCCDD
0045DE90 |. 00 vNand4 DWORD v96 = v82 ^ 99AABBCC
00470B2F |. 48 vAdd4 DWORD v97 = v96 + v95
004709E8 |. BA vWriteMemSs4 EXIT DWORD v92 = v97
0047098C |. FD vPushReg4 vR4 DWORD v91 = v97
00470963 |> 1B vPopReg4 vR12
0047881C |. 31 vWriteMemSs4
"结果"
EXIT DWORD v98 = 14
0047CAB2 |. 31 vWriteMemSs4
"密码"
EXIT DWORD v99 = 0FFFFFFFC
//
解密后的MD5
00434420 |. BA vWriteMemSs4
"内容"
EXIT DWORD v100 = 14
//
上面计算的内容
00481A39 |. 11 vPushReg4 vR9 EXIT DWORD v101 = v91
00481A32 |. 6F vAdd4 EXIT DWORD v102 = 0EF8B1AAC
00481A2E |. 52 vJmp_00412430 callVM <VMPCrack.TEA解密>
004B4216 |. 2B vReadMemSs4 DWORD v103 = Cross(GetBytes(
"注册码"
, 8, 4), nonentity)
004B4154 |. A4 vReadMemSs4 DWORD v104 = v89 : (v88 : (v87 : v85))
004B3F46 |. 00 vNand4 DWORD v105 = v103 ^ 13579BDF
004CAA54 |. CE vReadMemSs4 DWORD m29 = DWORD SS:[Je(SubFlag(v104, v105)) + 0FFFFFFE8]
004CAA21 |. 06 vJmp_00411670
if
(v104 != v105) goto VMPCrack.00437E53
//
检查注册码第三部分
0046198A |. A4 vReadMemSs4 DWORD v106 = Cross(GetBytes(
"注册码"
, 0C, 4), nonentity)
004A8CA3 |. 73 vNand4 DWORD v107 = v106 ^ 0FDB97531
0048D926 |. 2B vReadMemSs4 DWORD m30 = DWORD SS:[Jnz(SubFlag(Cross(nonentity, v92), v107)) + 0FFFFFFE8]
0048D8F3 |. 06 vJmp_00411670
if
(Cross(nonentity, v92) == v107) goto VMPCrack.004A927A
//
检查注册码第四部分
0049E1D7 |. 2B vReadMemSs4 DWORD s4 = Stack(vESP + 34, ESP + 0, 4)
...
0049DE75 |. 2E vRet
return
v110