Android 应用分析完整指南

  • Android 应用分析结合了 APK 技术检查、安全审计以及使用情况和业务分析。
  • APK Analyzer、Android Studio、Inspeckage 和 OWASP MAS 框架等工具可以帮助您检测错误并优化代码。
  • 移动分析平台(Firebase、Contentsquare、Mixpanel 等)有助于了解用户行为、转化率和性能。
  • 将安全性、可观测性和产品指标集成到应用程序生命周期中,可以提高质量、合规性和投资回报率。

Android应用分析

如今,我们的手机里有成千上万个应用程序,但真正懂得如何使用它们的人却寥寥无几。 每个安卓应用内部究竟做了些什么?它使用了哪些权限?它如何影响设备性能和安全性?对于开发者、安全审计人员和市场营销团队而言,了解和分析安卓应用已不再是可选项:它是打造可靠、快速、高效产品的关键组成部分。 尊重隐私.

本文将为您提供完整的概述 多角度分析安卓应用用于检查 APK 和已安装应用的工具、Android Studio APK Analyzer 等开发实用程序、Inspeckage 等审计框架、OWASP MAS 等安全方法论,以及对主流移动分析平台(Firebase、Contentsquare、Mixpanel、Countly、Localytics、RevenueCat、AppDynamics 和 AppsFlyer)的全面概述。所有内容均以西班牙语(西班牙)讲解,语言友好,但又不失技术严谨性。

什么是Android应用分析?它有什么用途?

当我们谈到分析安卓应用程序时,我们可以同时提到这两方面。 从技术上剖析APK (权限、代码、清单、服务等)以及研究使用指标、用户行为、性能、错误,甚至是广告欺诈。它们是两个截然不同但又相辅相成的领域:技术层面确保应用程序的安全性和稳定性;产品分析层面则帮助您了解应用程序是否实现了其业务目标。

从技术角度来看,分析可以分为以下几个部分: 静态分析和动态分析静态监控在不执行应用的情况下研究 APK 或代码(例如反编译、权限分析、检查 AndroidManifest.xml 等)。动态监控则在应用运行时观察其行为,记录网络流量、对敏感 API 的调用、加密使用情况或文件创建情况。

在用户体验和商业分析领域,重点在于 了解用户如何使用应用,他们在哪些环节遇到困难,以及他们最终选择转化还是放弃使用。这时,事件跟踪系统、热图、会话记录、收入仪表板、转化漏斗和移动营销工具就派上用场了。

用于分析 APK 和已安装应用的工具

要开始了解 Android 应用的内部工作原理,可以使用一些专门的工具。 检查已安装的 APK 或已存储的 .apk 文件 在设备上。这些工具会显示从基本数据(名称、版本、大小)到权限、后台服务或数字签名等非常详细的信息。

该领域最受欢迎的应用程序之一是开源的APK分析器,它号称…… Google Play 上下载量最高的 APK 分析应用该工具可以生成一份非常完整的报告,其中包含已安装的应用程序和尚未安装的 .apk 文件,这对于在授予应用程序设备访问权限之前对其进行检查非常有用。

典型的报告包含以下信息: 应用名称、版本、 Android 的最低版本和目标版本安装和更新日期、证书和签名数据、使用的权​​限(及其说明)、活动、服务、广播接收器和内容提供程序。它还详细说明了硬件要求(必需和可选),并提供完整的 AndroidManifest.xml 文件,以及将其保存为人类可读格式的选项。

另一项关键功能是能够 提取已安装应用的 APK 文件 并将其保存到设备存储空间,同时导出图标。这对于审核、创建备份、在隔离环境中测试或在更新前查看特定版本都非常有用。

这类分析器通常还包括特定部分,用于…… 权限和汇总统计数据一方面,它允许您列出设备应用程序请求的所有权限,查看哪些应用程序正在请求哪些权限,查看权限描述和安全级别,并轻松找到权限需求最高的应用程序。另一方面,它提供已安装应用程序的统计信息:目标 Android 版本分布、签名类型、每个应用程序的平均活动数或权限数等。

Android Studio APK 分析器和 apkanalyzer 工具

对于使用 Android Studio 进行开发的开发者来说,谷歌自己的平台集成了一个 功能强大的 APK 分析器已集成到开发环境中可以通过以下方式打开此工具:将 APK 或 App Bundle 拖到编辑器窗口、双击构建文件夹中的 APK,或者从“构建”菜单下的“分析 APK”选项打开。它还有一个命令行版本,名为 apkanalyzer.

APK 分析器允许您以层级结构浏览文件内容,其内部结构类似于…… 包含整理好的文件夹和文件的 ZIP 文件每个实体(文件夹或文件)都会显示其原始文件大小、Google Play 提供的压缩下载大小估算值以及占总大小的百分比。这有助于快速识别哪些资源、库或 DEX 文件占用了最多的空间。

一个非常有趣的点是 APK 分析器的工作方式 重新构建最终的 AndroidManifest.xml 文件。在包含多个产品变体或拥有各自清单文件的库的项目中,所有这些文件在编译过程中都会合并成一个单独的文件。APK 文件仍然保持二进制格式,但解析器会将其转换回可读的 XML 格式,从而准确地显示系统在设备上看到的清单文件,并便于检测构建过程中引入的更改。

此宣言查看器还包含 lint 功能此功能会在出现错误和警告时发出警报,例如无法识别的 XML 架构。某些警报(例如,未注册架构的警报)可以忽略,您可以通过在 Android Studio 首选项中将该架构添加到忽略列表中来抑制这些警报。

APK 分析器的另一个基本组件是 DEX 文件查看器,它提供 类、包、已定义方法和引用方法的计数器除此之外,它还可以用来检查你是否接近每个 DEX 64K 个方法的限制,决定是否启用 multidex,或者是否需要删除依赖项。

类树显示了 DEX 中定义的方法和引用的方法(包括来自第三方库以及标准 Android 和 Java API 的方法)。该工具能够区分这两者,帮助用户了解方法预算中哪些部分来自自定义代码,哪些部分来自依赖项。

DEX视图还具有 用于显示或隐藏字段、方法和引用方法的过滤器展开类时,您可以选择仅查看本地定义或查看所有外部引用。以斜体显示的元素表示在该 DEX 文件中没有定义的引用;也就是说,这些方法或字段位于其他 DEX 文件或框架中。

对于使用 ProGuard 或 R8 进行代码混淆和缩减的项目,分析器允许加载 映射文件(mapping.txt)、seeds.txt 和 usage.txt 来自同一构建版本。导入后,将启用其他功能:反混淆名称以恢复原始类和方法,突出显示无法删除的节点(种子节点),以及显示在缩减过程中删除的节点。

文件上传对话框通常会自动指向常用路径(app/build/outputs/mappings/release/并搜索包含“mapping”、“usage”或“seeds”且以“.txt”结尾的确切名称或名称。有了这些信息,分析器可以将受保护的元素以粗体显示,并将最终去中心化交易所(DEX)中不再存在的元素用删除线标记。

DEX 查看器还包含一个具有强大功能的上下文菜单: 查看字节码(smali),搜索用法,并生成 ProGuard 保存规则。通过选择类、方法或字段,您可以打开一个对话框,其中包含 smali 表示形式的代码,启动搜索以查找该符号在整个 DEX 中的使用位置,或者自动生成保留规则以防止其在未来的构建中被简化。

除了代码之外,APK 分析器还允许您检查许多资源的最终版本,例如: 图像、布局或 resources.arsc 文件本身例如,您可以查看不同语言和配置的本地化字符串,检查给定变体中哪个资源覆盖了哪个资源,或者查看通常不会手动打开的二进制文件的内容。

最后,该工具还包含一个非常有用的版本审查功能: 比较两个 APK 或应用包加载当前版本并将其与先前发布的工件进行比较,可以查看每个实体的大小差异,非常适合了解版本之间重量增加的原因(新的图像资源、额外的库、代码更改等)。

利用移动分析了解用户体验

除了纯粹的技术分析之外,拥有以下工具也至关重要: 允许我们衡量用户在应用内的行为用户如何浏览屏幕、错误发生在哪里、哪些营销活动带来了高质量流量、哪些没有带来高质量流量等等,这些都是移动分析平台的核心信息。移动分析平台种类繁多,因此在选择平台之前,明确自身业务需求至关重要。

第一个筛选步骤是问问自己,除了获取使用情况和性能指标之外,你是否还需要这个工具。 促进团队间的合作 (产品、市场营销、用户体验、开发、支持)或者能够同时分析应用和移动网页数据的工具。另一个重要的标准是能否与您已使用的其他解决方案集成,例如客户关系管理系统 (CRM)、营销自动化工具或实验平台。

在 Android 生态系统中应用最广泛的解决方案中,Firebase 脱颖而出。 灵活的开发平台、托管和集成分析Firebase 允许您利用其数据库和身份验证基础架构创建 Android、iOS 和 Web 应用程序,同时还提供强大的分析和故障报告系统。

作为一款分析工具,Firebase 允许 收集有关使用情况、流量和互动情况的定量数据生成自动和自定义事件(多达数百个),监控应用程序在何处以及多久会发生故障,并以客观数据而不是假设来支持营销或产品决策。

另一个高度专注于产品和数字体验的平台是 Contentsquare,它超越了传统的指标,并提供 详细的客户旅程图、热图、会话回放和错误分析它的目标不仅是帮助理解应用程序中发生的事情,还要了解某些行为发生的原因:用户在哪里遇到困难,他们忽略了界面的哪些区域,或者哪些元素会引起挫败感。

诸如“旅程”之类的模块提供了全局视角 从用户进入到离开的完整旅程 对应用或移动网站进行分析,识别值得优化的关键路径。热图可视化点击最多或被忽略的区域;会话回放功能回顾单个会话,以检测模式(例如,对同一 CTA 的重复点击);产品分析功能分析功能采用率、转化率、用户获取量和感知付出等指标。

Contentsquare 还包含一个错误分析模块, 群体技术和功能错误的影响帮助确定优先解决哪些问题,以及影响量化功能将这些问题转化为转化率、收入或留存率的损失,这在向利益相关者证明变更的合理性时非常有用。

一个有趣的案例研究是,一个团队利用这种产品分析方法,证实了他们的怀疑: 移动设备上的签名界面令用户感到困惑。在比较网页和移动数据时,他们发现移动端的转化率明显较低,于是详细调查了移动端的体验,采用移动优先的方法重新设计了签名页面,并成功地显著提高了对不同设备的适应性。

高级用户细分和行为分析

为了更深入地了解用户行为,一些平台高度专注于…… 细分和队列创建Mixpanel 是最知名的例子之一,它既适用于产品也适用于营销,专注于可视化转化路径并分析不同用户群体的行为。

在 Mixpanel 中,用户可以根据以下方式分组到不同的群组中: 执行的操作或共享的属性例如,过去 30 天内开始使用分期付款计划的用户、尝试过特定功能的用户,或者至少购买过两次的客户。该系统的优势在于其自定义属性和细分逻辑,这使得创建复杂的用户细分成为可能。

自定义属性可以组合使用 事件、用户或组的属性 在新的、更通用的属性中。例如,将不同的社交媒体 UTM 来源(Facebook、Instagram、Twitter)归类到“社交”属性下,以分析它们的综合行为。细分逻辑允许您创建执行过特定操作组合的细分群体,例如同时购买了产品 A 和产品 B。

另一款出色的工具是 Countly,它非常注重隐私保护。Countly 是一款移动、网络和桌面分析解决方案,可以部署在公司自己的基础设施上,从而赋予用户以下权限: 对数据拥有绝对控制权这对于受监管行业或有严格合规要求的公司来说尤其重要。

Countly 提供增强的安全性、对精细数据的实时访问(丰富的用户画像、个人级别的互动指标)以及面向用户的模块 分析客户忠诚度并检测客户流失其“合规中心”允许您根据同意管理数据收集,以及导出或删除请求,从而符合数据保护法规。

集成分析功能的营销和订阅平台

当主要目标是移动营销时,有一些特定的解决方案可以结合使用。 衡量、细分和营销活动执行 在单一平台上实现所有功能。Localytics 就是一个很好的例子:它将应用程序分析与消息传递和个性化工具集成在一起,对于需要统一系统的营销团队来说极具吸引力。

Localytics 提供详细的活动报告供您查看 哪些措施对转化率、用户留存率、投资回报率、用户流失率和卸载率的影响最大?其预测分析功能有助于识别转化率高或放弃率高的用户,从而能够在合适的时机发送个性化消息。

该平台还包含智能定制模块,用于 根据个人资料、行为和历史记录创建细分群体 在此基础上,推出适应用户情境的营销活动和体验,从而显著提高信息的关联性。

在订阅应用领域,RevenueCat 已成为许多团队的关键工具。凭借相对易于集成的 SDK,它能够…… 管理移动订阅、收集定向分析数据,甚至测试付费墙 无需在每个项目中重新发明轮子。

RevenueCat 提供了一个专注于订阅指标的仪表盘:活跃试用用户数、试用转化率、活跃用户数、收入和月度经常性收入 (MRR)。它还提供 可自定义图表,带有筛选器和细分功能 例如,查看经常性收入如何按国家/地区或计划类型分配。

它的优势之一是对价格和付费墙进行A/B测试,这使得它能够 测试不同的价格、套餐和促销组合 并衡量每个变体对整个订阅流程的影响,从首次访问付费墙到长期留存。

为了实现对复杂应用程序的可观测性,AppDynamics 提供了一种全栈监控方法,涵盖了从微服务和无服务器函数到公共和私有 API,甚至包括移动应用程序本身的所有内容。其目标是 快速检测性能问题并找出根本原因无论是在代码中、依赖项中,还是在外部服务中。

AppDynamics 允许您将来自移动设备、浏览器和自定义用户的数据关联起来 比较不同版本应用程序的使用体验。 并找出用户体验方面的问题所在。它提供了现成的组件,用于构建详细的仪表盘,以及一个模拟用户流程和 API 调用的合成监控模块,可以在错误影响真实用户之前将其检测出来。

最后,AppsFlyer 专注于需要衡量、归因和保护其移动营销活动的营销团队。它提供从基础分析到高级功能的各种解决方案,尤其侧重于…… 广告欺诈检测 (例如,生成虚假点击的机器人)。

除了防欺诈功能外,AppsFlyer 还允许您定义 自定义应用内事件 将投资回报率 (ROI) 或用户生命周期价值等关键绩效指标 (KPI) 与特定用户行为关联起来。它还包括增量测试,用于估算如果不投放付费广告活动,可以实现多少转化,从而衡量广告投资的实际影响。

作为对所有这些定量分析的补充,值得考虑使用 AppFollow 等工具,这些工具专注于: 关注 App Store 和 Google Play 上的评分和评论借助情感分析,我们可以看到评论语气的演变,并比较不同时期的评论,从而获得用户如何看待应用程序的质量和体验的清晰线索。

使用 Inspeckage 进行安全审计和高级分析

当目标不在于市场营销或产品,而在于…… 审核安全性、分析恶意软件或审查应用程序的内部行为更具体的框架就派上了用场。Android 生态系统中最有趣的框架之一是 Inspeckage(Android Package Inspector),它以 Xposed 模块的形式运行。

Inspeckage 会在 Android 设备上搭建一个服务器,可通过电脑上的 adb 命令访问,并允许您查看设备。 应用运行时设备上发生的实时事件与其他分析环境(如 MobSF 或 AppMon)不同,它的最大优势在于,它允许您在不停止动态分析的情况下观察事件,并可以轻松地在特定方法上配置钩子。

该工具的代码已发布在 GitHub 上,也可以从 Play 商店或 Xposed 仓库获取 APK 文件。模块安装完成后,即可在 Xposed 中启用,并在主界面中看到。 服务器状态、网络接口、端口和adb命令 需要从本地计算机连接。

该应用会显示设备上的应用列表,用户可以选择仅显示用户应用,也可以选择同时显示系统应用。此选项位于侧边菜单中。 配置接口和端口,启用用户名和密码认证 并调整其他服务器参数。

选择并启动应用程序后,动态分析便开始。计算机浏览器会访问设备托管的网页,网页上会显示一个菜单,其中包含[含义不明 - 可能是“机会”或“功能”]按钮。 从内部存储下载 APK 或数据截取屏幕截图,应用不同的配置(例如禁用 FLAG_SECURE、重新启动应用程序、选择代理或选择要记录的事件类型),并实时刷新结果。

Inspeckage 还提供快捷方式,用于打开包含 LogCat 的标签页、检查应用程序或模块是否正在运行,以及隐藏或显示详细信息面板。应用程序信息面板显示 软件包名称、UID、GUID、备份状态 并提供类似 TreeView 的内部存储访问方式,用户只需单击一下即可从中下载文件。

报告主体部分分为不同的标签页:一个标签页包含…… 活动、权限、服务、内容提供商、广播接收器和共享库其中,有启动活动或咨询提供者的选项;另一个专门用于 SharedPreferences,可以以日志格式(以了解变量随时间的变化)和文件的当前状态查看。

一个非常强大的功能是记录所有 应用程序的加密活动本部分展示了所使用的算法、密钥和加密信息。“哈希”选项卡包含所有应用哈希函数的值以及每种情况下使用的函数类型。

“文件系统”部分列出了应用交互过的所有文件,这有助于检测应用是否创建可疑文件或从非官方来源下载应用。“IPC”选项卡显示使用 Intent 进行的进程间通信尝试。

“钩子”选项卡汇总了所有已配置自定义钩子的方法的活动。借助图形界面,创建自定义钩子相对简单。 指明拦截方法和钩子类型可以定义钩子来修改方法的输入参数或返回值,从而实现多种测试场景。

侧边菜单中提供了更多功能。 篡改设备指纹值或GPS坐标这有助于绕过模拟器检测机制或位置欺骗。此外,Inspeckage 还可以记录数据库查询、网络流量、WebView 以及内容提供商访问的其他资源。

凭借这套强大的功能,Inspeckage 被认为是 一款非常全面的工具,可缩短样品分析时间对于那些刚开始从事移动恶意软件分析或安卓应用安全审计的人来说,这尤其有用。

安全方法、威胁和测试实验室

当前形势下,数十亿活跃的安卓设备和应用程序处理着敏感数据(银行、健康、教育等),因此采取措施势在必行。 应用生命周期中的安全性这不仅仅是避免明显的错误,而是在处理支付时遵守 GDPR 等法规或 PCI DSS 等行业标准。

Android应用程序面临诸多威胁,其中许多威胁已在诸如以下项目中得到解决: OWASP 移动版前 10 名在众多关键问题中,我们可以重点指出平台使用不当(未能利用原生安全机制、权限管理不善、滥用暴露的API)、数据存储不安全(未加密的数据库、包含敏感信息的日志、保护不力的cookie),或者 不安全的通信 (使用过时的协议或未加密的流量)。

问题 身份验证和会话管理能力不足 (弱密码、永不过期的会话、保护不力的令牌)、加密不足导致物理攻击者或恶意软件可以访问数据,以及授权失败导致可以通过自动化攻击进行权限提升。

在开发方面,客户端代码质量至关重要: 不良做法、缺乏错误控制或安全功能实施不力 这些都可能导致缓冲区溢出和其他安全漏洞。此外,还存在代码被篡改的风险(恶意二进制补丁、资源被更改等)。 冒充合法应用程序的虚假应用程序)、对 APK 进行逆向工程,以及存在在生产环境中未禁用的“隐藏”或调试功能。

为了应对这些威胁,OWASP移动应用安全(MAS)项目提出了一种解决方案: 安全要求的方法论和检查清单 涵盖多个领域:安全架构和设计、隐私和数据存储、适当的加密、身份验证和会话管理、安全网络通信、平台交互、代码质量和构建配置以及客户端弹性机制。

对这些需求的评估通常结合静态分析和动态分析。在静态分析部分,会用到诸如以下方面的工件: 源代码、反编译代码、二进制文件及相关文件 无需运行应用程序,即可从元数据、函数调用和程序流程中推断潜在漏洞。Mara(一个分析框架,支持 APK 反汇编和反编译、去模糊化、字符串分析、权限提取等功能)、APK Analyzer 本身以及 JAADAS 等用于静态进程间通信 (IPC) 分析的解决方案等工具,在这个阶段尤为有用。

另一方面,在动态分析中,应用程序在受控环境中运行,并在不同条件下观察其行为。这就是诸如此类的工具发挥作用的地方。 Drozer 与 Dalvik 虚拟机、IPC 端点和操作系统进行交互。 用于查找漏洞;Burp Suite,它作为 Web 代理来捕获和操纵应用程序和服务器之间的流量;以及 Inspeckage,它旨在利用 Android API 上的钩子实时检测和观察应用程序。

还有一些混合框架,例如移动安全框架(MobSF),它结合了静态和动态分析,有助于…… 组织更全面的审计 仅需一个工具即可完成。对于想要练习的人来说,使用故意存在漏洞的应用程序进行学习是一种非常有效的方法。

这些练习应用包括 InsecureShop(一个存在近 20 个可利用漏洞的易受攻击的在线商店,其中大部分漏洞无需 root 权限)、AndroGoat(第一个用 Kotlin 开发的易受攻击的应用,存在数十个不同的漏洞)、InsecureBank V2(一个使用 Python 后端的银行应用,设计时存在多个弱点)以及 MAS 项目本身的 Crackmes,这些 Crackmes 被分为几个 CTF 类型的难度级别。

简而言之,Android 应用分析远不止查看权限或统计下载量那么简单。它涉及多种因素的结合。 APK检测工具、动态分析环境、安全方法论以及产品和市场分析平台当所有这些部分集成到应用程序生命周期中时,就能产生更安全、更高效的应用程序,这些应用程序更符合用户和企业的实际需求。

相关文章:
如何制作出色的 Android 应用程序?