[發明專利]一種基于指令注入的代碼處理方法、終端及存儲介質在審
| 申請號: | 202010776482.5 | 申請日: | 2020-08-05 |
| 公開(公告)號: | CN112052461A | 公開(公告)日: | 2020-12-08 |
| 發明(設計)人: | 李鵬飛;冉山川 | 申請(專利權)人: | 北京智游網安科技有限公司 |
| 主分類號: | G06F21/60 | 分類號: | G06F21/60;G06F21/62;G06F21/52 |
| 代理公司: | 深圳市君勝知識產權代理事務所(普通合伙) 44268 | 代理人: | 陳專 |
| 地址: | 100000 北京市海淀區東北旺西路8*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 指令 注入 代碼 處理 方法 終端 存儲 介質 | ||
本發明公開了一種基于指令注入的代碼處理方法、終端及存儲介質,所述方法包括:在APP的加密階段,解析DEX文件,將所述DEX文件進行拆分,抽取出所述DEX文件中保存的代碼指令,并進行加密保存;構建解密代碼的二進制指令,注入到所述DEX文件中原指令位置;當加密APP運行到被加密的方法時,執行已注入的二進制指令,對方法指令進行解密還原,并跳轉到被解密出的指令內存,繼續執行解密出的指令。本發明在加密時將完整的DEX文件進行拆分,分離出加密方法的代碼段,并在原代碼段注入解密指令,運行時調用被加密的方法,首先執行注入的解密指令,完成當前執行方法的解密,確保被加密方法只有被執行的時候才會解密。
技術領域
本發明涉及代碼處理技術領域,尤其涉及一種基于指令注入的代碼處理方法、終端及存儲介質。
背景技術
DEX文件就是Android虛擬機運行的程序,開發人員發布Android APP時,首先把java代碼編譯為class字節碼,然后通過Dx工具把class字節碼轉為DEX文件格式。
所以對DEX文件的保護也就至關重要,傳統的Android基于指令注入的代碼處理技術,主要通過把原DEX文件,替換為殼DEX文件,實現對原DEX的加密隱藏。加密APP運行時,殼DEX調用系統方法加載原DEX。
但是,這種傳統的Android基于指令注入的代碼處理技術,在加密APP運行后,內存中會存在一片連續的內存來存放原DEX,所以通過內存DUMP(備份文件系統,轉儲,即把內存某一時刻的內容轉存成文件),可以很容易的獲取加密前的原DEX文件。
因此,現有技術還有待于改進和發展。
發明內容
本發明的主要目的在于提供一種基于指令注入的代碼處理方法、終端及存儲介質,旨在解決現有技術中代碼加密后很容易的獲取加密前的原DEX文件的問題。
為實現上述目的,本發明提供一種基于指令注入的代碼處理方法,所述基于指令注入的代碼處理方法包括如下步驟:
在APP的加密階段,解析DEX文件,將所述DEX文件進行拆分,抽取出所述DEX文件中保存的代碼指令,并進行加密保存;
構建解密代碼的二進制指令,注入到所述DEX文件中原指令位置;
當加密APP運行到被加密的方法時,執行已注入的二進制指令,對方法指令進行解密還原,并跳轉到被解密出的指令內存,繼續執行解密出的指令。
可選地,所述的基于指令注入的代碼處理方法,其中,所述將所述DEX文件進行拆分,具體包括:將二進制指令從所述DEX文件中剪切出來,并保存到預設文件中。
可選地,所述的基于指令注入的代碼處理方法,其中,所述在APP的加密階段,解析DEX文件,將所述DEX文件進行拆分,抽取出所述DEX文件中保存的代碼指令,并進行加密保存,具體包括:
在APP的加密時,通過加密工具對所述DEX文件的二進制文件進行解析;
遍歷獲取DEX文件中所有方法,解析出方法對應代碼段的二進制的代碼項目結構;
提取所述代碼項目結構中記錄的二進制指令數據;
根據提取出的所述二進制指令數據中的類名、方法名和方法簽名生成唯一識別ID;
將所述識別ID和所述二進制指令數據進行關聯,并進行加密保存;
在所述代碼項目結構中的指定字段位置插入構建的解密引擎調用指令。
可選地,所述的基于指令注入的代碼處理方法,其中,每個方法對應一個代碼項目結構。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京智游網安科技有限公司,未經北京智游網安科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010776482.5/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種指令處理方法、終端及存儲介質
- 下一篇:一種甲乙酮的制備方法





