者: 飛舞的T恤 來源: / 菜鳥手動(dòng)脫Armadillo CopyMem-ll +Debug-Blocker殼全過程,超詳細(xì)。
【使用 工具 】 Ollydbg,Loadpe,Imprec1.6F 【脫殼平臺(tái)】 Win 2K 【 軟件 名稱】 按鍵精靈3 V3.11 【加殼方式】 Armadillo 3.00a - 3.60 -> Silicon Realms Toolworks 【保護(hù)方式】 Armadillo CopyMem-ll +Debug-Blocker 【脫殼人】飛舞的T恤 -------------------------------------------------------------------------------- 【脫殼內(nèi)容】 小弟第一次手動(dòng)脫殼就碰上了Armadillo CopyMem-ll +Debug-Blocker難纏的東東,所以整理了一下兩個(gè)星期來脫Armadillo CopyMem-ll +Debug-Blocker的全過程,希望能給第一次脫Armadillo CopyMem-ll +Debug-Blocker 新手 們一點(diǎn)幫助,始大家少走點(diǎn)彎路(我的彎路走了不少)。 小弟第一次脫殼,本來想從簡單的殼開始學(xué)習(xí)的,可像什么upx、aspack等殼都有 工具 脫,弄的一點(diǎn)興趣都沒有了(本來脫殼就是想在朋友面前炫一下,有 工具 脫的殼當(dāng)然沒有挑戰(zhàn)性了)。
這時(shí)忽然發(fā)現(xiàn)N久(多久記不到了,反正剛出我就下了,一直沒用)前放在咱 電腦 里的按鍵精靈3 v3.11,哈哈,小樣就從你入手當(dāng)我脫殼的 入門 學(xué)習(xí)吧。 用PEiD.exe一看是Armadillo的殼,運(yùn)行程序發(fā)現(xiàn)進(jìn)程里有兩個(gè)按鍵精靈3.exe,哈哈Armadillo 雙進(jìn)程標(biāo)準(zhǔn)殼。
在這之前我先看了weiyi75、fly、csjwaman等大大們的雙進(jìn)程標(biāo)準(zhǔn)殼的脫文。最過選擇了照著weiyi75大大的脫文《愛的中 體驗(yàn) 之Armadillo3.x雙進(jìn)程之Mr.Captor》按步就搬的開脫了。
主要是weiyi75[Dfcg]的脫文里的脫法簡單易學(xué),對我這個(gè) 新手 來說比較直觀簡便。 OD載入程序,插件自動(dòng)隱藏OD,忽略所有異常。
00485000 按> $Content$nbsp; 60 pushad //外殼入口 00485001 . E8 00000000 call 按鍵精靈.00485006 00485006 $Content$nbsp; 5D pop ebp 00485007 . 50 push eax 00485008 . 51 push ecx 00485009 . EB 0F jmp short 按鍵精靈.0048501A 。
命令行下斷點(diǎn) BP OpenMutexA,F9運(yùn)行。
中斷 77E6C503 K> 55 push ebp 77E6C504 8BEC mov ebp,esp 77E6C506 51 push ecx 77E6C507 51 push ecx 77E6C508 837D 10 00 cmp dword ptr ss:[ebp+10],0 77E6C50C 56 push esi 77E6C50D 0F84 4AB90200 je KERNEL32.77E97E5D 。
在一些計(jì)算機(jī)軟件里也有一段專門負(fù)責(zé)保護(hù)軟件不被非法修改或反編譯的程序。它們一般都是先于程序運(yùn)行,拿到控制權(quán),然后完成它們保護(hù)軟件的任務(wù)。就像動(dòng)植物的殼一般都是在身體外面一樣理所當(dāng)然(但后來也出現(xiàn)了所謂的“殼中帶籽”的殼)。由于這段程序和自然界的殼在功能上有很多相同的地方,基于命名的規(guī)則,大家就把這樣的程序稱為“殼”了。就像計(jì)算機(jī)病毒和自然界的病毒一樣,其實(shí)都是命名上的方法罷了。
從功能上抽象,軟件的殼和自然界中的殼相差無幾。無非是保護(hù)、隱蔽殼內(nèi)的東西。而從技術(shù)的角度出發(fā),殼是一段執(zhí)行于原始程序前的代碼。原始程序的代碼在加殼的過程中可能被壓縮、加密……。當(dāng)加殼后的文件執(zhí)行時(shí),殼-這段代碼先于原始程序運(yùn)行,他把壓縮、加密后的代碼還原成原始程序代碼,然后再把執(zhí)行權(quán)交還給原始代碼。 軟件的殼分為加密殼、壓縮殼、偽裝殼、多層殼等類,目的都是為了隱藏程序真正的OEP(入口點(diǎn),防止被破解)。關(guān)于“殼”以及相關(guān)軟件的發(fā)展歷史請參閱吳先生的《一切從“殼”開始》。
下面來介紹一個(gè)檢測殼的軟件 PEID v0.92 這個(gè)軟件可以檢測出 450種殼 新版中增加病毒掃描功能,是目前各類查殼工具中,性能最強(qiáng)的。
另外還可識(shí)別出EXE文件是用什么語言編寫的VC++、Delphi、VB或Delphi等。 支持文件夾批量掃描 我們用PEID對easymail.exe進(jìn)行掃描 找到殼的類型了 UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo 說明是UPX的殼 下面進(jìn)行 步驟2 脫殼 對一個(gè)加了殼的程序,去除其中無關(guān)的干擾信息和保護(hù)限制,把他的殼脫去,解除偽裝,還原軟件本來的面目。
這個(gè)過程就叫做脫殼。 脫殼成功的標(biāo)志 脫殼后的文件正常運(yùn)行,功能沒有損耗。
還有一般脫殼后的文件長度都會(huì)大于原文件的長度。 即使同一個(gè)文件,采用不同的脫殼軟件進(jìn)行脫殼,由于脫殼軟件的機(jī)理不通,脫出來的文件大小也不盡相同。
關(guān)于脫殼有手動(dòng)脫殼和自動(dòng)脫殼 自動(dòng)脫殼就是用專門的脫殼機(jī)脫 很簡單 按幾下就 OK了 手動(dòng)脫殼相對自動(dòng)脫殼 需要的技術(shù)含量微高 這里不多說了 UPX是一種很老而且強(qiáng)大的殼 不過它的脫殼機(jī)隨處就能找到 UPX本身程序就可以通過 UPX 文件名 -d 來解壓縮 不過這些需要的 命令符中輸入 優(yōu)點(diǎn)方便快捷 缺點(diǎn)DOS界面 為了讓大家省去麻煩的操作 就產(chǎn)生了一種叫 UPX SHELL的外殼軟件 UPX SHELL v3.09 UPX 外殼程序! 目的讓UPX的脫殼加殼傻瓜化 注:如果程序沒有加殼 那么我們就可以省去第二步的脫殼了,直接對軟件進(jìn)行分析了。 脫完后 我們進(jìn)行 步驟3 運(yùn)行程序 嘗試注冊 獲取注冊相關(guān)信息 通過嘗試注冊 我們發(fā)現(xiàn)一個(gè)關(guān)鍵的字符串 “序列號輸入錯(cuò)誤” 步驟4 反匯編 反匯編一般用到的軟件 都是 W32Dasm W32dasm對于新手 易于上手 操作簡單 W32Dasm有很多版本 這里我推薦使用 W32Dasm 無極版 我們現(xiàn)在反匯編WebEasyMail的程序文件easymail.exe 然后看看能不能找到剛才的字符串 步驟5 通過eXeScope這個(gè)軟件來查看未能在w32dasm中正確顯示的字符串信息 eXeScope v6.50 更改字體,更改菜單,更改對話框的排列,重寫可執(zhí)行文件的資源,包括(EXE,DLL,OCX)等。
是方便強(qiáng)大的漢化工具,可以直接修改用 VC++ 及 DELPHI 編制的程序的資源,包括菜單、對話框、字符串表等 新版可以直接查看 加殼文件的資源 我們打開eXeScope 找到如下字串符 122,"序列號輸入錯(cuò)誤 " 123,"恭喜您成為WebEasyMail正式用戶中的一員! " 124,注冊成功 125,失敗 重點(diǎn)是122 步驟6 再次返回 w32dasm * Possible Reference to String Resource ID=00122: "?鲹e?" 但是雙擊后 提示說找不到這個(gè)字串符 不是沒有 是因?yàn)?"?鲹e?"是亂碼 w32dasm對于中文顯示不是太好 畢竟不是國產(chǎn)軟件 先把今天會(huì)用到的匯編基本指令跟大家解釋一下 mov a,b ;把b的值賦給a,使a=b call :調(diào)用子程序 ,子程序以ret結(jié)為 ret :返回主程序 je或jz :若相等則跳轉(zhuǎn) jne或jnz :若不相等則跳轉(zhuǎn) push xx:xx 壓棧 pop xx:xx 出棧 棧,就是那些由編譯器在需要的時(shí)候分配,在不需要的時(shí)候自動(dòng)清楚的變量的存儲(chǔ)區(qū)。里面的變量通常是局部變量、函數(shù)參數(shù)等。
我們搜索 Possible Reference to String Resource ID=00122 因?yàn)閷文支持很好 我們來到了 * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:00406F17(C) //跳轉(zhuǎn)來自 406F17 | * Possible Reference to String Resource ID=00125: "1%" | :004070DD 6A7D push 0000007D :004070DF 8D4C2410 lea ecx, dword ptr [esp+10] :004070E3 E8F75A1200 call 0052CBDF * Possible Reference to String Resource ID=00122: "?鲹e?" | :004070E8 6A7A push 0000007A :004070EA 8D4C2408 lea ecx, dword ptr [esp+08] :004070EE E8EC5A1200 call 0052CBDF 我們來到 :00406F01 8B876C080000 mov eax, dword ptr [edi+0000086C]這里是對 :00406F07 8B4C2408 mov ecx, dword ptr [esp+08] :00406F0B 50 push eax//這兩個(gè)eax和ecx入棧就比較讓我們懷疑了 :00406F0C 51 push ecx//產(chǎn)生注冊碼 :00406F0D E8AE381100 call 0051A7C0//這CALL里對注冊位應(yīng)該會(huì)有設(shè)置 :00406F12 83C40C add esp, 0000000C :00406F15 85C0 test eax, eax// 檢測注冊位 :00406F17 0F85C0010000 jne 004070DD //不存在注冊位 就會(huì)跳到4070DD就會(huì)出現(xiàn)那個(gè)錯(cuò)誤的字串符了 我們記住406F01這個(gè)地址 接著進(jìn)行下一步 步驟7 這一步我們進(jìn)行的是調(diào)試 用到的軟件是ollydbg 好了我們找到了 注冊碼0012AF04 00FD4A10 ASCII "" 但是這個(gè)并不是我們的主要目的 我們還要做出屬于自己的注冊機(jī) 相信這個(gè)是很多人夢寐以求的事情 步驟8 制作注冊機(jī) 注冊機(jī)我們需要的是一個(gè)KEYMAKE的軟件 因?yàn)?.0是演示版而且停止更新了 所以我們用1.73版 做一個(gè)內(nèi)存注冊機(jī) 需要下面幾個(gè)資料 中斷地址:406F0C 中斷次數(shù):1 第一字節(jié):51 指令長度:1 好了 一個(gè)完美的注冊機(jī) 就產(chǎn)生了。
金蟬脫殼 【拼音】 jīn chán tuō qiào 【出處】 元·關(guān)漢卿《謝天香》第二折:”便使盡些伎倆,千愁斷我肚腸,覓不的個(gè)金蟬脫殼這一個(gè)謊。”
蟬變?yōu)槌上x時(shí)要脫去一層殼。比喻用計(jì)脫身,使人不能及時(shí)發(fā)覺。
【例子】 如今便趕著躲了,料也躲不及,少不得要使個(gè)“~”的法子。(清·曹雪芹《紅樓夢》第二十七回) 【三十六計(jì)】 存其形,完其勢①;友不疑,敵不動(dòng)。
巽而止蠱②?!咀⑨尅?①存其形,完其勢,保存陣地已有的戰(zhàn)斗形貌,進(jìn)一步完備繼續(xù)戰(zhàn)斗的各種態(tài)勢。
②巽而止蠱:語出《易經(jīng).蠱》卦。蠱,卦名。
本卦為異卦相疊(巽下艮上)。本卦上卦為艮為山為剛,為陽卦;巽為風(fēng)為柔,為陰勢。
故“蠱”的卦象是“剛上柔下”,意即高山沉靜,風(fēng)行于山下,事可順當(dāng)。又,艮在上卦,為靜;巽為下卦,為謙遜,故說“謙虛沉靜”,“弘大通泰”是天下大治之象。
此計(jì)引本卦《彖》辭:“巽而止,蠱?!逼湟馐俏野抵兄?jǐn)慎地實(shí)行主力轉(zhuǎn)移,穩(wěn)住敵人,我則乘敵不驚疑之際脫離險(xiǎn)境,就可安然躲過戰(zhàn)亂之危。
“蠱”,意為順事。 【按語】 共友擊敵,坐觀其勢。
尚另有一敵,則須去而存勢。則金蟬脫殼者,非徒走也,蓋為分身之法也。
故大軍轉(zhuǎn)動(dòng).而旌旗金鼓,儼然原陣,使敵不敢動(dòng),友不生疑,待己摧他敵而返,而友敵始知,或猶且不如。然則金蟬脫殼者,在對敵之際,而抽精銳以襲別陣也。
如:諸墓亮卒于軍,司馬懿追焉,姜維令儀反旗鳴鼓,若向懿者,懿退,于是儀結(jié)營而去。檀道濟(jì)被圍,乃命軍士悉甲,身自(白)服乘輿徐出外圍,魏懼有伏,不敢逼,乃歸。
【解析】 認(rèn)真分析形勢,準(zhǔn)確作出判斷,擺脫敵人,轉(zhuǎn)移部隊(duì),決不是消極逃胞,一走了事,而應(yīng)該是一種分身術(shù),要巧妙地暗中調(diào)走精銳部隊(duì)去襲擊別處的敵人。但這種調(diào)動(dòng)要神不知,鬼不覺,極其隱蔽。
因此,一定要把假象造得有逼真的效果。轉(zhuǎn)移時(shí),依然要旗幟招展,戰(zhàn)鼓隆隆,好象仍然保持著原來的陣勢,這樣可以使敵軍不敢動(dòng),友軍不懷疑。
檀道濟(jì)在被敵人圍困時(shí),竟然能帶著武裝士兵,自己穿著顯眼的白色服裝,坐在車上,不慌不忙地向外圍進(jìn)發(fā)。敵軍見此,以為檀道濟(jì)設(shè)有伏兵,不敢逼近,讓檀道濟(jì)安然脫離圍困。
檀道濟(jì)此計(jì),險(xiǎn)中有奇,使敵人被假象迷惑,作出了錯(cuò)誤的判斷?!咎皆础?金蟬脫殼的本意是:寒蟬在蛻變時(shí),本體脫離皮殼而走,只留下蟬蛻還掛在枝頭。
此計(jì)用于軍事,是指通過偽裝擺脫敵人,撤退或轉(zhuǎn)移,以實(shí)現(xiàn)我方的戰(zhàn)略目標(biāo)的謀略。穩(wěn)住對方,撤退或轉(zhuǎn)移,決不是驚慌失措,消極逃跑,而是保留形式,抽走內(nèi)容,穩(wěn)住對方,使自己脫離險(xiǎn)境,達(dá)到己方戰(zhàn)略目標(biāo),己方常??捎们擅罘直D(zhuǎn)移的機(jī)會(huì)出擊另一部分?jǐn)橙恕?/p>
三國時(shí)期,諸葛亮六出祁山,北伐中原,但一直未能成功,終于在第六次北伐時(shí),積勞成疾,在五丈原病死于軍中。為了不使蜀軍在退回漢中的路上遭受損失,諸葛亮在臨終前向姜維密授退兵之計(jì)。
姜維遵照諸葛亮的吩咐,在諸葛亮死后,秘不發(fā)喪,對外嚴(yán)密封鎖消息。他帶著靈柩,秘密率部撤退。
司馬懿派部隊(duì)跟蹤追擊蜀軍。姜維命工匠仿諸葛亮摸樣,雕了一個(gè)木人,羽扇綸巾,穩(wěn)坐車中。
并派楊儀率領(lǐng)部分人馬大張旗鼓,向魏軍發(fā)動(dòng)進(jìn)攻。魏軍遠(yuǎn)望蜀軍,軍容整齊,旗鼓大張,又見諸葛亮穩(wěn)坐車中,指揮若定,不知蜀軍又耍什么花招,不敢輕舉妄動(dòng)。
司馬懿一向知道諸葛亮“詭計(jì)多端”,又懷疑此次退兵乃是誘敵之計(jì),于是命令部隊(duì)后撤,觀察蜀軍動(dòng)向。姜維趁司馬懿退兵的大好時(shí)機(jī),馬上指揮主力部隊(duì),迅速安全轉(zhuǎn)移,撤回漢中。
等司馬懿得知諸葛亮已死,再進(jìn)兵追擊,為時(shí)已晚?!竟适隆?宋朝開禧年間,金兵屢犯中原。
宋將畢再遇與金軍對壘,打了幾次勝仗。金兵又調(diào)集數(shù)萬精銳騎兵,要與宋軍決戰(zhàn)。
此時(shí),宋軍只有幾千人馬,如果與金軍決戰(zhàn),必?cái)o疑。畢再遇為了保存實(shí)力,準(zhǔn)備暫時(shí)撤退。
金軍已經(jīng)兵臨城下,如果知道宋軍撤退,肯定會(huì)追殺。那樣,宋軍損失一定慘重。
畢再遇苦苦思索如何蒙蔽金兵,轉(zhuǎn)移部隊(duì)。這對,只聽帳外,馬蹄聲響,畢再遇受到啟發(fā),計(jì)上心來。
他暗中作好撤退部署,當(dāng)天半夜時(shí)分,下令兵士擂響戰(zhàn)鼓,金軍聽見鼓響,以為宋軍趁夜劫營,急忙集合部隊(duì),準(zhǔn)備迎戰(zhàn)。哪知只聽見宋營戰(zhàn)鼓隆隆,卻不見一個(gè)宋兵出城。
宋軍連續(xù)不斷地?fù)艄模瑪嚨媒鸨共坏眯菹?。金軍的頭領(lǐng)似有所悟:原來宋軍采用疲兵之計(jì),用戰(zhàn)鼓攪得我們不得安寧。
好吧,你擂你的鼓,我再也不會(huì)上你的當(dāng)。宋營的鼓聲連續(xù)響了兩天兩夜,金兵根本不予理會(huì)。
到了第三天,金兵發(fā)現(xiàn),宋營的鼓聲逐漸微弱,金軍首領(lǐng)斷定宋軍已經(jīng)疲憊,就派軍分幾路包抄,小心翼翼靠近宋營,見宋營毫無反應(yīng)。金軍首領(lǐng)一聲令下,金兵蜂踴而上,沖進(jìn)宋營,這才發(fā)現(xiàn)宋軍已經(jīng)全部安全撤離了。
原來畢再遇使了“金蟬脫殼”之計(jì)。他命令兵士將數(shù)十只羊的后腿捆好綁在樹上,使倒懸的羊的前腿拼命蹬踢,又在羊腿下放了幾十面鼓,羊腿拼命蹬踢,鼓聲隆隆不斷。
畢再遇用“懸羊擊鼓“的計(jì)策迷惑了敵軍,利用兩天的時(shí)間安全轉(zhuǎn)移了。
手動(dòng)脫殼就是不借助自動(dòng)脫殼工具,而是用動(dòng)態(tài)調(diào)試工具SOFTICE或TRW2000來脫殼。
這課談?wù)勔恍┤腴T方面的知識(shí),如要瞭解更深的脫殼知識(shí),請參考《脫殼高級篇》這課。 工具 *調(diào)試器:SoftICE 、TRW2000 *記憶體抓取工具:Procdump等; *十六進(jìn)位工具:Hiew、UltraEdit、Hex Workshop等; *PE編輯工具: Procdump、PEditor等; 名詞概念 ★PE文件:Microsoft設(shè)計(jì)了一種新的檔格式Portable Executable File Format(即PE格式),該格式應(yīng)用於所有基於Win32的系統(tǒng):Windows NT、Windows 2000、Win32s及Windows 95/98。
★基址(ImageBase ):是指裝入到記憶體中的EXE或DLL程式的開始位址,它是Win32中的一個(gè)重要概念。 在Windows NT中,缺省的值是10000h;對於DLLs,缺省值為400000h。
在Windows 95中,10000h不能用來裝入32位的執(zhí)行檔,因?yàn)樵撐恢诽庫端羞M(jìn)程共用的線性位址區(qū)域,因此Microsoft將Win32可執(zhí)行檔的缺省基底位址改變?yōu)?00000h。 ★RVA:相對虛擬位址(Relative Virual Address),是某個(gè)項(xiàng)相對於檔映象位址的偏移。
例如:裝載程式將一個(gè)PE檔裝入到虛擬位址空間中,從10000h開始的記憶體中,如果PE中某個(gè)表在映射中的起始地址是10464h,那麼該表的RVA就是464h。虛擬位址(RVA)=偏移位址+基址(ImageBase ) ★Entry Point:入口點(diǎn),就是程式在完成了對原程式的還原后,開始跳轉(zhuǎn)到剛還原的程式執(zhí)行,此時(shí)的位址就是入口點(diǎn)的值。
2、步驟 ★確定殼的種類 一般拿到軟體后,可用工具FileInfo、gtw、TYP32等偵測文件類型的工具來看看是何種殼,然后再采取措施。 ★入口點(diǎn)(Entry Point)確定 對初學(xué)者來說定位程式解殼后的入口點(diǎn)確定較難,但熟練后,入口點(diǎn)查找是很方便的。
決大多數(shù) PE 加殼程式在被加密的程式中加上一個(gè)或多個(gè)段。 所以看到一個(gè)跨段的 JMP 就有可能是了。
如:UPX 用了一次跨段的 JMP , ASPACK 用了兩次跨段的 JMP 。 這種判斷一般是跟蹤分析程式而找到入口點(diǎn),如是用TRW2000也可試試命令:PNEWSEC,它可讓TRW2000中斷到入口點(diǎn)上。
PNEWSEC:執(zhí)行直到進(jìn)入一個(gè) PE 程式記憶體的新的 section時(shí)產(chǎn)生中斷點(diǎn)。(如不懂,以后到脫殼高級篇自會(huì)明白) 另外也可用D.boy的沖擊波2000,它能輕易的找到任何加密殼的入口點(diǎn), ★dump取記憶體己還原檔 找到入口點(diǎn)后,在此處可以用 Procdump的FULL DUMP功能來抓取記憶體中整個(gè)檔, 如是用TRW2000也可用命令: makepe命令含義:從記憶體中整理出一個(gè)指令名稱的PE格式的exe檔, 當(dāng)前的 EIP 將成為新的程式入口,生成檔的 Import table 已經(jīng)重新生成過了。
生成的PE檔可執(zhí)行任何平臺(tái)和微機(jī)上。 pedump命令含義:將PE檔的記憶體映射直接映射到指定的檔里。
生成的檔只能在本機(jī)執(zhí)行,不能在其他系統(tǒng)平臺(tái)或微機(jī)執(zhí)行。 ★修正剛dump取的檔 如是用 Procdump的FULL DUMP功能脫殼的檔,要用 Procdump或PEditor等PE編輯工具修正入口點(diǎn)(Entry Point)。
常用脫殼工具:
1.文件分析工具(偵測殼的類型):Fi,GetTyp,peid,pe-scan,
2.OEP入口查找工具:SoftICE,TRW,ollydbg,loader,peid
3.dump工具:IceDump,TRW,PEditor,ProcDump32,LordPE
4.PE文件編輯工具PEditor,ProcDump32,LordPE
5.重建Import Table工具:ImportREC,ReVirgin
6.ASProtect脫殼專用工具:Caspr(ASPr V1.1-V1.2有效),Rad(只對ASPr V1.1有效),loader,peid
(1)Aspack: 用的最多,但只要用UNASPACK或PEDUMP32脫殼就行了
(2)ASProtect+aspack:次之,國外的軟件多用它加殼,脫殼時(shí)需要用到SOFTICE+ICEDUMP,需要一定的專業(yè)知識(shí),但最新版現(xiàn)在暫時(shí)沒有辦法。
(3)Upx: 可以用UPX本身來脫殼,但要注意版本是否一致,用-D 參數(shù)
(4)Armadill: 可以用SOFTICE+ICEDUMP脫殼,比較煩
(5)Dbpe: 國內(nèi)比較好的加密軟件,新版本暫時(shí)不能脫,但可以破解
(6)NeoLite: 可以用自己來脫殼
(7)Pcguard: 可以用SOFTICE+ICEDUMP+FROGICE來脫殼
(8)Pecompat: 用SOFTICE配合PEDUMP32來脫殼,但不要專業(yè)知識(shí)
(9)Petite: 有一部分的老版本可以用PEDUMP32直接脫殼,新版本脫殼時(shí)需要用到SOFTICE+ICEDUMP,需要一定的專業(yè)知識(shí) 。
(10)WWpack32: 和PECOMPACT一樣其實(shí)有一部分的老版本可以用PEDUMP32直接脫殼,不過有時(shí)候資源無法修改,也就無法漢化,所以最好還是用SOFTICE配合 PEDUMP32脫殼
我們通常都會(huì)使用Procdump32這個(gè)通用脫殼軟件,它是一個(gè)強(qiáng)大的脫殼軟件,他可以解開絕大部分的加密外殼,還有腳本功能可以使用腳本輕松解開特定外殼的加密文件。另外很多時(shí)候我們要用到exe可執(zhí)行文件編輯軟件ultraedit。我們可以下載它的漢化注冊版本,它的注冊機(jī)可從網(wǎng)上搜到。ultraedit打開一個(gè)中文軟件,若加殼,許多漢字不能被認(rèn)出 ultraedit打開一個(gè)中文軟件,若未加殼或已經(jīng)脫殼,許多漢字能被認(rèn)出 ultraedit可用來檢驗(yàn)殼是否脫掉,以后它的用處還很多,請熟練掌握例如,可用它的替換功能替換作者的姓名為你的姓名注意字節(jié)必須相等,兩個(gè)漢字替兩個(gè),三個(gè)替三個(gè),不足處在ultraedit編輯器左邊用00補(bǔ)。
常見的殼脫法:
1.aspack殼 脫殼可用unaspack或caspr 1.unaspack ,使用方法類似lanuage,傻瓜式軟件,運(yùn)行后選取待脫殼的軟件即可. 缺點(diǎn):只能脫aspack早些時(shí)候版本的殼,不能脫高版本的殼 2.caspr第一種:待脫殼的軟件(如aa.exe)和caspr.exe位于同一目錄下,執(zhí)行windows起始菜單的運(yùn)行,鍵入 caspr aa.exe脫殼后的文件為aa.ex_,刪掉原來的aa.exe,將aa.ex_改名為aa.exe即可。使用方法類似fi 優(yōu)點(diǎn):可以脫aspack任何版本的殼,脫殼能力極強(qiáng)缺點(diǎn):Dos界面。第二種:將aa.exe的圖標(biāo)拖到caspr.exe的圖標(biāo)上***若已偵測出是aspack殼,用unaspack脫殼出錯(cuò),說明是aspack高版本的殼,用caspr脫即可。
2.upx殼 脫殼可用upx待脫殼的軟件(如aa.exe)和upx.exe位于同一目錄下,執(zhí)行windows起始菜單的運(yùn)行,鍵入upx -d aa.exe。
3.PEcompact殼 脫殼用unpecompact 使用方法類似lanuage傻瓜式軟件,運(yùn)行后選取待脫殼的軟件即可。
4.procdump 萬能脫殼但不精,一般不要用 使用方法:運(yùn)行后,先指定殼的名稱,再選定欲脫殼軟件,確定即可脫殼后的文件大于原文件由于脫殼軟件很成熟,手動(dòng)脫殼一般用不到。
手動(dòng)脫殼就是不借助自動(dòng)脫殼工具,而是用動(dòng)態(tài)調(diào)試工具SOFTICE或TRW2000來脫殼。
這課談?wù)勔恍┤腴T方面的知識(shí),如要瞭解更深的脫殼知識(shí),請參考《脫殼高級篇》這課。 工具 *調(diào)試器:SoftICE 、TRW2000 *記憶體抓取工具:Procdump等; *十六進(jìn)位工具:Hiew、UltraEdit、Hex Workshop等; *PE編輯工具: Procdump、PEditor等; 名詞概念 ★PE文件:Microsoft設(shè)計(jì)了一種新的檔格式Portable Executable File Format(即PE格式),該格式應(yīng)用於所有基於Win32的系統(tǒng):Windows NT、Windows 2000、Win32s及Windows 95/98。
★基址(ImageBase ):是指裝入到記憶體中的EXE或DLL程式的開始位址,它是Win32中的一個(gè)重要概念。 在Windows NT中,缺省的值是10000h;對於DLLs,缺省值為400000h。
在Windows 95中,10000h不能用來裝入32位的執(zhí)行檔,因?yàn)樵撐恢诽庫端羞M(jìn)程共用的線性位址區(qū)域,因此Microsoft將Win32可執(zhí)行檔的缺省基底位址改變?yōu)?00000h。 ★RVA:相對虛擬位址(Relative Virual Address),是某個(gè)項(xiàng)相對於檔映象位址的偏移。
例如:裝載程式將一個(gè)PE檔裝入到虛擬位址空間中,從10000h開始的記憶體中,如果PE中某個(gè)表在映射中的起始地址是10464h,那麼該表的RVA就是464h。虛擬位址(RVA)=偏移位址+基址(ImageBase ) ★Entry Point:入口點(diǎn),就是程式在完成了對原程式的還原后,開始跳轉(zhuǎn)到剛還原的程式執(zhí)行,此時(shí)的位址就是入口點(diǎn)的值。
2、步驟 ★確定殼的種類 一般拿到軟體后,可用工具FileInfo、gtw、TYP32等偵測文件類型的工具來看看是何種殼,然后再采取措施。 ★入口點(diǎn)(Entry Point)確定 對初學(xué)者來說定位程式解殼后的入口點(diǎn)確定較難,但熟練后,入口點(diǎn)查找是很方便的。
決大多數(shù) PE 加殼程式在被加密的程式中加上一個(gè)或多個(gè)段。 所以看到一個(gè)跨段的 JMP 就有可能是了。
如:UPX 用了一次跨段的 JMP , ASPACK 用了兩次跨段的 JMP 。 這種判斷一般是跟蹤分析程式而找到入口點(diǎn),如是用TRW2000也可試試命令:PNEWSEC,它可讓TRW2000中斷到入口點(diǎn)上。
PNEWSEC:執(zhí)行直到進(jìn)入一個(gè) PE 程式記憶體的新的 section時(shí)產(chǎn)生中斷點(diǎn)。(如不懂,以后到脫殼高級篇自會(huì)明白) 另外也可用D.boy的沖擊波2000,它能輕易的找到任何加密殼的入口點(diǎn), ★dump取記憶體己還原檔 找到入口點(diǎn)后,在此處可以用 Procdump的FULL DUMP功能來抓取記憶體中整個(gè)檔, 如是用TRW2000也可用命令: makepe命令含義:從記憶體中整理出一個(gè)指令名稱的PE格式的exe檔, 當(dāng)前的 EIP 將成為新的程式入口,生成檔的 Import table 已經(jīng)重新生成過了。
生成的PE檔可執(zhí)行任何平臺(tái)和微機(jī)上。 pedump命令含義:將PE檔的記憶體映射直接映射到指定的檔里。
生成的檔只能在本機(jī)執(zhí)行,不能在其他系統(tǒng)平臺(tái)或微機(jī)執(zhí)行。 ★修正剛dump取的檔 如是用 Procdump的FULL DUMP功能脫殼的檔,要用 Procdump或PEditor等PE編輯工具修正入口點(diǎn)(Entry Point)。
聲明:本網(wǎng)站尊重并保護(hù)知識(shí)產(chǎn)權(quán),根據(jù)《信息網(wǎng)絡(luò)傳播權(quán)保護(hù)條例》,如果我們轉(zhuǎn)載的作品侵犯了您的權(quán)利,請?jiān)谝粋€(gè)月內(nèi)通知我們,我們會(huì)及時(shí)刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學(xué)習(xí)鳥. 頁面生成時(shí)間:3.146秒