[發明專利]一種導入表的修復方法及裝置有效
| 申請號: | 201210592469.X | 申請日: | 2012-12-28 |
| 公開(公告)號: | CN103077029A | 公開(公告)日: | 2013-05-01 |
| 發明(設計)人: | 陳錦;劉業欣 | 申請(專利權)人: | 北京神州綠盟信息安全科技股份有限公司;北京神州綠盟科技有限公司 |
| 主分類號: | G06F9/44 | 分類號: | G06F9/44 |
| 代理公司: | 北京同達信恒知識產權代理有限公司 11291 | 代理人: | 郭紅麗 |
| 地址: | 100089 北京*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 導入 修復 方法 裝置 | ||
技術領域
本發明涉及計算機技術領域,尤指一種導入表的修復方法及裝置。
背景技術
加殼是可執行程序資源壓縮的簡稱,是保護文件的常用手段,其原理是利用特殊的算法,對可執行程序里的資源進行壓縮、加密。加殼程序可以直接運行,但是不能獲取原始程序,要經過脫殼才可以獲取。脫殼的過程主要為三步:第一步,確定原始程序的入口點(Original?Entry?Point,OEP);第二步,修復導入表和重定位表;第三步,將內存中的原始程序寫入文件,更改程序的新入口地址為OEP,這一步通常稱為轉儲(Dump)。修復導入表是脫殼過程中重要的步驟。
下面介紹導入表和導入地址表的概念。
在windows上,運行可執行程序時通常會調用很多函數,這些函數是由windows上的函數庫導出的,每個函數庫可以稱為一個模塊。windows加載可執行程序時,會定位該可執行程序的導入表和導入地址表,導入表中包括該可執行程序需要加載的所有函數庫的名字,以及需要從每個函數庫里導入的函數的名字,導入地址表中包括這些函數需要填充的內存地址,當這些函數全部填充到內存地址后,導入表就沒有用了,運行可執行程序要調用函數時,直接從導入地址表中獲取函數地址,然后到獲取的函數地址中調用函數。
導入地址表的結構很特殊,假設導入地址表的起始地址是0x01001020,可執行程序為32位,則導入地址表的結構如下表所示:
可執行程序中采用類似如下代碼調用函數:
mov?edi,[0x01001020]//把0x1001020地址中的函數地址給edi;
call?edi//調用函數,如上表,調用的是函數kernel32.GetModuleHandleA。
可執行程序加殼后,新的導入表是殼的導入表,加殼程序加載后,系統會填充需要的函數地址到殼的導入地址表中,但是原始程序的導入地址表并不會被系統自動填充,這個工作由殼來完成,殼負責填充函數地址到原始程序的導入地址表中。
當加殼程序運行到OEP后,此時加殼程序的導入地址表雖然已經被殼填充了正確的函數地址,但是導入表卻不一定正確,這樣即便dump,下次運行加殼程序時,系統仍然找不到需要的函數庫和函數,導致加殼程序崩潰。所以要想完成脫殼,還必須修復程序的導入表。
目前,在修復導入表時,通常會采用特征定位法,根據已知類型殼的特征對加殼程序對應的原始程序的導入表進行修復,現有的產品有針對具體殼的脫殼腳本或自動脫殼機等。這種方法在修復導入表時成功率很高,修復得完美,但是一旦已知類型殼升級可能導致特征定位失效,并且對于使用未知類型殼的加殼程序對應的原始程序的導入表不能使用。因此,現有的導入表修復方法并不能普遍適用于修復各種加殼程度對應的原始程序的導入表。
發明內容
本發明實施例提供一種導入表的修復方法及裝置,用以解決現有的導入表修復方法不能普遍適用于修復各種加殼程序對應的原始程序的導入表的問題。
一種導入表的修復方法,包括:
記錄運行加殼程序過程中產生的數據改寫信息和模塊加載信息,所述數據改寫信息包括數據改寫執行地址、數據改寫地址、改寫數據和數據改寫時間,所述模塊加載信息包括所述加殼程序映射到內存中的基地址和結束地址;
在確定所述加殼程序對應的原始程序的入口點OEP后,根據數據改寫時間、數據改寫地址和設定的組合規則將記錄的數據改寫信息中的改寫數據進行組合,并根據模塊加載信息和導入表格式在組合后的改寫數據中搜尋待選導入表;
若搜尋到待選導入表,確定每個待選導入表對應的導入地址表,獲取在到達所述OEP的時刻存在于內存中、并且內存地址最小的導入地址表,將獲取的導入地址表對應的待選導入表作為所述加殼程序對應的原始程序的導入表;
若搜尋不到待選導入表,根據記錄的數據改寫信息中包括數據改寫執行地址、數據改寫地址、改寫數據和數據改寫時間重新建立所述加殼程序對應的原始程序的導入表。
一種導入表的修復裝置,包括:
記錄單元,用于記錄運行加殼程序過程中產生的數據改寫信息和模塊加載信息,所述數據改寫信息包括數據改寫執行地址、數據改寫地址、改寫數據和數據改寫時間,所述模塊加載信息包括所述加殼程序映射到內存中的基地址和結束地址;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京神州綠盟信息安全科技股份有限公司;北京神州綠盟科技有限公司,未經北京神州綠盟信息安全科技股份有限公司;北京神州綠盟科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210592469.X/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:三接點式接觸型充電組件
- 下一篇:一種雙油位開關螺桿并聯式壓縮冷凝機組





