Android软件安全权威指南-第一、二章

读书笔记

Posted by JovenHe on May 31, 2019

第一章 搭建Android程序分析环境

Android环境搭建

首先介绍了Windows、macOS、Ubuntu三种系统下的环境搭建,环境主要是JDK、Android Studio、SDK、NDK的安装,对于我本身就是做Android开发的,所以之前都配置过。

而且在macOS系统下,环境搭建异常的简单,JDK、Android Studio的安装很简单,科学上网后,简单配置Android Studio就能使用。

常用逆向分析工具

介绍了安全研究人员必备的工具:

ApkTool

可以实现apk的反编译和回编译,我在使用中主要用于反编译后查看资源相关文件,也可以通过修改smali文件中的代码然后回编译成apk

smali/baksmali

Dex 文件的反编译与回编译工具,提供了smali语法格式,使dex文件的修改可以基于smali的汇编指令完成。ApkTool底层就是使用它提供的dexlib库来生成smali反汇编文件的。

dex2jar

使用最多的将dex文件转换成jar包的工具。对使用dex2jar转换的jar包,可以通过jd-gui等工具查看Java代码

010 Editor

跨平台的二进制编辑器,可以在官方网站上下载丰富的二进制文件格式模版对二进制文件进行查看和编辑。我曾经使用该工具修改so文件中的汇编码。

搭建源码分析环境

在macOS环境下最好的方式是通过Docker,因为直接编译的话,不同版本的Android系统源码只能在特定版本的macOS SDK中完成编译,否则就会失败。

下载Docker官方包

安装Docker ToolBox,安装后会有三个app,Docker[Docker容器软件,使用Docker前必须启动]、Docker Quickstart Terminal[命令行使用Docker的工具]、Kitematic (Bite)[用于启动Docker Hub页面,可以下载来自Docker官方或第三方的Docker镜像]

下载Android源码

打开Kitematic后,在主页面搜索aosp,然后根据版本需要下载

编译源码

下载完成后修改源码位置及ccache的缓存位置,然后重启镜像,打开Shell环境,执行make -j4命令,开始进行编译

第二章 如何分析Android程序

新建Android项目

首先介绍了如何是android Studio是如何新建一个项目,然后在MainActivity中写验证代码。

编译apk文件

我一般是通过使用android Studio的工具栏中的build按钮来打包,Sudio右侧的gradle中有编译和安装指令,在gradle中配置多种渠道包的情况下还是很好用的,但在书中还有通过命令行的方法来编译,我觉得还是很有用的,特此记录一下:

Android studio打开项目,打开Terminal窗口

ls查看文件夹和文件

./gradlew tasks查看可执行任务

./gradlew assembleDebug 打Debug 包

./gradlew assembleRelease打Release包

./gradlew installDebug安装Debug 包

./gradlew installRelease安装Release包

破解Android程序

这一部分的内容和我之前写的文章apk组成与Smali代码大致内容还是差不多的,但其在修改Smali代码后回编译成Apk这一部分时,直接普通文本编辑器修改,并ApkTool回编译,回编译中出错较多,需要仔细分析,才能知道是哪里出的问题,我是通过Android Killer这一工具来实现的,减少了这些未知错误出现的概率。

安装apk

adb命令:

adb uninstall 完整包名 ->卸载已有app

adb install apk完整路径