我的位置: 首頁(yè) > 學(xué)習(xí)專區(qū) > 安卓技術(shù) > 深圳嘉華學(xué)校安卓開(kāi)發(fā)教程之完整性校驗(yàn)

深圳嘉華學(xué)校安卓開(kāi)發(fā)教程之完整性校驗(yàn)

2016-09-17 11:06:26
來(lái)源:北大青鳥(niǎo)深圳嘉華學(xué)校
[導(dǎo)讀] 這里北大青鳥(niǎo)深圳嘉華學(xué)校要分享一點(diǎn)關(guān)于安卓開(kāi)發(fā)教程的技術(shù)內(nèi)容,防止apk反編譯的技術(shù)——完整性校驗(yàn)。一、完整性校驗(yàn)原理所謂完整性校驗(yàn)就是我們用各種算法來(lái)計(jì)算一個(gè)文件的完整性,防止這個(gè)文件被修改。其中常用的方法就是計(jì)算一個(gè)文件的CRC32的值或者計(jì)算一個(gè)文件的哈希值。我們

這里北大青鳥(niǎo)深圳嘉華學(xué)校要分享一點(diǎn)關(guān)于安卓開(kāi)發(fā)教程的技術(shù)內(nèi)容,防止apk反編譯的技術(shù)——完整性校驗(yàn)。

一、完整性校驗(yàn)原理

所謂完整性校驗(yàn)就是我們用各種算法來(lái)計(jì)算一個(gè)文件的完整性,防止這個(gè)文件被修改。其中常用的方法就是計(jì)算一個(gè)文件的CRC32的值或者計(jì)算一個(gè)文件的哈希值。我們?cè)诜乐筧pk被反編譯的方法中也可以采用這種方法。我們知道apk生成的classes.dex主要由java文件生成的,它是整個(gè)apk的邏輯實(shí)現(xiàn)。所以我們可以對(duì)classes.dex文件進(jìn)行完整性校驗(yàn),來(lái)保證整個(gè)程序的邏輯不被修改。如果我們想要保證整個(gè)apk文件的完整性,也可以對(duì)整個(gè)apk文件進(jìn)行完整性校驗(yàn)。下面我們分別來(lái)實(shí)現(xiàn)對(duì)classes.dex文件和apk文件的完整性校驗(yàn)。

二、用crc32對(duì)classes.dex文件的完整性進(jìn)行校驗(yàn)

(1)可以打印出來(lái)我們的apk生的classes.dex文件的crc32的值,代碼如下:

深圳嘉華學(xué)校安卓開(kāi)發(fā)教程之完整性校驗(yàn)

注意:R.string.classesdex_crc的值現(xiàn)在可以是個(gè)隨機(jī)數(shù)。

(2)運(yùn)行程序打印結(jié)果,我的apk程序的classes.dex的crc32的值為713769644

(3)將上面程序的classes.dex文件的crc32的值,保存在資源文件字符串中classesdex_crc中(當(dāng)然也可以保存在服務(wù)器上,然后通過(guò)網(wǎng)絡(luò)獲取校驗(yàn)),然后再運(yùn)行上面的apk程序,打印如下:

Dex hasn't beenmodified!

(4)這時(shí)我們?cè)谏厦娴拇a中隨便加一行或者一個(gè)空格,然后重新編譯運(yùn)行會(huì)看到我們的程序的crc32的值改變了。程序打印如下:

Dex has beenmodified!

三、用哈希值對(duì)整個(gè)apk完整性進(jìn)行校驗(yàn)

由于我們要對(duì)整個(gè)apk的完整性進(jìn)行校驗(yàn),所以我們的算出哈希值就不能存在資源文件中了因?yàn)閍pk中任何的改動(dòng)都會(huì)引起最終apk生成的哈希值的不同。

(1)首先實(shí)現(xiàn)apk中計(jì)算自身哈希值的代碼,如下:

深圳嘉華學(xué)校安卓開(kāi)發(fā)教程之完整性校驗(yàn)

(2)用linux下的sha1sum命令計(jì)算我們的apk的哈希值,命令如下:

sha1sum verification.apk

(3)將(2)中生成的哈希值存到服務(wù)器上,然后在我們的代碼中從服務(wù)器獲取進(jìn)行完整性比較。

上面我們用計(jì)算crc32和哈希值的方法分別對(duì)classes.dex文件和整個(gè)apk完整性進(jìn)行了校驗(yàn),當(dāng)然兩個(gè)校驗(yàn)方法也可以互換使用。好了,今天的內(nèi)容就先介紹到這,接下來(lái)我們還將分享其他的Android Apk 防止反編譯技術(shù)。

評(píng)論
熱點(diǎn)專題
>>
相關(guān)文章推薦
>>
深圳電腦短期培訓(xùn)班 深圳南山區(qū)電腦培訓(xùn)班 學(xué)電腦培訓(xùn) 電腦培訓(xùn)班要多少錢 深圳電腦學(xué)習(xí)班 西鄉(xiāng)電腦培訓(xùn)班 新手學(xué)電腦快速入門 深圳計(jì)算機(jī)培訓(xùn) 計(jì)算機(jī)編程入門 深圳計(jì)算機(jī)專業(yè) 深圳it培訓(xùn)哪家好 it是什么意思 深圳IT培訓(xùn)機(jī)構(gòu)排名 深圳嘉華北大青鳥(niǎo) 廣東北大青鳥(niǎo) 深圳c語(yǔ)言培訓(xùn) 深圳數(shù)據(jù)庫(kù)培訓(xùn) java培訓(xùn)班 高考分?jǐn)?shù)不好怎么辦 高考失敗怎么辦 深圳網(wǎng)絡(luò)營(yíng)銷師培訓(xùn) 寶安網(wǎng)絡(luò)營(yíng)銷 學(xué)什么技術(shù)工資最高 什么行業(yè)工資最高 高中生學(xué)什么好就業(yè) 高考選什么專業(yè)最有前景 深圳安卓培訓(xùn)費(fèi)用多少 安卓系統(tǒng)開(kāi)發(fā)培訓(xùn) 高中生學(xué)什么技術(shù) 不上大學(xué)能做什么 高考分?jǐn)?shù)低怎么辦 學(xué)電腦學(xué)什么專業(yè)好 上技校學(xué)什么好 北大青鳥(niǎo)宿舍 北大青鳥(niǎo)住宿 北大青鳥(niǎo)校園生活 北大青鳥(niǎo)校園活動(dòng) 北大青鳥(niǎo)運(yùn)動(dòng)會(huì) 學(xué)生運(yùn)動(dòng)會(huì) 深圳職業(yè)學(xué)校 深圳北大青鳥(niǎo)南山區(qū) 北大青鳥(niǎo)嘉華學(xué)校 深圳北大青鳥(niǎo)南山區(qū)怎么樣 深圳北大青鳥(niǎo)官網(wǎng) 北大青鳥(niǎo)深圳校區(qū)
好吊妞免费视频在线观看,久久亚洲国产人成综合网,久久精品国产2020,欧美精品综合在线
久久福利网站免费视频 | 香蕉网伊中文在线字幕视频 | 日本免费人成视频在线观看网站 | 在线网站亚洲观看 | 亚洲国产日韩欧美另类卡通动漫 | 日韩精品中文字幕一区 |