Android应用安全与防范之签名校验
2017-03-13 18:07
295 查看
Android黑产品里面有一个叫做二次打包,也称为重打包。通过反编译应用后,可以得到smali源码,往其中注入代码或者修改相应义务逻辑后,重新利用新的签名进行打包,并发布到市场应用去,很多人就是通过这种方式去破解一些付费应用或者往其中注入广告代码来获利。简单梳理一下打包的基本流程:
1.对应用使用apktool类逆向工具进行解包
2.在某处地方注入smali代码
3.利用IDE生成签名文件,再通过jarsigner进行签名
4.上传应用市场
为了与二次打包做对抗,可以在应用内的关键功能入口增加校验签名的检测,如果发现应用签名非正版,则强制关闭应用或者限制用户使用。加签名校验代码时,可以考虑:
1.在JNI层加校验代码,相比在Java层的代码,JNI层的逆向难度更大。
2.如果要在Java层加校验代码,不要在一个地方暴露一段长字符串,对于逆向工程师来说,这是非常明显的提示。可以考虑将字符串打散存放在各处,这样会增加破解分析的难度
当然不要认为放在JNI层就可以高枕无忧了,对于JNI层,同样可以进行代码注入,来暴力破解你签名校验的逻辑,只不过相比Java层的,JNI层所需成本更高,这样也能拦截掉一部分逆向人员的不好的想法。
1.对应用使用apktool类逆向工具进行解包
2.在某处地方注入smali代码
3.利用IDE生成签名文件,再通过jarsigner进行签名
4.上传应用市场
为了与二次打包做对抗,可以在应用内的关键功能入口增加校验签名的检测,如果发现应用签名非正版,则强制关闭应用或者限制用户使用。加签名校验代码时,可以考虑:
1.在JNI层加校验代码,相比在Java层的代码,JNI层的逆向难度更大。
2.如果要在Java层加校验代码,不要在一个地方暴露一段长字符串,对于逆向工程师来说,这是非常明显的提示。可以考虑将字符串打散存放在各处,这样会增加破解分析的难度
当然不要认为放在JNI层就可以高枕无忧了,对于JNI层,同样可以进行代码注入,来暴力破解你签名校验的逻辑,只不过相比Java层的,JNI层所需成本更高,这样也能拦截掉一部分逆向人员的不好的想法。
相关文章推荐
- Android应用安全与防范之签名校验
- android 关于利用签名的SHA1进行安全校验的方法之一
- Android应用安全风险与防范
- Android Webview SSL 自签名安全校验解决方案
- 六、Android安全机制之NDK实现防钩子签名校验
- Android应用安全开发之防范无意识的数据泄露
- Android应用安全与校验之反动态调试
- Android中破解应用签名校验的后续问题处理方案(闪退和重启现象以及无效问题)
- Android应用安全与防范之数据保护和资源保护
- android 增加自己的应用签名校验
- Android应用安全风险与防范之加壳
- Android应用安全风险与防范之代码混淆
- android 增加自己的应用签名校验
- android应用安全——签名机制
- android 关于利用签名的SHA1进行安全校验的方法之一(推荐)
- android_apk安全之运行时签名校验
- Android应用安全风险与防范之加壳
- 移动安全逆向著作《Android应用安全防护和逆向分析》终于发售了,先来一波签名送书福利!
- Android应用安全风险与防范
- Android应用安全与防范之数据保护和资源保护