[發(fā)明專利]基于動(dòng)態(tài)恢復(fù)so文件的Android應(yīng)用加固方法在審
| 申請(qǐng)?zhí)枺?/td> | 201611049813.5 | 申請(qǐng)日: | 2016-11-24 |
| 公開(公告)號(hào): | CN106650327A | 公開(公告)日: | 2017-05-10 |
| 發(fā)明(設(shè)計(jì))人: | 文偉平 | 申請(qǐng)(專利權(quán))人: | 湖南鼎源藍(lán)劍信息科技有限公司 |
| 主分類號(hào): | G06F21/12 | 分類號(hào): | G06F21/12;G06F21/14;G06F21/60 |
| 代理公司: | 北京萬(wàn)象新悅知識(shí)產(chǎn)權(quán)代理事務(wù)所(普通合伙)11360 | 代理人: | 黃鳳茹 |
| 地址: | 410205 湖南省長(zhǎng)沙市長(zhǎng)沙高新*** | 國(guó)省代碼: | 湖南;43 |
| 權(quán)利要求書: | 查看更多 | 說(shuō)明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 基于 動(dòng)態(tài) 恢復(fù) so 文件 android 應(yīng)用 加固 方法 | ||
1.一種Android應(yīng)用加固方法,基于動(dòng)態(tài)恢復(fù)Android系統(tǒng)應(yīng)用程序動(dòng)態(tài)鏈接庫(kù)so文件,通過二進(jìn)制流加密方法對(duì)so文件中的關(guān)鍵代碼進(jìn)行加固,使得Android應(yīng)用程序代碼得到保護(hù);所述加固方法包括加密過程和解密過程,具體包括如下步驟:
A.加密過程:對(duì)需要保護(hù)的Android應(yīng)用程序進(jìn)行加密,具體設(shè)定需要加密的特定節(jié)的關(guān)鍵代碼,對(duì)關(guān)鍵代碼所在的節(jié)進(jìn)行加密并重新生成新的Android應(yīng)用程序;所述重新生成的新的Android應(yīng)用程序中包含原有的dex文件、解密后關(guān)鍵代碼的so文件和加密后關(guān)鍵代碼的so文件;所述加密包括如下步驟:
A1.對(duì)需要保護(hù)的Android應(yīng)用程序解壓,獲得Android應(yīng)用程序中的so文件,對(duì)所述so文件進(jìn)行解析;
A2.讀取elf文件頭,定位到節(jié)區(qū)頭部表;
A3.根據(jù)elf文件頭,讀取得到節(jié)區(qū)數(shù)量;
A4.讀取得到節(jié)區(qū)頭部表中的所有項(xiàng);
A5.讀取得到節(jié)表字符串表在節(jié)表中的索引,再找到節(jié)表字符串表的偏移;
A6.讀取節(jié)表字符串表中的字符串,將每一個(gè)節(jié)的名字保存起來(lái);
A7.比較每一個(gè)節(jié)的名字和自定義節(jié)的名字,如果匹配,則得到目標(biāo)節(jié)的內(nèi)容并保存;
A8.設(shè)定密鑰key1,使用密鑰key1對(duì)步驟A7所述目標(biāo)節(jié)的內(nèi)容進(jìn)行第一次加密,得到第一次加密后的中間數(shù)據(jù);
A9.設(shè)定密鑰key2,使用密鑰key2對(duì)步驟A8所述中間數(shù)據(jù)進(jìn)行第二次加密;
A10.將二次加密后得到數(shù)據(jù)更新到so文件中,得到新的so文件;
A11.壓縮重新生成apk,即完成加密過程;所述重新生成的apk中包含原有的dex文件以及包含解密和加密后關(guān)鍵代碼的so文件;
B.解密過程:在開始執(zhí)行Android應(yīng)用程序時(shí),對(duì)加密后關(guān)鍵代碼的so文件進(jìn)行動(dòng)態(tài)恢復(fù),得到關(guān)鍵代碼,再調(diào)用所述關(guān)鍵代碼的方法;所述動(dòng)態(tài)恢復(fù)具體執(zhí)行如下操作:
B1.在Android應(yīng)用程序被載入內(nèi)存后,執(zhí)行Android應(yīng)用程序中so文件中的程序;
B2.在內(nèi)存中找到so文件在進(jìn)程中的地址;
B3.在so文件中查找待解密的節(jié)的地址;
B4.得到待解密的節(jié)占用的頁(yè)的大小,修改占用頁(yè)的讀寫權(quán)限;
B5.執(zhí)行關(guān)鍵代碼時(shí),從so文件中取得密鑰key2,對(duì)待解密的節(jié)進(jìn)行解密,得到中間代碼;
B6.針對(duì)步驟B5得到的中間代碼,從so文件中取得密鑰key1,進(jìn)行第二次解密,得到最終的關(guān)鍵代碼;
B7.進(jìn)行關(guān)鍵代碼的方法調(diào)用。
2.如權(quán)利要求1所述Android應(yīng)用加固方法,其特征是,所述設(shè)定需要加密的特定節(jié)的關(guān)鍵代碼,具體通過重要算法方法、驗(yàn)證登陸方法、系統(tǒng)關(guān)鍵流程方法中的一個(gè)或多個(gè)來(lái)設(shè)定得到。
3.如權(quán)利要求1所述Android應(yīng)用加固方法,其特征是,所述A2具體根據(jù)e_shoff定位到節(jié)區(qū)頭部表;所述A3具體根據(jù)elf文件頭中的e_shnum得到節(jié)區(qū)數(shù)量;所述A4具體根據(jù)e_shoff和e_shnum讀取得到節(jié)區(qū)頭部表中的所有項(xiàng);所述A5具體通過elf文件頭中的e_shstrndx項(xiàng)得到節(jié)表字符串表在節(jié)表中的索引。
4.如權(quán)利要求1所述Android應(yīng)用加固方法,其特征是,步驟A7具體通過shdr->sh_offest和shdr->sh_zie得到所述目標(biāo)節(jié)的內(nèi)容。
5.如權(quán)利要求1所述Android應(yīng)用加固方法,其特征是,步驟A8所述第一次加密或步驟A9所述第二次加密均采用AES加密方法。
6.如權(quán)利要求1所述Android應(yīng)用加固方法,其特征是,步驟B1具體通過JNI調(diào)用機(jī)制調(diào)用來(lái)執(zhí)行Android應(yīng)用程序so文件中的.init_array段中的方法程序。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于湖南鼎源藍(lán)劍信息科技有限公司,未經(jīng)湖南鼎源藍(lán)劍信息科技有限公司許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201611049813.5/1.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專利網(wǎng)。
- 上一篇:電視柜(F?9921)
- 下一篇:浴室柜(艾恩AC2155?900)
- 同類專利
- 專利分類
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F21-00 防止未授權(quán)行為的保護(hù)計(jì)算機(jī)或計(jì)算機(jī)系統(tǒng)的安全裝置
G06F21-02 .通過保護(hù)計(jì)算機(jī)的特定內(nèi)部部件
G06F21-04 .通過保護(hù)特定的外圍設(shè)備,如鍵盤或顯示器
G06F21-06 .通過感知越權(quán)操作或外圍侵?jǐn)_
G06F21-20 .通過限制訪問計(jì)算機(jī)系統(tǒng)或計(jì)算機(jī)網(wǎng)絡(luò)中的節(jié)點(diǎn)
G06F21-22 .通過限制訪問或處理程序或過程
- 動(dòng)態(tài)矢量譯碼方法和動(dòng)態(tài)矢量譯碼裝置
- 動(dòng)態(tài)口令的顯示方法及動(dòng)態(tài)令牌
- 動(dòng)態(tài)庫(kù)管理方法和裝置
- 動(dòng)態(tài)令牌的身份認(rèn)證方法及裝置
- 令牌、動(dòng)態(tài)口令生成方法、動(dòng)態(tài)口令認(rèn)證方法及系統(tǒng)
- 一種動(dòng)態(tài)模糊控制系統(tǒng)
- 一種基于動(dòng)態(tài)信號(hào)的POS機(jī)和安全保護(hù)方法
- 圖像動(dòng)態(tài)展示的方法、裝置、系統(tǒng)及介質(zhì)
- 一種基于POS機(jī)聚合碼功能分離顯示動(dòng)態(tài)聚合碼的系統(tǒng)
- 基于動(dòng)態(tài)口令的身份認(rèn)證方法、裝置和動(dòng)態(tài)令牌





