日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OllyDbg 使用笔记 (二)

發布時間:2025/3/21 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OllyDbg 使用笔记 (二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

OllyDbg 使用筆記 (二)


參考

書:《加密與解密》

視頻:小甲魚 解密系列 視頻


TraceMe.exe下載地址:http://pan.baidu.com/s/1c0s2twO


TraceMe.exe 程序破解


程序見下圖。破解目標:使我們可以驗證成功。


圖片1




因為輸入肯定會用到獲取對話框文本的API。所以在反匯編面板 按Ctrl+G搜索GetDlgItemTextA,試試看。


圖片2




也能夠按Ctrl+N 打開程序的導入表。

查看程序導入了那些函數,選中GetDlgItemTextA,右鍵 選擇在反匯編窗體中尾隨輸入函數。


圖片3




能夠看到搜索到了對應的API函數。

按F2下斷點。再按Ctrl+F2 又一次加載。再按F9,會先彈出窗體。任意寫入username和序列號,按Check。之后就會執行到斷點處。



接著一邊按F8,一邊觀察以下的信息面板的提示信息,直到發現前面填的username和序列號。

圖片4




004011D7 . 8D5424 4C lea edx, dword ptr [esp+4C] 004011DB . 53 push ebx 004011DC . 8D8424 A00000>lea eax, dword ptr [esp+A0] 004011E3 . 52 push edx 004011E4 . 50 push eax 004011E5 . E8 56010000 call 00401340 004011EA . 8B3D BC404000 mov edi, dword ptr [<&USER32.GetDlg>; USER32.GetDlgItem 004011F0 . 83C4 0C add esp, 0C 004011F3 . 85C0 test eax, eax 004011F5 . 74 37 je short 0040122E


觀察此時的代碼,call 00401340 前面有3個PUSH,是00401340這個函數的參數,各自是username,序列號和序列號長度。

還有以下的test eax,eax 值得注意,函數的返回值都是儲存在eax中的。

能夠從上面得出call 00401340 就是推斷輸入的username和序列號是否正確的函數。


暴力破解


接著按F8接著執行。執行到 ?je ? ?short 0040122E ?處停下。

但我們輸入的是錯誤的時候,我們能夠發現這個地方 je 是跳轉的,我們能夠通過在右邊改動標志寄存器(點擊Z 后面的1)讓je不跳轉 或者直接把?je ? ?short 0040122E改成 nop(選中,按下空格鍵輸入nop),進行暴力破解。


圖片5



圖片6




然后執行就能夠看到“恭喜你成功”


獲取正確序列號


執行到

004011E5 ? ? ? ? . ?E8 56010000 ? call ? ?00401340

后按F7進入函數,能夠看到以下的代碼


00401340 /$ 55 push ebp 00401341 |. 8B6C24 0C mov ebp, dword ptr [esp+C] 00401345 |. 56 push esi 00401346 |. 57 push edi 00401347 |. 8B7C24 18 mov edi, dword ptr [esp+18] 0040134B |. B9 03000000 mov ecx, 3 00401350 |. 33F6 xor esi, esi 00401352 |. 33C0 xor eax, eax 00401354 |. 3BF9 cmp edi, ecx 00401356 |. 7E 21 jle short 00401379 00401358 |. 53 push ebx 00401359 |> 83F8 07 /cmp eax, 7 0040135C |. 7E 02 |jle short 00401360 0040135E |. 33C0 |xor eax, eax 00401360 |> 33D2 |xor edx, edx 00401362 |. 33DB |xor ebx, ebx 00401364 |. 8A1429 |mov dl, byte ptr [ecx+ebp] 00401367 |. 8A98 30504000 |mov bl, byte ptr [eax+405030] 0040136D |. 0FAFD3 |imul edx, ebx 00401370 |. 03F2 |add esi, edx 00401372 |. 41 |inc ecx 00401373 |. 40 |inc eax 00401374 |. 3BCF |cmp ecx, edi 00401376 |.^ 7C E1 \jl short 00401359 00401378 |. 5B pop ebx 00401379 |> 56 push esi ; /<%ld> 0040137A |. 68 78504000 push 00405078 ; |Format = "%ld" 0040137F |. 55 push ebp ; |s 00401380 |. FF15 9C404000 call dword ptr [<&USER32.wsprintfA>; \wsprintfA 00401386 |. 8B4424 1C mov eax, dword ptr [esp+1C] 0040138A |. 83C4 0C add esp, 0C 0040138D |. 55 push ebp ; /String2 0040138E |. 50 push eax ; |String1 0040138F |. FF15 04404000 call dword ptr [<&KERNEL32.lstrcmp>; \lstrcmpA 00401395 |. F7D8 neg eax 00401397 |. 1BC0 sbb eax, eax 00401399 |. 5F pop edi 0040139A |. 5E pop esi 0040139B |. 40 inc eax 0040139C |. 5D pop ebp 0040139D \. C3 retn

? ? 我們能夠發現call ? ?dword ptr [<&KERNEL32.lstrcmp>; lstrcmp指令。說明前面的兩參數一定是用來比較的,一個是自己寫的錯誤序列號,一個是這個函數計算出來的正確的序列號。

? ? 按F8執行到call ? ?dword ptr [<&KERNEL32.lstrcmp>; 處。我們能夠發現ebp存放的是“6854”字符串的地址。eax就是我們寫的字符串“12345678”的地址(輸入的username為billvsme,序列號為12345678)。

從而我們就能夠僅僅到username“billvsme”的序列號為6854。






總結

以上是生活随笔為你收集整理的OllyDbg 使用笔记 (二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。