安卓Frida逆向与协议分析
上QQ阅读APP看书,第一时间看更新

1.1 虚拟机环境准备

推荐使用虚拟机而不是真机,主要的原因有以下3点:

(1)虚拟机自带“时光机”功能——“快照”,这个特性让用户能够随时得到一个全新的真机,不会因为一个配置失误导致系统崩溃,最终只能因为直接重装系统而懊恼。图1-1所示为笔者在日常工作中开发FART脱壳机时创建的诸多虚拟机快照。

图1-1 带快照功能的虚拟机

(2)虚拟机具有良好的隔离特性,做实验的过程中不会“污染”真机,在分析恶意样本时,使用虚拟机能够很好地保护物理机的环境不受损坏,是测试全新功能的天然“沙盘”。

(3)虚拟机环境不受物理机系统限制,无论是Mac系统还是Windows系统,其安装的虚拟机系统都能够任意选择,包括Ubuntu、CentOS、Windows等。

在这里笔者推荐读者使用VMware出品的系列虚拟机软件。VMware具有良好的跨平台特性,可以随时将已经部署好的环境在不同平台上迁移使用。

对于虚拟机环境的选择,笔者更加推荐Ubuntu系列的Linux操作系统,无论是Android源码的编译,还是Frida、GDB、OLLVM等后续重要的环境,经过笔者测试,这个系列的系统总是能够表现出更少被系统环境“拖累”的特性。

在笔者的工作中,主要使用Kali Linux这个系统,Kali Linux是基于Debian的Linux发行版,与Ubuntu师出同门,是设计用于数字取证的操作系统。Kali Linux预装了许多渗透测试软件,包括Metasploit、BurpSuite、SQLMap、Nmap等Web安全相关软件,是一套开箱即用的专业渗透测试工具箱。

Kali Linux自带VMware镜像版本,下载相应版本后,解压并双击打开.vmx文件,即可通过VMware打开虚拟机的系统。

由于笔者这里选择的Kali Linux版本为2021.1,在这个版本中Kali的默认用户已经不再是root/toor,而是kali/kali。但是笔者建议首次使用Kali用户登入系统后,使用如下命令设置root用户密码以重新启用root用户,这样在后续工作中便不会因为用户权限不够而出现各种类型的报错。

# sudo passwd root

修改用户完毕后,重新使用root用户登入系统,其界面显示如图1-2所示。

图1-2 Kali Linux界面

另外,由于虚拟机本身的时间不是东八区的,在打开虚拟机后还需要打开Terminal软件并输入如下命令设置时区:

运行命令后,在弹出的窗口选择Asia→Shanghai后,就可以设置成标准上海时间,当然不同的读者可以根据自己所在的地区进行设置。

由于Kali Linux在2020.3版本后就开始支持中文字体的显示,而这里选择的是2021.1版本的Kali Linux虚拟机,因此无须再和2019版本的Kali Linux一样另外配置。但要注意的是,一定不要将系统切换为中文环境,中文环境的Linux总会出现各种各样的问题,并且在出现问题后解决起来十分麻烦。

还需要注意的是,Kali Linux在2020.3版本后默认的Shell不再是Bash而是Zsh,虽然Zsh的自动提示等扩展功能十分强大,但是由于后续Android系统的编译只支持Bash终端,因此还需要使用如下命令完成默认Shell的切换:

# chsh -s /bin/bash

在运行完上述命令并重启系统后,再次打开Terminal运行如下命令,会发现默认Shell已经回退到Bash,最终效果如图1-3所示。

图1-3 默认Shell