国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区

掃一掃
關(guān)注微信公眾號(hào)

系統(tǒng)安全系列之淺談程序脫殼后的優(yōu)化
2007-01-30   

寫這篇文章的目的是想讓大家了解如何利用現(xiàn)有的工具來(lái)優(yōu)化脫殼后的程序。 因?yàn)橐屆摎?yōu)化過(guò)的程序可以用漢化工具正常漢化的話,要求要稍微高一些,我就基于優(yōu)化后的文件可正常用漢化工具漢化這樣的目標(biāo)來(lái)講解。這篇文章主要是為新手服務(wù)的,所以肯定比較羅唆,高手可以略過(guò)。

這篇文章中我采用 dwing 的 WinUpack 0.39 final 講述。采用 WinUpack 來(lái)講解的原因主要是這款殼把 PE 頭搞得很讓人郁悶,修復(fù)其它脫殼后的程序不需要修復(fù) PE 文件頭,而修復(fù) WinUpack 卻要考慮修復(fù) PE 頭的問(wèn)題,而且這個(gè)殼加殼后把原程序的各個(gè)區(qū)段都合并了,修復(fù)的步驟要多一些,這樣也方便大家了解的更詳細(xì)一點(diǎn)。我準(zhǔn)備分兩部分來(lái)講述,第一部分我采用 WinUpack 0.39 final 來(lái)給我自己用 MASM 寫的一個(gè)示例程序加殼,然后來(lái)進(jìn)行脫殼優(yōu)化,第二部分直接講解 WinUpack 0.39 final 中的那個(gè)中文版 WinUpackC.exe 的脫殼優(yōu)化。其實(shí)本來(lái)直接寫 WinUpackC.exe 的脫殼優(yōu)化就可以了,不過(guò)我開(kāi)始的時(shí)候沒(méi)準(zhǔn)備寫 WinUpack 主程序的脫殼,寫到后來(lái)才發(fā)現(xiàn)用自己寫的示例程序加殼后再談脫殼后的優(yōu)化,有點(diǎn)自說(shuō)自話的感覺(jué),所以臨時(shí)決定加一個(gè) WinUpack 主程序的脫殼優(yōu)化。

一、示例程序的脫殼優(yōu)化

1、脫殼

這里的目標(biāo)程序是我用 MASM 寫的一個(gè)對(duì)話框的簡(jiǎn)單例子,我采用 WinUpack 的默認(rèn)選項(xiàng)把原程序 test.exe 加殼,加殼后的程序名為 test1.exe,大小由原來(lái)的 6.5K 變?yōu)?4.4K。因?yàn)?WinUpack 給程序加殼時(shí)修改了 PE 頭的緣故,普通 OD 可能加載不了用 winUpack 加殼后的程序,所以我們換用看雪兄修改的 OllyICE 載入加殼后的 test1.exe,會(huì)出現(xiàn)一個(gè)“32 位可執(zhí)行文件格式錯(cuò)誤或未知”的錯(cuò)誤對(duì)話框,不用管,點(diǎn)確定,又出現(xiàn)一個(gè)“無(wú)法在內(nèi)存中分配 XXXXX 字節(jié)”的錯(cuò)誤對(duì)話框,繼續(xù)點(diǎn)確定,我們停在這里:

00401018 > BE B0114000 MOV ESI,test1.004011B0
0040101D AD LODS DWORD PTR DS:[ESI]               ; ESI地址處的值就是OEP
0040101E 50 PUSH EAX

WinUpack 的殼比較好脫,F(xiàn)8 到上面的第二條指令時(shí),ESI 所顯示的值就是存放 OEP 的地址。我這里在信息窗口中看到的是以下內(nèi)容:

DS:[ESI]=[004011B0]=00401000

現(xiàn)在我在反匯編窗口中按 CTR+G 直接來(lái)到地址 00401000 處,按 F4,就停在 OEP 處了:

00401000 6A 00 PUSH 0
00401002 E8 79010000 CALL test1.00401180           ; JMP 到 kernel32.GetModuleHandleA
00401007 A3 1C304000 MOV DWORD PTR DS:[40301C],EAX

現(xiàn)在我們用 LordPE 完全轉(zhuǎn)存 test1.exe 的進(jìn)程,另存為 dumped.exe,現(xiàn)在可以看到這個(gè) dumped.exe 大小有 64K 了。不要關(guān) OD,打開(kāi) ImportREC,選擇進(jìn)程 test1.exe,OEP 填入 1000,選“自動(dòng)查找 IAT”,會(huì)有一個(gè)“發(fā)現(xiàn)一些信息”的對(duì)話框,點(diǎn)確定,再點(diǎn)“獲取輸入表”,現(xiàn)在我們就得到了完整的輸入表了。我們先來(lái)保存一下樹(shù)文件,另存為 test_tree.txt。不要關(guān) OD 和 ImportREC,讓它們都暫時(shí)開(kāi)在那,先復(fù)制一份我們剛才用 LordPE 完全轉(zhuǎn)存出來(lái)的 dumped.exe 備份。

2、根據(jù)對(duì)齊值分析區(qū)段中的內(nèi)容

在開(kāi)始之前,我們先了解一下對(duì)齊的一些概念:文件區(qū)塊有兩種對(duì)齊值,一種是磁盤文件中的,另一種是內(nèi)存中的。PE文件被映射到內(nèi)存時(shí),區(qū)塊總是至少以一個(gè)頁(yè)邊界為開(kāi)始,在x86系統(tǒng)中,每個(gè)內(nèi)存頁(yè)的大小是4K,也就是0x1000字節(jié),所以在x86系統(tǒng)中,PE文件區(qū)塊的內(nèi)存對(duì)齊值一般等于0x1000,每個(gè)區(qū)塊按0x1000之倍數(shù)內(nèi)存偏移位置開(kāi)始。另一種是磁盤對(duì)齊值,這個(gè)實(shí)例磁盤對(duì)齊值是0x1000,每個(gè)區(qū)塊按0x1000之倍數(shù)的文件偏移位置開(kāi)始。有時(shí)為了使磁盤文件更小些,你可以用0x200對(duì)齊值。

有了上面的預(yù)備知識(shí),我們現(xiàn)在用 LordPE 的 PE 編輯器打開(kāi) dumped.exe 來(lái)看看。

現(xiàn)在我們點(diǎn)擊一下區(qū)段按鈕,看看各個(gè)區(qū)段中有什么內(nèi)容。

因?yàn)樯厦嫖覀円呀?jīng)看到文件塊對(duì)齊是 1000H,我們就按 1000H 大小的倍數(shù)來(lái)在16進(jìn)制編輯器中選擇塊,分析數(shù)據(jù)中是否有區(qū)段。先在16進(jìn)制編輯器中查看一下第一個(gè)區(qū)段。

偏移 2000 是第二個(gè)區(qū)段開(kāi)始的地方。有人可能要問(wèn)你怎么知道這是原來(lái)的第二個(gè)區(qū)段開(kāi)始處?呵呵,因?yàn)槲仪懊婵吹轿募?duì)齊粒度為 1000,所以我在16進(jìn)制編輯器中主要注意與 1000 的倍數(shù)對(duì)應(yīng)的偏移地址。當(dāng)我翻到偏移地址為 2000 時(shí),在這個(gè)地址的上面是由一大片 0 填充的,到這個(gè)地址后又開(kāi)始有數(shù)據(jù)了,所以我確定偏移 2000 處應(yīng)該是另一個(gè)區(qū)段的開(kāi)始處。如果你在16進(jìn)制編輯器中看到一大片 0 后突然看見(jiàn)有數(shù)據(jù),你再根據(jù)文件對(duì)齊粒度注意一下數(shù)據(jù)的開(kāi)始地址,一般就可以確定是否已到另一個(gè)區(qū)段了。由16進(jìn)制窗口中查看到的信息,我們可以確定 WinUpack 把我們?cè)瓉?lái)的區(qū)段都合并了,現(xiàn)在我們要把它們分離出來(lái)。

3、分離區(qū)段

要說(shuō)明一下,分離區(qū)段和下面的一節(jié)修正 PE 頭在其他脫殼文件的優(yōu)化中并不是必須的,這里主要針對(duì) WinUpack 的殼。現(xiàn)在關(guān)掉 LordPE,用 WinHEX 打開(kāi) dumped.exe,ALT+G,填入偏移 1000,轉(zhuǎn)到相應(yīng)位置,在偏移 1000 處點(diǎn)右鍵,選擇定義選塊,輸入相應(yīng)數(shù)據(jù)后點(diǎn)確定。

在選好的選塊上右鍵選擇復(fù)制選塊->進(jìn)入新文件,另存為 text.bin。

其實(shí)這個(gè)偏移 1000H,長(zhǎng)度 1000H 的段不保存也無(wú)所謂,這里主要是讓大家熟悉一下保存的方法。同樣,我們把起始偏移為 3000H,大小為 1000H 的那個(gè)段也另存為 data.bin。有人可能要問(wèn)了,你為什么不把起始偏移為 2000H,大小為 1000H 的那個(gè)區(qū)段也保存下來(lái)?呵呵,因?yàn)槲抑肋@里是原來(lái)的放輸入表信息的那個(gè)段,現(xiàn)在已經(jīng)被破壞了,我就不要了。同樣,偏移 4000H 以后的段我也不保存了,那里是資源段,因?yàn)樵谛拚^(guò)程中我可能要用另外的 RVA 地址來(lái)重建資源,所以不保存了。現(xiàn)在我們?cè)?WinHEX 中再定義一個(gè)選塊,從偏移 2000H 直到文件尾,選中后刪除這個(gè)選塊。

4.修正PE頭

現(xiàn)在我們還要做一件事,因?yàn)?WinUpack 把 PE 頭搞得太亂,我們要找個(gè)正常的替換一下。這里我選擇 XP_SP2 下的記事本,用 WinHEX 打開(kāi)記事本,從文件開(kāi)始偏移為 0 的地方選擇一個(gè)大小為 1000H 的選塊,右鍵選擇復(fù)制選塊->以十六進(jìn)制數(shù)值方式,現(xiàn)在轉(zhuǎn)到我們正在 WinHEX 中編輯的 dumped.exe,定位到文件開(kāi)始偏移處,右鍵選擇剪貼板數(shù)據(jù)->寫入(從當(dāng)前位置覆寫),把記事本的文件頭粘貼過(guò)來(lái)。

完成上述工作后保存 dumped.exe,現(xiàn)在文件大小變成 8K 了,用 PETools 的 PE 編輯器來(lái)打開(kāi)這個(gè)文件,進(jìn)行一些修改。先點(diǎn)擊文件頭按鈕。

把區(qū)段數(shù)由 3 改成 1 后確定,再點(diǎn)擊可選頭按鈕。

改一下上面的鏡像基址為 00400000,點(diǎn)擊確定。這里可以參考原來(lái)備份的 dumped.exe 文件來(lái)修改(我前面已經(jīng)說(shuō)過(guò)要備份原來(lái)的那個(gè) dumped.exe 文件用作參考,你不會(huì)沒(méi)備份吧?)。

5、修正及添加區(qū)段

現(xiàn)在點(diǎn)擊區(qū)段按鈕,修改一下區(qū)段的一些屬性。因?yàn)榍懊嫖覀円呀?jīng)把區(qū)段改為 1 了,現(xiàn)在打開(kāi)區(qū)段后,只看到一個(gè) .text 區(qū)段。在這個(gè)區(qū)段上右擊,選擇編輯區(qū)段頭。

因?yàn)槲覀儸F(xiàn)在的 .text 段是從偏移 1000H 開(kāi)始的,大小為 1000H,所以我們要把上面的虛擬偏移和 RAW 偏移都改成 1000,虛擬大小和 RAW 大小也要改成 1000。在彈出的對(duì)話框上進(jìn)行設(shè)置。

完成上述修改后點(diǎn)確定,回到區(qū)段編輯器中,現(xiàn)在我們要添加一個(gè)大小為 1000H 的段,用來(lái)存放輸入表。這里可能大家也有疑問(wèn):你是知道原來(lái)的輸入表段大小為 1000H,如果你不知道呢?你知道要添加多大的一個(gè)區(qū)段?其實(shí)我這里添加區(qū)段的大小是根據(jù) ImportREC 的新建輸入表信息中的大小來(lái)的。

我們可以在 ImportREC 中看到新建輸入表的大小是 18CH,根據(jù)區(qū)段的對(duì)齊粒度 1000H,我這里就選大小為 1000H,已經(jīng)夠用了。這里要留一點(diǎn)余量,有時(shí)脫一些殼修復(fù)時(shí),余量留的過(guò)小則修復(fù)的輸入表不完全,這時(shí)可以從文件中刪除這個(gè)區(qū)段,再按 1000H 的對(duì)齊粒度新建一個(gè)大一點(diǎn)的區(qū)段,重新修復(fù)輸入表。現(xiàn)在繼續(xù)我們前面的話題,在區(qū)段編輯器中右鍵點(diǎn)擊,選擇添加區(qū)段菜單項(xiàng),在彈出的對(duì)話框上進(jìn)行設(shè)置。

PETools 默認(rèn)添加區(qū)段的名稱是 .NewSH,為了便于識(shí)別這個(gè)段是用于存放輸入表信息的,我們把名稱選為 idata。其他的 RAW 數(shù)據(jù)及虛擬數(shù)據(jù)大小我們都填 1000,選擇用 0x00 填充區(qū)段,現(xiàn)在點(diǎn)確定,一個(gè)新區(qū)段就添加進(jìn)來(lái)了。

我們可以看出 .idata 段的虛擬偏移是 13000,這肯定不正確,我們應(yīng)該保證各個(gè)段的虛擬地址都是連續(xù)的。.text 段的虛擬偏移是 1000H,虛擬大小是 1000H,這樣虛擬偏移 + 虛擬大小 = 1000H + 1000H = 2000H,可知下一個(gè)區(qū)段的虛擬偏移應(yīng)該是 2000H。同樣道理 RAW 偏移也應(yīng)該是連續(xù)的,雖然有時(shí)候我們看到有類似這樣的:第一個(gè)區(qū)段:RAW 偏移:400H,RAW 大小:1D0;第二個(gè)區(qū)段:RAW 偏移:600H,RAW 大小:1B8,這樣看起來(lái)好像并不連續(xù)啊。因?yàn)?400 + 1D0 = 5D0,下一個(gè)區(qū)段應(yīng)該從 5D0 開(kāi)始才對(duì)。但如果你用16進(jìn)制工具打開(kāi)文件看一下就知道了。這種情況是文件粒度按 200H 對(duì)齊,區(qū)段中的實(shí)際數(shù)據(jù)沒(méi)有 200,這里顯示的只是實(shí)際的數(shù)據(jù)大小,剩下的按 200H 對(duì)齊的部分用 0x00 填充了。所以下一個(gè)區(qū)段還是按文件對(duì)齊粒度設(shè)置偏移的。同樣,文件對(duì)齊粒度是其他數(shù)值時(shí)也存在這種情況。說(shuō)了這么多,大家應(yīng)該也明白了,編輯一下 .idata 的區(qū)段頭,把虛擬偏移 13000 改成 2000。至于后面那個(gè)特征值為什么可以改成 C0000040,我就不多說(shuō)了,在編輯區(qū)段的時(shí)候點(diǎn)一下特征值后面那個(gè) ... 按鈕,上面應(yīng)該可以看到詳細(xì)的說(shuō)明。

6、修正輸入表

現(xiàn)在我們的前期工作暫告一個(gè)段落,保存好我們的修改退出 PETools,現(xiàn)在輪到 ImportREC 上場(chǎng)了。你的 ImportREC 應(yīng)該沒(méi)關(guān)吧?我們把添加一個(gè)新的節(jié)前面的勾去掉,在新建輸入表信息中 RVA 填 00002000(就是我們新建的那個(gè) ,idata 段的偏移地址),點(diǎn)擊修復(fù)轉(zhuǎn)存文件,選擇我們剛才修改的 dumped.exe 進(jìn)行修復(fù),得到 dumped_.exe。

7、修正資源

到這還有兩個(gè)重要的事別忘了,一個(gè)是我們保存的那個(gè)數(shù)據(jù)段(data.bin)要放進(jìn)程序里來(lái),還有個(gè)就是資源還沒(méi)有。現(xiàn)在我們先把資源弄出來(lái)。拿出 dREAMtHEATER 兄的 FixRes,選擇我們?cè)瓉?lái)備份的那個(gè) dumped.exe,使用 FixRes 的 Dump 功能,把資源段按我們定義的 RVA Dump 出來(lái)。

因?yàn)榍懊孢€有一個(gè)數(shù)據(jù)段 RVA 是 3000,大小是 1000,所以我們把新建資源段的 RVA 設(shè)為 4000。按上面那樣設(shè)置好后我們就可以點(diǎn)擊 Dump Resource 按鈕來(lái) Dump 資源了,文件被保存為 rsrc.bin。

8、裝配文件

現(xiàn)在進(jìn)入最后的裝配工作了,用 LordPE 的 PE 編輯器打開(kāi) dumped_.exe,點(diǎn)擊區(qū)段按鈕,進(jìn)入?yún)^(qū)段編輯功能中。

現(xiàn)在我們要把磁盤上的 data.bin 和 rsrc.bin 都添加到程序中來(lái),右鍵選擇從磁盤載入段,按順序添加 data.bin 和 rsrc.bin,添加好后改一下區(qū)段名和標(biāo)志。

現(xiàn)在退出區(qū)段編輯,點(diǎn)目錄按鈕,修正一下資源及其他的目錄。在這個(gè)程序中輸入表目錄已經(jīng)不需要我們?cè)俑牧耍覀円牡木褪琴Y源目錄的 RVA 及大小,把其他沒(méi)用到的目錄 RVA 和 大小清零。我們?cè)儆靡粋€(gè) LordPE 的 PE 編輯器打開(kāi)備份的 dumped.exe 文件來(lái)做參考。

9、修正可選頭及最終優(yōu)化

保存以上工作后關(guān)掉 LordPE,我們可以看到 dumped_.exe 的圖標(biāo)已經(jīng)出來(lái)了,說(shuō)明資源已經(jīng)修復(fù)。現(xiàn)在再用 PETools 的 PE 編輯器打開(kāi) dumped_.exe(這里換 PETools 的原因是因?yàn)?PETools 編輯 PE 頭的功能比較強(qiáng)),點(diǎn)擊可選頭按鈕,進(jìn)入可選頭編輯器。現(xiàn)在主要要修改的就是代碼基址和數(shù)據(jù)基址,代碼基址一般就是第一個(gè)區(qū)段(我們這里是 .text 段)的 RVA,所以這里應(yīng)該填 1000,數(shù)據(jù)基址一般指除了代碼外的部分開(kāi)始的 RVA,我們這里代碼部分 RVA 是 1000,大小是 1000,加起來(lái)就知道除了代碼外的數(shù)據(jù) RVA 是 2000,就是我們第二個(gè)段 .idata 的 RVA。修改完這些內(nèi)容后最后要糾正一下鏡像大小,否則程序還是不能運(yùn)行。

代碼大小和已初始化數(shù)據(jù)大小改不改都無(wú)所謂,我是為了好看點(diǎn)把它改了。一般的代碼大小就是指 .text 段的大小,.text 段后面所有段的大小加起來(lái)就可以作為已初始化數(shù)據(jù)大小。全部改完后點(diǎn)鏡像大小后面的那個(gè)“?”按鈕,糾正一下鏡像大小,現(xiàn)在就可以保存退出 PETools 了。

到這基本工作已經(jīng)完成了,修復(fù)后的 dumped_.exe 大小為 20K,運(yùn)行一下,一切正常。不過(guò)這里的 20K 大小還和我們?cè)瓉?lái)的 6.5K 有差距,如果手工修改的話我們可以先把文件對(duì)齊的粒度設(shè)為 200,再用16進(jìn)制工具打開(kāi)程序,把按照 200H 倍數(shù)對(duì)齊的各個(gè)區(qū)段的多余的全是 0 的部分刪掉,再根據(jù)保留下來(lái)的部分調(diào)整一下區(qū)段的 RAW 偏移和大小。當(dāng)然你可以用 PETools 或 LordPE 的重建功能來(lái)重建一下程序,也會(huì)完成上述功能。不過(guò)我們這里是希望能用漢化工具正常漢化的,所以我們不能用 PETools 或 LordPE 的重建功能來(lái)重建程序, 因?yàn)樗鼈冎亟ǖ某绦螂m然可以正常使用,也比較小,但若用來(lái)漢化是很容易出錯(cuò)的。這里還是不要手工來(lái)調(diào)整了,我們直接用一下 PE Optimizer 這個(gè)工具來(lái)優(yōu)化程序一下,這個(gè)工具優(yōu)化出來(lái)的程序基本上和手工修改的差不多。優(yōu)化后我們?cè)倏匆幌麓笮。?0K->6.5K,呵呵,和我們?cè)瓉?lái)的程序一樣大。

二、 WinUpack 主程序的脫殼及優(yōu)化

如果文章寫到這里收工的話,估計(jì)會(huì)有人說(shuō)你自己編個(gè)程序,再加個(gè)殼來(lái)談脫殼后的優(yōu)化,你完全可以對(duì)照原程序來(lái)進(jìn)行啊。OK,那我們就來(lái)個(gè)沒(méi)有對(duì)照的,冒著被 dwing 狂扁的危險(xiǎn),我就拿 WinUpack 0.39 final 中的那個(gè)中文版 WinUpackC.exe 來(lái)開(kāi)刀。不過(guò) dwing 要來(lái)了,大家要掩護(hù)我逃跑啊,呵呵。

WinUpackC.exe 脫殼我就不多說(shuō)了,OEP 是 0040A4BE,直接在 OD 中 CTR+G 轉(zhuǎn)到地址 0040A4BE,F(xiàn)4 運(yùn)行到這,就可以用 LordPE 完全轉(zhuǎn)存了。我們還是把轉(zhuǎn)存后的文件保存為 dumped.exe。現(xiàn)在不要關(guān) OD,在 ImportREC 中選擇 WinUpackC.exe 的進(jìn)程,輸入 OEP:A4BE,選自動(dòng)查找 IAT,可以得到正確的輸入表,大小是 00000B18。保存一下樹(shù)文件備用。讓 OD 和 ImportREC 都開(kāi)在那,現(xiàn)在我們用 LordPE 的16進(jìn)制編輯區(qū)段功能來(lái)觀察一下第一個(gè)區(qū)段中的內(nèi)容。具體怎么分析原來(lái)區(qū)段的起始地址我前面已經(jīng)說(shuō)過(guò)了,此處只談結(jié)果。經(jīng)分析可知偏移 1000-AFFF應(yīng)該是代碼段,大小為 A000;B000-DFFF 應(yīng)該是數(shù)據(jù)段,E000-FFFF 應(yīng)該是另一個(gè)段;功能我不是很清楚 ,可能原來(lái)也用于存放輸入表信息的。我就把它和前面的 B000-DFFF 一起當(dāng)成數(shù)據(jù)段,這樣數(shù)據(jù)段就大小就是10000 - B000 = 5000;10000-11FFF 應(yīng)該是資源段;12000-12FFF 包含了部分輸入表的信息,應(yīng)該是加殼后搞出來(lái)的。不過(guò)這個(gè)段對(duì)我們毫無(wú)作用,不作考慮。現(xiàn)在對(duì)我們有用的就是偏移 1000-FFFF 的部分,這里有兩個(gè)區(qū)段。根據(jù) ImportREC 中所顯示的輸入表大小 00000B18 及前面兩個(gè)段用到的偏移,我們只要在偏移 10000 處添加一個(gè)大小為 1000 的段用來(lái)存放輸入表信息就可以了。因此資源段我們應(yīng)該讓它從 11000 開(kāi)始。分析完了就可以開(kāi)工了,先把 dumped.exe 復(fù)制一份留作參考,WinHEX 上場(chǎng),ALT+G 轉(zhuǎn)到偏移 10000 處,從此處開(kāi)始選擇一個(gè)直到文件結(jié)尾的塊,刪除。我們還是借用一下 XP_SP2 記事本的文件頭,把記事本偏移 0-FFF,大小為 1000 的內(nèi)容復(fù)制過(guò)來(lái),覆蓋到 dumped.exe 的對(duì)應(yīng)位置。全部完成后保存 dumped.exe。現(xiàn)在由 PETools 上場(chǎng),用其 PE 編輯器打開(kāi) dumped.exe,先把區(qū)段數(shù)改為 2,再修正一下鏡像基址為 00400000,然后轉(zhuǎn)到區(qū)段編輯器,根據(jù)我們上面分析的兩個(gè)區(qū)段的偏移及大小調(diào)整區(qū)段的虛擬偏移、大小;RAW 偏移、大小。完成后再新建一個(gè)區(qū)段用來(lái)保存輸入表信息,偏移是 10000,大小為 1000,再修改一下特征值。

現(xiàn)在關(guān)掉 PETools,我們開(kāi)始用 ImportREC 來(lái)修正輸入表。去掉添加一個(gè)新的節(jié)前面的勾,在新建輸入表信息中填入 RVA:00010000,點(diǎn)修復(fù)轉(zhuǎn)存文件,選擇我們修改過(guò)的 dumped.exe 來(lái)修復(fù),完成后我們得到 dumped_.exe。到這就要開(kāi)始把資源加進(jìn)去了。 FixRes 上,選我們?cè)瓉?lái)備份的那個(gè) dumped.exe,新建 RVA 為 11000,文件對(duì)齊為 200,Dump 資源為 rsrc.bin。

再讓 LordPE 上場(chǎng)吧(有人要說(shuō)了,這么多工具換來(lái)?yè)Q去你也不嫌累?這個(gè)...是比較累,本來(lái)是打算自己寫一個(gè)工具來(lái)減小工作量的。不過(guò)因?yàn)樘珣校軐⒕途蛯⒕土耍S?LordPE 打開(kāi)修正過(guò)輸入表的那個(gè) dumped_.exe,點(diǎn)區(qū)段按鈕,在區(qū)段編輯窗口中右鍵選擇從磁盤載入段,把我們前面 Dump 的那個(gè) rsrc.bin 添加進(jìn)來(lái)。編輯一下區(qū)段。

現(xiàn)在關(guān)掉區(qū)段編輯,點(diǎn)擊目錄按鈕,再用 LordPE 打開(kāi)備份的 dumped.exe 進(jìn)行參考,我們來(lái)編輯一下 dumped_.exe 的目錄,主要是調(diào)整一下資源目錄的 RVA 和大小,把其他一些沒(méi)用到的目錄 RVA 和 大小清零。

完成后退出 LordPE,再用 PETools 打開(kāi) dumped_.exe,編輯可選頭中的一些內(nèi)容及調(diào)整鏡像大小。

保存我們所做的工作,退出 PETools,現(xiàn)在 dumped_.exe 文件大小是 72.5K。運(yùn)行一下 dumped_.exe,呵呵,正常運(yùn)行了。把 dumped_.exe 復(fù)制一份保存為復(fù)件 dumped_.exe,用 dumped_.exe 給復(fù)件 dumped_.exe 用默認(rèn)選項(xiàng)加個(gè)殼看看, 72.5K->27.3K,原版未脫殼前是 26.6K,看來(lái)還是有差距啊。不管了,用 PE Optimizer 來(lái)優(yōu)化一下 dumped_.exe,72.5K->59.5K,收工。

WinUpack 加殼時(shí)合并了區(qū)段,而一些其他的殼給程序加殼時(shí)并沒(méi)有合并區(qū)段,也沒(méi)有破壞 PE 頭,這樣脫殼后的程序優(yōu)化起來(lái)要簡(jiǎn)單一點(diǎn),可以省掉前面的到脫殼后的第一個(gè)段中判斷區(qū)段及修正 PE 頭的步驟,只要把有用的段給保存下來(lái),沒(méi)用的去掉,選好位置重建輸入表和資源,再裝配起來(lái)就可以了。要想優(yōu)化后的程序可以用漢化工具漢化的話,一般都要把資源放在最后一個(gè)區(qū)段,否則容易出錯(cuò)。而對(duì)應(yīng) DLL 這樣的文件修復(fù)時(shí)要考慮重定位和輸出表,重定位可以采用 ReloX 來(lái)修復(fù),同樣可以指定位置重建。輸出表可以采用看雪兄的工具 PeMove 來(lái)挪移,同樣這個(gè)工具也可以挪移重定位表。關(guān)于 DLL 這類文件的脫殼后優(yōu)化我就不講了,基本方法類似。


熱詞搜索:

上一篇:系統(tǒng)安全之各類脫殼方法與注意事項(xiàng)
下一篇:黑客技巧之利用圖片做木馬應(yīng)用完全解析

分享到: 收藏
国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区
国产精品欧美一级免费| 欧美成人a视频| eeuss影院一区二区三区| 另类小说一区二区三区| 日韩福利视频网| 免播放器亚洲一区| 亚洲成精国产精品女| 亚洲码国产岛国毛片在线| 亚洲另类一区二区| 亚洲免费观看高清在线观看| 日韩理论片中文av| 亚洲日本韩国一区| 亚洲国产一区在线观看| 亚洲国产日日夜夜| 蜜桃精品视频在线| 国产成人一区二区精品非洲| 不卡电影一区二区三区| 色欧美乱欧美15图片| 欧美日韩一区不卡| 日韩精品一区二区三区在线 | 国产精品福利在线播放| 久久精品一区二区三区不卡牛牛| 久久久五月婷婷| 中文字幕中文在线不卡住| 亚洲一二三四区不卡| 成人一区二区视频| 成人一区二区视频| 在线中文字幕不卡| 日韩一区二区三| 欧美国产丝袜视频| 亚洲第一会所有码转帖| 免费高清视频精品| 成人午夜伦理影院| 欧美日韩午夜影院| 久久精品亚洲乱码伦伦中文 | 欧美性受极品xxxx喷水| 欧美一区二区三区在线电影| 国产视频一区在线观看| 一区二区三区在线免费播放| 六月丁香婷婷色狠狠久久| 色欲综合视频天天天| 欧美成人精精品一区二区频| 中文字幕一区三区| 欧美aaaaaa午夜精品| 在线精品视频免费观看| 久久久久久久久久看片| 婷婷激情综合网| www.亚洲人| 日韩精品一区二区三区在线| 一个色综合av| 风间由美一区二区av101| 91麻豆精品国产自产在线| 中文一区在线播放| 久久国产人妖系列| 欧美在线播放高清精品| 国产精品入口麻豆九色| 久久精品国产99| 欧美喷潮久久久xxxxx| 中文字幕中文字幕一区| 国产99精品国产| 日韩欧美综合一区| 丝袜a∨在线一区二区三区不卡| 成人app下载| 国产欧美日韩三区| 国产一区在线观看麻豆| 日韩视频永久免费| 亚洲aⅴ怡春院| 日本高清无吗v一区| 中文字幕日韩av资源站| 风流少妇一区二区| 中文子幕无线码一区tr| 国产98色在线|日韩| 国产视频一区二区在线观看| 国产精品一区免费视频| 精品对白一区国产伦| 久久国产剧场电影| 欧美mv和日韩mv的网站| 精品一区二区免费视频| 日韩欧美电影一区| 久久激情五月婷婷| 精品国产一二三| 久久99精品视频| 欧美成人r级一区二区三区| 久久国产乱子精品免费女| 欧美r级电影在线观看| 国产高清久久久| 国产精品美女久久久久久久网站| 成人天堂资源www在线| 中文字幕成人在线观看| 91老师片黄在线观看| 亚洲与欧洲av电影| 91精品国产色综合久久不卡电影| 日韩在线一区二区| 精品理论电影在线观看| 国产真实乱对白精彩久久| 国产亚洲欧美日韩俺去了| 国产不卡视频在线播放| 亚洲男人都懂的| 欧美精品久久一区二区三区| 日本强好片久久久久久aaa| 精品国产一区二区三区av性色| 国产一区二区三区免费| 亚洲欧美日韩国产综合| 337p亚洲精品色噜噜噜| 黄色资源网久久资源365| 国产精品久久久久aaaa| 欧美日韩久久一区二区| 精品一区二区三区免费| 国产精品久久久久久久第一福利 | 555www色欧美视频| 国产福利一区二区三区在线视频| 自拍偷拍亚洲欧美日韩| 7777精品伊人久久久大香线蕉 | 亚洲激情校园春色| 欧美成人猛片aaaaaaa| 99久久婷婷国产精品综合| 日日欢夜夜爽一区| 中文av一区特黄| 欧美伦理影视网| 成人综合激情网| 日韩高清在线电影| 中文字幕中文乱码欧美一区二区| 欧美三级日韩三级| 国产乱码精品一品二品| 亚洲1区2区3区4区| 日韩理论片网站| 国产午夜精品福利| 日韩欧美亚洲另类制服综合在线| 97精品国产露脸对白| 精品一区二区综合| 丝袜美腿亚洲综合| 亚洲一区视频在线观看视频| 久久精品人人做人人爽人人| 欧美无乱码久久久免费午夜一区 | 91精品国产品国语在线不卡| 91在线看国产| 从欧美一区二区三区| 国产自产高清不卡| 免费高清成人在线| 亚洲一级电影视频| 亚洲乱码中文字幕综合| 国产精品久线观看视频| 久久久一区二区三区捆绑**| 91麻豆精品国产91久久久久久| 色视频成人在线观看免| 97久久久精品综合88久久| 成人深夜在线观看| 国产在线不卡一区| 激情成人午夜视频| 美女国产一区二区三区| 日韩av电影免费观看高清完整版 | 久久精品在这里| 久久久久久久久久久黄色| 日韩免费电影一区| 精品日韩一区二区| 日韩精品在线网站| 精品人在线二区三区| 日韩免费观看高清完整版| 日韩一区二区免费在线观看| 在线播放91灌醉迷j高跟美女| 日本道免费精品一区二区三区| av不卡在线播放| 日本乱码高清不卡字幕| 欧美日韩一区二区三区在线看| 色88888久久久久久影院野外| 91福利小视频| 欧美美女一区二区| 69精品人人人人| 精品国产乱码久久久久久浪潮| 精品国产成人在线影院| 国产欧美一区二区精品性色| 国产欧美日产一区| 亚洲日本在线a| 日本成人在线一区| 国内精品免费**视频| jlzzjlzz亚洲女人18| 欧美午夜电影一区| 777亚洲妇女| 国产三级一区二区| 亚洲少妇屁股交4| 日韩精品欧美成人高清一区二区| 美女mm1313爽爽久久久蜜臀| 成人黄色电影在线| 欧美日韩你懂的| 久久亚洲精精品中文字幕早川悠里| 国产精品青草久久| 亚洲午夜久久久久中文字幕久| 日本女优在线视频一区二区| 国产.精品.日韩.另类.中文.在线.播放 | 国产精品高潮呻吟| 日韩主播视频在线| 99热精品一区二区| 欧美一级在线免费| **欧美大码日韩| 久国产精品韩国三级视频| 91黄色免费看| 26uuu久久天堂性欧美| 亚洲精品高清在线| 国产精选一区二区三区| 欧美伦理视频网站|