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

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

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

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

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

4.上传应用市场

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

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

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

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

转载于:https://my.oschina.net/u/2971691/blog/857799

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值