[發明專利]一種基于文件自修改的Android App加固方法有效
| 申請號: | 201910657068.X | 申請日: | 2019-07-19 |
| 公開(公告)號: | CN110502874B | 公開(公告)日: | 2021-05-25 |
| 發明(設計)人: | 孫欽東;董帥;尉惠敏 | 申請(專利權)人: | 西安理工大學 |
| 主分類號: | G06F21/12 | 分類號: | G06F21/12;G06F21/60;G06F8/53;G06F8/60 |
| 代理公司: | 西安弘理專利事務所 61214 | 代理人: | 杜娟 |
| 地址: | 710048 陜*** | 國省代碼: | 陜西;61 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 文件 修改 android app 加固 方法 | ||
1.一種基于文件自修改的Android app加固方法,其特征在于,按照以下步驟實施:
步驟1、使用Androidkiller對app應用進行反編譯,反編譯之后的文件包括dex文件和so文件,將so文件存放在lib文件夾;
步驟2、解析需要加固的so文件,獲取so文件中的方法列表,對獲取到的列表進行過濾,排除系統函數和庫函數,盡量縮小方法列表數量;
步驟3、將函數列表提供給軟件開發人員,供軟件開發人員選擇需要加固的函數,主要是涉及程序核心邏輯或者涉及隱私內容等,并提交給系統;
步驟4、生成Hook功能,確定代碼插入位置,使用跳轉指令跳轉到目標代碼,進行指令恢復,然后跳轉回原函數;
步驟5、解析so文件,確定so文件中需要加固的方法位置,保存該函數的函數指令,并使用錯誤指令集代替;
所述步驟5中,so文件的加密具體流程為:
解析程序頭表,定位到.dynamic節,然后再解析所述.dynamic節所在的節區,根據函數名計算出函數的hash值在.dynsym和.dynstr中查找函數的起始地址和大小,如果函數的大小小于12個字節則無法使用,如果函數的大小大于12字節,則可以將原指令進行保存,并使用隨機生成的字符填充該大小的內容;
步驟6、生成自修改代碼,用于恢復so文件中的固定函數,通過定位文件加載進入內存的位置計算出函數的起始位置和大小,對函數指令進行恢復;
步驟7、在Hook功能中注冊待加固的函數和需要跳轉的目標函數,在軟件運行之后,需要調用加密的方法時,函數會自動跳轉到解密函數進行解密,之后在跳轉到函數的開始位置執行,執行完畢之后返回加密方法,對函數進行加密,并將返回值返回給程序正常使用;
步驟8、編譯生成編譯文件自修改代碼,生成用于解密加密的so文件;
步驟9、修改dex文件,在程序運行開始插入步驟8中生成的so文件,以便程序運行過程中可以對軟件中的加密模塊進行解密;
步驟10、將軟件重新打包,簽名;
步驟11、將軟件進行發布,之后系統安裝正常使用。
2.根據權利要求1所述的一種基于文件自修改的Android app加固方法,其特征在于,
所述步驟4中,Hook模塊的具體步驟為,先驗證所述代碼插入位置的地址是否合法,主要看是否是可執行代碼,是否已經注冊,然后創建跳轉指令并將源地址和跳轉指令進行保存,接著創建返回源地址的跳轉指令,最后將源地址指令替換為跳轉指令。
3.根據權利要求1所述的一種基于文件自修改的Android app加固方法,其特征在于,所述加密方法只能替換函數體內容不能改變函數大小之外的任何數據,否則會導致so文件錯誤。
4.根據權利要求1所述的一種基于文件自修改的Android app加固方法,其特征在于,所述步驟7中解密的具體流程為,在運行過程中如果運行需要解密的方法,則會跳轉到自修改解密代碼,根據加密的原理定位到方法的起始位置和大小,將保存的原始指令進行寫入,程序的源代碼恢復正常,運行結束之后,將返回結果保存,并使用隨機字符再填充。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于西安理工大學,未經西安理工大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201910657068.X/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種管理小說章節的閱讀權限的方法與設備
- 下一篇:一種計算機軟件安全防護系統





