[ yjunzhao ]的Super Vidoe CD Verifier破解過程,註冊器我也寫出,到贏徵論壇去看 (4千字)

看雪資料發表於2002-02-07

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

相關文章