[發明專利]基于動態恢復so文件的Android應用加固方法在審
| 申請號: | 201611049813.5 | 申請日: | 2016-11-24 |
| 公開(公告)號: | CN106650327A | 公開(公告)日: | 2017-05-10 |
| 發明(設計)人: | 文偉平 | 申請(專利權)人: | 湖南鼎源藍劍信息科技有限公司 |
| 主分類號: | G06F21/12 | 分類號: | G06F21/12;G06F21/14;G06F21/60 |
| 代理公司: | 北京萬象新悅知識產權代理事務所(普通合伙)11360 | 代理人: | 黃鳳茹 |
| 地址: | 410205 湖南省長沙市長沙高新*** | 國省代碼: | 湖南;43 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 基于 動態 恢復 so 文件 android 應用 加固 方法 | ||
技術領域
本發明涉及信息安全技術領域,尤其涉及一種針對動態恢復Android系統應用程序動態鏈接庫so文件的Android應用加固方法。
背景技術
2007年,Google公司推出了開源智能手機操作系統安卓(Android)操作系統,由于其豐富的功能和強大的定制能力,在短短幾年內它便躍居為智能手機操作系統市場份額的首位。與此同時,基于Android平臺的應用程序數目飛速增長。2013年7月,Google公司宣布在Google Play商店上架的應用程序超過一百萬,Google Play商店成為全球最大的應用商店。
隨著Android系統的興起,諸多潛在的安全問題逐漸暴露出來,信息泄露、惡意扣費、系統被破壞的事件屢見不鮮。Android安全性的研究也開始受到人們的關注。因為Android平臺應用軟件使用的語言是Java,傳統的Java語言編寫的程序很容易遭到逆向破解,導致Android應用程序其破解難度遠小于其他使用編譯性語言編寫的程序。由此得知,Android系統在應用加固方面所面臨的主要問題是應用二次打包和惡意代碼插入。應用二次打包技術使得盜版應用大量普及,大大損害了開發者的利益和積極性,而惡意代碼的植入使得Android用戶面臨隱私數據的泄漏和財產損失的風險。Android應用的黑色產業鏈正是因此產生,通過二次打包植入廣告降低用戶的體驗獲取利潤,又或者插入惡意代碼綁定設備上的私密數據進行敲詐勒索。
目前,Android應用加固多數情況還執著于靜態處理dex文件,也就是對dex文件進行一些細微修改來提升攻擊的難度。這一類加固方法增加了可代碼的閱讀難度,但實質上并沒有起到多少防護效果。這是因為Android平臺誕生時間較短,軟件保護方面的研究尚處于起步階段,難以保護應用開發者的軟件著作權與利益和廣大用戶的隱私安全。
發明內容
為了克服上述現有技術的不足,本發明提供一種針對動態恢復Android系統應用程序動態鏈接庫so文件的Android應用加固方法,該方法基于Android系統利用二進制流加密方法進行加固,對so文件中的關鍵代碼進行加密,以達到保護Android應用程序的目的。
本發明提供的技術方案是:
一種基于動態恢復so文件的Android應用加固方法,針對動態恢復Android系統應用程序動態鏈接庫so文件,通過二進制流加密方法對so文件中的關鍵方法(關鍵代碼)進行加固,使得Android應用程序代碼得到保護;所述加固方法包括加密過程和解密過程,具體包括如下步驟:
A.針對需要保護的Android應用程序的so文件,具體設定需要加密的特定節的關鍵方法,對關鍵代碼所在的節(section)進行加密,執行如下操作:
A1.首先對需要保護的Android應用程序解壓,獲得Android應用程序中的so文件,對所述so文件進行解析;
A2.讀取elf文件頭,根據e_shoff定位到節區頭部表;
A3.根據elf文件頭中的e_shnum得到節區數量;
A4.根據e_shoff和e_shnum讀取節區頭部表中的所有項;
A5.通過elf文件頭中的e_shstrndx項得到節表字符串表在節表中的索引,然后找到節表字符串表的偏移;
A6.讀取節表字符串表中的字符串將每一個節的名字保存起來;
A7.比較每一個節的名字和自定義節的名字,如果匹配則通過shdr->sh_offest和shdr->sh_zie得到目標節的內容,并保存到content中;
A8.設定密鑰key1,使用密鑰key1對步驟A7所述content進行第一次加密,得到第一次加密后的中間數據;
A9.設定密鑰key2,使用密鑰key2對步驟A8所述中間數據進行第二次加密;
A10.將二次加密后得到數據更新到so文件中,得到新的so文件;
A11.壓縮重新生成apk,即完成加密過程;所述重新生成的apk中包含原有的dex文件以及包含解密過程中需要用的密鑰和第二次加密后的得到的數據so文件;
B.開始執行Android應用程序時,對加密的so文件進行動態恢復得到關鍵代碼,執行如下操作:
B1.Android應用程序被載入內存后,執行so文件中.init_array段中的程序;
B2.在內存中找到so文件在進程中的地址;
B3.在so文件中查找待解密節的地址;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于湖南鼎源藍劍信息科技有限公司,未經湖南鼎源藍劍信息科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201611049813.5/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:電視柜(F?9921)
- 下一篇:浴室柜(艾恩AC2155?900)





