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