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

正文內(nèi)容

ollydbg圖文入門教程資料-wenkub.com

2024-10-30 05:21 本頁(yè)面
   

【正文】 先發(fā)到這感興趣的先消化一下。 通過分析這個(gè)程序的算法,我們發(fā)現(xiàn)這個(gè)注冊(cè)算法是有漏洞的。 。 大家應(yīng)該看出來點(diǎn)什么了吧?函數(shù)調(diào)用是先把最后一個(gè)參數(shù)壓棧,參數(shù)壓棧順序是從后往前。 |RootPathName = NULL 0040142C |. E8 A3000000 CALL JMP.amp。 |pMaxFilenameLength = NULL 00401421 |. 6A 00 PUSH 0 。先看一下這里: 00401419 |. 6A 00 PUSH 0 。只 要你對(duì)編程有所了解,這個(gè)注冊(cè)機(jī)就很好寫了。好了,這里弄清楚了,我們?cè)俳又勥@個(gè)程序的算法。上面的那條指令 MOV EBX,DWORD PTR DS:[ESI] 等同于 MOV EBX,DWORD PTR DS:[40339C]。我們知道 “GAME”有四個(gè)字節(jié),即 ASCII 碼為 “47414D45”。 把計(jì)算后值送到內(nèi)存地址 40339C,這就是我們后來在 ESI 中看到的值 00401454 |. 61 POPAD 00401455 \. C3 RETN 通過上面的分析,我們知道基本算法是這樣的:先用 GetDriveTypeA 函數(shù)獲取磁盤類型參數(shù),再用 GetVolumeInformationA 函數(shù)獲取這個(gè) crackme 程序所在分區(qū)的卷標(biāo)。 每次計(jì)算結(jié)果再加上上次計(jì)算結(jié)果保存在 EDI 中 00401448 |. 49 DEC ECX 。 把 EDI 清零 00401440 | 8BC1 MOV EAX,ECX 。 。 |pVolumeSerialNumber = NULL 00401423 |. 6A 0B PUSH 0B 。 /pFileSystemNameSize = NULL 0040141B |. 6A 00 PUSH 0 。 /RootPathName = NULL 0040140F |. E8 B4000000 CALL JMP.amp。系統(tǒng)領(lǐng)空,我們現(xiàn)在要考慮返回到程序領(lǐng)空。 這就是我們第一次斷下來的地方 7C932F3B 40 INC EAX 7C932F3C 4F DEC EDI 7C932F3D 4E DEC ESI 7C932F3E ^ 75 CB JNZ SHORT 7C932F40 8B4D 10 MOV ECX,DWORD PTR SS:[EBP+10] 上面就是我們中斷后反匯編窗口中的代碼。選好以后松開鼠標(biāo)左鍵,在我們選中的灰色部分上右擊: 經(jīng)過上面的操作,我們的內(nèi)存斷點(diǎn)就設(shè)好了(這里還有個(gè)要注意的地方:內(nèi)存斷點(diǎn)只在當(dāng)前調(diào)試的進(jìn)程中有效,就是說你如果 重新載入程序的話內(nèi)存斷點(diǎn)就自動(dòng)刪除了。我們現(xiàn)在在 40339C 地址處后面的 HEX 數(shù)據(jù)或 ASCII 欄中按住左鍵往后拖放,選擇一段。還記得前面我叫大家記住的那個(gè) 40339C 內(nèi)存地址嗎?現(xiàn)在我們要用上了。 pModule = NULL 現(xiàn)在我們就要來設(shè)內(nèi)存斷點(diǎn)了。我們按上圖的操作在數(shù)據(jù)窗口中看一下: 從上圖我們可以看出內(nèi)存地址 40339C 處的值已經(jīng)有了,說明早就算過了。 關(guān)鍵,要按 F7 鍵跟進(jìn)去 0040132D |. 3BC6 CMP EAX,ESI 。這次分析的目標(biāo)程序還是上一篇的那個(gè) crackme,附件 我就不再上傳了,用上篇中的附件就可以了。要搞清注冊(cè)算法,必須知道上面那個(gè) ESI 寄存器值是如何產(chǎn)生的,這弄清楚后才能真正清楚這個(gè) crackme 算法。這下就很清楚了,隨便在上面那個(gè)修改 ESI 圖中顯示的有符號(hào)或無符號(hào)編輯框中復(fù)制一個(gè),粘貼到我們調(diào)試的程序中的編輯框中試一下: 呵呵,成功了。根據(jù)前面的分析,我們知道 EAX 中存放的是我們輸入的注冊(cè)碼經(jīng)過計(jì)算后的值。 把 ESI 中的值與 797A7553H 異或 0040140B \. C3 RETN 這里留下了一個(gè)問題:那個(gè) ESI 寄存器中的值是從哪運(yùn)算出來的?先不管這里,我們接著按 F8 鍵往下走,來到 0040140B 地址處的那條 RETN 指令(這里可以通過在調(diào)試選項(xiàng)的 “命令 ”標(biāo)簽中勾選 “使用 RET 代替 RETN”來更改返回指令的顯示方式),再按一下 F8,我們就走出 00401328 地址處的那個(gè) CALL 了。 把 EAX 與 EDX異或。 取下一個(gè)字符 004013FA |. 46 INC ESI 。 指針加 1,指向再下一個(gè)字符 004013EE | EB 0B JMP SHORT 004013F0 | 2C 30 SUB AL,30 。 把取得的字符與 16進(jìn)制值為 2D 的字符 (即“”)比較,這里主要用于判斷輸入的是不是負(fù)數(shù) 004013E4 |. 75 08 JNZ SHORT 。 ECX 清零 004013DD |. 33D2 XOR EDX,EDX ?,F(xiàn)在我們按 F7 鍵跟進(jìn): 004013D2 /$ 56 PUSH ESI ??匆幌? 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 組合鍵,呵,回來了: 00401328 |. E8 A5000000 CALL 。] 。] 。 。而注冊(cè)成功則會(huì)顯示一個(gè)對(duì)話框 ,標(biāo)題是 “Crudd39。re done. 0040136B |. FF75 08 PUSH DWORD PTR SS:[EBP+8] 。 Style = MB_OK|MB_APPLMODAL 00401361 |. 68 0F304000 PUSH 。 關(guān)鍵,要按 F7 鍵跟進(jìn)去 0040132D |. 3BC6 CMP EAX,ESI 。好,我們現(xiàn)在按前面提到的第一條方法,就是 “在每個(gè)參考上設(shè)置斷點(diǎn) ”,這樣上圖中的兩條指令都會(huì)設(shè)上斷點(diǎn)。還好,找到一個(gè) GetWindowTextA。而 NT 系統(tǒng)則從底層支持 UNICODE,它可以在操作系統(tǒng)內(nèi)對(duì)字串進(jìn)行轉(zhuǎn)換,同時(shí)支持 ASCII 和 UNICODE 版本函數(shù)的調(diào)用。通過上面的操作后會(huì)彈出一個(gè)對(duì)話框,如圖: 對(duì)于這樣的編輯框中輸注冊(cè)碼的程序我們要設(shè)斷點(diǎn)首選的 API 函數(shù)就是 GetDlgItemText 及 GetWindowText。信息收集的差不多了,現(xiàn)在關(guān)掉這個(gè)程序,我們用 OllyDBG 載入,按 F9 鍵直接讓它運(yùn)行起來,依次點(diǎn)擊上面圖中所說的菜單,使被調(diào)試程序顯示如上面的第二個(gè)圖。老規(guī)矩,先運(yùn)行一下這個(gè)程序看看: 呵,竟然沒找到輸入注冊(cè)碼的地方!別急,我們點(diǎn)一下程序上的那個(gè)菜單 “Shit” (真是 Shit 啊,呵呵),在下拉菜單中選 “Try It” ,會(huì)來到如下界面: 我們點(diǎn)一下那個(gè) “Check It” 按鈕試一下,哦,竟然沒反應(yīng)!我再輸個(gè) “78787878” 試試,還是沒反應(yīng)。還是先禁用一下,如果經(jīng)過實(shí)際驗(yàn)證證明我們的分析是正確的,再刪不遲。而這個(gè)子程序 CALL 我們?cè)谏厦嬉呀?jīng)分析過了。 取輸入的注冊(cè)碼 00440F4C |. BA 2C104400 MOV EDX, 。 不等則完蛋 根據(jù)上面的分析,我們知道用戶名必須是 “Registered User”。 上 面的指令及這條指令就是判斷用戶名長(zhǎng)度最少不能低于 4 00403B55 | 8B0E MOV ECX,DWORD PTR DS:[ESI] 。 把用戶名長(zhǎng)度和 “Registered User”字串長(zhǎng)度相減 00403B4B |. 77 02 JA SHORT 。 看看 ESI中是否有數(shù)據(jù),主要是看看我們有沒有輸入用戶名 00403B3D |. 74 68 JE SHORT 。 把 EAX 內(nèi)我們輸入的用戶名送到 ESI 00403B31 |. 89D7 MOV EDI,EDX 。 把我們輸入的內(nèi)容送到 EAX,我這里是“CCDebuger” 00440F2F |. BA 14104400 MOV EDX, 。你可以在 堆棧 SS:[0012F9AC]=00D44DB4, (ASCII CCDebuger) 這條內(nèi)容上左擊選擇一下,再點(diǎn)右鍵,在彈出菜單中選擇 “數(shù)據(jù)窗口中跟隨數(shù)值 ”,你就會(huì)在下面的數(shù)據(jù)窗口中看到你剛才輸入的內(nèi)容。有人可能要問,你怎么知道那兩個(gè)地方是關(guān)鍵點(diǎn)?其實(shí)很簡(jiǎn)單,我是根據(jù)查看是哪條指令跳到 “wrong serial,try again”這條字串 對(duì)應(yīng)的指令來決定的。 ASCII Beggar off! 00440F79 |. BA 8C104400 MOV EDX, 。 關(guān)鍵,要用 F7 跟進(jìn)去 00440F56 |. 75 1A JNZ SHORT 。 ASCII Registered User 00440F34 |. E8 F32BFCFF CALL 。好了,現(xiàn)在出來另一個(gè)對(duì)話框,我們?cè)谶@個(gè)對(duì)話框里右擊,選擇 “ 查找文本 ” 菜單項(xiàng),輸入 “Wrong Serial, try again!” 的開頭單詞 “Wrong” (注意這里查找內(nèi)容要區(qū)分大小寫)來查找,找到一處: 在我們找到的字串上右擊,再在出來的菜單上點(diǎn)擊 “ 反匯編窗口中跟隨 ” ,我們來到這里: 見上圖,為了看看是否還有其他的參考,可以通過選擇右鍵菜單查找參考 立即數(shù),會(huì)出來一個(gè)對(duì)話框: 分別雙擊上面標(biāo)出的兩個(gè)地址,我們會(huì)來到對(duì)應(yīng)的位置: ***************************************************************************************** 00440F79 |. BA 8C104400 MOV EDX, 。下面進(jìn)入正題: 我們先來運(yùn)行一下這個(gè) crackme(用 PEiD 檢測(cè)顯示是 Delphi 編的),界面如圖: 這個(gè) crackme 已經(jīng)把用戶名和注冊(cè)碼都輸好 了,省得我們動(dòng)手 ^_^。有點(diǎn)跑題了,呵呵。先說一下一般軟件破解的流程:拿到一個(gè)軟件先別接著馬上用 OllyDBG 調(diào)試,先運(yùn)行一下,有幫助文檔的最好先看一下幫助,熟悉一下軟 件的使用方法,再看看注冊(cè)的方式。今天的目標(biāo)程序是看雪兄《加密與解密》第一版附帶光盤中的 鏡像打包中的 CFF Crackme 3,采用用戶名 /序列號(hào)保護(hù)方式。(相當(dāng)于 SoftICE 中的 F11) 上面提到的幾個(gè)快捷鍵對(duì)于一般的調(diào)試基本上已夠用了。(相當(dāng)于 SoftICE 中的 F5) CTR+F9:執(zhí)行到返回。(相當(dāng)于 SoftICE 中的 F8) F4:運(yùn)行到選定位置。(相當(dāng)于 SoftICE 中的 F9) F8:?jiǎn)尾讲竭^。注意
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1