欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于隨機(jī)混淆的Android軟件協(xié)同加固方法與流程

文檔序號:11407905閱讀:464來源:國知局

本發(fā)明涉及軟件加固領(lǐng)域,具體涉及一種基于隨機(jī)混淆的android軟件協(xié)同加固方法。



背景技術(shù):

android是一款源碼開放的移動智能終端操作系統(tǒng),它基于linux內(nèi)核,由谷歌開發(fā)。android自上市以來,其市場占有率逐年攀升,2016年上半年android在全球智手機(jī)操作系統(tǒng)的占有率為86.2%。目前android系統(tǒng)已經(jīng)遍布我們生活的方方面面,例如手機(jī)、平臺電腦、電視、手表、車載系統(tǒng)甚至健康檢測設(shè)備等。

一個android軟件開發(fā)從需求分析、到最后的定型發(fā)布,以及隨后的不斷升級,都需要開發(fā)單位投入大量的人財物。但是android軟件具有很強的流通性,無法防止被惡意篡改或盜版。被篡改或盜版的android軟件不僅會導(dǎo)致用戶信息泄露,嚴(yán)重的還會導(dǎo)致用戶資金損失,同時這在很大程度上損害了開發(fā)者的利益,所以android軟件的安全保護(hù)十分重要。



技術(shù)實現(xiàn)要素:

本發(fā)明為了克服以上技術(shù)的不足,提供了一種有效防止android軟件被篡改和盜版的一種基于隨機(jī)混淆的android軟件協(xié)同加固方法。

本發(fā)明克服其技術(shù)問題所采用的技術(shù)方案是:

一種基于隨機(jī)混淆的android軟件協(xié)同加固方法,包括如下步驟:

a)解壓需要加固的android軟件,分別獲得classes.dex文件和bin文件;

b)對classes.dex文件頭header進(jìn)行隨機(jī)混淆,對classes.dex文件增加無用隨機(jī)代碼;

c)對源文件中的bin文件進(jìn)行重命名并將原bin文件名稱作為加載器名稱,完成對加載器的重命名,重命名后的加載器loder將classes.dex與重命名后的bin文件隔離;

d)計算混淆后的classes.dex文件的hash值hash_dex,并對hash_dex進(jìn)行加密,將加密后為hash_dex文件保存至加載器loder中;

e)計算加載器loder的hash值hash_loder,計算重命名后的bin文件hash值hash_core;

f)對重命名后的bin文件進(jìn)行加密并生成密文ciphertext,將ciphertext、hash_loder和hash_core組成文件date;

g)將date文件、bin文件以及混淆后的classes.dex文件進(jìn)行重新簽名,打包生成加固后的apk。

上述步驟b)中的隨機(jī)混淆包括如下步驟:

b-1)利用整數(shù)隨機(jī)函數(shù)生成一個隨機(jī)數(shù)n,1500<n<2500;

b-2)計算機(jī)以n為參數(shù)并輸入隨機(jī)字符生成函數(shù),生成一個長度length=n的byte數(shù)組;

b-3)將長度為n的byte數(shù)組插入到dex頭文件的第p個位置上,其中p=0x28+n%(0x70-0x28),

其中,0x70為dex頭文件原始程度,0x28為magic、checksum、signature、filesize和headersize5字段的長度和;

b-4)對隨機(jī)數(shù)n進(jìn)行自定義加密,加密結(jié)果為8byte編碼,并將8byte編碼追加到dex文件尾部;

b-5)更新dex文件校驗碼字段checksum,用于根據(jù)alder32算法校驗dex文件除去magic、checksum兩字段外的文件的正確性;

b-6)更新dex文件哈希值字段signature,signature是利用sha-1算法計算dex文件除去magic、checksum和signature三字段外的哈希值,用于判斷文件完整性;

b-7)更新dex文件長度字段filesize的值為:filesize=filesize+n+8;

b-8)更新dex頭文件長度字段headersize的值為:headersize=headersize+n+8。

上述步驟d)中的加密方式為aes加密。

本發(fā)明的有益效果是:本基于隨機(jī)混淆的android軟件協(xié)同加固方法第一是對dex頭文件隨機(jī)混淆加固,第二是對bin文件的安全動態(tài)加載加固。通過隨機(jī)混淆的協(xié)同加固方法對android軟件進(jìn)行保護(hù),增強了代碼的安全性。有效防止android軟件被惡意篡改或盜版的現(xiàn)象發(fā)生。

附圖說明

圖1為本發(fā)明的流程圖。

具體實施方式

下面結(jié)合附圖1對本發(fā)明做進(jìn)一步說明。

一種基于隨機(jī)混淆的android軟件協(xié)同加固方法,包括如下步驟:a)解壓需要加固的android軟件,分別獲得classes.dex文件和bin文件;b)對classes.dex文件頭header進(jìn)行隨機(jī)混淆,對classes.dex文件增加無用隨機(jī)代碼;c)對源文件中的bin文件進(jìn)行重命名并將原bin文件名稱作為加載器名稱,完成對加載器的重命名,重命名后的加載器loder將classes.dex與重命名后的bin文件隔離;d)計算混淆后的classes.dex文件的hash值hash_dex,并對hash_dex進(jìn)行加密,將加密后為hash_dex文件保存至加載器loder中;e)計算加載器loder的hash值hash_loder,計算重命名后的bin文件hash值hash_core;f)對重命名后的bin文件進(jìn)行加密并生成密文ciphertext,將ciphertext、hash_loder和hash_core組成文件date;g)將date文件、bin文件以及混淆后的classes.dex文件進(jìn)行重新簽名,打包生成加固后的apk。本基于隨機(jī)混淆的android軟件協(xié)同加固方法第一是對dex頭文件隨機(jī)混淆加固,第二是對bin文件的安全動態(tài)加載加固。通過隨機(jī)混淆的協(xié)同加固方法對android軟件進(jìn)行保護(hù),增強了代碼的安全性。有效防止android軟件被惡意篡改或盜版的現(xiàn)象發(fā)生。

步驟b)中的隨機(jī)混淆包括如下步驟:b-1)利用整數(shù)隨機(jī)函數(shù)生成一個隨機(jī)數(shù)n,1500<n<2500;b-2)計算機(jī)以n為參數(shù)并輸入隨機(jī)字符生成函數(shù),生成一個長度length=n的byte數(shù)組;b-3)將長度為n的byte數(shù)組插入到dex頭文件的第p個位置上,其中p=0x28+n%(0x70-0x28),其中,0x70為dex頭文件原始程度,0x28為magic、checksum、signature、filesize和headersize5字段的長度和;b-4)對隨機(jī)數(shù)n進(jìn)行自定義加密,加密結(jié)果為8byte編碼,并將8byte編碼追加到dex文件尾部;b-5)更新dex文件校驗碼字段checksum,用于根據(jù)alder32算法校驗dex文件除去magic、checksum兩字段外的文件的正確性;b-6)更新dex文件哈希值字段signature,signature是利用sha-1算法計算dex文件除去magic、checksum和signature三字段外的哈希值,用于判斷文件完整性;b-7)更新dex文件長度字段filesize的值為:filesize=filesize+n+8;b-8)更新dex頭文件長度字段headersize的值為:headersize=headersize+n+8。通過對dex頭文件進(jìn)行大量隨機(jī)字符混淆,在不影響android軟件執(zhí)行效率情況下,增加了dex文件反編譯的難度,提高了源碼的安全性,同時保證了dex文件的正確性和完整性。在文件加載時首先利用加載器dexclassloder將混淆后的dex文件載入內(nèi)存。讀取dex頭文件中的headersize字段,根據(jù)headersize值讀取dex頭文件dexheader。從dex文件尾部讀取8字節(jié)編碼,通過自定義解密算法得到隨機(jī)混淆字段長度n,通過4)中公式計算出隨機(jī)混淆字段的插入位置p。從dex頭文件中移除第p到第p+n-1個byte,更新checksum、checksum、filesize和headersize字段,最終得到正確的dex文件。

進(jìn)一步的,步驟d)中的加密方式為aes加密。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
桑植县| 治多县| 依安县| 墨竹工卡县| 无锡市| 洛川县| 宽城| 明光市| 绥芬河市| 高雄县| 涞水县| 霍山县| 太湖县| 巴彦淖尔市| 万源市| 温宿县| 双城市| 普洱| 龙川县| 灵川县| 潞西市| 景洪市| 建始县| 东阳市| 中超| 金昌市| 宾阳县| 定远县| 宿松县| 青川县| 广平县| 颍上县| 兴宁市| 灵丘县| 新宾| 南平市| 巴林左旗| 阿图什市| 三穗县| 绥棱县| 友谊县|