freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

ollydbg圖文入門教程資料(編輯修改稿)

2024-12-09 05:21 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 ItemTextA 或 GetWindowTextA 函數(shù)。還好,找到一個(gè) GetWindowTextA。在這個(gè)函數(shù)上右擊,在彈出菜單上選擇 “ 在每個(gè)參考上設(shè)置斷點(diǎn) ” ,我們會(huì)在 OllyDBG 窗口最下面的那個(gè)狀態(tài)欄里看到“ 已設(shè)置 2 個(gè)斷點(diǎn) ” 。另一種方法就是那個(gè) GetWindowTextA 函數(shù)上右擊,在彈出菜單上選擇 “ 查找輸入函數(shù)參考 ” (或者按回車鍵),將會(huì)出現(xiàn)下面的對(duì)話框: 看上圖,我們可以把兩條都設(shè)上斷點(diǎn)。這個(gè)程序只需在第一條指令設(shè)斷點(diǎn)就可以了。好,我們現(xiàn)在按前面提到的第一條方法,就是 “在每個(gè)參考上設(shè)置斷點(diǎn) ”,這樣上圖中的兩條指令都會(huì)設(shè)上斷點(diǎn)。斷點(diǎn)設(shè)好后我們轉(zhuǎn)到我們調(diào)試的程序上來(lái),現(xiàn)在我們?cè)诒晃覀冋{(diào)試的程序上點(diǎn)擊那個(gè) “Check It”按鈕,被 OllyDBG 斷下: 00401323 |. E8 4C010000 CALL JMP.amp。 。 GetWindowTextA 00401328 |. E8 A5000000 CALL 。 關(guān)鍵,要按 F7 鍵跟進(jìn)去 0040132D |. 3BC6 CMP EAX,ESI 。 比較 0040132F |. 75 42 JNZ SHORT 。 不等則完蛋 00401331 |. EB 2C JMP SHORT 00401333 |. 4E 6F 77 20 7 ASCII Now write a keyg 00401343 |. 65 6E 20 61 6 ASCII en and tut and y 00401353 |. 6F 75 27 72 6 ASCII ou39。re done.,0 0040135F | 6A 00 PUSH 0 。 Style = MB_OK|MB_APPLMODAL 00401361 |. 68 0F304000 PUSH 。 Title = Crudd39。s Crack Head 00401366 |. 68 33134000 PUSH 。 Text = Now write a keygen and tut and you39。re done. 0040136B |. FF75 08 PUSH DWORD PTR SS:[EBP+8] 。 hOwner 0040136E |. E8 19010000 CALL JMP.amp。 。 MessageBoxA 從上面的代碼,我們很容易看出 00401328 地址處的 CALL 是關(guān)鍵,必須仔細(xì)跟蹤。而注冊(cè)成功則會(huì)顯示一個(gè)對(duì)話框 ,標(biāo)題是 “Crudd39。s Crack Head”,對(duì)話框顯示的內(nèi)容是 “Now write a keygen and tut and you39。re done.”現(xiàn)在我按一下 F8,準(zhǔn)備步進(jìn)到 00401328 地址處的那條 CALL 指令后再按 F7 鍵跟進(jìn)去。等等,怎么回事?怎么按一下 F8 鍵跑到這來(lái)了: 00401474 $ FF25 2C204000 JMP DWORD PTR DS:[amp。 。 0040147A $ FF25 30204000 JMP DWORD PTR DS:[amp。] 。 00401480 $ FF25 1C204000 JMP DWORD PTR DS:[amp。] 。 00401486 $ FF25 20204000 JMP DWORD PTR DS:[amp。] 。 0040148C $ FF25 24204000 JMP DWORD PTR DS:[amp。] 。 原來(lái)是跳到另一個(gè)斷點(diǎn)了。這個(gè)斷點(diǎn)我們不需要,按一下 F2 鍵刪掉它吧。刪掉 00401474 地址處的斷點(diǎn)后,我再按 F8 鍵,呵,完了,跑到 的領(lǐng)空了??匆幌? OllyDBG 的標(biāo)題欄: “[CPU 主線程 , 模塊 USER32],跑到系統(tǒng)領(lǐng)空了, OllyDBG 反匯編窗口中顯示代碼是這樣: 77D3213C 6A 0C PUSH 0C 77D3213E 68 A021D377 PUSH 77D32143 E8 7864FEFF CALL 怎么辦?別急,我們按一下 ALT+F9 組合鍵,呵,回來(lái)了: 00401328 |. E8 A5000000 CALL 。 關(guān)鍵,要按 F7 鍵跟進(jìn)去 0040132D |. 3BC6 CMP EAX,ESI 。 比較 0040132F |. 75 42 JNZ SHORT 。 不等則完蛋 光標(biāo)停在 00401328 地址處的那條指令上?,F(xiàn)在我們按 F7 鍵跟進(jìn): 004013D2 /$ 56 PUSH ESI 。 ESI 入棧 004013D3 |. 33C0 XOR EAX,EAX 。 EAX 清零 004013D5 |. 8D35 C4334000 LEA ESI,DWORD PTR DS:[4033C4] 。 把注冊(cè)碼框中的數(shù)值送到 ESI 004013DB |. 33C9 XOR ECX,ECX 。 ECX 清零 004013DD |. 33D2 XOR EDX,EDX 。 EDX 清零 004013DF |. 8A06 MOV AL,BYTE PTR DS:[ESI] 。 把注冊(cè)碼中的每個(gè)字符送到 AL 004013E1 |. 46 INC ESI 。 指針加 1,指向下一個(gè)字符 004013E2 |. 3C 2D CMP AL,2D 。 把取得的字符與 16進(jìn)制值為 2D 的字符 (即“”)比較,這里主要用于判斷輸入的是不是負(fù)數(shù) 004013E4 |. 75 08 JNZ SHORT 。 不等則跳 004013E6 |. BA FFFFFFFF MOV EDX,1 。 如果輸入的是負(fù)數(shù),則把 1 送到 EDX,即 16 進(jìn)制 FFFFFFFF 004013EB |. 8A06 MOV AL,BYTE PTR DS:[ESI] 。 取 “”號(hào)后的第一個(gè)字符 004013ED |. 46 INC ESI 。 指針加 1,指向再下一個(gè)字符 004013EE | EB 0B JMP SHORT 004013F0 | 2C 30 SUB AL,30 。 每位字符減 16 進(jìn)制的 30,因?yàn)檫@里都是數(shù)字,如 1 的 ASCII 碼是 “31H”,減 30H 后為 1,即我們平時(shí)看到的數(shù)值 004013F2 |. 8D0C89 LEA ECX,DWORD PTR DS:[ECX+ECX*4] 。 把前面運(yùn)算后保存在 ECX中的結(jié)果乘 5 再送到 ECX 004013F5 |. 8D0C48 LEA ECX,DWORD PTR DS:[EAX+ECX*2] 。 每位字符運(yùn)算后的值與 2倍上一位字符運(yùn)算后值相加后送 ECX 004013F8 |. 8A06 MOV AL,BYTE PTR DS:[ESI] 。 取下一個(gè)字符 004013FA |. 46 INC ESI 。 指針加 1,指向再下一個(gè)字符 004013FB | 0AC0 OR AL,AL 004013FD |.^ 75 F1 JNZ SHORT 。 上面一條和這一條指令主要是用來(lái)判斷是否已把用戶輸入的注冊(cè)碼計(jì)算完 004013FF |. 8D040A LEA EAX,DWORD PTR DS:[EDX+ECX] 。 把 EDX中的值與經(jīng)過(guò)上面運(yùn)算后的 ECX 中值相加送到 EAX 00401402 |. 33C2 XOR EAX,EDX 。 把 EAX 與 EDX異或。如果我們輸入的是負(fù)數(shù),則此處功能就是把 EAX 中的值取反 00401404 |. 5E POP ESI 。 ESI出棧??吹竭@條和下一條指令,我們要考慮一下這個(gè) ESI 的值是哪里運(yùn)算得出的呢? 00401405 |. 81F6 53757A79 XOR ESI,797A7553 。 把 ESI 中的值與 797A7553H 異或 0040140B \. C3 RETN 這里留下了一個(gè)問(wèn)題:那個(gè) ESI 寄存器中的值是從哪運(yùn)算出來(lái)的?先不管這里,我們接著按 F8 鍵往下走,來(lái)到 0040140B 地址處的那條 RETN 指令(這里可以通過(guò)在調(diào)試選項(xiàng)的 “命令 ”標(biāo)簽中勾選 “使用 RET 代替 RETN”來(lái)更改返回指令的顯示方式),再按一下 F8,我們就走出 00401328 地址處的那個(gè) CALL 了?,F(xiàn)在我們回到了這里: 0040132D |. 3BC6 CMP EAX,ESI 。 比較 0040132F |. 75 42 JNZ SHORT 。 不等則完蛋 光標(biāo)停在了 0040132D 地址處的那條指令上。根據(jù)前面的分析,我們知道 EAX 中存放的是我們輸入的注冊(cè)碼經(jīng)過(guò)計(jì)算后的值。我們來(lái)看一下信息窗口: ESI=E6B5F2F9 EAX=FF439EBE 左鍵選擇信息窗口 中的 ESI=E6B5F2F9,再按右鍵,在彈出菜單上選 “ 修改寄存器 ” ,我們會(huì)看到這樣一個(gè)窗口: 可能你的顯示跟我不一樣,因?yàn)檫@個(gè) crackme 中已經(jīng)說(shuō)了每個(gè)機(jī)器的序列號(hào)不一樣。關(guān)掉上面的窗口,再對(duì)信息窗口中的 EAX=FF439EBE 做同樣操作: 由上圖我們知道了原來(lái)前面分析的對(duì)我們輸入的注冊(cè)碼進(jìn)行處理后的結(jié)果就是把字符格式轉(zhuǎn)為數(shù)字格式。我們?cè)瓉?lái)輸入的是字串 “12345666” ,現(xiàn)在轉(zhuǎn)換為了數(shù)字 12345666。這下就很清楚了,隨便在上面那個(gè)修改 ESI 圖中顯示的有符號(hào)或無(wú)符號(hào)編輯框中復(fù)制一個(gè),粘貼到我們調(diào)試的程序中的編輯框中試一下: 呵呵,成功了。且慢高興,這個(gè) crackme 是要求寫出注冊(cè)機(jī)的。我們先不要求寫注冊(cè)機(jī),但注冊(cè)的算法我們要搞清楚。還記得我在前面說(shuō)到的那個(gè) ESI 寄存器值的問(wèn)題嗎?現(xiàn)在看看我們上面的分析,其實(shí)對(duì)做注冊(cè)機(jī)來(lái)說(shuō)是沒(méi)有多少幫助的。要搞清注冊(cè)算法,必須知道上面那個(gè) ESI 寄存器值是如何產(chǎn)生的,這弄清楚后才能真正清楚這個(gè) crackme 算法。今天就先說(shuō)到這里,關(guān)于如何追出 ESI 寄存器的值我就留到下一篇 OllyDBG 入門系列(四)-內(nèi)存斷點(diǎn) 中再講吧。 OllyDBG 入門系列(四)-內(nèi)存斷點(diǎn) 作者: CCDebuger 還記得上一篇《 OllyDBG 入門系列(三)-函
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1