|
論壇說明 | 標記討論區已讀 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
主題工具 | 顯示模式 |
2004-01-10, 10:30 PM | #1 |
榮譽會員
|
HotkeyMaster算法分析----菜鳥級
軟體名稱:HotkeyMaster
下載位址:http://www.core-project.com/hotkeyma...tkeyMaster.exe 軟體介紹:如軟體名.今天在ROR論壇看到有網友原創了該軟體的使用教程,喈軟體如癡的我自然不肯放過.下載回來後發現確實順手,可需要註冊----不爽. 使用工具:FI,W32DASM,OllyDbg 破解程序: 1.使用FI檢視軟體是否加殼和所使用的編程語言 2.萬幸,軟體並未加殼 3.執行W32DASM,搜尋軟體註冊失敗後提示的出錯資訊. 啟動OllyDbg,F3載入Hotkey Master.利用我們在W32DASM中分析找到的關鍵CALL-004144C1設斷. 或者點擊滑鼠右鍵"Search for"->"All referenced text strings"搜尋"The key you entered is not correct."向上搜尋同樣可以找到斷點 :004144C1 E83FE7FFFF call 00412C05 ----嗯,就是你了!!!進入分析!! :004144C6 83C410 add esp, 00000010 :004144C9 3BC7 cmp eax, edi :004144CB 7545 jne 00414512 :004144CD 8D85E0FEFFFF lea eax, dword ptr [ebp+FFFFFEE0] :004144D3 50 push eax :004144D4 FF35949E4200 push dword ptr [00429E94] :004144DA FF35809E4200 push dword ptr [00429E80] :004144E0 E835BCFFFF call 0041011A :004144E5 8D45E0 lea eax, dword ptr [ebp-20] :004144E8 50 push eax :004144E9 FF35989E4200 push dword ptr [00429E98] :004144EF FF35809E4200 push dword ptr [00429E80] :004144F5 E820BCFFFF call 0041011A :004144FA 83C418 add esp, 00000018 :004144FD C605F8B4430001 mov byte ptr [0043B4F8], 01 :00414504 56 push esi :00414505 FF35749E4200 push dword ptr [00429E74] * Possible StringData Ref from Data Obj ->"Thank you for registering Hotkey " ----註冊成功信息 ->"Master." | :0041450B 68849F4200 push 00429F84 :00414510 EB0C jmp 0041451E * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:004144CB(C) | :00414512 56 push esi :00414513 FF35749E4200 push dword ptr [00429E74] * Possible StringData Ref from Data Obj ->"The key you entered is not correct." ----這裡是出錯資訊,向上搜尋關鍵CALL和跳轉 | :00414519 68609F4200 push 00429F60 . . . . (略) . . . . 00412C05 /$ 55 PUSH EBP ----進入004144C1時停在這裡 00412C06 |. 8BEC MOV EBP,ESP 00412C08 |. 51 PUSH ECX 00412C09 |. FF75 08 PUSH DWORD PTR SS:[EBP+8] 00412C0C |. 8365 FC 00 AND DWORD PTR SS:[EBP-4],0 00412C10 |. E8 BB230000 CALL Hotkey_M.00414FD0 00412C15 |. 33D2 XOR EDX,EDX 00412C17 |. 59 POP ECX 00412C18 |. 85C0 TEST EAX,EAX 00412C1A |. 7E 2E JLE SHORT Hotkey_M.00412C4A 00412C1C |. 53 PUSH EBX 00412C1D |. 56 PUSH ESI 00412C1E |. 57 PUSH EDI 00412C1F |. 8D70 0E LEA ESI,DWORD PTR DS:[EAX+E] EAX=用戶名長度 SO ESI=EAX+Eh 00412C22 |> 8B4D 08 /MOV ECX,DWORD PTR SS:[EBP+8] ----從這裡開始是注 冊算法 00412C25 |. 0FBE0C0A |MOVSX ECX,BYTE PTR DS:[EDX+ECX] ----依次計算用戶名 的各個字元ASCII 00412C29 |. 8D79 0B |LEA EDI,DWORD PTR DS:[ECX+B] ----EDI=用戶名長度+Bh 00412C2C |. 8D59 03 |LEA EBX,DWORD PTR DS:[ECX+3] ----EBX=用戶名長度+3h 00412C2F |. 0FAFFB |IMUL EDI,EBX ----EDI*EBX的值放在 EDI 00412C32 |. 0FAFF9 |IMUL EDI,ECX ----EDI*ECX的值放在 EDI 00412C35 |. 0FAFFE |IMUL EDI,ESI ----EDI*ESI的值放在 EDI 00412C38 |. 8D48 05 |LEA ECX,DWORD PTR DS:[EAX+5] 00412C3B |. 0FAFF9 |IMUL EDI,ECX ----EDI*ECX的值放在 EDI 00412C3E |. 017D FC |ADD DWORD PTR SS:[EBP-4],EDI 00412C41 |. 42 |INC EDX ----EDX+1 00412C42 |. 46 |INC ESI ----ESI+1 00412C43 |. 3BD0 |CMP EDX,EAX ----算完了沒有?沒有 !那就繼續從00412C25開始 00412C45 |.^7C DB \JL SHORT Hotkey_M.00412C22 ----循環計算 00412C47 |. 5F POP EDI 00412C48 |. 5E POP ESI 00412C49 |. 5B POP EBX 00412C4A |> 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ----這裡儲存真註冊碼的十六 進制 00412C4D |. C9 LEAVE 00412C4E \. C3 RETN 4.總結 註冊碼通過用戶名計算,將依次計算的結果相加再轉換為十進制: 用戶名=N 註冊碼=S 用戶名長度=X 我們假設用戶名為wolflh S1=((N1+3h)*(N1+Bh)*N1*(X+5h))*(X+5h) S2=((N1+3h)*(N1+Bh)*N1*(X+5h+1))*(X+5h) S3=((N1+3h)*(N1+Bh)*N1*(X+5h+2))*(X+5h) S4=((N1+3h)*(N1+Bh)*N1*(X+5h+3))*(X+5h) S5=((N1+3h)*(N1+Bh)*N1*(X+5h+4))*(X+5h) S6=((N1+3h)*(N1+Bh)*N1*(X+5h+5))*(X+5h) S=S1+S2+S3+S4+S5+S6 軟體註冊成功後會在[HKEY_CURRENT_USER\Software\Mario Knok\Hotkey Master]下增加兩個鍵值 "Registered Name"="wolflh" "Registered Key"="2151786450" 刪除這兩個鍵值,又變成未註冊版. 恕小子我剛加入"風飄雪",很少寫過破文.對彙編知識和語言的誰知幾乎為零,所以大部分算法都是自己亂猜的.分析如有錯誤,歡迎指出. |
送花文章: 3,
|