前言

大数据时代,移动应用(APP)数量多、应用领域也广泛。APP遭破解而导致数据被窃取、个人隐私信息泄露、被盗版山寨的事件并不少见,不仅危害着用户信息安全与财产安全,也影响到正版开发者的知识产权经营。

据国家互联网金融风险分析技术平台发布的监测数据,截至2020年2月底,发现互联网金融盗版网站4.81万个,受害用户达12万人次,互联网金融盗版APP2801个,盗版APP下载量3343.7万次。

APP的破解与反破解是Android应用攻防领域的永恒主题,由此衍生了许多攻防对抗的技术手段,如加壳与脱壳,调试与反调试等。本文以Android APP的二次打包与防护为例,梳理下常见的攻防对抗手段,从源头提高APP的安全性。

二次打包

通常对APP进行二次打包的步骤是:解包(反编译)–>插入/篡改代码–>生成新包–>重签名–>运行。简单而言,破解者首先将APK包反编译,对反编译后产生的smali文件中的关键代码进行篡改,再回编译重签名,从而实现破解的需求,如去除广告、修改VIP会员状态、内购破解等。

从APP被二次打包的整个流程可见,对APP进行防护,主要有以下几个重要环节。

签名效验:在运行时校验签名,校验签名是否被篡改,在重签名环节进行对抗。

文件完整性校验:在运行时对APK文件进行校验,校验关键文件是否被篡改,在生成新包环节进行对抗。

方法校验:在运行时校验关键函数,校验方法是否被篡改,在篡改代码环节进行对抗。

一般的加固防护方案采取对APK文件进行加固的方法,并在运行时对APK中的签名和文件进行校验。随着对抗的升级,加固保护技术原理已经被破解者充分研究。在此现状下,传统的保护手段容易被轻松绕过,具体看下面的案例。

破解案例

某影视视频制作APP上线后不久被破解,导致其付费功能被免费使用。技术人员通过分析破解包,发现破解者替换了classes.dex文件,通过类似热更的方式篡改了付费相关逻辑;修改了AndroidManifest.xml配置文件中的Application接管APP运行的入口;并且在APK的assets目录下插入了用于hook的so文件与插件文件,如下所示:

在对抗APP自身的安全防护方面,破解包Hook了java层签名,以获取接口用来绕过APP的签名校验。另外,在运行时,破解者解压出了原APK包,重定向APK的路径到解压出的原APK包路径。传统的完整性校验以及native层的签名校验,因此而失效。这是由于输入的APK路径已经被劫持了,使用“伪造”的原包APK路径进行校验,无法检测到破解行为。

对抗方案

针对这些破解与绕过的技术手段,易盾Android应用加固方案有针对性地增强了“签名校验”与“文件完整性校验”的强度,并且增加了运行时方法级校验功能,可以在各环节有效遏制二次打包,让应用远离破解的威胁。

1签名效验

对Android系统获取签名相关接口进行校验,如果发现被Hook则主动闪退,并且对PMS Hook方式绕过签名校验的行为进行检测,使这种签名绕过方式失效。

2完整性校验

加固时对APK中关键文件信息进行缓存,APP运行时获取APK路径并遍历其中文件,对比加固过程中缓存的文件信息,发现被篡改则主动闪退。在获取APK路径时进行校验,发现被重定向则主动退出,避免通过重定向攻击完整性校验导致校验无效。

3方法级校验

加固时对关键方法信息抽取缓存,APP运行时接管系统关键接口,当调用关键方法时,对其指令特征进行校验,发现特征被篡改,则主动闪退。

4对抗效果

在接入易盾升级对抗的加固方案后,APP反馈线上破解风险得到有效遏制。

结语

本文总结了易盾在Android应用加固防护方案中,通过签名校验、完整性校验、方法级校验等方式,经过线上验证,能够起到较好的对抗效果。

然而,在利益的趋势下,APP破解与盗版乱象形成了盘根错节的灰色产业链,破解与反破解的攻防对抗还在不断的持续演进。对此,易盾的安全团队将持续跟进最新的破解手段,迭代保护方案,集合盗版监测、数据分析与风险预报等环节,不断提升反破解的效果。

知物由学 | Android应用破解与防护,阻断猖獗的应用乱象相关推荐

  1. 《iOS防护02》破解ptrace防护

    本文接上一篇<iOS防护01>ptrace防护 ,实现破解ptrace防护. 创建动态库 因动态库的加载在main函数之前,所以通过动态库中编写代码实现hook. 按照下图步骤创建动态库 ...

  2. Android APP破解利器Frida之反调试对抗

    本文讲的是Android APP破解利器Frida之反调试对抗,在我发表了关于Frida的第二个博文后不久,@muellerberndt决定发布另外一个新的OWASP Android 破解APP,我很 ...

  3. android开发学术报告,基于Android应用的安全防护技术研究

    摘要: Android平台由于其开源性,免费性,硬件多等优点,一经推出就获得了厂商和消费者的喜爱,迅速成为市场份额最多的移动端平台.面向Android平台开发设计的应用程序也如雨后春笋般增长.与此同时 ...

  4. Android游戏破解练习-大圣觉醒

    Android游戏破解练习-大圣觉醒 用Android Skiller搜下关键字看有没有PaySuccess 发现有关键字 那么就用Jadx继续搜索 找到关键字找到它对应类,右键查找引用 看看哪里引用 ...

  5. Android APK破解、反编译、打包签名基本思路与方法

    Android APK破解.反编译.打包签名基本思路与方法 2013年6月1日星期六                                                           ...

  6. Android逆向之旅---带你解读Android中新型安全防护策略

    一.前言 最近有一个同学,发给我一个设备流量访问检测工具,但是奇怪的是,他从GP上下载下来之后安装就没有数据了,而在GP上直接安装就可以.二次打包也会有问题.所以这里就可以判断这个app应该是有签名校 ...

  7. Android内容提供器的应用,基于Android的智能终端应用防护系统短信过滤子模块的设计与实现...

    摘要: 智能终端随着3G业务的推广而普及,在各种平台的竞争中,Android逐渐占据了主流,谷歌学习苹果的应用商店模式,推出了自己的应用商城.面对应用市场的繁荣,用户的终端安装了形形色色的应用,许多安 ...

  8. 利用Android手机破解微信加密数据库EnMicroMsg.db文件

    要先批评一下微信,居然用开源的数据库加密方式,这不是一破解一个准吗? 如果你的模拟器或者真机已经获得了root权限,就可以直接将记录聊天记录的数据库文件拷贝出来,数据库文件具体存放位置如下: 在/da ...

  9. 直接利用Android手机破解微信加密数据库EnMicroMsg.db

    ※首先,简单介绍一下微信加密数据库EnMicroMsg.db的破解方法: 要先批评一下微信,居然用开源的数据库加密方式,这不是一破解一个准吗... 如果你的模拟器或者真机已经获得了root权限,就可以 ...

最新文章

  1. C#编码实践:使用委托和特性调用指定函数
  2. 自己写的程序密码功能 ------数字功能
  3. 【前端词典】和媳妇讲代理后的意外收获
  4. vue开发(2) 使用vue-cli来构建项目
  5. CSS3的background-size:可以设置高宽 百分比 最大大小 最小大小
  6. java创建对象 的初始化顺序
  7. 根据网页地址获取页面内容
  8. 论文浅尝 - COLING2020 | 桥接文本和知识的多原型嵌入在少样本关系三元组抽取中的研究...
  9. pytesseract
  10. python简单的聚类分析代码_python kmeans聚类简单介绍和实现代码
  11. aftershokz蓝牙搜不到_iphone xr黑屏无法开机怎么办?iphonexr蓝牙连不上怎么办?
  12. 30个高质量的Psd设计文件分享
  13. python 密码安全_python密码安全程序
  14. PIL(pillow)读取图片自动旋转的问题
  15. Camera tuning 基础知识点
  16. 【荣耀】2021年招聘开启,新荣耀,新征程 (base Xian or Beijing) - 内推
  17. 软件控制硬件c语言编程,硬件编程用什么软件好
  18. 欧文计算机科学排名,加州大学欧文分校计算机科学世界排名2019年最新排名第55(THE世界排名)...
  19. 量化投资入门指南:风险模型和交易成本模型
  20. execl筛选去重_Excel去除重复项的三种常用技巧

热门文章

  1. 我如何为我的第一个自由客户构建第一个React Native应用程序
  2. 计算机屏幕出现蓝色条,我的电脑屏幕中间为何会有一道蓝色线条
  3. 驭势科技无人驾驶技术走向海外,AI国潮获赞满满
  4. POJ 1061 青蛙的约会
  5. 金融量化-基于K线形态锤子线的趋势跟踪策略
  6. 2020年小米校招JAVA岗笔试第二题
  7. 透明遮罩图层VS高斯模糊滤镜 效果分析
  8. 4k显示器用html好还是dp,2K、4K显示器的高清线你造怎么选吗?
  9. 7 个Javascript 小技巧
  10. 十六. 项目干系人管理