標 題: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