网站首页 > 开源技术 正文
这里北大青鸟深圳嘉华学校要分享一点关于安卓开发教程的技术内容,防止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 防止反编译技术。
用心办好学,深圳嘉华邀您加入互联网队伍!
微信号:jhzyjy(长按复制)
我们专注IT教育,欢迎你前来咨询!
猜你喜欢
- 2025-09-12 爬虫中的那些反爬虫措施以及解决方法
- 2025-09-12 如何防止Android应用代码被窃_android防止hook
- 2025-09-12 这些小工具让你的Android 开发更高效
- 2025-09-12 手机Python编程神器——AidLearning
- 2025-09-12 app开发领域中说的套壳产品指的是什么
- 2025-09-12 Android中的run-as命令带来的安全问题
- 2025-09-12 使用Android的adb命令停止APP后台进程的方法
- 2025-09-12 全面揭秘:如何破解加密参数及其验证方法
- 2025-09-12 Android调试系列-使用android studio调试smali代码
- 2025-09-12 ADB工具实战宝典:解锁Android设备的隐藏力量,守护安全防线
你 发表评论:
欢迎- 09-12爬虫中的那些反爬虫措施以及解决方法
- 09-12如何防止Android应用代码被窃_android防止hook
- 09-12这些小工具让你的Android 开发更高效
- 09-12手机Python编程神器——AidLearning
- 09-12app开发领域中说的套壳产品指的是什么
- 09-12Android中的run-as命令带来的安全问题
- 09-12使用Android的adb命令停止APP后台进程的方法
- 09-12全面揭秘:如何破解加密参数及其验证方法
- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)