[發明專利]一種采用動態細粒度代碼隱藏與混淆技術的二進制軟件保護方法有效
| 申請號: | 201611009334.0 | 申請日: | 2016-11-16 |
| 公開(公告)號: | CN106650340B | 公開(公告)日: | 2019-12-06 |
| 發明(設計)人: | 張怡;吳蒙;糜嫻雅;徐彬彬;唐勇;楊強;解煒;周旭 | 申請(專利權)人: | 中國人民解放軍國防科學技術大學 |
| 主分類號: | G06F21/14 | 分類號: | G06F21/14;G06F21/12 |
| 代理公司: | 43008 湖南兆弘專利事務所(普通合伙) | 代理人: | 周長清<國際申請>=<國際公布>=<進入 |
| 地址: | 410073 湖南省長沙市硯瓦池正街4*** | 國省代碼: | 湖南;43 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 采用 動態 細粒度 代碼 隱藏 混淆 技術 二進制 軟件 保護 方法 | ||
1.一種采用動態細粒度代碼隱藏與混淆技術的二進制軟件保護方法,其特征在于,步驟為:
S1:選擇隱藏目標;以基本塊為單位,在目標程序中選擇待隱藏的代碼塊;
S2:隱藏選擇的基本塊;針對每個待隱藏基本塊,將原來的一段代碼替換為一個分配器函數調用,并在剩余的位置填充其它混淆指令;
S3:重新打包代碼;新建一個代碼段用來保存所有的附加邏輯及數據;
所述步驟S2中,所述分配器函數的處理流程為:
S201:保存狀態;對代碼進行語義等價變換,使生成的代碼執行前和原代碼的執行前的狀態完全相同,也就是使所有寄存器及堆棧的狀態不發生改變,將寄存器狀態保存在堆棧中;
S202:加鎖;在生成代碼前對將要生成代碼在代碼緩存中的位置進行加鎖,將這塊代碼緩存凍結,加鎖信息保存在一個全局列表中;
S203:生成代碼;根據棧中保存的返回地址在隱藏代碼信息表中得到待生成的基本塊的內存位置,然后將其解密到代碼緩存;
S204:恢復狀態;恢 復代碼執行前的狀態;
S205:執行代碼;跳轉到生成的代碼處執行,執行完畢后返回到分配器繼續執行,確保解鎖信息和下一條指令的地址已存放在棧中;
S206:保存狀態;保存代碼執行后的狀態;
S207:解鎖;根據執行代碼時入棧的解鎖信息,回收當前已分配的代碼緩存空間;
S208:恢復狀態;恢復代碼執行后的狀態;
S209:返回;根據堆棧中的返回地址返回到下一條指令。
2.根據權利要求1所述采用動態細粒度代碼隱藏與混淆技術的二進制軟件保護方法,其特征在于,所述步驟S3的流程為:首先,在代碼段的開頭插入所有附加處理邏輯代碼,包括代碼緩存;然后接著往后添加一個隱藏代碼信息表,用來根據隱藏代碼的地址索引到隱藏代碼在加密保存的位置;最后將隱藏的原始代碼加密并插入到代碼段的最后。
3.根據權利要求2所述采用動態細粒度代碼隱藏與混淆技術的二進制軟件保護方法,其特征在于,所述步驟S3中的加密采取簡單的異 或加密方式,密鑰保存在一個全局變量中。
4.根據權利要求2所述采用動態細粒度代碼隱藏與混淆技術的二進制軟件保護方法,其特征在于,所述步驟S3中,將程序入口地址指向附加邏輯的初始化函數,初始化代碼執行完畢后將會跳轉到程序的原入口地址。
5.根據權利要求1所述采用動態細粒度代碼隱藏與混淆技術的二進制軟件保護方法,其特征在于,在所述步驟S203的過程中,進行代碼緩沖分配,即用一個全局信息表記錄和管理代碼緩存的分配,并加入互斥量,讓代碼的分配變成一個原子操作;每次生成代碼前首先分配代碼緩存空間,該空間在指令執行完畢后回收釋放。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中國人民解放軍國防科學技術大學,未經中國人民解放軍國防科學技術大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201611009334.0/1.html,轉載請聲明來源鉆瓜專利網。





