[發明專利]一種DEX文件的保護方法及裝置有效
| 申請號: | 201410064826.4 | 申請日: | 2014-02-25 |
| 公開(公告)號: | CN104866734B | 公開(公告)日: | 2018-10-09 |
| 發明(設計)人: | 閻文斌 | 申請(專利權)人: | 北京娜迦信息科技發展有限公司 |
| 主分類號: | G06F21/10 | 分類號: | G06F21/10;G06F21/12 |
| 代理公司: | 北京英賽嘉華知識產權代理有限責任公司 11204 | 代理人: | 余朦;王艷春 |
| 地址: | 100084 北京市海淀區中關村*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 dex 文件 保護 方法 裝置 | ||
1.一種DEX文件的保護方法,其特征在于,所述方法包括:
將待保護的DEX文件進行反匯編處理,得到smali文件;
將所述smali文件中待保護的指令進行隱藏處理,得到受保護的smali文件;
所述將所述smali文件中待保護的指令進行隱藏處理,得到受保護的smali文件包括:將所述smali文件中待保護的指令進行代碼亂序處理,得到受保護的smali文件;
所述將所述smali文件中待保護的指令進行代碼亂序處理,得到受保護的smali文件包括:獲取所述smali文件的文件頭、非方法塊和方法塊;
將所述方法塊的指令存儲到空鏈表的節點中;
將亂序信息寫入所述節點中,得到亂序節點;
將所述亂序節點間的順序打亂,并將起始跳轉節點插入到所述鏈表中的第一個節點前作為頭節點,得到亂序后的鏈表;
將所述文件頭、非方法指令以及所述亂序后的鏈表中的內容寫入新的smali文件,得到受保護的smali文件;
將所述受保護的smali文件進行匯編處理,得到受保護的DEX文件,所述匯編處理與所述反匯編對應。
2.根據權利要求1所述的DEX文件的保護方法,其特征在于,將所述smali文件中待保護的指令進行隱藏處理,得到受保護的smali文件包括:
將所述smali文件中待保護的指令進行指令虛擬處理,得到受保護的smali文件;
或將所述smali文件中待保護的指令進行代碼抽取處理,得到受保護的smali文件。
3.根據權利要求1所述的DEX文件的保護方法,其特征在于,將所述方法塊的指令存儲到空鏈表的節點中包括:
將所述方法塊中的指令存儲到所述空鏈表的節點中,使得每個節點中存儲有一條指令。
4.根據權利要求3所述的DEX文件的保護方法,其特征在于,將所述方法指令中的指令存儲到所述空鏈表的節點中,之后還包括:
將需要保持絕對連接的指令所在的節點進行合并。
5.根據權利要求1所述的DEX文件的保護方法,其特征在于,所述將所述亂序節點間的順序打亂包括:
根據所述亂序節點的數量生成一個隨機序列;
根據所述隨機序列的數值順序,將所述亂序節點重新排列。
6.根據權利要求2所述的DEX文件的保護方法,其特征在于,所述將所述smali文件中待保護的指令進行指令虛擬處理,得到受保護的smali文件包括:
遍歷所述smali文件,根據預設指令規則獲取待保護指令;
解析所述待保護指令的功能信息和參數信息;
根據預設構建原則以及所述待保護指令的功能信息和參數信息,構造虛擬接口指令;
將所述待保護指令替換為所述虛擬接口指令;
根據所述虛擬接口指令的參數信息,修正所述虛擬接口指令所在方法塊的方法頭,得到受保護的smali文件。
7.根據權利要求6所述的DEX文件的保護方法,其特征在于,還包括:
將所述虛擬接口指令對應的動態鏈接庫文件及接口類文件釋放到所述虛擬接口指令指定的目錄下,得到與所述受保護的smali文件相配套的動態鏈接庫文件及接口類文件。
8.根據權利要求2所述的DEX文件的保護方法,其特征在于,所述將所述smali文件中待保護的指令進行代碼抽取處理,得到受保護的smali文件包括:
遍歷所述smali文件,根據用戶需求獲取待抽取的代碼塊;
構建符合smali語法格式的空文件,將所述待抽取的代碼塊存儲到所述空文件中,得到抽取文件;
將所述待抽取的代碼塊替換為所述抽取文件的調用代碼;
根據所述調用代碼的參數信息,修正所述調用代碼所在方法塊的方法頭,得到受保護的smali文件。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京娜迦信息科技發展有限公司,未經北京娜迦信息科技發展有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410064826.4/1.html,轉載請聲明來源鉆瓜專利網。





