Posted on 2009-09-07 22:09
S.l.e!ep.¢% 閱讀(340)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
PE
? 下面我簡(jiǎn)單介紹一下在不同的系統(tǒng)平臺(tái)下可執(zhí)行文件的異同以及外殼程序的要求:??
? 1、DOS?? 平臺(tái):??
? DOS?? 下面的可執(zhí)行文件格式分為兩種,一種是以.COM?? 結(jié)尾的純代碼文件。COM?? 文件沒(méi)有文件頭部分,缺省的總是從100H處開(kāi)始執(zhí)行,沒(méi)有重定位項(xiàng),這也限制了它的所有代碼和數(shù)據(jù)必須控制在64K以內(nèi)。對(duì)這種程序進(jìn)行外殼加密是十分簡(jiǎn)單的,只要加密后的代碼必須保證在64K以內(nèi)就可以了。另外一種是以.EXE結(jié)尾的文件,這種文件以MZ開(kāi)頭,通常我們稱之為MZ文件。MZ文件有一個(gè)文件頭,用來(lái)指出每個(gè)段的定義,以及重定位表。.EXE文件擺脫了64K的限制,是DOS下最主要的文件格式。外殼加密程序主要應(yīng)處理好的就是重定位項(xiàng)的問(wèn)題。??
? 2、Windows?? 16?? 位平臺(tái):??
? 在Windows?? 3.1平臺(tái)下Microsoft推出了一種新的可執(zhí)行文件格式,在MZ文件頭之后又有一個(gè)以NE開(kāi)始的文件頭,我們稱之為NE文件。由于Windows的可執(zhí)行文件同DOS相比增加了很多內(nèi)容,如資源、動(dòng)態(tài)庫(kù)等。NE格式表現(xiàn)極為復(fù)雜,NE格式文件裝載程序讀取磁盤(pán)上的文件后,需要在內(nèi)存中成一個(gè)完全不同的數(shù)據(jù)結(jié)構(gòu)。但Microsoft可預(yù)見(jiàn)到這種格式的弱點(diǎn),它允許用戶編寫(xiě)自裝載代碼,也就是說(shuō)你大可不必理睬?? NE?? 格式的種種要求,只要你的程序能夠在內(nèi)存中生成?? Windows?? 所需要的結(jié)構(gòu),Windows?? 不關(guān)心你存儲(chǔ)在磁盤(pán)上的文件是什么結(jié)構(gòu)的。正是利用這個(gè)特性,使Windows?? 16?? 位平臺(tái)的外殼加密成為可能。因?yàn)槟愕淖匝b載代碼中除了裝載代碼外,還可以干一些你想干的事情。??
? 3、Windows?? 32?? 位平臺(tái):??
? 在?? Windows?? 95/NT/2000?? 上,Microsoft又推出了一種被稱之為Portable的新的可執(zhí)行文件格式。PE文件格式是從COFF的OBJ格式發(fā)展而來(lái)的,它同NE格式相比進(jìn)了一大步,?? 其文件在磁盤(pán)中的格式同內(nèi)存中的格式區(qū)別不大,裝載程序?qū)崿F(xiàn)起來(lái)相當(dāng)簡(jiǎn)單,通過(guò)文件內(nèi)存映像機(jī)制將磁盤(pán)文件映射到虛擬地址空間,并進(jìn)行一下重定位及設(shè)定引入地址表即可。但由于?? PE?? 文件不支持自裝載,很多程序都用自己的方法來(lái)管理程序中的數(shù)據(jù)(如VB、VF等),標(biāo)準(zhǔn)很不統(tǒng)一,給外殼加密的實(shí)現(xiàn)帶來(lái)了很大的困難。另外還有一些技術(shù)細(xì)節(jié)資料的匱乏,也造成外殼加密實(shí)現(xiàn)上的困難。現(xiàn)有的外殼加密程序大多都是繞過(guò)一些敏感的內(nèi)容來(lái)進(jìn)行的,所以說(shuō)PE下的外殼加密距離標(biāo)準(zhǔn)化、通用化還有一定的距離。??
? 外殼加密程序也不是沒(méi)有缺點(diǎn)的,有很多網(wǎng)上免費(fèi)的外殼加密程序兼容性很差,加密后的程序在某些計(jì)算機(jī)或某些操作系統(tǒng)下無(wú)法運(yùn)行。但通常一個(gè)好的外殼加密程序足以抵擋大多數(shù)解密者的進(jìn)攻,起碼也會(huì)大大增加解密所花費(fèi)的時(shí)間。
本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/dennishan/archive/2008/10/09/3043667.aspx