进入 0040ED70
0040ED70 /$ 8B4424 08 mov eax, [esp+8]
0040ED74 |. 56 push esi
0040ED75 |. 8B7424 08 mov esi, [esp+8]
0040ED79 |. 6A 03 push 3
0040ED7B |. 50 push eax
0040ED7C |. 56 push esi
0040ED7D |. E8 3EFEFFFF call 0040EBC0 在此处进入。
0040ED82 |. 8BC8 mov ecx, eax
0040ED84 |. 83C4 0C add esp, 0C
0040ED87 |. 85C9 test ecx, ecx
0040ED89 |. 7D 07 jge short 0040ED92
0040ED8B |. B8 0C000000 mov eax, 0C
0040ED90 |. 5E pop esi
进入 0040EBC0
0040EBC0 /$ 81EC 30010000 sub esp, 130
0040EBC6 |. A0 30014300 mov al, [430130]
0040EBCB |. 53 push ebx
0040EBCC |. 55 push ebp
0040EBCD |. 56 push esi
0040EBCE |. 57 push edi
0040EBCF |. 884424 40 mov [esp+40], al
0040EBD3 |. B9 3F000000 mov ecx, 3F
0040EBD8 |. 33C0 xor eax, eax
0040EBDA |. 8D7C24 41 lea edi, [esp+41]
0040EBDE |. 8BAC24 440100>mov ebp, [esp+144]
0040EBE5 |. F3:AB rep stos dword ptr es:[edi]
0040EBE7 |. 66:AB stos word ptr es:[edi]
0040EBE9 |. AA stos byte ptr es:[edi]
0040EBEA |. 8BFD mov edi, ebp
0040EBEC |. 83C9 FF or ecx, FFFFFFFF
0040EBEF |. 33C0 xor eax, eax
0040EBF1 |. C74424 10 030>mov dword ptr [esp+10], 3
0040EBF9 |. F2:AE repne scas byte ptr es:[edi]
0040EBFB |. F7D1 not ecx
0040EBFD |. 49 dec ecx
0040EBFE |. 8BD9 mov ebx, ecx
0040EC00 |. 83FB 14 cmp ebx, 14 判断序列号是否大于等于20位,是则跳转,否则出错。
0040EC03 |. 7D 0E jge short 0040EC13
0040EC05 |. 5F pop edi
0040EC06 |. 5E pop esi
0040EC07 |. 5D pop ebp
0040EC08 |. 83C8 FF or eax, FFFFFFFF
0040EC0B |. 5B pop ebx
0040EC0C |. 81C4 30010000 add esp, 130
0040EC12 |. C3 retn
0040EC13 |> 8BFD mov edi, ebp 跳到这里。
0040EC15 |. 83C9 FF or ecx, FFFFFFFF
0040EC18 |. 33C0 xor eax, eax
0040EC1A |. 8D5424 40 lea edx, [esp+40]
0040EC1E |. F2:AE repne scas byte ptr es:[edi]
0040EC20 |. F7D1 not ecx
0040EC22 |. 2BF9 sub edi, ecx
0040EC24 |. 55 push ebp
0040EC25 |. 8BC1 mov eax, ecx
0040EC27 |. 8BF7 mov esi, edi
0040EC29 |. 8BFA mov edi, edx
0040EC2B |. C1E9 02 shr ecx, 2
0040EC2E |. F3:A5 rep movs dword ptr es:[edi], dword p>
0040EC30 |. 8BC8 mov ecx, eax
0040EC32 |. 83E1 03 and ecx, 3
0040EC35 |. F3:A4 rep movs byte ptr es:[edi], byte ptr>
0040EC37 |. E8 84FEFFFF call 0040EAC0 进入
进入 0040EAC0
0040EAC0 /$ 81EC 04010000 sub esp, 104
0040EAC6 |. A0 30014300 mov al, [430130]
0040EACB |. 56 push esi
0040EACC |. 57 push edi
0040EACD |. 884424 08 mov [esp+8], al
0040EAD1 |. B9 40000000 mov ecx, 40
0040EAD6 |. 33C0 xor eax, eax
0040EAD8 |. 8D7C24 09 lea edi, [esp+9]
0040EADC |. 8D5424 08 lea edx, [esp+8]
0040EAE0 |. F3:AB rep stos dword ptr es:[edi]
0040EAE2 |. 66:AB stos word ptr es:[edi]
0040EAE4 |. AA stos byte ptr es:[edi]
0040EAE5 |. 8BBC24 100100>mov edi, [esp+110]
0040EAEC |. 83C9 FF or ecx, FFFFFFFF
0040EAEF |. 33C0 xor eax, eax
0040EAF1 |. F2:AE repne scas byte ptr es:[edi]
0040EAF3 |. F7D1 not ecx
0040EAF5 |. 2BF9 sub edi, ecx
0040EAF7 |. 8BC1 mov eax, ecx
0040EAF9 |. 8BF7 mov esi, edi
0040EAFB |. 8BFA mov edi, edx
0040EAFD |. 33D2 xor edx, edx
0040EAFF |. C1E9 02 shr ecx, 2
0040EB02 |. F3:A5 rep movs dword ptr es:[edi], dword p>
0040EB04 |. 8BC8 mov ecx, eax
0040EB06 |. 33C0 xor eax, eax
0040EB08 |. 83E1 03 and ecx, 3
0040EB0B |. F3:A4 rep movs byte ptr es:[edi], byte ptr>
0040EB0D |. 8D7C24 08 lea edi, [esp+8]
0040EB11 |. 83C9 FF or ecx, FFFFFFFF
0040EB14 |. F2:AE repne scas byte ptr es:[edi]
0040EB16 |. F7D1 not ecx
0040EB18 |. 49 dec ecx
0040EB19 |. 85C9 test ecx, ecx
0040EB1B |. 7E 25 jle short 0040EB42
0040EB1D |> 8A4414 08 /mov al, [esp+edx+8]
0040EB21 |. 3C 61 |cmp al, 61
0040EB23 |. 7C 0A |jl short 0040EB2F
0040EB25 |. 3C 7A |cmp al, 7A
0040EB27 |. 7F 06 |jg short 0040EB2F
0040EB29 |. 2C 20 |sub al, 20
0040EB2B |. 884414 08 |mov [esp+edx+8], al
0040EB2F |> 8D7C24 08 |lea edi, [esp+8]
0040EB33 |. 83C9 FF |or ecx, FFFFFFFF
0040EB36 |. 33C0 |xor eax, eax
0040EB38 |. 42 |inc edx
0040EB39 |. F2:AE |repne scas byte ptr es:[edi]
0040EB3B |. F7D1 |not ecx
0040EB3D |. 49 |dec ecx
0040EB3E |. 3BD1 |cmp edx, ecx
0040EB40 |.^ 7C DB \jl short 0040EB1D
0040EB42 |> 8D7C24 08 lea edi, [esp+8]
0040EB46 |. 83C9 FF or ecx, FFFFFFFF
0040EB49 |. 33C0 xor eax, eax
0040EB4B |. 33F6 xor esi, esi
0040EB4D |. F2:AE repne scas byte ptr es:[edi]
0040EB4F |. F7D1 not ecx
0040EB51 |. 49 dec ecx
0040EB52 |. BA 01000000 mov edx, 1 初始化edx=1
0040EB57 |. 85C9 test ecx, ecx
0040EB59 |. 7E 50 jle short 0040EBAB
0040EB5B |. 53 push ebx
0040EB5C |. 8D5C24 0C lea ebx, [esp+C]
0040EB60 |. 81EB D2040000 sub ebx, 4D2
0040EB66 |> 83FE 0A /cmp esi, 0A
0040EB69 |. 7C 05 |jl short 0040EB70
0040EB6B |. 83FE 0D |cmp esi, 0D M = 0
0040EB6E |. 7E 27 |jle short 0040EB97 For M = 0 To 9
0040EB70 |> 8BC6 |mov eax, esi a = b((M Mod 4)) + Asc(Mid(s, M + 1, 1))
0040EB72 |. 8D8E D2040000 |lea ecx, [esi+4D2] a = a * d
0040EB78 |. 25 03000080 |and eax, 80000003 d = a Mod (1234 + M)
0040EB7D |. 79 05 |jns short 0040EB84 a = 0
0040EB7F |. 48 |dec eax Next
0040EB80 |. 83C8 FC |or eax, FFFFFFFC For M = 14 To 19
0040EB83 |. 40 |inc eax a = b((M Mod 4)) + Asc(Mid(s, M + 1, 1))
0040EB84 |> 0FBE3C0B |movsx edi, byte ptr [ebx+ecx] a = a * d
0040EB88 |. 8B0485 58FA42>|mov eax, [eax*4+42FA58] b(c,19,25,30) d = a Mod (1234 + M)
0040EB8F |. 03C7 |add eax, edi a = 0
0040EB91 |. 0FAFC2 |imul eax, edx Next
0040EB94 |. 99 |cdq
0040EB95 |. F7F9 |idiv ecx
0040EB97 |> 8D7C24 0C |lea edi, [esp+C]
0040EB9B |. 83C9 FF |or ecx, FFFFFFFF
0040EB9E |. 33C0 |xor eax, eax
0040EBA0 |. 46 |inc esi
0040EBA1 |. F2:AE |repne scas byte ptr es:[edi]
0040EBA3 |. F7D1 |not ecx
0040EBA5 |. 49 |dec ecx
0040EBA6 |. 3BF1 |cmp esi, ecx
0040EBA8 |.^ 7C BC \jl short 0040EB66
0040EBAA |. 5B pop ebx
0040EBAB |> 8BC2 mov eax, edx
0040EBAD |. B9 4F000000 mov ecx, 4F d = d Mod 79
0040EBB2 |. 99 cdq
0040EBB3 |. F7F9 idiv ecx
0040EBB5 |. 5F pop edi
0040EBB6 |. 5E pop esi
0040EBB7 |. 8BC2 mov eax, edx 运算结束
0040EBB9 |. 81C4 04010000 add esp, 104
运算结束后返回到0040EC3C
0040EC3C |. 894424 18 mov [esp+18], eax 将d的值 赋予[ESP+18]
0040EC40 |. 8B8424 500100>mov eax, [esp+150]
0040EC47 |. 83C4 04 add esp, 4
0040EC4A |. 83F8 03 cmp eax, 3
0040EC4D |. BA 04000000 mov edx, 4
0040EC52 |. 74 04 je short 0040EC58
0040EC54 |. 8B5424 10 mov edx, [esp+10]
0040EC58 |> 33C9 xor ecx, ecx
0040EC5A |. C6441C 40 00 mov byte ptr [esp+ebx+40], 0
0040EC5F |. 85DB test ebx, ebx
0040EC61 |. 7E 17 jle short 0040EC7A
0040EC63 |> 8A440C 40 /mov al, [esp+ecx+40]
0040EC67 |. 3C 61 |cmp al, 61
0040EC69 |. 7C 0A |jl short 0040EC75
0040EC6B |. 3C 7A |cmp al, 7A
0040EC6D |. 7F 06 |jg short 0040EC75
0040EC6F |. 2C 20 |sub al, 20
0040EC71 |. 88440C 40 |mov [esp+ecx+40], al
0040EC75 |> 41 |inc ecx
0040EC76 |. 3BCB |cmp ecx, ebx
0040EC78 |.^ 7C E9 \jl short 0040EC63
0040EC7A |> B8 07000000 mov eax, 7
0040EC7F |. 3BD8 cmp ebx, eax
0040EC81 |. 7E 25 jle short 0040ECA8
0040EC83 |> 8A0C28 /mov cl, [eax+ebp]
0040EC86 |. 80F9 39 |cmp cl, 39
0040EC89 |. 0F8F CE000000 |jg 0040ED5D
0040EC8F |. 80F9 30 |cmp cl, 30
0040EC92 |. 0F8C C5000000 |jl 0040ED5D
0040EC98 |. 8A4C04 40 |mov cl, [esp+eax+40]
0040EC9C |. 80C1 D0 |add cl, 0D0
0040EC9F |. 884C04 40 |mov [esp+eax+40], cl
0040ECA3 |. 40 |inc eax
0040ECA4 |. 3BC3 |cmp eax, ebx
0040ECA6 |.^ 7C DB \jl short 0040EC83
0040ECA8 |> 33ED xor ebp, ebp
0040ECAA |. 33C0 xor eax, eax
0040ECAC |. 85DB test ebx, ebx
0040ECAE |. 896C24 10 mov [esp+10], ebp
0040ECB2 |. 7E 1C jle short 0040ECD0
0040ECB4 |. 8D4A 07 lea ecx, [edx+7]
0040ECB7 |> 3BC1 /cmp eax, ecx
0040ECB9 |. 7C 05 |jl short 0040ECC0
0040ECBB |. 83F8 0D |cmp eax, 0D
0040ECBE |. 7E 07 |jle short 0040ECC7
0040ECC0 |> 0FBE7404 40 |movsx esi, byte ptr [esp+eax+40]
0040ECC5 |. 03EE |add ebp, esi 将字符串ss的前7位asc码值的和+8―11位数字的和+后6位数字的和的总和赋予EBP=f
0040ECC7 |> 40 |inc eax
0040ECC8 |. 3BC3 |cmp eax, ebx
0040ECCA |.^ 7C EB \jl short 0040ECB7
0040ECCC |. 896C24 10 mov [esp+10], ebp
0040ECD0 |> B9 0A000000 mov ecx, 0A
0040ECD5 |. B8 0B000000 mov eax, 0B
0040ECDA |. 8D7C24 18 lea edi, [esp+18]
0040ECDE |. BE 44FA4200 mov esi, 0042FA44
0040ECE3 |. F3:AB rep stos dword ptr es:[edi]
0040ECE5 |. B9 05000000 mov ecx, 5
0040ECEA |. 8D7C24 18 lea edi, [esp+18]
0040ECEE |. F3:A5 rep movs dword ptr es:[edi], dword p>
0040ECF0 |. 8B4C24 14 mov ecx, [esp+14]=11
0040ECF4 |. 8B7424 18 mov esi, [esp+18]
0040ECF8 |. 03F1 add esi, ecx 11+d
0040ECFA |. 33C9 xor ecx, ecx
0040ECFC |. 897424 18 mov [esp+18], esi 11+d赋予 [ESP+18]
0040ED00 |. 33F6 xor esi, esi
0040ED02 |. 85DB test ebx, ebx
0040ED04 |. 7E 2D jle short 0040ED33
0040ED06 |. 8D7A 07 lea edi, [edx+7]
0040ED09 |> 3BCF /cmp ecx, edi
0040ED0B |. 7C 05 |jl short 0040ED12
0040ED0D |. 83F9 0D |cmp ecx, 0D
0040ED10 |. 7E 1C |jle short 0040ED2E
0040ED12 |> 8BC1 |mov eax, ecx
0040ED14 |. BD 05000000 |mov ebp, 5
0040ED19 |. 99 |cdq
0040ED1A |. F7FD |idiv ebp
0040ED1C |. 0FBE440C 40 |movsx eax, byte ptr [esp+ecx+40]
0040ED21 |. 8B6C24 10 |mov ebp, [esp+10]
0040ED25 |. 8B5494 18 |mov edx, [esp+edx*4+18] 值为(11+d,1f,35,4f,5c)
0040ED29 |. 0FAFD0 |imul edx, eax
0040ED2C |. 03F2 |add esi, edx
0040ED2E |> 41 |inc ecx
0040ED2F |. 3BCB |cmp ecx, ebx
0040ED31 |.^ 7C D6 \jl short 0040ED09
For M = 0 To 6
d = j((M Mod 5)) * Asc(Mid(s, M + 1, 1)) + d
Next
For M = 7 To 8
d = j((M Mod 5)) * i(M - 6) + d
Next
For M = 10 To 10
d = d + j((M Mod 5)) * c(1)
Next
For M = 14 To 19
d = d + j((M Mod 5)) * c(M - 9)
Next
0040ED33 |> 8B8424 4C0100>mov eax, [esp+14C]
0040ED3A |. 03F5 add esi, ebp d = d +f
0040ED3C |. 83F8 03 cmp eax, 3
0040ED3F |. 8BC6 mov eax, esi
0040ED41 |. 99 cdq
0040ED42 |. B9 61000000 mov ecx, 61
0040ED47 |. 74 05 je short 0040ED4E
0040ED49 |. B9 5F000000 mov ecx, 5F
0040ED4E |> F7F9 idiv ecx d = d Mod 97
0040ED50 |. 5F pop edi
0040ED51 |. 5E pop esi
0040ED52 |. 5D pop ebp
0040ED53 |. 5B pop ebx
0040ED54 |. 8BC2 mov eax, edx d = d Mod 97
0040ED56 |. 81C4 30010000 add esp, 130
0040ED5C |. C3 retn 返回到0040ed82
0040ED5D |> 5F pop edi
0040ED5E |. 5E pop esi
0040ED5F |. 5D pop ebp
0040ED60 |. B8 FEFFFFFF mov eax, -2
0040ED65 |. 5B pop ebx
0040ED66 |. 81C4 30010000 add esp, 130
0040ED6C \. C3 retn
0040ED6D 90 nop
0040ED6E 90 nop
0040ED6F 90 nop
0040ED70 /$ 8B4424 08 mov eax, [esp+8]
0040ED74 |. 56 push esi
0040ED75 |. 8B7424 08 mov esi, [esp+8]
0040ED79 |. 6A 03 push 3
0040ED7B |. 50 push eax
0040ED7C |. 56 push esi
0040ED7D |. E8 3EFEFFFF call 0040EBC0
0040ED82 |. 8BC8 mov ecx, eax 将d赋予ecx
0040ED84 |. 83C4 0C add esp, 0C
0040ED87 |. 85C9 test ecx, ecx
0040ED89 |. 7D 07 jge short 0040ED92 跳转
0040ED8B |. B8 0C000000 mov eax, 0C
0040ED90 |. 5E pop esi
0040ED91 |. C3 retn
0040ED92 |> 0FBE46 0C movsx eax, byte ptr [esi+C] 字符串ss的第13位
0040ED96 |. 8D1480 lea edx, [eax+eax*4] g = 5 * (c(3) + 48)
0040ED99 |. 0FBE46 0D movsx eax, byte ptr [esi+D] 字符串ss的第13位
0040ED9D |. 5E pop esi
0040ED9E |. 8D8450 F0FDFF>lea eax, [eax+edx*2-210] g = c(4) + 48 + 2 * g - 528
0040EDA5 |. 2BC1 sub eax, ecx g=d则序列号正确,否则出错。
0040EDA7 |. F7D8 neg eax
0040EDA9 |. 1BC0 sbb eax, eax
0040EDAB |. 83E0 0C and eax, 0C
0040EDAE \. C3 retn
注册机的源代码如下:
Dim c(1 To 10) As Integer, i(1 To 2) As Integer, j(0 To 4) As Integer, b(0 To 3) As Integer
Dim f As Long, s As String, g As Long
b(0) = 12
b(1) = 25
b(2) = 37
b(3) = 48
Randomize
q = Int(Rnd() * 10)
If Option1.Value = True Then
SS = "BSP10" + Trim(Str(q)) + "0" '专业版
P = 422 + q
End If
If Option2.Value = True Then ' 个人版
SS = "VDP10" + Trim(Str(q)) + "0"
P = 427 + q
End If
Do
a = 71
h = 19
e = 37
n = 1
For n = 1 To 10
Randomize
c(n) = Int(Rnd * 10)
Next
f = P + c(5) + c(6) + c(7) + c(8) + c(9) + c(10)
a = a * c(8)
h = h * c(9)
a = a + h
e = e * c(10)
a = a + e
a = a + 53
a = a + f
a = a Mod 99
i(1) = Int(Rnd * 10)
i(2) = Int(Rnd * 10)
g = 5 * (i(1) + 48)
g = i(2) + 48 + 2 * g - 528
Loop Until a = g
d = 1
s = SS + Trim(Str(i(1))) + Trim(Str(i(2))) + Trim(Str(0)) + Trim(Str(c(1))) + Trim(Str(c(2))) + Trim(Str(c(3))) + Trim(Str(c(4))) + Trim(Str(c(5))) + Trim(Str(c(6))) + Trim(Str(c(7))) + Trim(Str(c(8))) + Trim(Str(c(9))) + Trim(Str(c(10)))
M = 0
For M = 0 To 9
a = b((M Mod 4)) + Asc(Mid(s, M + 1, 1))
a = a * d
d = a Mod (1234 + M)
a = 0
Next
For M = 14 To 19
a = b((M Mod 4)) + Asc(Mid(s, M + 1, 1))
a = a * d
d = a Mod (1234 + M)
a = 0
Next
d = d Mod 79
ff = P + c(5) + c(6) + c(7) + c(8) + c(9) + c(10) + i(1) + i(2) + c(1)
j(0) = 17 + d
j(1) = 31
j(2) = 53
j(3) = 79
j(4) = 92
M = 0
d = 0
For M = 0 To 6
d = j((M Mod 5)) * Asc(Mid(s, M + 1, 1)) + d
Next
For M = 7 To 8
d = j((M Mod 5)) * i(M - 6) + d
Next
For M = 10 To 10
d = d + j((M Mod 5)) * c(1)
Next
For M = 14 To 19
d = d + j((M Mod 5)) * c(M - 9)
Next
d = d + ff
d = d Mod 97
Do
c(3) = Int(Rnd * 10)
c(4) = Int(Rnd * 10)
g = 5 * (c(3) + 48)
g = c(4) + 48 + 2 * g - 528
Loop Until g = d
Text1.Text = SS + Trim(Str(c(5))) + Trim(Str(i(1))) + Trim(Str(0)) + Trim(Str(c(6))) + Trim(Str(i(2))) + Trim(Str(c(7))) + Trim(Str(c(1))) + Trim(Str(c(8))) + Trim(Str(c(2))) + Trim(Str(c(9))) + Trim(Str(c(3))) + Trim(Str(c(10))) + Trim(Str(c(4)))