- Author:ZERO-A-ONE
- Date:2021-10-01
0x1 准备的文件和工具
1.1 环境需求
官方提供的环境需求如下:
Ubuntu/Macbook
Python: 2.7
APKTool: 2.4.1
Android emulator:X86, Android 7.1.1, Google APIs, 1920 * 1080
Android environment: adb, aapt
Java environment (jdk): jdk1.8.0_45
1.2 文件准备
我们大概需要准备一下几个东西,其中下载连接如下:
链接:https://pan.baidu.com/s/1CNqKKS1MMxdbypnGflKAZg
提取码:ub2y
我们应当检查我们是否拥有以下文件:
- apktool.jar
- apktool.sh
- genymotion-3.2.1-linux_x64.bin
- Genymotion-ARM-Translation_for_8.0.zip
- android-studio-2020.3.1.24-linux.tar.gz
- IC3.zip
- jadx-master.zip
- StoryDistill-main.zip
1.3 加速镜像配置
如果之前配置过Ubuntu镜像和Python镜像可以略过此步
Ubuntu镜像:
Ubuntu镜像这里推荐使用华为云开源镜像站提供的加速镜像,是我用过目前最快最稳定的Linux发行版加速镜像
- Ubuntu的仓库地址为:https://repo.huaweicloud.com/ubuntu/
- Ubuntu-CD的镜像地址为:https://repo.huaweicloud.com/ubuntu-cdimage/
- Ubuntu-Cloud的镜像地址为:https://repo.huaweicloud.com/ubuntu-cloud-images/
- Ubuntu-Ports的仓库地址为:https://repo.huaweicloud.com/ubuntu-ports/
- Ubuntu-Releases的镜像地址为:https://repo.huaweicloud.com/ubuntu-releases/
首先备份配置文件:
sudo cp -a /etc/apt/sources.list /etc/apt/sources.list.bak
2、修改sources.list文件,将http://archive.ubuntu.com和http://security.ubuntu.com替换成http://repo.huaweicloud.com,可以参考如下命令:
sudo sed -i "s@http://.*archive.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list
sudo sed -i "s@http://.*security.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list
3、执行apt-get update更新索引
Python镜像:
临时使用的话,运行以下命令使用华为开发云软件源安装软件包:
pip install --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple <some-package>
这里建议平时设为默认,Pip的配置文件为用户根目录下的:~/.pip/pip.conf
(Windows路径为:C:\Users\<UserName>\pip\pip.ini
), 您可以配置如下内容:
[global]
index-url = https://repo.huaweicloud.com/repository/pypi/simple
trusted-host = repo.huaweicloud.com
timeout = 120
0x2 安装Android Studio
2.1 安装Java OpenJDK
Android Studio需要将OpenJDK版本8或更高版本安装到您的系统。
我们将安装OpenJDK8。安装非常简单,首先更新包索引:
sudo apt update
通过键入以下命令来安装OpenJDK 8软件包:
sudo apt install openjdk-8-jdk
通过键入以下命令来验证安装,该命令将打印Java版本:
java -version
输出应如下所示:
openjdk version "1.8.0_191" OpenJDK Runtime Environment (build 1.8.0_191-8u191-b12-2ubuntu0.18.04.1-b12) OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
2.2 安装Android Studio
在撰写本文时,Android Studio的最新稳定版本为3.3.1.0版。 最简单的方法是通过使用snappy打包系统在Ubuntu 18.04上安装Android Studio。
要下载并安装Android Studio snap软件包,请使用Ctrl+Alt+T
键盘快捷键打开您的终端,然后键入:
sudo apt install snap -y
sudo snap install android-studio --classic
安装完成后,您将看到以下输出:
android-studio 2020.3.1.22 from Snapcrafters installed
而已。 Android Studio已安装在您的Ubuntu桌面上。
2.3 启动Android Studio
在启动前将当前用户添加到root用户组上
通过命令 sudo adduser $USER root
将当前用户加入到root组
您可以通过在终端中键入android-studio
或单击Android Studio图标(“ Activities -> Android Studio
)来启动Activities -> Android Studio
2.4 解决/dev/kvm device permission denied问题
我用的是Ubuntu系统,首先需要安装qemu-kvm:
sudo apt install qemu-kvm
将当前用户添加到kvm用户组:
sudo adduser $USER kvm
检查/dev/kvm
所有者:
ls -al /dev/kvm
一般结果就是所有者是root以及kvm这个组
添加完了之后检查一下kvm组里有没有你的用户名:
grep kvm /etc/group
一般结果就是这样:
kvm:x:数字:用户名
之后重启系统生效,如果不想重启可以运行以下命令(仍然得注销后再登录才生效):
udevadm control --reload-rules && udevadm trigger
ps:反正我选择重启
0x3 安装Genymotion
需要注意2点:
Genymotion
依赖VirtualBox
,必须安装VirtualBox
才能安装Genymotion
Genymotion
必须注册登录后才能正常使用,否则即使安装完成也无法使用,且国内访问Genymotion
的网站和程序都有可能在网络上受限,
也就是说大陆地区网络直接访问官网或者在程序中登录,可能很慢可能无法访问,所以慎用
3.1 安装VirtualBox
安装 Genymotion
前先确认有没有装 VirtualBox
,这里 ubuntu
用户推荐直接用命令安装
# update 可选运行或不运行
sudo apt update
sudo apt install virtualbox
3.2 安装Genymotion
# 先自行cd到文件目录 然后给文件赋权
sudo chmod u+x ./genymotion-3.2.1-linux_x64.bin
# 安装到指定路径 也可以写绝对路径
sudo ./genymotion-3.2.1-linux_x64.bin -d ~/opt
# 之后脚本会二次确认路径,如果正确输入y 回车 即可
Installing to folder [/opt/genymotion]. Are you sure [y/n] ? y
3.3 Genymotion的ADB设置
因为Genymotion模拟器default的ADB是它自己实现的Genymotion ADB,然后StoryDroid脚本使用的adb是AndroidSDK里面自带的ADB,所以要把Genymotion的ADB修改为本机AndroidSDK里面的ADB
例如我本机SDK的位置如下:
/usr/lib/android-sdk/
0x4 安装apktool
官网如下:
https://ibotpeaches.github.io/Apktool/install/
首先需要下载一个sh脚本文件:
https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/windows/apktool.bat
将其改名为apktool,因为windows的Unix的换行符定义不一致,所以需要进行修改,运行如下命令:
sudo sed -i -e 's/\r$//' apktool
然后下载apktool.jar
https://bitbucket.org/iBotPeaches/apktool/downloads/
分别进入下载的2个文件所在的目录,将其复制到/usr/local/bin/下:
sudo cp apktool /usr/local/bin
sudo cp apktool.jar /usr/local/bin
将两个文件修改为可执行权限,进入/usr/local/bin
目录下:
cd /usr/local/bin
sudo chmod 755 apktool apktool.jar
打开终端输入apktool -version
,显示对应的版本信息,则说明安装成功
syc@ubuntu:/usr/local/bin$ apktool -version
2.6.0
安装aapt和adb
sudo apt install adb aapt -y
0x5 安装StoryDistiller
将IC3
和jadx-master
解压到用户目录下
syc@ubuntu:~$ ls -l
total 665400
......
drwxrwxr-x 4 syc syc 4096 Jun 22 2019 IC3
-rw-rw-r-- 1 syc syc 559229407 Jul 31 21:49 IC3.zip
drwxrwxr-x 10 syc syc 4096 Jul 2 2018 jadx-master
-rw-rw-r-- 1 syc syc 122068361 Jul 31 21:51 jadx-master.zip
......
解压StoryDistiller-main
,将获得的code
文件夹复制粘贴进入main-flolder
文件夹中,文件目录如图所示:
syc@ubuntu:~/Downloads/StoryDistill/StoryDistiller-main/main-folder$ ls -all
total 80
drwxrwxr-x 16 syc syc 4096 Sep 30 21:07 .
drwxrwxr-x 4 syc syc 4096 Jun 28 03:33 ..
drwxrwxr-x 2 syc syc 4096 Jun 28 03:33 apks
drwxrwxr-x 2 syc syc 4096 Jun 28 03:33 atgs
drwxrwxr-x 3 syc syc 4096 Jun 28 03:33 code
drwxrwxr-x 4 syc syc 4096 Jun 28 03:33 config
-rw-rw-r-- 1 syc syc 14340 Jun 28 03:33 .DS_Store
drwxrwxr-x 2 syc syc 4096 Jun 28 03:33 ic3_atgs
drwxrwxr-x 3 syc syc 4096 Jun 28 03:33 java_code
drwxrwxr-x 3 syc syc 4096 Jun 28 03:33 libs
drwxrwxr-x 2 syc syc 4096 Jun 28 03:33 manifest
drwxrwxr-x 2 syc syc 4096 Jun 28 03:33 outputs
drwxrwxr-x 2 syc syc 4096 Jun 28 03:33 parsed_cgs
drwxrwxr-x 2 syc syc 4096 Jun 28 03:33 parsed_ic3
drwxrwxr-x 2 syc syc 4096 Jun 28 03:33 parsed_manifest
drwxrwxr-x 2 syc syc 4096 Jun 28 03:33 soot_cgs
drwxrwxr-x 2 syc syc 4096 Jun 28 03:33 storydroid_atgs
将待测试的APK文件放入main-folder
中
进入code
文件夹中,修改run_storydistiller.py
中的路径配置信息,修改为,具体情况根据自己的机器情况来设定:
'''
Ubuntu and Macbook
'''
java_home_path = '/usr/lib/jvm/jdk1.8.0_45' # Ubuntu
#java_home_path = '/Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home' # Macbook
sdk_platform_path = '/home/syc/Downloads/StoryDistill/StoryDistiller-main/main-folder/config/libs/android-platforms/'
#sdk_platform_path = '/Users/chensen/Tools/storydistiller/config/libs/android-platforms/'
lib_home_path = '/home/syc/Downloads/StoryDistill/StoryDistiller-main/main-folder/config/libs/'
#lib_home_path = '/Users/chensen/Tools/storydistiller/config/libs/'
callbacks_path = '/home/syc/Downloads/StoryDistill/StoryDistiller-main/main-folder/config/AndroidCallbacks.txt'
#callbacks_path = '/Users/chensen/Tools/storydistiller/config/AndroidCallbacks.txt'
jadx_path = '/home/syc/jadx-master/'
ic3_path = '/home/syc/IC3/'
#jadx_path = '/Users/chensen/Tools/storydroid_v1/jadx-master/'
#ic3_path = '/Users/chensen/Tools/storydroid_v1/IC3/'
然后在这个路径下进行运行:
/StoryDistiller-main/main-folder/code
运行前需要启动Genymotion的虚拟机,推荐使用Google Nexus 5X进行测试
首先需要安装treelib
,python-scrapy
,python-opencv
pip install treelib
sudo apt install python-scrapy python-opencv -y
用一下命令进行运行:
sudo python2 run_storydistiller.py /home/syc/Downloads/StoryDistill/StoryDistiller-main/main-folder/
0x6 查看结果
具体的程序输出结果在outputs
文件夹里面,每个APP具有对应的文件夹名字,其中还有一个output
文件夹里面存在一个index.html
文件,点击即可获得可视化的网页展示