[發明專利]一種反編譯原始代碼的去混淆方法及裝置在審
| 申請號: | 202011584845.1 | 申請日: | 2020-12-28 |
| 公開(公告)號: | CN112612480A | 公開(公告)日: | 2021-04-06 |
| 發明(設計)人: | 齊增田 | 申請(專利權)人: | 蘇州浪潮智能科技有限公司 |
| 主分類號: | G06F8/53 | 分類號: | G06F8/53;G06F21/14 |
| 代理公司: | 北京眾達德權知識產權代理有限公司 11570 | 代理人: | 彭博 |
| 地址: | 215000 江蘇省蘇州*** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 反編譯 原始 代碼 混淆 方法 裝置 | ||
本發明公開了一種二進制反混淆方法,包括構建混淆模式下的偽代碼模型;獲取二進制文件,并利用編譯工具對二進制文件進行反編譯,構建混淆模式下的二進制的偽代碼模型;利用反編譯工具的數據結構,構建二進制文件的指令圖和控制塊信息;利用混淆模式下的二進制的偽代碼模型在指令圖和控制塊信息中尋找混淆代碼,并去除所述混淆代碼。基于此方法,實現全自動化去除混淆代碼,重建控制流,還原代碼,幫助逆向工程師快速了解代碼的邏輯。
技術領域
本發明涉及軟件安全技術領域,特別涉及一種反編譯原始代碼的去混淆方法及裝置。
背景技術
軟件生產商為了防止軟件被逆向破解,往往在編譯環節會加入很多的混淆,使得反編譯的匯編代碼很模糊,業務邏輯不易被破解。目前應用的混淆技術有基于數據流和控制流的不透明謂詞技術和控制流平坦化;基于非線性運算的路徑分支隱藏策略算法等等。
很多情況下,源代碼是不可獲取的,但是軟件產品出了問題,需要及時解決,使用者只能使用逆向工程技術了解代碼邏輯,尋找問題點。如果產品使用了混淆技術,需要對應的反混淆技術去除噪音代碼和分支,還原代碼本來面目。目前應用的反混淆技術主要是基于去除混淆代碼,還原原始分支的方法通過二進制暴力破解尋找區間邊界,以求得到真實代碼和混淆代碼之間的邊界。
目前,幾乎所有的反混淆工具比如IDA,binwalker,binaryninja,Ghidra等等,都沒有針對去除混淆代碼的自動化解決方案,雖然這些工具支持插件擴展,但是沒有反混淆插件。
發明內容
本發明提出了一種自動去除混淆代碼的方法,利用偽代碼構建混淆模式,并利用數據結構構建指令圖和控制塊信息,以尋找混淆代碼,進一步去除混淆代碼,重建控制流,還原代碼。
本發明的技術方案為:
一種反編譯原始代碼的去混淆方法,包括:
構建混淆模式下的偽代碼模型;
獲取二進制文件,并利用編譯工具對二進制文件進行反編譯,構建混淆模式下的二進制的偽代碼模型;
利用反編譯工具的數據結構,構建二進制文件的指令圖和控制塊信息;
利用混淆模式下的二進制的偽代碼模型在指令圖和控制塊信息中尋找混淆代碼,并去除所述混淆代碼。
優選的是,混淆模式下的偽代碼模型的構建,通過如下函數實現:
((x-1)*x1)
其中,x表示原代碼數據塊,*表示乘法運算符,表示位運算。
優選的是,混淆模式下的偽代碼模型的構建,通過如下函數中的一種或幾種實現:
其中,Λ3表示和的三元素運算,∨3表示或的三元素運算,表示異或三元素運算,==3表示恒等于三元素元素,NOT3表示非三元素運算,1表示二進制位值為1;0表示二進制位值為0,1/2表示二進制位值不確定。
優選的是,反編譯工具的數據結構包括偽代碼指令、指令參數、偽代碼函數的指令圖和函數指令的基本塊。
優選的是,指令圖包括混淆代碼的每一行匯編代碼,通過指令圖能夠獲取所有代碼塊和指令集。
優選的是,尋找混淆代碼,包括:
基于混淆模式,計算得到混淆代碼對應的結果值;
將結果值為溢出的代碼,作為混淆代碼。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于蘇州浪潮智能科技有限公司,未經蘇州浪潮智能科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202011584845.1/2.html,轉載請聲明來源鉆瓜專利網。





