00402FBC /$ 53 PUSH EBX //来到这里
00402FBD |. 56 PUSH ESI
00402FBE |. 57 PUSH EDI //保存环境变量
00402FBF |. 89C6 MOV ESI,EAX //ESI=EAX
00402FC1 |. 50 PUSH EAX //EAX入栈
00402FC2 |. 85C0 TEST EAX,EAX
00402FC4 |. 74 6C JE SHORT pbobily1.00403032
00402FC6 |. 31C0 XOR EAX,EAX //EAX清零
00402FC8 |. 31DB XOR EBX,EBX //EBX清零
00402FCA |. BF CCCCCC0C MOV EDI,0CCCCCCC //EDI=0CCCCCCC
00402FCF |> 8A1E /MOV BL,BYTE PTR DS:[ESI] //ESI中取一位放入BL
00402FD1 |. 46 |INC ESI //ESI减一位
00402FD2 |. 80FB 20 |CMP BL,20 //如果第一位是空格则取下一位,不是则执行下去
00402FD5 |.^ 74 F8 \JE SHORT pbobily1.00402FCF
00402FD7 |. B5 00 MOV CH,0
00402FD9 |. 80FB 2D CMP BL,2D
00402FDC |. 74 62 JE SHORT pbobily1.00403040 //是否为-
00402FDE |. 80FB 2B CMP BL,2B
00402FE1 |. 74 5F JE SHORT pbobily1.00403042 //是否为+
00402FE3 |. 80FB 24 CMP BL,24
00402FE6 |. 74 5F JE SHORT pbobily1.00403047 //是否为$
00402FE8 |. 80FB 78 CMP BL,78
00402FEB |. 74 5A JE SHORT pbobily1.00403047 //是否为x
00402FED |. 80FB 58 CMP BL,58
00402FF0 |. 74 55 JE SHORT pbobily1.00403047 //是否为X
00402FF2 |. 80FB 30 CMP BL,30
00402FF5 |. 75 13 JNZ SHORT pbobily1.0040300A //是否为0,都不是则跳
00402FF7 |. 8A1E MOV BL,BYTE PTR DS:[ESI]
00402FF9 |. 46 INC ESI
00402FFA |. 80FB 78 CMP BL,78
00402FFD |. 74 48 JE SHORT pbobily1.00403047
00402FFF |. 80FB 58 CMP BL,58
00403002 |. 74 43 JE SHORT pbobily1.00403047
00403004 |. 84DB TEST BL,BL //跳到这里
00403006 |. 74 20 JE SHORT pbobily1.00403028
00403008 |. EB 04 JMP SHORT pbobily1.0040300E //跳
0040300A |> 84DB TEST BL,BL
0040300C |. 74 2D JE SHORT pbobily1.0040303B
0040300E |> 80EB 30 /SUB BL,30 //BL-30
00403011 |. 80FB 09 |CMP BL,9 //数字和9比较
00403014 |. 77 25 |JA SHORT pbobily1.0040303B //>9则跳
00403016 |. 39F8 |CMP EAX,EDI
00403018 |. 77 21 |JA SHORT pbobily1.0040303B //大于0CCCCCCC则跳
0040301A |. 8D0480 |LEA EAX,DWORD PTR DS:[EAX+EAX*4> //和下一句一起看
0040301D |. 01C0 |ADD EAX,EAX //EAX*10,就是左移一位
0040301F |. 01D8 |ADD EAX,EBX //EAX+EBX,就是转换成10进制然后相加
00403021 |. 8A1E |MOV BL,BYTE PTR DS:[ESI] //取下一位
00403023 |. 46 |INC ESI //ESI减一位
00403024 |. 84DB |TEST BL,BL //BL是否为0,即是否还有数
00403026 |.^ 75 E6 \JNZ SHORT pbobily1.0040300E //有的话则循环取序列号
00403028 |> FECD DEC CH
0040302A |. 74 09 JE SHORT pbobily1.00403035
0040302C |. 85C0 TEST EAX,EAX
0040302E |. 7D 4E JGE SHORT pbobily1.0040307E //到这里跳
00403030 |. EB 09 JMP SHORT pbobily1.0040303B
00403032 |> 46 INC ESI
00403033 |. EB 06 JMP SHORT pbobily1.0040303B
00403035 |> F7D8 NEG EAX
00403037 |. 7E 45 JLE SHORT pbobily1.0040307E
00403039 |. 78 43 JS SHORT pbobily1.0040307E
0040303B |> 5B POP EBX ; Default case of switch 0040305B
0040303C |. 29DE SUB ESI,EBX
0040303E |. EB 41 JMP SHORT pbobily1.00403081
00403040 |> FEC5 INC CH
00403042 |> 8A1E MOV BL,BYTE PTR DS:[ESI]
00403044 |. 46 INC ESI
00403045 |.^ EB C3 JMP SHORT pbobily1.0040300A
00403047 |> BF FFFFFF0F MOV EDI,0FFFFFFF
0040304C |. 8A1E MOV BL,BYTE PTR DS:[ESI]
0040304E |. 46 INC ESI
0040304F |. 84DB TEST BL,BL
00403051 |.^ 74 DF JE SHORT pbobily1.00403032
00403053 |> 80FB 61 /CMP BL,61
00403056 |. 72 03 |JB SHORT pbobily1.0040305B
00403058 |. 80EB 20 |SUB BL,20
0040305B |> 80EB 30 |SUB BL,30 ; Switch (cases 30..46)
0040305E |. 80FB 09 |CMP BL,9
00403061 |. 76 0B |JBE SHORT pbobily1.0040306E
00403063 |. 80EB 11 |SUB BL,11
00403066 |. 80FB 05 |CMP BL,5
00403069 |.^ 77 D0 |JA SHORT pbobily1.0040303B
0040306B |. 80C3 0A |ADD BL,0A ; Cases 41 ('A'),42 ('B'),43 ('C'),44 ('D'),45 ('E'),46 ('F') of switch 0040305B
0040306E |> 39F8 |CMP EAX,EDI ; Cases 30 ('0'),31 ('1'),32 ('2'),33 ('3'),34 ('4'),35 ('5'),36 ('6'),37 ('7'),38 ('8'),39 ('9') of switch 0040305B
00403070 |.^ 77 C9 |JA SHORT pbobily1.0040303B
00403072 |. C1E0 04 |SHL EAX,4
00403075 |. 01D8 |ADD EAX,EBX
00403077 |. 8A1E |MOV BL,BYTE PTR DS:[ESI]
00403079 |. 46 |INC ESI
0040307A |. 84DB |TEST BL,BL
0040307C |.^ 75 D5 \JNZ SHORT pbobily1.00403053
0040307E |> 59 POP ECX //跳到这里
0040307F |. 31F6 XOR ESI,ESI //ESI清零
00403081 |> 8932 MOV DWORD PTR DS:[EDX],ESI
00403083 |. 5F POP EDI
00403084 |. 5E POP ESI
00403085 |. 5B POP EBX
00403086 \. C3 RETN //返回
由于机器码和序列号同样通过这段代码转换成16进制,因此不再赘述。
游侠已经作出了这个注册机,大家可以去http://www.5icrack.com/bbs/viewthread.php?tid=76063&extra=page%3D1下载,这里简单提一下
VB注册机:
Dim x, z, a, b, m As String
Private Sub Command1_Click()
x = Text1.Text
If x = "" Then
MsgBox "请输入序列号^_^", 64, "注意"
Else
b = x * 2 ^ 3
y = Val(b) + 8
Text2.Text = y
End If
End Sub