[發明專利]一種基于動態加解密的Android應用加固方法在審
| 申請號: | 201710331858.X | 申請日: | 2017-05-12 |
| 公開(公告)號: | CN107169324A | 公開(公告)日: | 2017-09-15 |
| 發明(設計)人: | 羅森林;尚海;潘麗敏;喻露 | 申請(專利權)人: | 北京理工大學 |
| 主分類號: | G06F21/14 | 分類號: | G06F21/14;G06F21/16 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 100081 *** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 動態 解密 android 應用 加固 方法 | ||
技術領域
本發明涉及一種Android應用加固方法,屬于信息安全技術領域。
背景技術
從谷歌2007年推出Android系統至今,Android市場飛速發展,但Android平臺編譯生成的應用APK極易受到攻擊。攻擊者通過反編譯、逆向工程等技術破解Android應用,竊取應用代碼和用戶數據,給應用使用帶來很多不安全因素。因此,針對Android系統的防逆向就非常重要。通過對應用的加固,達到保護應用代碼、反破解、反逆向、反植入等目的,從而保障Android應用的原生性和完整性。
從Android2.3開始,代碼混淆技術開始使用。通過混淆源JAVA代碼或者smali文件等方式。代碼混淆在一定程度上減低了代碼的可讀性,保護了代碼,可以抵抗對應用代碼的靜態分析,但是不能抵抗反編譯或調試攻擊,實際加固效果較差。
軟件加殼技術是Android加固技術中重要的一項。軟件加殼對源程序進行壓縮或者加密。應用程序運行時,首先運行殼程序,對被壓縮或加密的源程序進行解壓縮或解密,還原出源程序并加載至內存執行。隨著對Android應用和脫殼技術的研究,簡單的壓縮或者加密以及很難抵抗外在攻擊,加固比較容易被突破。但過于復雜的加密也會減低程序的運行效率。軟件加殼隱藏了應用程序源代碼,有效地保護了應用程序。但“殼”程序自身也需要保護,防止被攻擊者攻擊。
發明內容
本發明的目的是為了保護Android應用程序,保護應用不被靜態和動態分析,克服現有加固方法的不足,提出一種Android應用加固方法,對應用程序代碼進行加密,對關鍵部分代碼二次加密,實現保護應用代碼與運行安全目的。
本發明的設計原理為:本發明涉及一種Android應用加固方法,屬于信息安全技術領域。本發明包括代碼加密、動態防御、完整性校驗、動態加載四個模塊。加密過程對Android應用程序class.dex加密,對核心代碼二次加密,并對加密后的簽名認證,將加密的結果嵌入資源文件。動態防御過程,檢測調試器和模擬器,檢測到被調試或運行在模擬器中退出應用程序。開啟子進程,子進程和主進程相互ptrace監控,子進程循環檢測調試器和模擬器,被調試則結束進程。完整性檢測模塊,認證簽名信息,防止資源和代碼被篡改。代碼解密模塊提取隱藏在圖片中的加密信息,解密得到中間數據,對其中的核心代碼部分二次解密,將解密后的結果直接加載至內存執行。
本發明的技術方案是通過如下步驟實現的:
步驟1,應用程序加密時,解壓需要保護的Android應用APK文件,獲取代碼文件classes.dex,提取classes.dex中核心的方法代碼,采用對稱加密方法加密核心代碼得到加密數據,將加密數據添加特殊起止標志位后,替換class.dex中關鍵代碼,生成新的dex文件。
步驟2,設定另一密鑰K2,將步驟1中生成的dex文件加密,將加密后的文件嵌入資源文件。
步驟3,對嵌入后的資源文件做簽名,將兩次加密密鑰K1、K2,簽名驗證信息和解密程序、文件提取程序存入到so文件中,重新打包應用程序,簽名生成新的APK文件。
步驟4,動態防御。應用程序運行時,主進程檢測當前系統運行環境是否為模擬器或調試機、當檢測到運行在模擬器和調試機、直接退出程序運行;主進程fork出子進程,主進程和子進程相互ptrace監控;子進程定時檢測調試機和模擬器,檢測到應用正在被調試,子進程退出,主進程監控到子進程已退出時,退出應用程序。
步驟5,完整性檢測。提取so文件中的簽名信息、驗證簽名信息是否正確。
步驟6,動態加載。應用程序運行時,提取資源文件中的加密文件和so庫中的密鑰K1、K2,利用K2對加密文件解密,得到中間代碼,定位到關鍵代碼加密位置,提取關鍵代碼的加密數據,利用K1對關鍵代碼解密,獲取原始class.dex代碼,加載至內存。
有益效果
相比于現有的代碼混淆加固方法,代碼只是增加了代碼看閱讀難度,代碼保護程度較弱,本發明對代碼進行加密,能夠更好的保護代碼。
相比于軟件加殼的加固方法,本發明對普通的代碼一次加密,對關鍵代碼二次加密,有效地保護了代碼,特別是關鍵代碼的保護。同時將加密的結果和密鑰通過水印的方式嵌入圖片,保護了加密結果。
附圖說明
圖1為本發明一種Android應用加固方法原理圖;
圖2為應用加密模塊流程圖;
圖3為動態防御模塊主進程檢測流程圖;
圖4為動態防御模塊子進程檢測流程圖;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京理工大學,未經北京理工大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710331858.X/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種豆汁加工的方法
- 下一篇:一種天然茶油植脂末及其制備方法





