使用虚拟机打造调试环境
推荐使用虚拟机而不是真机,其原因有:
-
虚拟机可以创建快照
-
虚拟机有良好的跨平台特性,可以随时将完整的学习和工作环境整体打包,在各种环境中进行部署和迁移。以 vmware 162.5 为例:
Windows与Linux都是支持的,不过 mac 的话,是另一个产品系列:
总的来说,三大平台都是支持的,不过一般有 Windows 就足够了,一些其他的逆向工具,比如 IDA等都是 windows下好搞一些。
而且,最重要的是,vmware几乎是免费的,因为它有免费的批量激活密钥,都不用破解,下图是我的激活效果:
虚拟机里面安装系统
我们需要编译 aosp,肯定要使用 ubuntu 系统,而且最好是 Ubuntu 16.04 LTS。Ubuntu 也是一个使用比较广泛的发行版了,遇到问题也比较容易搜得到。
还有一个选择就是 Kali Linux,它自带 Vmware
镜像版本。而且与Ubuntu
师出同门,所以用它来编译 aosp 也是不错的。Kali Linux
预装了许多渗透测试软件,包括Metasploit
、BurpSuite
、sqlmap
、nmap
、以及Cobalt Strike
等,是一整套开箱即用的专业渗透测试工具箱。
Kali Linux
最新版本的默认Shell
是Zsh
,Zsh
虽然方便,但其并不兼容且不能运行诸多编译系统,我们应该回退到bash
。
kali 整合打包地址:链接:https://pan.quark.cn/s/2347210fc28a
实用小工具
-
htop,可以动态查看当前活跃的,占用高的进程
-
jnettop,流量查看工具,可以查看下载与安装进度。
PyEnv 切换 Frida 版本
Frida 版本非常多,升级很快,很多两三年前的代码已经无法跑在最新的Frida上,我们需要一种工具,可以在电脑上安装多个python环境,顺便在每个python 里都安装一个Frida,这样同时可以装上较老版本的Frida和最新版的Frida,自由切换。
github上就有这样的工具:pyenv
通过命令行的切换,可以随时切换 python 版本,以及 python 对应的 pip 与 frida 版本。
pyenv 的安装看项目文档即可。
刷机
在手机硬件的考虑上,首先优选谷歌的“亲儿子”:Nexus
和Pixel
系列,我有一台 Pixel,可以考虑刷 android 8.1系统。
具体可以看这篇文章,没啥技术含量,照着搞就行了:https://github.com/r0ysue/AndroidSecurityStudy/blob/master/FRIDA/A01/README.md
Frida开发环境
目前最新正确的Frida环境搭建方法:
-
git clonehttps://github.com/oleavr/frida-agent-example.git
-
cd frida-agent-example/
-
npm install (不要apt install npm)
-
使用VSCode等IDE打开此工程,在agent下编写typescript,会有智能提示。
-
npm run watch会监控代码修改自动编译生成js文件
-
frida -U -f com.example.android --no-pause -I _agent.js
安装 frida-server
想要使用基于特定frida版本的objection,只需先安装好特定版本的frida和frida- tools(github的release 里面有对应好的,不过似乎从 16.x 版本后开始 frida-tools 在另外一个仓库了???),再去objection的release里找那个日期之后一点点的版本。
比如以frida 12.8.0版本举例:
pip install frida==12.8.0
pip install frida-tools==5.3.0
pip install objection==1.8.4
按照这个顺序,在装objection的时候,就会直接Requirement already satisfied, 不会再去下载新的frida来安装了。
如果先安装了 objection,objection在安装时会自动的安装 frida 与 frida-tools。
Frida-server自定义名称、端口与链接
frida-server -l 0.0.0.0:6666
// 地址可以使用 wifi adb 查看
frida-ps -H 192.168.1.102:6666
frida -H 192.168.1.102:6666 -f com.android.settings -l script.js
objection -N -h 192.168.1.102 -p 6666 -g com.android.settings explore
通过这种方式,不需要使用 adb,省略了一些步骤。
参考文档
-
https://www.bilibili.com/video/BV1qQ4y1R7wW/?vd_source=daa7af818c9b26306059ce9999d79697
-
https://github.com/r0ysue/AndroidSecurityStudy