在配置好基础的系统环境之后,为了进行后面的逆向开发工作,还需要安装一些基础的开发工具。
首先,作为Android逆向环境开发人员,Android Studio是一款必不可少的开发工具。在Eclipse退出安卓开发历史舞台后,作为Google官方的Android应用开发IDE,笔者首先推荐这款软件。在从官网下载和解压对应Linux版本的Android Studio后,切换到android-studio/bin目录下,通过运行当前目录下的studio.sh即可运行Android Studio。
首次打开Android Studio会进行Android SDK工具的下载,这些工具是后续开发所必需的,因此默认一直单击Next按钮即可。在这个过程中,可以关注一下SDK的保存目录,默认SDK目录为/root/Android/Sdk/,这个目录下存在一些在后续逆向过程中需要的工具,比如ADB这个用于与移动设备进行通信的工具。这里将ADB工具所在目录/root/Android/Sdk/platform-tools/加入环境变量,便于在任意目录下执行adb命令。
在将ADB工具加入环境变量后,为了使得设置生效,需要重新打开Terminal,再次执行adb命令,结果如下:
回到正题,在下载插件完毕后,Android Studio的界面如图1-4所示。
图1-4 Android Studio的界面
请注意,在第一次创建Project时,Android Studio需要进行一段可能费时很长的同步环节,用于下载Gradle构建工具以及其他相关依赖,这个时候只需要去喝杯茶,静静等待即可。
在Android Studio配置好后,笔者还会推荐一些在日常工作中使用的小工具,这些工具也许不会直接对工作有帮助,但是一旦掌握了这些工具,用户的日常工作会变得更加得心应手。
首先,推荐htop这款加强版top工具。与top工具相同,htop可以用于动态查看当前活跃的、占用高的进程,但是比top工具的显示效果更加人性化,具体效果如图1-5所示。这个工具在编译安卓源码时非常好用,当我们执行make命令系统开始编译Android源码之后,通过htop工具可以发现内存Mem以肉眼可见的速度跑到底之后,开始侵占Swp的进度条。另外,htop中的Uptime后显示的是开机时间;Load average是指平均负载,比如虚拟机被分配了四核CPU,那么平均负载跑到4的时候说明系统已经满载。图1-5中左侧1、2、3、4的进度条表示相应CPU当前的负载状态,其余htop操作指南读者可以自行去网上搜索。
图1-5 htop界面
另外,笔者还要推荐一款实时查看系统网络负载的工具jnettop,在安装和使用软件(比如Frida)的过程中,可以利用jnettop工具实时查看相应的下载速度和对应的IP,甚至读者在AOSP编译时打开jnettop,会观察到编译过程中出现连接国外的服务器下载依赖包等行为。除此之外,值得一提的是,在抓包时打开这个工具往往会有奇效,比如能够实时查看对方的IP等。jnettop界面显示如图1-6所示,可以看到主机连接的远程IP、端口、速率以及协议等内容。
图1-6 jnettop界面
在过去笔者经常会被问到如图1-7所示因为窗口大小限制导致jnettop工具无法运行的问题(Too small terminal (detected size: 79×34)),真让人哭笑不得,笔者在这里统一回答这个问题。实际上jnettop工具本身在运行时对终端大小是有所要求的,否则jnettop工具就无法打开,minimum required size: 80×20这个提示表明终端长和宽至少为80×20。
图1-7 jnettop因终端窗口过小导致无法打开