欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

破解入門(三)-----脫殼的常用方法介紹

  發(fā)布時(shí)間:2012-06-28 15:57:30   作者:代碼人生   我要評(píng)論
殼自從加到程序上以后就連在一起了,即對(duì)程序進(jìn)行保護(hù),防止被修改,也就是殼把程序給包裹起來了,而且原程序的數(shù)據(jù)也被壓縮了。
什么是殼
大家應(yīng)該先明白“殼”的概念。在自然界中,我想大家對(duì)"殼"這東西應(yīng)該都不會(huì)陌生了,植物用它來保護(hù)種子,動(dòng)物用它來保護(hù)身體等等。同樣,在一些計(jì)算機(jī)軟件里也有一段專門負(fù)責(zé)保護(hù)軟件不被非法修改或反編譯的程序。它們一般都是先于程序運(yùn)行,拿到控制權(quán),然后完成它們保護(hù)軟件的任務(wù)。就像動(dòng)植物的殼一般都是在身體外面一樣理所當(dāng)然(當(dāng)然后來也出現(xiàn)了所謂的“殼中帶籽”的殼)。由于這段程序和自然界的殼在功能上有很多相同的地方,基于命名的規(guī)則,大家就把這樣的程序稱為“殼”了。就像計(jì)算機(jī)病毒和自然界的病毒一樣,其實(shí)都是命名上的方法罷了。
殼的作用
1 寫好一個(gè)程序后,不想讓別人隨便更改其中的版權(quán)信息,我們可以加殼對(duì)其進(jìn)行保護(hù)防止被修改。
2 可以利用壓縮殼減少程序容量,方便程序傳播。
3 幫助木馬病毒進(jìn)行免殺,我們可以直接加殼免殺,也可以脫殼對(duì)其代碼進(jìn)行修改從而躲過殺毒軟件的查殺。
脫殼的基礎(chǔ)知識(shí)
1殼是怎么裝載的?
殼自從加到程序上以后就連在一起了,即對(duì)程序進(jìn)行保護(hù),防止被修改,也就是殼把程序給包裹起來了,而且原程序的數(shù)據(jù)也被壓縮了。
裝載的時(shí)候通常是先執(zhí)行殼后再跳到真正的原程序OEP(程序入口點(diǎn)),這時(shí)開始運(yùn)行原先沒加殼的程序。
運(yùn)行順序:執(zhí)行帶殼文件——執(zhí)行殼——執(zhí)行到程序入口點(diǎn)——運(yùn)行未加殼的程序。
2 殼的分類
殼出于程序作者想對(duì)程序資源壓縮、注冊(cè)保護(hù)的目的,殼一般分為壓縮殼和加密殼兩類。
壓縮殼:一般只對(duì)文件進(jìn)行壓縮處理,既壓縮區(qū)段和一些資源壓縮,以減少文件體積為目的
如:ASPack、UPX、PECompact等
加密殼:跟壓縮殼正好相反,一般是犧牲減少體積為代價(jià),對(duì)文件進(jìn)行加密處理,用上各種反跟蹤技術(shù)保護(hù)程序不被調(diào)試、脫殼,
如:ASProtect、Armadillo、EXECryptor等
但隨著加殼技術(shù)的發(fā)展,這兩類殼之間的界限越來越模糊,很多加殼軟件既有壓縮功能也有保護(hù)性能,而且現(xiàn)在很多加密殼達(dá)到殼中帶肉,肉中帶殼的地步了。
3 OEP (程序入口點(diǎn))
OEP:Original Entry Point ,程序加殼前真正的入口點(diǎn)。
4 脫殼的基本步驟
查殼(PEID、FI、PE-SCAN)--->尋找OEP(OD)--->脫殼/Dump(LordPE、PeDumper、OD自帶的脫殼插件、PETools)--->修復(fù)(Import REConstructor)
常用脫殼方法
1 單步跟蹤法
(1)用OD載入,點(diǎn)“不分析代碼”
(2).單步向下跟蹤F8,實(shí)現(xiàn)向下的跳。也就是說向上的跳不讓其實(shí)現(xiàn)(通過F4)
(3)遇到程序往回跳的(包括循環(huán)),我們?cè)谙乱痪浯a處按F4(或者右健單擊代碼,選 擇斷點(diǎn)——>運(yùn)行到所選)
(4)綠色線條表示跳轉(zhuǎn)沒實(shí)現(xiàn),不用理會(huì),紅色線條表示跳轉(zhuǎn)已經(jīng)實(shí)現(xiàn)
(5)如果剛載入程序,在附近就有一個(gè)CALL的,我們就F7跟進(jìn)去,不然程序很容易跑 飛,這樣很快就能到程序的OEP
(6)在跟蹤的時(shí)候,如果運(yùn)行到某個(gè)CALL程序就運(yùn)行的,就在這個(gè)CALL中F7進(jìn)入
(7)一般有很大的跳轉(zhuǎn)(大跨段),比如 jmp XXXXXX 或者 JE XXXXXX 或者有RETN 的一般很快就會(huì)到程序的OEP
注:在有些殼無法向下跟蹤的時(shí)候,我們可以在附近找到?jīng)]有實(shí)現(xiàn)的大跳轉(zhuǎn),右鍵-->“跟隨”,然后F2下斷,Shift+F9運(yùn)行停在“跟隨”的位置,再取消斷點(diǎn),繼續(xù)F8單步跟蹤。一般情況下可以輕松到達(dá)OEP
2 ESP定律法
ESP定理脫殼(ESP在OD的寄存器中,我們只要在命令行下ESP的硬件訪問斷點(diǎn),就會(huì)一下來到程序的OEP了!)
(1)開始就點(diǎn)F8,注意觀察OD右上角的寄存器中ESP有沒突現(xiàn)(變成紅色)(這只是一 般情況下,更確切的說我們選擇的ESP值是關(guān)鍵句之后的第一個(gè)ESP值)
(2)在命令行下:dd XXXXXXXX(指在當(dāng)前代碼中的ESP地址,或者是hr XXXXXXXX), 按回車
(3)選中下斷的地址,斷點(diǎn)--->硬件訪--->WORD斷點(diǎn)
(4)按一下F9運(yùn)行程序,直接來到了跳轉(zhuǎn)處,按下F8,到達(dá)程序OEP
3內(nèi)存鏡像法
(1)用OD打開軟件
(2)點(diǎn)擊選項(xiàng)——調(diào)試選項(xiàng)——異常,把里面的忽略全部√上。CTRL+F2重載下程序
(3)按ALT+M,打開內(nèi)存鏡象,找到程序的第一個(gè).rsrc.按F2下斷點(diǎn),然后按SHIFT+F9運(yùn) 行到斷點(diǎn),接著再按ALT+M,打開內(nèi)存鏡象,找到程序的第一個(gè).rsrc.上面的.CODE(也 就是00401000處),按F2下斷點(diǎn)。然后按SHIFT+F9(或者是在沒異常情況下按F9), 直接到達(dá)程序OEP
4 一步到達(dá)OEP
(1)開始按Ctrl+F,輸入:popad(只適合少數(shù)殼,包括UPX,ASPACK殼),然后按下F2, F9運(yùn)行到此處
(2)來到大跳轉(zhuǎn)處,點(diǎn)下F8,到達(dá)OEP
5 最后一次異常法
(1)用OD打開軟件
(2)點(diǎn)擊選項(xiàng)——調(diào)試選項(xiàng)——異常,把里面的√全部去掉!CTRL+F2重載下程序
(3)一開始程序就是一個(gè)跳轉(zhuǎn),在這里我們按SHIFT+F9,直到程序運(yùn)行,記下從開始按SHIFT+F9到程序運(yùn)行的次數(shù)m
(4)CTRL+F2重載程序,按SHIFT+F9(這次按的次數(shù)為程序運(yùn)行的次數(shù)m-1次)
(5)在OD的右下角我們看見有一個(gè)"SE 句柄",這時(shí)我們按CTRL+G,輸入SE 句柄前的地址
(6)按F2下斷點(diǎn),然后按SHIFT+F9來到斷點(diǎn)處
(7)去掉斷點(diǎn),按F8慢慢向下走
(8)到達(dá)程序的OEP
6 模擬跟蹤法
(1)先試運(yùn)行,跟蹤一下程序,看有沒有SEH暗樁之類
(2)ALT+M打開內(nèi)存鏡像,找到(包含那一列中出現(xiàn)SFX,imports,relocations或者SFX,輸 入表,重定位)
(3)若地址為00xxxxxx在命令行下輸入tc eip<00xxxxxx,回車,提示正在跟蹤
7 SFX法
(1)設(shè)置OD,忽略所有異常,也就是說異常選項(xiàng)卡里面都打上勾
(2)切換到SFX選項(xiàng)卡,選擇“字節(jié)模式跟蹤實(shí)際入口(速度非常慢)”,確定
(3)重載程序(如果跳出是否“壓縮代碼?”選擇“否”,OD直接到達(dá)OEP)

相關(guān)文章

最新評(píng)論