[發明專利]一種運行含有自校驗的加殼程序的方法和裝置有效
| 申請號: | 201210587208.9 | 申請日: | 2012-12-28 |
| 公開(公告)號: | CN103077332A | 公開(公告)日: | 2013-05-01 |
| 發明(設計)人: | 陸舟;于華章 | 申請(專利權)人: | 飛天誠信科技股份有限公司 |
| 主分類號: | G06F21/14 | 分類號: | G06F21/14;G06F11/10 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 100085 北京市*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 運行 含有 校驗 程序 方法 裝置 | ||
技術領域
本發明涉及軟件保護領域,尤其涉及一種運行含有自校驗的加殼程序的方法和裝置。
背景技術
自校驗是一種用于在軟件運行時檢查軟件自身是否被修改的方法。例如,CRC(Cyclic?Redundancy?Check,循環冗余校驗碼)就是數據通信領域中最常用的一種差錯校驗碼,可以用來判斷軟件自身是否被破解或者破壞。當軟件被修改后,校驗出的CRC值就和原來的CRC值不同,從而判斷出軟件被改動。因為CRC校驗的實現簡單,相對比較安全,所以這種方法廣泛的應用在軟件行業。加殼就是對可執行程序進行代碼段、數據段加密和壓縮,是一種保護可執行文件的常用手段。加殼的目的是阻止對軟件的反匯編分析或者動態分析,這種技術常用來保護軟件,防止軟件被破解。而對于含有自校驗的加殼程序,加殼后的軟件由于對軟件進行加密和壓縮,校驗出來的值就和以前的不同,因此無法通過自校驗。
現有技術運行含有自校驗的加殼程序的方法是:在運行期間,殼把原程序釋放到硬盤上,再通過創建新的進程或系統內存加載技術運行原程序。這種技術的缺點是:原程序被釋放到了硬盤上,原程序可以通過一些工具被找到原程序,在以后的使用過程直接使用原程序即可,加殼技術沒有起到保護原程序的作用。
發明內容
本發明的目的是為了克服現有技術的不足,提供一種運行含有自校驗的加殼程序的方法和裝置,提高了加殼程序的安全性。
本發明提供的一種運行含有自校驗的加殼程序的方法,包括:
步驟S1:殼獲取指定接口函數的內存地址;
步驟S2:所述殼將所述指定接口函數中的部分指令替換為跳轉到對應的鉤子函數的跳轉指令,將所述指定接口函數的所述部分指令保存到與所述指定接口函數對應的鉤子函數的代碼存儲區中,再加入跳轉回對應的所述接口函數的跳轉指令,所述殼獲取加殼程序在存儲設備上的訪問路徑,將加密后的原程序解密到內存中;
步驟S3:所述殼將控制權交給所述原程序的入口點;
步驟S4:所述鉤子函數等待被調用;
當第一鉤子函數被調用時,所述第一鉤子函數調用訪問文件函數,返回調用結果,判斷所述訪問文件函數的位置參數是否與所述加殼程序在所述存儲設備上的訪問路徑一致,若一致則判斷所述調用結果是否包含第一句柄,是則保存所述第一句柄,所述第一鉤子函數結束,否則所述第一鉤子函數結束;若不一致則所述第一鉤子函數結束;
當第二鉤子函數被調用時,所述第二鉤子函數讀取獲取文件大小函數中的句柄參數,判斷所述句柄參數是否為保存的所述第一句柄,是則所述第二鉤子函數調用獲取文件大小函數,獲取第一文件大小,對所述第一文件大小進行計算得到第二文件大小,將所述第二文件大小返回給所述原程序,所述第二鉤子函數結束;否則,所述第二鉤子函數調用所述獲取文件大小函數,返回調用結果,所述第二鉤子函數結束;
當第三鉤子函數被調用時,所述第三鉤子函數讀取讀文件函數中的句柄參數,判斷所述句柄參數是否為保存的所述第一句柄,是則執行步驟S5,否則,所述第三鉤子函數調用所述讀文件函數讀取相應內容,將讀取到的內容返回給所述原程序,所述第三鉤子函數結束;
當第四鉤子函數被調用時,
所述第四鉤子函數調用創建文件映射函數,返回調用結果,判斷創建文件映射函數的句柄參數是否與保存的所述第一句柄一致,若一致則判斷所述調用結果是否包含映射文件句柄,是則保存所述映射文件句柄,所述第四鉤子函數結束,否則所述第四鉤子函數結束;若不一致則所述第四鉤子函數結束;
當第五鉤子函數被調用時,所述第五鉤子函數讀取所述映射文件函數中的句柄參數,判斷所述句柄參數是否為保存的所述映射文件句柄,是則所述第五鉤子函數調用所述映射文件函數,根據殼的長度和加密頭的大小將所述原程序中的與所述句柄參數對應的內容映射到所述內存,對所述內存中映射到的內容進行解密,將解密后的內容返回給所述原程序,所述第五鉤子函數結束;否則,所述第五鉤子函數將與所述句柄參數對應的內容映射到所述內存,返回所述映射的內容,所述第五鉤子函數結束;
步驟S5:所述第三鉤子函數判斷將要讀取的內容的大小是否在所述加密后的原程序的大小范圍內,是則所述第三鉤子函數調用讀文件函數,根據殼的長度和加密頭的大小讀取所述原程序中的相應內容,對讀取到的內容進行解密,并將解密后的內容返回給所述原程序,所述第三鉤子函數結束;否則,所述第三鉤子函數調用讀文件函數,讀取相應內容,對所述讀取到的內容進行解密,并將解密后的內容返回給所述原程序,所述第三鉤子函數結束。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于飛天誠信科技股份有限公司,未經飛天誠信科技股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210587208.9/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種用于數據卡輸入限流的集成電路芯片
- 下一篇:一種按鈕式抽屜鎖定機構





