[發(fā)明專利]一種PE文件代碼合并執(zhí)行方法無效
| 申請?zhí)枺?/td> | 200910058713.2 | 申請日: | 2009-03-26 |
| 公開(公告)號: | CN101504656A | 公開(公告)日: | 2009-08-12 |
| 發(fā)明(設計)人: | 章立春 | 申請(專利權)人: | 成都磐石軟件有限責任公司 |
| 主分類號: | G06F17/30 | 分類號: | G06F17/30 |
| 代理公司: | 成都惠迪專利事務所 | 代理人: | 梁 田 |
| 地址: | 611830四川省*** | 國省代碼: | 四川;51 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 pe 文件 代碼 合并 執(zhí)行 方法 | ||
技術領域
本發(fā)明涉及一種文件合并方法,具體地說,是涉及一種PE文件合并后能夠實現加密保護的PE文件代碼合并執(zhí)行方法。
背景技術
傳統的PE文件其運行與相互調用均存在于一個進程的不連續(xù)的線性內存空間中,每一個新的PE文件被加載,Windows根據PE文件的相關信息從進程的內存空間中開辟一塊新的內存,然后將PE文件的數據載入此內存塊中,然后處理PE文件的導入表等相關需要初始化的數據,每個PE文件被裝入的內存起始地址與相互之間的內存地址差值均不固定,每次初始化新裝入的PE文件均需要重新計算并修正PE相互之間的調用代碼。一般情況下,每個PE文件均是一個單獨的文件。
傳統的PE文件之間的代碼相互之間的調用如圖1所示,假設有A.EXE與B.DLL兩個PE文件,A.EXE被裝入內存的從0x00400000開始大小為0x80000字節(jié)的內存塊中,同時B.DLL被裝入同一進程的從0x00600000開始大小為0x100000字節(jié)的內存塊中,在A.EXE的相對與起始地址向后偏移0x3000字節(jié)處也就是0x403000處有一段調用B.DLL的0x602000處的代碼,該代碼通過位于0x470000處的導入表獲取B.DLL相應代碼的內存地址值,此地址值由系統在載入A.EXE時通過B.DLL的導出表計算得出并寫入到內存0x470000處。當A.EXE的代碼執(zhí)行到0x403000處便跳轉到B.DLL內存空間中的0x00602000處執(zhí)行相應代碼,執(zhí)行完畢并返回后,繼續(xù)0x403005處執(zhí)行,從而達到了代碼之間的相互調用的目的。
傳統方法要求,各PE文件必須為一獨立的文件,并且其相互之間的調用在每次裝入時都需要重新計算并作相應修正。此方法不能有效的對PE的代碼進行保護以及防止被非法利用。
發(fā)明內容
本發(fā)明的目的在于提供一種PE文件代碼合并執(zhí)行方法,通過將多個文件合并為一個文件,實現文件的加密保護的目的,從而避免單一文件被非法利用。
為了實現上述目的,本發(fā)明采用的技術方案如下:
一種PE文件代碼合并執(zhí)行方法,所述PE文件代碼合并執(zhí)行方法包括以下步驟:
(1)建立所述PE文件的文件頭;
(2)建立區(qū)段信息;
(3)將需要合并的各個PE文件數據合并到上述相應的區(qū)段,形成所述PE文件,具體步驟為:
a.根據需要合并的各個PE文件的重定位信息對其代碼分別進行重新修正;
b.將需要合并的各個PE文件數據逐個完整地寫入步驟(2)所建立的區(qū)段中;
c.合并需要合并的各個PE文件的重定位信息,并修正;
d.建立新的重定位表并寫入所述PE文件中;
(4)處理需要合并的各個PE文件之間的相互調用關系;
(5)將需要合并的各個PE文件的初始化數據的代碼附加到所述PE文件中。
所述步驟(1)的方法為:從需要合并的各個PE文件中任意選擇一個PE文件并復制其文件頭作為所述PE文件的文件頭。
所述步驟(1)的方法還包括對所述PE文件的文件頭進行修正。
所述步驟(2)還包括將可執(zhí)行和可讀寫屬性添加至區(qū)段信息的屬性標識中。
所述PE文件代碼合并執(zhí)行方法還包括在步驟(5)執(zhí)行后添加附加處理代碼。
所述a中對PE文件代碼修正的依據基址為:前一個PE文件寫入后的代碼末尾的內存地址減去被修正的PE文件的文件頭的虛擬大小,并省略對前一個PE文件的文件頭的復制。
所述c中重定位信息修正的依據基址為:前一個PE文件寫入后的代碼末尾的內存地址減去被修正的PE文件的PE文件頭的虛擬大小。
所述步驟(4)具體包括:收集需要合并的各個PE文件在合并前的導入表和導出表信息,將需要合并的各個PE文件之間的相互調用修改為直接調用。
所述PE文件由需要合并的各個PE文件無間隙連接而成。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于成都磐石軟件有限責任公司,未經成都磐石軟件有限責任公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業(yè)授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/200910058713.2/2.html,轉載請聲明來源鉆瓜專利網。





