[發明專利]一種加固APK的方法和裝置以及APK加固客戶端和服務器有效
| 申請號: | 201410815934.0 | 申請日: | 2014-12-24 |
| 公開(公告)號: | CN104463002A | 公開(公告)日: | 2015-03-25 |
| 發明(設計)人: | 李偉 | 申請(專利權)人: | 北京奇虎科技有限公司;奇智軟件(北京)有限公司 |
| 主分類號: | G06F21/60 | 分類號: | G06F21/60;G06F9/45 |
| 代理公司: | 北京市隆安律師事務所 11323 | 代理人: | 權鮮枝;何立春 |
| 地址: | 100088 北京市西城區新*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 加固 apk 方法 裝置 以及 客戶端 服務器 | ||
技術領域
本發明涉及信息安全領域,具體涉及一種加固APK的方法和裝置以及APK加固客戶端和服務器。
背景技術
安卓系統的快速發展以及設備的高速增長,產生了大量的第三方應用程序,與其他操作系統相比,安卓系統的開源性為應用開發者提供了更多的功能接口,這些功能接口在提高了系統的可擴展性的同時也為惡意軟件提供了便利,非法拷貝、逆向工程、反編譯、調試、破解、二次打包、內存截取等手段不斷威脅著安卓系統的安全,不僅危害了使用者,也給正常應用開發者造成嚴重的損害。
現有的安卓軟件安裝包的加固方案主要分為三種:第一種是對待保護方法的Java代碼進行完整的加密;第二種是運行時對待保護方法的Java代碼做字節碼變形,防止直接還原出完整的Java代碼,現有方式不能很好的自定義,該方案需要做字節碼變形的函數;第三種是將前兩種方案混合使用。但由于上述方案在APK運行的某一時間內內存中存在完整的Java代碼的映像,受保護的方法的Java代碼可以通過內存Dump的方式被完整的還原出來,導致現有方案始終無法完全解決安卓安裝包面臨的安全問題,人們也一直在尋求更有效的解決方案。
發明內容
鑒于上述問題,提出了本發明以便提供一種克服上述問題或者至少部分地解決上述問題的一種加固APK的方法和裝置以及APK加固客戶端和服務器。
依據本發明的一個方面,提供了一種加固APK的方法,該方法包括:
獲取待加固APK中的至少一個方法對應的Java代碼;
將所述至少一個方法對應的Java代碼分別轉換成相應的反射調用的Native?C代碼。
可選地,所述獲取待加固APK中的至少一個方法對應的Java代碼包括:
對所述待加固APK進行反編譯獲取其中的至少一個方法對應的Java代碼。
可選地,將所述至少一個方法對應的Java代碼分別轉換成相應的反射調用的Native?C代碼包括:
對一個方法對應的Java代碼進行語義解析,根據語義解析結果構造反射調用的Native?C代碼,再對Native?C代碼進行編譯。
可選地,所述對一個方法對應的Java代碼進行語義解析,根據語義解析結果構造反射調用的Native?C代碼包括:
將該方法對應的Java代碼編譯成smali代碼,將smali代碼反編譯成一種中間語言,再將所述中間語言轉換成Native?C代碼。
可選地,所述中間語言是一種由三元組指令構成的指令集,一個三元組指令包括:源地址、操作的目標地址和操作的類型。
可選地,該方法進一步包括:
對所述APK中的轉換后的Native?C代碼進行加密處理。
可選地,該方法進一步包括:
獲取待加固APK中的ELF文件,進行反編譯;
根據加密開始標記和加密結束標記,從所述反編譯的ELF文件中提取出待保護的一段或多段代碼,并對每個提取位置設置一個鉤子函數;其中每段待保護的代碼的起始位置和結束位置分別有加密開始標記和加密結束標記;
將提取出的一段或多段代碼進行加密處理后,放入指定文件中;
將所述指定文件添加到所述反編譯的APK中,編譯生成加固APK;
其中,在所述加固APK運行的過程中,通過設置的鉤子函數獲知到需要運行被保護的一段代碼時,從所述指定文件中解密出該段代碼,并在該段代碼運行完畢時,重新對該段代碼進行加密。
可選地,所述將提取出的一段或多段代碼進行加密處理包括:
對提取出的一端或多段代碼進行VM虛擬化;或/和,對提取出的一端或多段代碼進行分段加密;或/和,對提取出的一端或多段代碼進行代碼混淆;或/和,對提取出的一端或多段代碼進行反調試處理。
可選地,所述將提取出的一段或多段代碼進行加密處理后,放入指定文件中包括:
將提取出的一段或多段代碼進行加密處理后,放入SO文件的尾部。
可選地,上述方法由位于終端側的客戶端執行;
或者,由位于終端側的客戶端獲取待加固的APK上傳到服務器,由服務器執行上述方法。
依據本發明的另一個方面,提供了一種加固APK的裝置,該裝置包括:
獲取單元,適于獲取待加固APK中的至少一個方法對應的Java代碼;
轉換單元,適于將所述至少一個方法對應的Java代碼分別轉換成相應的反射調用的Native?C代碼。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京奇虎科技有限公司;奇智軟件(北京)有限公司,未經北京奇虎科技有限公司;奇智軟件(北京)有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410815934.0/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種具備自保護功能的硬件設備
- 下一篇:基于生物識別的授權驗證方法





