重打包防护检测
一、API
【1】APK签名校验:PackageManager.getPackageInfo( )
【2】dex文件校验:对比classes.dex文件的哈希值
【3】参考链接
http://www.droidsec.cn/android应用安全开发之源码安全/
二、触发条件
1. 获取所有反编译smali文件名的对应列表smali_list
2. 获取Manifest文件中所有组件名的对应列表component_list
【1】对应到smali语句中的特征
r'<(?:activity |service |provider |receiver )'
3. 判断组件对应的文件是否存在
Note
【1】考虑不管是APK签名校验,还是dex文件校验,如果APP源码暴露,校验逻辑也会被破解,二次打包总是不可避免的,所以主要去判断APP是否进行加壳保护,只保留保护程序,隐藏源程序真正的代码文件
【2】如果有更好的检测方法和规则,求赐教!
三、漏洞原理
【1】应用没有进行安全加壳保护,攻击者可以利用重打包等手段修改程序的代码逻辑及原始内容,同时上传仿冒的APP到第三方应用市场,欺骗用户
【2】更多内容
http://www.jianshu.com/p/6bcc42542997
四、修复建议
【1】建议使用相应的应用安全加固方案,提供对dex、so等文件的保护