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