cardIt V1.2

看雪資料發表於2015-11-15

標 題:cardIt V1.2

發信人:飛狐 

時 間:2002/09/01 08:22pm 

詳細資訊: 



萬丈高樓平地起,學PJ先打好基礎,最好下載後自己先練習追蹤一下,否則只是come easy go easy.
cardIt V1.2是專業的名片設計系統,執行於Windows95/98/NT4平臺,它不僅適應於名片設計,還適應於各種證件、卡片的製作。
前面的過程,我想你應該瞭解吧。又給版主添麻煩了。~~~~~~~

:004156B9 E840FC0200              call 004452FE
:004156BE 8BCE                    mov ecx, esi
:004156C0 E82B000000              call 004156F0此處要按F8進入。
:004156C5 85C0                    test eax, eax
:004156C7 6A00                    push 00000000
:004156C9 6A00                    push 00000000
:004156CB 7412                    je 004156DF 為零則跳轉到失敗處
***************************
:004156F0 64A100000000            mov eax, dword ptr fs:[00000000]
                           
:004156F6 6AFF                    push FFFFFFFF
:004156F8 68D8834600              push 004683D8
:004156FD 50                      push eax
:004156FE 64892500000000          mov dword ptr fs:[00000000], esp
:00415705 83EC38                  sub esp, 00000038
:00415708 56                      push esi
:00415709 8B74244C                mov esi, dword ptr [esp+4C]
:0041570D 837EF810                cmp dword ptr [esi-08], 00000010
[esi-08]是你所輸入的註冊碼的長度。如果不是16個就跳.
:00415711 0F85C0000000            jne 004157D7
:00415717 BAF7FFFFFF              mov edx, FFFFFFF7
:0041571C 33C9                    xor ecx, ecx
:0041571E 8D4609                  lea eax, dword ptr [esi+09]此處是把你所輸入的註冊碼的首地址+9賦值給EAX,也就是取第10位數字
:00415721 2BD6                    sub edx, esi

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00415742(C)
|
:00415723 0FBE70F9                movsx esi, byte ptr [eax-07]此處首先是取第三位數字。
:00415727 83EE30                  sub esi, 00000030把其ASCII值減30
:0041572A 89740C04                mov dword ptr [esp+ecx+04], esi存入此處,需要注意此處地址每次地址都不一樣。
:0041572E 83C104                  add ecx, 00000004 ECX+4
:00415731 0FBE30                  movsx esi, byte ptr [eax]見上。
:00415734 83EE30                  sub esi, 00000030把其ASCII值減30
:00415737 40                      inc eax地址指標加1
:00415738 89740C1C                mov dword ptr [esp+ecx+1C], esi存入此處,需要注意此處地址每次地址都不一樣。
:0041573C 8D3402                  lea esi, dword ptr [edx+eax]
:0041573F 83FE07                  cmp esi, 00000007是否迴圈7次。
:00415742 7CDF                    jl 00415723低於繼續迴圈,否則進行比較。
上面的取所輸入的註冊碼的的順序是,第3位、第10位、第4位、第11位、第5位、
第12位、第6位、第13位、第7位、第14位、第8位、第15位、第9位、第16位。
而其ASCII值減30存入地址依次是:70EB20、70EB3C、70EB24、70EB40、70EB28、
70EB44、70EB2C、70EB48、70EB30、70EB4C、70EB34、70EB50、70EB38、70EB54
:00415744 8B442430                mov eax, dword ptr [esp+30]
:00415748 8B4C2404                mov ecx, dword ptr [esp+04]
:0041574C 03C1                    add eax, ecx
:0041574E 83F809                  cmp eax, 00000009
這一部分是第3位註冊碼與第14位註冊碼相加之和是否等於9
:00415751 0F8580000000            jne 004157D7不相同就跳到失敗處
:00415757 8B542428                mov edx, dword ptr [esp+28]
:0041575B 8B442408                mov eax, dword ptr [esp+08]
:0041575F 03D0                    add edx, eax
:00415761 83FA09                  cmp edx, 00000009
這一部分是第4位註冊碼與第12位註冊碼相加之和是否等於9
:00415764 7571                    jne 004157D7不相同就跳到失敗處
:00415766 8B4C240C                mov ecx, dword ptr [esp+0C]
:0041576A 8B542434                mov edx, dword ptr [esp+34]
:0041576E 03D1                    add edx, ecx
:00415770 83FA09                  cmp edx, 00000009
這一部分是第5位註冊碼與第15位註冊碼相加之和是否等於9
:00415773 7562                    jne 004157D7不相同就跳到失敗處
:00415775 8B442410                mov eax, dword ptr [esp+10]
:00415779 8B4C242C                mov ecx, dword ptr [esp+2C]
:0041577D 03C8                    add ecx, eax
:0041577F 3BCA                    cmp ecx, edx
這一部分是第6位註冊碼與第13位註冊碼相加之和是否等於9
:00415781 7554                    jne 004157D7不相同就跳到失敗處
:00415783 8B542414                mov edx, dword ptr [esp+14]
:00415787 8B442420                mov eax, dword ptr [esp+20]
:0041578B 03C2                    add eax, edx
:0041578D 83F809                  cmp eax, 00000009
這一部分是第7位註冊碼與第10位註冊碼相加之和是否等於9
:00415790 7545                    jne 004157D7不相同就跳到失敗處
:00415792 8B4C2418                mov ecx, dword ptr [esp+18]
:00415796 8B542424                mov edx, dword ptr [esp+24]
:0041579A 03D1                    add edx, ecx
:0041579C 3BD0                    cmp edx, eax
這一部分是第8位註冊碼與第11位註冊碼相加之和是否等於9
:0041579E 7537                    jne 004157D7不相同就跳到失敗處
:004157A0 8B44241C                mov eax, dword ptr [esp+1C]
:004157A4 8B4C2438                mov ecx, dword ptr [esp+38]
:004157A8 03C8                    add ecx, eax
:004157AA 83F909                  cmp ecx, 00000009
這一部分是第9位註冊碼與第16位註冊碼相加之和是否等於9
:004157AD 7528                    jne 004157D7不相同就跳到失敗處
:004157AF 8D4C244C                lea ecx, dword ptr [esp+4C]
:004157B3 C7442444FFFFFFFF        mov [esp+44], FFFFFFFF
:004157BB E8C9FD0200              call 00445589
:004157C0 B801000000              mov eax, 00000001 01是成功標誌。
:004157C5 5E                      pop esi
:004157C6 8B4C2438                mov ecx, dword ptr [esp+38]
:004157CA 64890D00000000          mov dword ptr fs:[00000000], ecx
:004157D1 83C444                  add esp, 00000044
:004157D4 C20400                  ret 0004
總結:
前兩位可以是任意字元,而後14位註冊碼的演算法是:
        第3位註冊碼+第14位註冊碼=9
        第4位註冊碼+第12位註冊碼=9
        第5位註冊碼+第15位註冊碼=9
        第6位註冊碼+第13位註冊碼=9
        第7位註冊碼+第10位註冊碼=9
        第8位註冊碼+第11位註冊碼=9
        第9位註冊碼+第16位註冊碼=9
如:$%00000009999999

相關文章