逆向入門(三)-----脫殼的常用方法

什么是殼

? ? 大家應(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ì)程序資源壓縮敲街、注冊保護(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)),我們在下一句代碼處按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了U檀Α)

(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)


接下來我們一起走向逆向?qū)崙?zhàn)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末唇牧,一起剝皮案震驚了整個(gè)濱河市聚唐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌杆查,老刑警劉巖宴咧,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異掺栅,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)桃笙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門沙绝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人闪檬,你說我怎么就攤上這事⌒檠” “怎么了?”我有些...
    開封第一講書人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵横缔,是天一觀的道長衫哥。 經(jīng)常有香客問我,道長撤逢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任初狰,我火速辦了婚禮妇押,結(jié)果婚禮上姓迅,老公的妹妹穿的比我還像新娘俊马。我一直安慰自己肩杈,他們只是感情好柴我,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開白布艘儒。 她就那樣靜靜地躺著夫偶,像睡著了一般界睁。 火紅的嫁衣襯著肌膚如雪兵拢。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評(píng)論 1 305
  • 那天访惜,我揣著相機(jī)與錄音腻扇,去河邊找鬼债热。 笑死幼苛,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的舌剂。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼霍转,長吁一口氣:“原來是場噩夢啊……” “哼一汽!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起召夹,我...
    開封第一講書人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤监憎,失蹤者是張志新(化名)和其女友劉穎纱意,沒想到半個(gè)月后鲸阔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體迄委,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡类少,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年硫狞,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了信轿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片残吩。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖定罢,靈堂內(nèi)的尸體忽然破棺而出旁瘫,到底是詐尸還是另有隱情祖凫,我是刑警寧澤酬凳,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站稠屠,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏权埠。R本人自食惡果不足惜煎谍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望呐粘。 院中可真熱鬧,春花似錦唆垃、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽渐尿。三九已至,卻和暖如春涡戳,著一層夾襖步出監(jiān)牢的瞬間脯倚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來泰國打工恍涂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留植榕,地道東北人再沧。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓尊残,卻偏偏與公主長得像,于是被迫代替她去往敵國和親顷扩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容