招生熱線
0755-86191118 0755-86191118
我的位置: 首頁 > 學習專區 > 安卓技術 > 深圳嘉華學校安卓開發教程之完整性校驗

深圳嘉華學校安卓開發教程之完整性校驗

2016-09-17 11:06:26
來源:北大青鳥深圳嘉華學校
[導讀] 這里北大青鳥深圳嘉華學校要分享一點關于安卓開發教程的技術內容,防止apk反編譯的技術——完整性校驗。一、完整性校驗原理所謂完整性校驗就是我們用各種算法來計算一個文件的完整性,防止這個文件被修改。其中常用的方法就是計算一個文件的CRC32的值或者計算一個文件的哈希值。我們

這里北大青鳥深圳嘉華學校要分享一點關于安卓開發教程的技術內容,防止apk反編譯的技術——完整性校驗。

一、完整性校驗原理

所謂完整性校驗就是我們用各種算法來計算一個文件的完整性,防止這個文件被修改。其中常用的方法就是計算一個文件的CRC32的值或者計算一個文件的哈希值。我們在防止apk被反編譯的方法中也可以采用這種方法。我們知道apk生成的classes.dex主要由java文件生成的,它是整個apk的邏輯實現。所以我們可以對classes.dex文件進行完整性校驗,來保證整個程序的邏輯不被修改。如果我們想要保證整個apk文件的完整性,也可以對整個apk文件進行完整性校驗。下面我們分別來實現對classes.dex文件和apk文件的完整性校驗。

二、用crc32對classes.dex文件的完整性進行校驗

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

深圳嘉華學校安卓開發教程之完整性校驗

注意:R.string.classesdex_crc的值現在可以是個隨機數。

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

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

Dex hasn't beenmodified!

(4)這時我們在上面的代碼中隨便加一行或者一個空格,然后重新編譯運行會看到我們的程序的crc32的值改變了。程序打印如下:

Dex has beenmodified!

三、用哈希值對整個apk完整性進行校驗

由于我們要對整個apk的完整性進行校驗,所以我們的算出哈希值就不能存在資源文件中了因為apk中任何的改動都會引起最終apk生成的哈希值的不同。

(1)首先實現apk中計算自身哈希值的代碼,如下:

深圳嘉華學校安卓開發教程之完整性校驗

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

sha1sum verification.apk

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

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

評論
好吊妞免费视频在线观看,久久亚洲国产人成综合网,久久精品国产2020,欧美精品综合在线
日本天堂天v在线播放 | 日韩国产二区不卡在线 | 一级AV在线免费播放 | 免费h片网站在线观看视频 原创国产中文AV | 亚洲有码在线播放 | 亚洲欧美另类色妞网欧美吧 |