10001011 F2:AE REPNE SCAS
BYTE PTR ES:[EDI]
//這兒是看你的註冊碼長是否為8
//repne scas 是對串進行掃描,直到為0,每一次ecx將-1
10001013 F7D1 NOT ECX
10001015 49 DEC ECX =====>ecx=註冊碼長
10001016 83F9 08 CMP ECX,8
10001019 74 07 JE SHORT apgr.10001022
===>跳到正確的地方,我的推理
如果註冊碼正確,eax肯定不等於0
1000101B 32C0 XOR AL,AL
1000101D 5F POP EDI
1000101E 5E POP ESI
1000101F 5D POP EBP
10001020 5B POP EBX
10001021 C3 RETN
********好了,這是註冊碼部分了******
10001022 8A06 MOV AL,BYTE PTR
DS:[ESI]
10001024 3C 56 CMP AL,56
10001026 74 0B JE SHORT apgr.10001033
10001028 3C 76 CMP AL,76
1000102A 74 07 JE SHORT apgr.10001033
註冊碼第一位必須為“v”或者“V”,否則,嘿嘿!
1000102C 32C0 XOR AL,AL
1000102E 5F POP EDI
1000102F 5E POP ESI
10001030 5D POP EBP
10001031 5B POP EBX
10001032 C3 RETN
10001033 8A46 01 MOV AL,BYTE PTR DS:[ESI+1]
10001036 3C 52 CMP AL,52
10001038 74 0B JE SHORT apgr.10001045
1000103A 3C 72 CMP AL,72
1000103C 74 07 JE SHORT apgr.10001045
註冊碼第二位必須為“r”或者“R”,否則,嘿嘿!
1000103E 32C0 XOR AL,AL
10001040 5F POP EDI
10001041 5E POP ESI
10001042 5D POP EBP
10001043 5B POP EBX
10001044 C3 RETN
:10001045 B902000000 mov ecx,
00000002
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:1000106C(C)
|
:1000104A 0FBE0431 movsx
eax, byte ptr [ecx+esi]
:1000104E 83C0CF
add eax, FFFFFFCF(-0x31)
[coloe=red]要求註冊碼必須在0x31..0x39之間
:10001051 8D14D2
lea edx, dword ptr [edx+8*edx]
:10001054 83F808
cmp eax, 00000008
:10001057 7759
ja 100010B2========>出錯了
:10001059 FF2485BC100010 jmp dword ptr [4*eax+100010BC]
:10001060 42
inc edx
:10001061 42
inc edx
:10001062 42
inc edx
:10001063 42
inc edx
:10001064 42
inc edx
:10001065 42
inc edx
:10001066 42
inc edx
:10001067 42
inc edx
:10001068 41
inc ecx
:10001069 83F908
cmp ecx, 00000008
:1000106C 7CDC
jl 1000104A
medx為錯誤的註冊碼算出的結果
:1000106E A1A0050110 mov eax,
dword ptr [100105A0]
:10001073 83C9FF
or ecx, FFFFFFFF
:10001076 33ED
xor ebp, ebp
:10001078 33F6
xor esi, esi
:1000107A 8D989A000000 lea ebx, dword
ptr [eax+0000009A]
:10001080 33C0
xor eax, eax
:10001082 8BFB
mov edi, ebx
:10001084 F2
repnz
:10001085 AE
scasb
:10001086 F7D1
not ecx
:10001088 49
dec ecx
:10001089 741C
je 100010A7
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:100010A5(C)
由RegisterID計算的正確的註冊碼的值
|
:1000108B 660FBE0433 movsx ax,
byte ptr [ebx+esi]
:10001090 8BCE
mov ecx, esi
:10001092 8BFB
mov edi, ebx
:10001094 D3E0
shl eax, cl
:10001096 83C9FF
or ecx, FFFFFFFF
:10001099 03E8
add ebp, eax
:1000109B 33C0
xor eax, eax
:1000109D 46
inc esi
:1000109E F2
repnz
:1000109F AE
scasb
:100010A0 F7D1
not ecx
:100010A2 49
dec ecx
:100010A3 3BF1
cmp esi, ecx
:100010A5 72E4
jb 1000108B
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:10001089(C)
|
比較,必須相等喲!
:100010A7 663BD5
cmp dx, bp
:100010AA 0F94C0
sete al
:100010AD 5F
pop edi
:100010AE 5E
pop esi
:100010AF 5D
pop ebp
:100010B0 5B
pop ebx
:100010B1 C3
ret