| 共3樓 ![]() ![]() |
[心得] 入門(mén)教程之脫殼篇【第一篇】一:我們先說(shuō)一下,一般脫殼所需要的工具 PEID -(查殼工具,根據每種殼的特征碼而偵測出殼的種類(lèi),目前算是比較流行的查殼工具) Ollydbg - (一個(gè)新的動(dòng)態(tài)追蹤工具,將IDA與SoftICE結合起來(lái)的思想,Ring 3級調試器,非常容易上手,己代替SoftICE成為當今最為流行的調試解密工具了。強烈推薦?。?br>LordPE - (一款功能強大的pe文件分析、修改、脫殼軟件。配合手動(dòng)脫殼工具(Ollydbg、ImportREC 等),是學(xué)習調試手動(dòng)脫殼必備的工具!) ImportREC - (手工重建Import表,脫殼必備?。?br> 二:脫殼必須掌握的一些基本匯編語(yǔ)言 JE/JZ 等于轉移.(機器碼74 或0F84) JNE/JNZ 不等于時(shí)轉移.(機器碼75或0F85) JMP 無(wú)條件轉移指令(機器碼EB) 以下四條,測試無(wú)符號整數運算的結果(標志C和Z). JA/JNBE 不小于或不等于時(shí)轉移.(意思就是大于則就跳) JAE/JNB 大于或等于轉移. JB/JNAE 小于轉移. JBE/JNA 小于或等于轉移. 以下四條,測試帶符號整數運算的結果(標志S,O和Z). JG/JNLE 大于轉移. JGE/JNL 大于或等于轉移. JL/JNGE 小于轉移. JLE/JNG 小于或等于轉移. CALL 過(guò)程調用(調用子程序/函數) RETN/RETF 過(guò)程返回(被調用子程序/函數的返回) NOP 空語(yǔ)句 CMP 比較.(兩操作數作減法,僅修改標志位,不回送結果). MOV A,B (把B的值送給A) PUSH 把字壓入堆棧(壓棧) POP 把字彈出堆棧(出棧) ADD 加法. SUB 減法 MUL 無(wú)符號乘法 DIV 無(wú)符號除法. AND 與運算.(位運算兩個(gè)比較數中的二進(jìn)制數值各位有0則0) OR 或運算.(位運算兩個(gè)比較數中的二進(jìn)制數值各位有1則1) XOR 異或運算.(位運算兩個(gè)比較數中的二進(jìn)制數值各位相同則零)(寄存器與自己作異或運算等于清零動(dòng)作) NOT 取反. TEST 測試.(兩操作數作與運算,僅修改標志位,不回送結果). 還有更多的匯編語(yǔ)句,我會(huì )打包給大家的.... 三:我們開(kāi)始動(dòng)手實(shí)踐一下,熟悉一下工具的使用 我們用記事本來(lái)做試驗吧,先加個(gè)殼。好了。加完后,我們就用PEID來(lái)查一下是什么殼.... UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo UPX是一款壓縮殼...我們再把他載入OD來(lái)調試。載入后,會(huì )提示,點(diǎn)否! 01014770 > 60 PUSHAD 01014771 BE 00000101 MOV ESI,NOTEPAD.01010000 01014776 8DBE 0010FFFF LEA EDI,DWORD PTR DS:[ESI+FFFF1000] 0101477C 57 PUSH EDI 0101477D 83CD FF OR EBP,FFFFFFFF 01014780 EB 10 JMP SHORT NOTEPAD.01014792 這里,就是UPX殼的入口,這個(gè)殼有很多種脫殼~我們今天就用單步直下脫殼法。畢竟我們只是了解一下工具的用法。。。 單步F8,或者用工具欄的那個(gè)箭頭向下那個(gè)按鈕!JMP(無(wú)條件跳轉),要是跳轉實(shí)現的話(huà),就會(huì )出現條紅線(xiàn)。這里。他是向下跳,我們就讓他跳吧,如果像這種情況。向上跳的話(huà),我們就用到F4(在跳轉的下一行,按下F4,或者,右鍵-斷點(diǎn)-運行到選定位置)如果,跳轉沒(méi)實(shí)現,他就出現一條灰色的線(xiàn),實(shí)現就紅..只要他往上跳,我們就下斷F4。不讓他往會(huì )跳。一直往下單步,在這里,下完斷后,還有個(gè)JMP向上跳,我們也一樣向下一行下斷后,但是。他這里的下一行是一個(gè)NOP(無(wú)動(dòng)作)。所以不能在這里F4。我們在NOP的下一行下斷點(diǎn),不好意思。。。手快了。哈~~繼續!這里。在CALL這行下斷點(diǎn)。OD會(huì )掛掉。只能在CALL的下一行下斷點(diǎn),我們試驗一下~看吧~~運行了,OD掛了~點(diǎn)什么都沒(méi)反映了。。。我們返回程序的開(kāi)始!重新開(kāi)始單步....注意了,就是這里...在這里下斷噢~好。到了這個(gè)JMP。但他卻沒(méi)出現紅線(xiàn),是什么原因呢。因為這里他實(shí)現了遠跳轉,所以沒(méi)出現紅線(xiàn)。我們F8。。。好,一般遠跳轉后,就是OEP,這里也就是傳說(shuō)中的OEP。 不好意思,按錯了...繼續 接著(zhù)。就用LordPE這個(gè),把程序DUMP下來(lái)~~看操作~完整轉存??!但這樣子程序還是不能運行。得用到ImportREC這個(gè)來(lái)修復一下~看操作~這里,因為路徑太張了??床坏接浭卤镜穆窂?,你們只知道,這里選擇那個(gè)記事本的路徑就對了.... 他的OEP地址0100739D-01000000=739D (01000000是他程序的基址) 點(diǎn)自動(dòng)搜索IAT,發(fā)現某些數據。。點(diǎn)確定,獲取輸入表。修復捉取文件。OK。。我們去看看能不能運行~可以運行~查一下殼~OK Microsoft Visual C++ 7.0 Method2 就這樣了....有什么問(wèn)題,在論壇留言,或者加我QQ:85400516,問(wèn)我或者~~~hmily,大家有什么事情都去問(wèn)他吧。。哈哈!拜拜! 外:OD調試用到的快捷鍵 F2:設置斷點(diǎn),只要在光標定位的位置(上圖中灰色條)按F2鍵即可,再按一次F2鍵則會(huì )刪除斷點(diǎn)。 F8:?jiǎn)尾讲竭^(guò)。每按一次這個(gè)鍵執行一條反匯編窗口中的一條指令,遇到 CALL 等子程序不進(jìn)入其代碼。 F7:?jiǎn)尾讲饺?。功能同單步步過(guò)(F8)類(lèi)似,區別是遇到 CALL 等子程序時(shí)會(huì )進(jìn)入其中,進(jìn)入后首先會(huì )停留在子程序的第一條指令上。 F4:運行到選定位置。作用就是直接運行到光標所在位置處暫停。 F9:運行。按下這個(gè)鍵如果沒(méi)有設置相應斷點(diǎn)的話(huà),被調試的程序將直接開(kāi)始運行。 CTR+F9:執行到返回。此命令在執行到一個(gè) ret (返回指令)指令時(shí)暫停,常用于從系統領(lǐng)空返回到我們調試的程序領(lǐng)空。 ALT+F9:執行到用戶(hù)代碼??捎糜趶南到y領(lǐng)空快速返回到我們調試的程序領(lǐng)空。 上面提到的幾個(gè)快捷鍵對于一般的調試基本上已夠用了。要開(kāi)始調試只需設置好斷點(diǎn),找到你感興趣的代碼段再按 F8 或 F7 鍵來(lái)一條條分析指令功能就可以了。 待續未完!敬請期待! 【好學(xué)者】 于2011-03-19 19:54:00 編輯過(guò)該帖
|
360安全衛士是當前功能最強、效果最好、最受用戶(hù)歡迎的上網(wǎng)必備安全軟件。360安全衛士擁有查殺木馬、清理插件、修復漏洞、電腦體檢等多種功能,并獨創(chuàng )了“木馬防火墻”功能,依靠搶先偵測和云端鑒別,可全……
聯(lián)系客服