前段时间想尝试用eCapture对某个安卓应用抓包。为了搭建一个符合需求的安卓测试环境,我探索了几种方案,在这里简单记录一下。
需求1:eCapture需要内核支持,并且对安卓内核版本有要求。我的测试手机满足不了,更新手机的内核版本也比较麻烦。考虑到我只是短暂研究学习,买一台新的能root、内核版本较新的手机不太划算。于是想尝试用模拟器或者容器搭建安卓环境。常规的模拟器不满足eCapture的内核条件,我重点关注了两个方案:cuttlefish和redroid。这两个方案可以在Linux系统中搭建一个符合需求的Android环境。
需求2:我想分析的应用只有arm版本,安卓环境需要支持arm指令架构。我的电脑是x86_64的指令架构,想要支持arm架构、转译指令就有点头疼了。
一开始我尝试cuttlefish,在x86_64架构的Linux环境中搭建环境。如果是搭建x86_64的Android环境,我想分析的安卓应用打不开;想搭建arm64的Android环境,搭建失败,cuttlefish启动了半小时还没成功。
然后我尝试了redroid,在x86_64架构的Linux环境中搭建Android环境(时间有点久,忘记Android是哪个指令架构的了),搭建成功,应用也能正常打开。但是arm64的应用运行依靠指令转译,而redroid使用的内核是x86_64架构,我不清楚eCapture抓包时能不能正常工作,会不会遇到奇怪的bug。
最后我想到了云手机的方案。常规的云手机不能满足需求,那我租一个arm架构的Linux服务器、再搭建redroid环境,应该就没问题了。我选择了AWS的EC2服务器,按时按量计费,研究完了删除服务器就行了。开销不大。而且AWS完成新手教程后,最多可以获得200美元的使用额度(我因为奇怪的原因有个教程完成不了,只领到了150美元),够用了。