[發明專利]一種基于二次匯編的代碼混淆方法在審
| 申請號: | 201910462869.0 | 申請日: | 2019-05-30 |
| 公開(公告)號: | CN110210190A | 公開(公告)日: | 2019-09-06 |
| 發明(設計)人: | 賈曉啟;王暢;陳陽;杜海超;解亞敏;唐靜 | 申請(專利權)人: | 中國科學院信息工程研究所 |
| 主分類號: | G06F21/14 | 分類號: | G06F21/14 |
| 代理公司: | 北京君尚知識產權代理事務所(普通合伙) 11200 | 代理人: | 陳艷 |
| 地址: | 100093 *** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 二進制文件 混淆 匯編 代碼混淆 格式規范 加密 預處理 指令 傳統二進制 合法性檢驗 地址信息 匯編文件 匯編指令 逆向工程 軟件保護 跳轉指令 指令序列 可執行 控制流 細粒度 重定位 垃圾 編譯 替換 盜用 多樣性 攻擊 引入 檢查 | ||
本發明提出一種基于二次匯編的代碼混淆方法,屬于軟件保護技術領域,本方法包括以下步驟:對二進制文件進行合法性檢驗,檢查其是否為格式規范的二進制文件;對格式規范的二進制文件進行預處理,找出有關跳轉指令和適合插入垃圾指令塊的地址信息;對二進制文件進行二次匯編,將文件中的匯編指令替換成等效的指令序列,并在文件中插入垃圾指令進行控制流混淆,生成混淆的匯編文件,再編譯成混淆的二進制文件;對混淆的二進制文件進行加密,生成可執行加密二進制文件。本方法避免了傳統二進制混淆存在的重定位問題,同時引入了多樣性,細粒度等優勢,從而更有效的阻止了逆向工程,代碼盜用等攻擊手段。
技術領域
本發明屬于軟件保護技術領域,涉及一種通過代碼混淆技術來進行軟件保護的方法,特別涉及一種基于二次匯編技術的代碼混淆方法。
背景技術
軟件安全面臨的威脅主要有軟件盜版,代碼盜用,惡意篡改等等。而軟件的逆向工程則是這些攻擊方式的基礎。保護一個軟件免受篡改,惡意修改以及逆向工程是一項非常困難的任務,主要原因是軟件分析人員可以無限制的訪問軟件,他可以借助工具模擬用戶正常操作,在調試器中進行單步調試,反匯編,反編譯等等;也可以讀取內存中的敏感數據甚至是加密密鑰,或者是在軟件運行期間內修改任何中間值來進一步分析,其目的就是理解程序邏輯并且進一步復制代碼或者篡改校驗邏輯。
計算機領域的“逆向工程”技術指的是通過對程序的數據流以及控制流進行分析,通過多種分析手段,從低級語言來恢復或重構與其對應的高級語言的結構和意義的過程。逆向工程的應用十分廣泛,在源碼丟失的情況下,逆向工程可以幫助開發者或者系統研究人員恢復關鍵處的代碼或者邏輯,用以改進當前代碼或學習。除了這些正面用途,逆向工程也常被用于軟件破解,代碼剽竊,非法攻擊等負面用途。廣義的逆向工程包括逆向分析與重建兩個階段,狹義的逆向工程只包括逆向分析,即通過有目的的對程序進行分析,獲取對自己有用的信息。例如以軟件破解為目的的攻擊者,并不需要復原整個軟件的邏輯,他們只需到定位到軟件保護算法所在位置即可,但同樣可以造成巨大破壞和損失。目標代碼分析是程序分析領域的重要分支,它無需借助其它額外信息,只需要一個可執行文件,使用相關的分析工具對二進制機器碼進行分析,獲取程序的控制流,數據流,以及代碼引用,函數調用之間的關系。因此針對目標代碼的保護是軟件保護的核心任務。
代碼混淆技術是防止軟件被逆向工程的有效手段之一。它指的是通過對程序進行混淆變化,在保持原有的功能和語義的前提下,使得變換后的程序比混淆前的程序更難被攻擊者理解或還原。根據保護階段的不同可以將代碼混淆分為基于源碼的混淆,基于可執行文件的混淆與基于中間語義層的混淆。其中應用范圍最為廣泛的是基于可執行文件的混淆方式,例如軟件加殼與代碼虛擬化。軟件加殼指的是通過對二進制程序的代碼段與數據段進行加密,并附加一段解密代碼,而該段代碼會在程序運行時優先取得程序的控制權,并對程序中提前加密的數據以及代碼進行解密,然后再把控制權交還給原始代碼。因此經過加殼的程序可以有效的抵抗靜態分析手段。然而加殼這種軟件保護方式的缺點是會將原始代碼解密到內存中然后執行,這也就導致脫殼后的程序無法繼續受到保護,因此可以認為加殼是一種粗粒度的保護方式。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中國科學院信息工程研究所,未經中國科學院信息工程研究所許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201910462869.0/2.html,轉載請聲明來源鉆瓜專利網。





