臃肿应用变轻量网页!Travelbound应用逆向工程改造记
Travelbound应用:本应是网页却成‘负担’
今年夏天,孩子们所在表演艺术学校将在迪士尼乐园演出,然而被告知需安装 [“Travelbound” 应用程序] 才能获取行程安排等信息,这冲淡了兴奋之情。这个应用程序实际上就是通过网络传递的文本、图像和 PDF 文件链接,却要求用户安装。它似乎只有两件网页可能做不到的事,且都是反功能:一是将与谷歌账户相关的跟踪数据报告给开发者;二是展示由同一家旅行社组织的其他旅行的广告。与之相比,网页具有复制粘贴、打印、保存、收藏、搜索等诸多优势,还几乎可以在任何设备上使用,且潜在地更具可访问性。
拦截应用程序流量:掌握数据秘密
为了‘修复’这个应用程序,作者重新复习网络流量逆向工程安卓应用程序的最佳方法,并采取了一系列步骤。首先在 Android Studio 的虚拟设备管理器中创建新的虚拟设备,测试 `adb shell` 是否可用,并用 [rootAVD] 对其进行 root 操作;接着进行冷启动,运行 [Magisk] 并调整设置,以便自动授予任何请求 `su` 权限的应用程序访问权限。之后运行 [HTTP Toolkit] 拦截 AVD 流量,它安装了一个(假的)VPN 提供商,将手机的流量路由通过代理。再从应用商店安装 Travelbound 应用程序,并配置 HTTP Toolkit 仅代理该应用程序。经过测试,发现该应用程序将用户名和密码拼接起来,在特定形式的 URL 中使用,会返回代表应用程序‘展示’所有内容的 JSON 数据,如包含行程各段信息、‘灵感’(即广告)、交叉引用文件等数组。进一步测试还发现,S3 图像 URL 有效期相对较短,需定期重新获取 JSON 数据。
让它变得更好:打造轻量网页替代应用
掌握所需信息后,作者编写了一个 Ruby 脚本,按 Cron 计划运行以获取最新 JSON 数据,并构建 HTML 页面。作者选择跳过‘灵感’,只列出行程中的各项内容和未被引用的文件。然后托管该页面并设置密码保护,使用旅行团最初获得的相同密码。还在 `
相关讨论与反馈
文章发布后收到了不少反馈,有 167 个赞、6 个反对、4 个疑惑和 14 个‘勿扰’表情。还有 121 条评论,如 Jared White 表示几乎不用移动应用程序,认为‘有个应用程序能解决这个问题’在移动设备上已过时;Miakoda 听到‘下载应用程序’就会回怼;Haelwenn 认为应用程序做成这样可能是为了跟踪和广告;〽️ɪɢᴜᴇʟ 指出 Discord 也有类似将论坛讨论从网页转移到应用程序的情况等。
