簡單演算法――熱鍵大師1.13

看雪資料發表於2003-03-06

簡單演算法――熱鍵大師1.13


下載地址:http://windowshelp.myetang.com/
軟體大小: 680K

【軟體簡介】:《熱鍵大師》是一款鍵盤輔助類軟體,它除了具備了同類軟體的功能外,還能夠實現‘熱鍵鎖屏’,‘熱鍵貼上’等功能。
此外本軟體採用了低階鍵盤鉤子技術,使到系統資源消耗降到最低。即使你設定了100個(如果有那麼多!呵呵),你的系統一點都不會慢下來。有了《熱鍵大師》,讓你的滑鼠一邊涼快去吧!!
 
【軟體限制】:15次使用限制。註冊不收費。作者17歲,正在讀高二。佩服!

【作者宣告】:小弟初學Crack,只是對 crack 感興趣,沒有其它目的。失誤之處敬請各大俠賜教!

【破解工具】:TRW2000娃娃修改版、FI2.5、UPXWin、W32Dasm黃金版

―――――――――――――――――――――――――――――
【過    程】:


雖然軟體是自由註冊,但我還是解了它,做破解重要的是不斷的練習!

--------------------------------------------------------
一、脫殼


用FI看 熱鍵大師.exe是UPX 1.07殼。用UPXWin脫之,341K->1.17M。Delphi編寫。

--------------------------------------------------------
二、反彙編


填好試煉資訊:
使用者名稱:fly
註冊碼:13572468


作者很誠實,關鍵資訊一目瞭然。^-^

:004B4926 E83116F9FF              call 00445F5C
:004B492B 837DFC00                cmp dword ptr [ebp-04], 00000000
                                 ====>沒填使用者名稱?

:004B492F 750F                    jne 004B4940

* Possible StringData Ref from Code Obj ->"請輸入使用者名稱"
                                 |
:004B4931 B8944A4B00              mov eax, 004B4A94
:004B4936 E809A7F8FF              call 0043F044
:004B493B E9FE000000              jmp 004B4A3E

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004B492F(C)
|
:004B4940 8D55F8                  lea edx, dword ptr [ebp-08]
:004B4943 8B8370040000            mov eax, dword ptr [ebx+00000470]
:004B4949 E80E16F9FF              call 00445F5C
:004B494E 837DF800                cmp dword ptr [ebp-08], 00000000
                                 ====>沒填註冊碼?

:004B4952 750F                    jne 004B4963

* Possible StringData Ref from Code Obj ->"請輸入註冊碼"
                                 |
:004B4954 B8AC4A4B00              mov eax, 004B4AAC
:004B4959 E8E6A6F8FF              call 0043F044
:004B495E E9DB000000              jmp 004B4A3E
…………

:004B497E E8D915F9FF              call 00445F5C
:004B4983 8B55EC                  mov edx, dword ptr [ebp-14]
:004B4986 8D4DF0                  lea ecx, dword ptr [ebp-10]
:004B4989 8BC3                    mov eax, ebx
:004B498B E8B4FEFFFF              call 004B4844
                                 ====>演算法CALL

:004B4990 8B55F0                  mov edx, dword ptr [ebp-10]
:004B4993 58                      pop eax
:004B4994 E86F02F5FF              call 00404C08
                                 ====>比較CALL

:004B4999 0F8588000000            jne 004B4A27
                                 ====>跳則OVER!

* Possible StringData Ref from Code Obj ->"感謝您對本軟體的支援"
                                 ====>呵呵,勝利女神!

:004B499F B8C44A4B00              mov eax, 004B4AC4
:004B49A4 E89BA6F8FF              call 0043F044

* Possible StringData Ref from Code Obj ->"熱鍵大師 v1.13(註冊給:"
                                 |
:004B49A9 68E44A4B00              push 004B4AE4
:004B49AE 8D55E4                  lea edx, dword ptr [ebp-1C]
:004B49B1 8B836C040000            mov eax, dword ptr [ebx+0000046C]
:004B49B7 E8A015F9FF              call 00445F5C
:004B49BC FF75E4                  push [ebp-1C]
:004B49BF 680C4B4B00              push 004B4B0C
:004B49C4 8D45E8                  lea eax, dword ptr [ebp-18]
:004B49C7 BA03000000              mov edx, 00000003
:004B49CC E8B301F5FF              call 00404B84
:004B49D1 8B55E8                  mov edx, dword ptr [ebp-18]
:004B49D4 8B8344040000            mov eax, dword ptr [ebx+00000444]
:004B49DA E8AD15F9FF              call 00445F8C
:004B49DF 8D55E0                  lea edx, dword ptr [ebp-20]
:004B49E2 8B836C040000            mov eax, dword ptr [ebx+0000046C]
:004B49E8 E86F15F9FF              call 00445F5C
:004B49ED 8B45E0                  mov eax, dword ptr [ebp-20]
:004B49F0 50                      push eax

* Possible StringData Ref from Code Obj ->"USERNAME"
                                 |
:004B49F1 B9184B4B00              mov ecx, 004B4B18

* Possible StringData Ref from Code Obj ->"Pro"
                                 |
:004B49F6 BA2C4B4B00              mov edx, 004B4B2C
:004B49FB 8BC3                    mov eax, ebx
:004B49FD E896080000              call 004B5298
:004B4A02 8D55DC                  lea edx, dword ptr [ebp-24]
:004B4A05 8B8370040000            mov eax, dword ptr [ebx+00000470]
:004B4A0B E84C15F9FF              call 00445F5C
:004B4A10 8B45DC                  mov eax, dword ptr [ebp-24]
:004B4A13 50                      push eax

* Possible StringData Ref from Code Obj ->"CODE"
                                 |
:004B4A14 B9384B4B00              mov ecx, 004B4B38

* Possible StringData Ref from Code Obj ->"Pro"
                                 |
:004B4A19 BA2C4B4B00              mov edx, 004B4B2C
:004B4A1E 8BC3                    mov eax, ebx
:004B4A20 E873080000              call 004B5298
:004B4A25 EB17                    jmp 004B4A3E

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004B4999(C)
|

* Possible StringData Ref from Code Obj ->"註冊碼不正確,請重新輸入"
                                 ====>BAD BOY!

:004B4A27 B8484B4B00              mov eax, 004B4B48

--------------------------------------------------------
F8進入演算法CALL:004B498B  call 004B4844


* Referenced by a CALL at Addresses:
|:004AFCD5   , :004B498B  
|
:004B4844 55                      push ebp
:004B4845 8BEC                    mov ebp, esp
:004B4847 83C4EC                  add esp, FFFFFFEC
:004B484A 53                      push ebx
:004B484B 56                      push esi
:004B484C 33DB                    xor ebx, ebx
:004B484E 895DEC                  mov dword ptr [ebp-14], ebx
:004B4851 895DF4                  mov dword ptr [ebp-0C], ebx
:004B4854 894DF8                  mov dword ptr [ebp-08], ecx
:004B4857 8955FC                  mov dword ptr [ebp-04], edx
:004B485A 8B45FC                  mov eax, dword ptr [ebp-04]
:004B485D E84A04F5FF              call 00404CAC
:004B4862 33C0                    xor eax, eax
:004B4864 55                      push ebp
:004B4865 68EF484B00              push 004B48EF
:004B486A 64FF30                  push dword ptr fs:[eax]
:004B486D 648920                  mov dword ptr fs:[eax], esp
:004B4870 C745F053469103          mov [ebp-10], 03914653
                                 ====>03914653移入[EBP-10]
注意此數!此數應該是作者的幸運數。呵呵。03914653(H)=十進位制59852371

:004B4877 8D45F4                  lea eax, dword ptr [ebp-0C]
:004B487A 8B55FC                  mov edx, dword ptr [ebp-04]
:004B487D E82200F5FF              call 004048A4
:004B4882 8B45F4                  mov eax, dword ptr [ebp-0C]
:004B4885 E83A02F5FF              call 00404AC4
                                 ====>取使用者名稱長度

:004B488A 8BD8                    mov ebx, eax
:004B488C 85DB                    test ebx, ebx
                                 ====>? EBX=3

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004B481D(C)
|
:004B488E 7E2E                    jle 004B48BE
:004B4890 BE01000000              mov esi, 00000001

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004B48BC(C)
|
:004B4895 8D45EC                  lea eax, dword ptr [ebp-14]
:004B4898 50                      push eax
:004B4899 B901000000              mov ecx, 00000001
:004B489E 8BD6                    mov edx, esi
:004B48A0 8B45F4                  mov eax, dword ptr [ebp-0C]
:004B48A3 E87404F5FF              call 00404D1C
:004B48A8 8B45EC                  mov eax, dword ptr [ebp-14]
                                 ====>fly移入EAX

:004B48AB E80C04F5FF              call 00404CBC
:004B48B0 8A00                    mov al, byte ptr [eax]
                                 ====>依次取使用者名稱。
                                 ====>1、?AL=66 即f的HEX值  
                                 ====>2、?AL=6C 即l的HEX值
                                 ====>3、?AL=79 即y的HEX值

:004B48B2 25FF000000              and eax, 000000FF
:004B48B7 0145F0                  add dword ptr [ebp-10], eax
====>[EBP-10]的初始值是03914653,依次與使用者名稱字元的HEX值相加!
                                 ====>1、03914653+66=39146B9
                                 ====>2、 39146B9+6C=3914725
                                 ====>3、 3914725+79=391479E

                                391479E(H)=十進位制59852702!這就是真碼!!
                                 呵呵,這是分析過的演算法中最簡單的一個了。

:004B48BA 46                      inc esi
:004B48BB 4B                      dec ebx
:004B48BC 75D7                    jne 004B4895
                                 ====>迴圈

―――――――――――――――――――――――――――――

F8進入比較CALL:4B4994  call 00404C08


:00404C08 53                      push ebx
:00404C09 56                      push esi
:00404C0A 57                      push edi
:00404C0B 89C6                    mov esi, eax
:00404C0D 89D7                    mov edi, edx
:00404C0F 39D0                    cmp eax, edx
                                 ====>D EAX=試煉碼!
                                 ====>D EDX=真碼!!

:00404C11 0F848F000000            je 00404CA6

―――――――――――――――――――――――――――――

【KeyMake之記憶體序號產生器】:


中斷地址:4B4994
中斷次數:1
第一位元組:E8
指令長度:5

中斷地址:404C0F
中斷次數:1
第一位元組:39
指令長度:2

記憶體方式:EDX

―――――――――――――――――――――――――――――

【註冊資訊儲存】:


[HKEY_LOCAL_MACHINE\Software\HotKey Master\propertiy]
"Times"="2"   使用次數!

"USERNAME"="fly"
"CODE"="59852702"

―――――――――――――――――――――――――――――

【整       理】:


使用者名稱:fly
註冊碼:59852702


―――――――――――――――――――――――――――――


   
                   Cracked By 巢水工作坊――fly【OCN】

                          2003-1-31  14:00

相關文章