200元7天入门UI设计
特色直播课
招生说明会-如何为孩子选择好学校好专业
设计小白也能学会海报“整容”术
测一测我到底适合学什么?跳槽转行学啥好?测一测就知道-北大青鸟嘉华学校官网
电脑
首页 >手机网站 > 新闻 > 深圳嘉华学校安卓开发教...

深圳嘉华学校安卓开发教程之完整性校验

这里北大青鸟深圳嘉华学校要分享一点关于安卓开发教程的技术内容,防止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 防止反编译技术。

2016-09-17 11:08:48
相关热词搜索: 深圳安卓培训费用多少

其他资讯

要想当好程序员,没有基础怎么去写呢,所以基础要打好,对于程序...
2016-02-16
2015年12月18日,深圳教育改革创新高峰论坛暨2015教育盛典在南山...
2015-12-18
近日,北大青鸟深圳嘉华学校传来就业喜报,校区网络工程专业学子...
2017-07-21
10月15日,北大青鸟APTECH为旗下最新研发的产品——ACCP7 0,在...
2013-10-23
我现在住在深圳西丽,只有高中学历,在工厂打了两年工觉得不是事...
2016-04-18
5月8日,一场别开生面的模拟面试活动在北大青鸟深圳嘉华学校T61...
2013-05-20
申请嘉华免费学习机会
姓名:
电话:
我适合学IT技术吗?测一测揭晓答案
2020不知道学什么好?
北大青鸟职业规划老师免费规划学习方案
姓名 电话
说明:您的信息通过加密传输,请放心填写,提交后请保持手机通畅,我们将在24小时内与您联系。