【Android安全- 在 ROCK 5B 开发板上使用 Docker 运行 Android】此文章归类为:Android安全。
在 ROCK 5B 开发板上使用 Docker 运行 Android
年初时购入了一个 ROCK 5B,折腾 Android 逆向分析,有了一些成果后,自己 DIY 了更好的逆向分析平台(ROCK 5B 已经卖掉了)。
整理文档时,翻出来当时的记录文档,论坛里也没有看到有相关的帖子,现在发出来希望对大家有帮助。
环境:官方 Ubuntu 20.04 镜像
在 ROCK 5B 构建适用 Android 的 Linux 内核
懒得弄得话,可以直接用我以前构建的
参照
完成:
-
1
2
|
$
sudo
apt-get update
$
sudo
apt-get
install
-y git device-tree-compiler libncurses5 libncurses5-dev build-essential libssl-dev
mtools
bc
python dosfstools bison flex
rsync
u-boot-tools
make
|
-
1
2
3
4
|
$
mkdir
~
/rk3588-sdk
&&
cd
~
/rk3588-sdk
$ git clone -b linux-5.10-gen-rkr3.4 https:
//github
.com
/radxa/kernel
.git
$ git clone -b master https:
//github
.com
/radxa/rkbin
.git
$ git clone -b debian https:
//github
.com
/radxa/build
.git
|
检出 rock5b 的内核配置
1
2
3
|
cd
~
/rk3588-sdk
cd
kernel
make
rockchip_linux_defconfig
|
进入配置 GUI
检查以下配置选项,没有勾选的就勾上。配置 menuconfig 中,按 '/' 键可以搜索。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
CONFIG_DMABUF_HEAPS=y
CONFIG_DMABUF_HEAPS_SYSTEM=y
CONFIG_STAGING=y
CONFIG_ASHMEM=y
CONFIG_ANDROID=y
CONFIG_ANDROID_BINDER_IPC=y
CONFIG_ANDROID_BINDERFS=y
CONFIG_ANDROID_BINDER_DEVICES=
"binder,hwbinder,vndbinder"
CONFIG_PSI=y
CONFIG_FUSE_FS=y
CONFIG_ROCKCHIP_EFUSE=y
CONFIG_COMPAT=y
CONFIG_COMPAT_32BIT_TIME=y
CONFIG_ARM64_4K_PAGES=y
|
懒得搞的话,可以打开 kernel 目录中的 .config
文件,将上面的配置粘贴进去。
保存配置退出配置界面后,设置为默认编译配置。
1
2
|
make
savedefconfig
cp
defconfig arch
/arm64/configs/rockchip_linux_defconfig
|
开始编译
1
2
|
cd
~
/rk3588-sdk
.
/build/pack-kernel
.sh -d rockchip_linux_defconfig -r 99
|
构建完成后(rock5b 上约 20分钟),在 目录 ~/rk3588-sdk/out/packages
中会存在 内核 deb 包。
如果在构建过程自动重启,一般是电源功率过低,换个 45W 以上电源就好。
安装内核
安装内核 deb 包
安装在上一步中生成的 deb 包
1
2
|
sudo
dpkg -i out
/packages/linux-headers-5
.10.110-99-rockchip-g9fd61a9a9912_5.10.110-99-rockchip_arm64.deb
sudo
dpkg -i out
/packages/linux-image-5
.10.110-99-rockchip-g9fd61a9a9912_5.10.110-99-rockchip_arm64.deb
|
激活新内核
编辑文件 /boot/extlinux/extlinux.conf
设置默认启动内核
1
2
3
4
5
6
7
8
9
10
11
12
13
|
timeout 10
menu title
select
kernel
default kernel-5.10.110-99-rockchip-g9fd61a9a9912
label kernel-5.10.110-99-rockchip-g9fd61a9a9912
label kernel-5.10.110-34-rockchip-gca15bbe36e6c
|
重启系统
启动 Android 镜像
安装 docker
1
|
sudo
apt
install
docker.io
|
启动 Android 容器
三种镜像
- firefly
需要单独导入,略麻烦,文档
- redroid
没驱动,还需要折腾
- myt
开箱即用
用 myt 的镜像进行测试
1
2
3
4
5
6
7
8
9
|
sudo
docker run -itd --
rm
--privileged \
--pull always \
-
v
~
/android_data
:
/data
\
-
v
/dev/net/tun
:
/dev/tun
\
-
v
/dev/mali0
:
/dev/mali0
\
-p 5501:5555 \
--name dobox \
registry.cn-hangzhou.aliyuncs.com
/whsyf/dobox
:rk3588-202303011
|
其中 ~/android_data
目录如果不存在的话,需要自己手动创建,或者换到一个已存在的目录
-p 5501:5555
是在主机上映射 5501 为容器的 ADB 端口
连接 Android
Windows 可以使用 QtScrcpy 进行连接
假设 ROCK 5B 的局域网地址是 192.168.1.13,ADB 命令窗口输入 connect 192.168.1.13:5501
,执行。再双击连接即可。
其他
理论上 RK3588 和 RK3588S 都适用,自己搞定内核就行。
由于容器是使用 privileged 特权模式启动的,就不要手贱在 adb shell 里面输入 reboot ,这会让主机也重启。
如果有坛友知道如何在非特权模式下启动,麻烦告知,谢谢。
更多【Android安全- 在 ROCK 5B 开发板上使用 Docker 运行 Android】相关视频教程:www.yxfzedu.com