购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1 r0env环境介绍与集成

r0env是笔者专门为初学者打造的一个Android逆向工程环境,使用该环境可以免去枯燥的、充满重复劳动的、高度依赖科学上网的环境准备过程,让初学者的逆向工程学习变得无比顺畅、事半功倍。同时,拥有一个统一的环境,可以降低沟通成本。在本书中,我们统一使用该环境。

1.1.1 r0env各组件介绍

对于PC环境,笔者基于Kali Linux制作了相关虚拟机镜像,并集成了开发环境及常用的逆向工具。

使用虚拟机而不是真机,有以下两个主要原因。其一,虚拟机自带“时光机”功能,可以“时光倒流”。这样在配置失误导致环境崩溃时,可以极为方便地通过历史快照来恢复环境。图1—1为笔者在日常工作中创建的一些虚拟机快照。

其二,虚拟机在工作环境中具有良好的隔离特性,在实验的过程中不会“污染”真机,是测试全新功能的天然“沙盘”。如VMware具有良好的跨平台特性,完美支持Windows、macOS和Linux三大主流操作系统,可以随时将学习和工作环境整体打包,在各种环境中进行部署和迁移。现在笔者就是在将环境打包分享给大家。

图1—1 虚拟机快照

而Kali Linux是基于Debian的Linux发行版,与Ubuntu师出同门,用于数字取证操作系统。Kali Linux预装了许多渗透测试软件,包括Metasploit、Burp Suite、sqlmap、Nmap以及Cobalt Strike等,是一套开箱即用的专业渗透测试工具箱。

Kali Linux自带VMware镜像版本,下载并解压后双击打开.vmx文件即可开机。后续不管是Frida工作开发环境配置、Android Studio安装、NDK开发、抓包环境配置、自制路由器抓包、GDB和LLDB调试,还是更加复杂的OLLVM开发、ART虚拟机定制开发、AOSP源码阅读或编译等,都将在Kali Linux中完成。如果使用Windows、macOS系统,则将在莫名Bug的定位和消除上耗费大量的时间,而时间成本是很高的。

笔者分享的镜像已经做了以下的环境配置。

1.用户选择

新款Kali Linux虚拟机的默认用户是Kali。对于专业的Android逆向人员来说,用root用户可以更加心无旁骛地专注于工作本身。

笔者已经重新将root用户开启,大家在开机后在用户处填写root,在密码处填写toor即可进入系统。

同时原装Kali Linux开机时的时区是不对的,会影响抓包。笔者已经将时区调整到东八区,即在联网时当前时区会与授时服务器自动同步,后续免维护。

2.终端选择

Kali Linux最新版本的默认Shell是Zsh,Zsh虽然方便,但它并不兼容且不能运行诸多编译系统。因此,笔者已经将Shell回退到Bash。进入虚拟机后,使用<Ctrl+Shift+T>组合键即可打开Bash。

3.文件传输

虽然Kali Linux支持直接将文件拖曳进虚拟机,但是VMware tools默认会在/root/.cache/vmware/drag_and_drop目录下缓存文件,久而久之,缓存文件会非常占空间。如果习惯使用拖曳的方式传文件,一定要记得多清理这个目录。笔者建议使用SSH服务来传输文件。

开启SSH服务后,可以在虚拟机外使用FileZilla将文件,比如动辄数十GB的AOSP源码文件传进虚拟机内,而不会产生任何缓存,轻松高效。

使用如下命令开启SSH服务(已默认开启):

/etc/init.d/ssh start

4.科学工具

推荐将科学上网的工具运行在宿主机上,打开SOCKS5服务并允许来自局域网的连接。

对于proxychains,需编辑/etc/proxychains4.conf文件,在文件末尾按照如下格式添加宿主机的IP地址和科学端口即可:

socks5 192.168.179.11080

而对于redsocks,则需编辑/etc/redsocks.conf文件,将ip和port修改为宿主机的IP地址和科学上网的端口。也要编辑iptables.sh文件,将不重定向的地址添加为宿主机的IP地址。

ip=192.168.179.1;

port=1080;

proxychains只对单条命令生效。redsocks+iptables对全局有效,重启后失效。

5.Frida开发环境

对于Frida的版本管理,笔者已经安装好pyenv,在任意目录下,如果切换Python环境,则切换了Frida的版本。

同时笔者也配置好了Frida的开发环境,如支持在任意目录下编写JavaScript都有Frida的代码提示,按住Ctrl后鼠标单击API即可阅读相应源码,以及按回车键补全(代码块)等方便的功能。

6.开发、逆向工具等集成

笔者也集成了常用的分析工具,运行相关命令即可打开。r0env中已经集成的工具如表1—1所示。

表1—1 r0env中已经集成的工具

至于相关工具的介绍与使用,笔者将会在实战操作中慢慢讲解。

1.1.2 r0env下载及安装

r0env的虚拟机的下载地址如下,读者可任选其一进行下载。

百度网盘:https://pan.baidu.com/s/1anvG0Ol_qICt8u7q5_eQJw;提取码:3x2a

阿里云盘:http://49.235.84.125:8080/r0env

登录时用户名:root;密码:toor

下载完所有文件后将其放在同一目录中,先查看解压指南.txt,验证文件的MD5,保证文件在传输过程中没有损坏。

在Windows系统下打开cmd命令窗口,验证命令示例如下:

E:\VMware\Virtual Machines>CertUtil-hashfile r0envKaliLinux2021.7z.001 MD5

MD5的r0envKaliLinux2021.7z.001哈希:

e149ad96605844dd307b2e2699df4c3f

CertUtil:-hashfile命令成功完成。

之后双击r0envKaliLinux2021.7z.001文件,使用压缩工具进行解压。

解压完成后导入VMware:在VMware菜单中依次选择“文件”→“打开”(快捷键<Ctrl+O>),打开文件夹中的vmx文件即可,如图1—2所示。

图1—2 VMware的选择虚拟机镜像界面

之后选择“开启虚拟机”来启动Kali虚拟机。

第一次启动时,VMware会弹出如图1—3所示的对话框,这里有移动和复制两个选项。如果没有特殊需要,推荐选择“我已复制该虚拟机(P)”。

正常开机后,在用户名处输入root,在密码处输入toor,即可进入r0env Kali。

至此,初始开发环境配置完成。

图1—3 VMware对于配置网络功能的提示 ubiKEpGKtdiXdnKzoF/XGKDtEYyVpRr/qpukRXLmwoVsfXvyOwpS4yC0YWaiU2/Q

点击中间区域
呼出菜单
上一章
目录
下一章
×