假设我是Google Play(以下简称GP)审核团队的一名研发人员,负责设计GP的机审系统,我会如何进行设计?
站在一名Android逆向分析从业者的角度,以下是我对GP机审系统的理解和构想。
1. 审核流程概述
从开发者提交 .aab
文件的那一刻起,应用将进入Google Play审核系统的后台。系统首先将文件排入审核队列,并进行概要信息提取(如Manifest信息、签名信息等),获取这些基本特征后,应用将进入等待状态,并与后续提交的应用进行概要信息对比,持续几天(目的是让这个 .aab
文件与提交日后几天内的其他应用进行对比,确保不会通过简单修改包名或图标来规避审核)。
2. 机审流程
一旦通过概要信息对比,应用将进入正式的机审阶段。机审分为两个大类:静态分析 和 动态分析。接下来我将分别阐述这两个阶段。
静态分析
静态分析主要针对文件、资源、代码、字符串、ELF文件以及DEX节区等信息进行解析。系统通过一系列操作提取应用的关键信息,最终生成一个名为 StaticInfo 的特征表。静态分析主要关注以下几个方面:
- 文件结构分析:对应用的所有文件和资源进行详细分析。
- DEX解析:分析DEX文件,提取类、方法及调用关系。
- 资源文件检查:检查资源文件(如图片、布局文件等),确保没有异常或恶意资源。
- 字符串和敏感信息检查:扫描字符串中是否包含恶意或违规内容。
动态分析
在静态分析完成后,应用将进入动态分析阶段。动态分析通常通过沙箱环境来进行,这时候系统会模拟应用的实际运行,并记录下以下行为:
- 网络行为:监控应用的网络请求,检查是否存在异常或恶意的数据传输。
- Java API 调用行为:记录应用在运行时对Java API的调用,确保没有不当的权限使用或敏感数据泄露。
- SO API 调用行为:如果应用包含本地代码(如
.so
文件),系统会跟踪对系统级API的调用,确保不包含恶意或漏洞。 - 日志筛选与分析:检查应用运行时生成的日志,过滤出潜在的异常信息。
- 堆栈监控:记录应用的活动堆栈信息,检查是否存在不正常的行为。
通过这些分析,系统会生成一个名为 Exeinfo 的特征表。
3. 特征匹配与评估
经过静态分析和动态分析后,生成的 StaticInfo 和 Exeinfo 会进入后台数据库,系统通过比对与历史数据的相似度来判断是否通过审核。如果匹配度较高且符合Google Play的安全规范,应用将通过机审,进入下一步等待上架。
4. 人工与AI回审
尽管通过了机审,Google Play仍然会进行人工回审和AI回审。AI回审通常在一个月内进行,深度审核应用是否存在潜在的恶意行为或规避策略。
AI回审
当应用在Google Play运行一段时间后被下架时,可能是AI回审环节所致。AI回审的过程与前面的动静态分析类似,但其深度和广度更大。AI回审将包括以下步骤:
- Java层调用链流图:分析Java代码的调用链,检测是否有恶意调用模式。
- SO层调用链流图:同样,分析本地代码(SO文件)中的调用链,确保没有潜在的恶意行为。
- SO导出函数模拟执行:模拟执行本地库中的导出函数,检测其运行时行为。
- 启动页截图与定时截图:在应用启动和运行过程中,AI会自动截取屏幕图像,确保没有不当的广告行为或恶意跳转。
- 运行时目录和文件检索:分析应用在运行时生成的文件和目录,检查是否存在未授权的文件生成。
- Activity堆栈和关键API堆栈检索:检查应用在运行时的活动堆栈和API调用堆栈,以识别是否存在异常行为。
所有这些信息最终都会生成一个名为 AI Info 的特征表,并与后台数据库中的数据进行匹配,以判断应用是否符合Google Play的安全和合规要求。
5. 简而言之
在这一设计流程中,Google Play审核系统通过静态分析、动态分析以及深度的AI回审,确保平台上发布的应用是安全的,符合规定的。通过不断优化和深度化的审核策略,Google Play能够有效防止恶意应用和马甲包的上传,从而为用户提供更好的应用体验。
以上设计完全基于我对Android安全的理解和游戏行业经验对Google Play审核流程的推测。如果有不当之处,欢迎指教。有问题找NB早鸟出海,NB早鸟出海深耕出海近十年,专业提供Google/Facebook/Tiktok广告账户,谷歌/iOS上架&开发者账户,PWA/W2A/H5/APP代投。欢迎咨询飞机:@nboversea