移动安全(4) - Android应用完整性校验

目录

破坏完整性实验

1. apk解包

2. 修改源文件

3. 重新打包

4. 重新签名

5. 安装重新签名后的apk

 

完整性检查方案

1. 检查摘要文件MANIFEST.MF

2. 校验classes.dex

3. 校验整个apk


 

破坏完整性实验

完整性校验的目的就是防止Android客户端程序被篡改/二次打包,下面以篡改资源文件为例来做实验:

1. apk解包

解包命令:java -jar apktool_2.5.0.jar d exampleapp.apk -o out

 解包结果:

 

2. 修改源文件

找到first_layout.xml这个文件,也就是第一个activity的布局文件,里面的button原本显示的文字是Button1,现在修改为Button10-modified

3. 重新打包

打包命令:java -jar apktool_2.5.0.jar b -f  out -o new.apk

打包完成:

这个包无法直接安装,因为还没有签名,直接安装会报错:

4. 重新签名

java -jar signapk.jar testkey.x509.pem testkey.pk8 new.apk newsign.apk

5. 安装重新签名后的apk

需要先卸载解包前安装的apk,不然会报错。运行app,发现修改成功:

hmmm.....这个就比较危险了,实验中我修改的只是资源文件,解包文件里面也有samil文件,也就是说还可以修改源码,这样的话种个木马,或者反弹个shell是不是也可以实现了。。。

 

完整性检查方案

其实我也不太懂(以后弄明白了再来更新),查了下相关资料,完整性检查的方案: 

1. 检查摘要文件MANIFEST.MF

把修改前的apk解压之后就能找到MANIFEST.MF这个文件:

再把修改之后的apk的这个文件找出来,确实不一样了,而且里面所有文件的签名都不一样:

除了MANIFEST.MF,还可以使用CERT.SF,CERT.RSA

2. 校验classes.dex

 用crc32对classes.dex文件的完整性进行校验,最好将crc32的值存在服务器

3. 校验整个apk

用哈希值对整个apk完整性进行校验,最好将哈希值存在服务器

 

本文仅用于技术学习和交流,严禁用于非法用途,否则产生的一切后果自行承担。

如需转载,请注明出处,这是对他人劳动成果的尊重。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值