Android应用安全与防范之签名校验

Android黑产品里面有一个叫做二次打包,也称为重打包。通过反编译应用后,可以得到smali源码,往其中注入代码或者修改相应义务逻辑后,重新利用新的签名进行打包,并发布到市场应用去,很多人就是通过这种方式去破解一些付费应用或者往其中注入广告代码来获利。简单梳理一下打包的基本流程:

1.对应用使用apktool类逆向工具进行解包

2.在某处地方注入smali代码

3.利用IDE生成签名文件,再通过jarsigner进行签名

4.上传应用市场

为了与二次打包做对抗,可以在应用内的关键功能入口增加校验签名的检测,如果发现应用签名非正版,则强制关闭应用或者限制用户使用。加签名校验代码时,可以考虑:

1.在JNI层加校验代码,相比在Java层的代码,JNI层的逆向难度更大。

2.如果要在Java层加校验代码,不要在一个地方暴露一段长字符串,对于逆向工程师来说,这是非常明显的提示。可以考虑将字符串打散存放在各处,这样会增加破解分析的难度

当然不要认为放在JNI层就可以高枕无忧了,对于JNI层,同样可以进行代码注入,来暴力破解你签名校验的逻辑,只不过相比Java层的,JNI层所需成本更高,这样也能拦截掉一部分逆向人员的不好的想法。

你可能感兴趣的:(Android应用安全与防范之签名校验)