基于rock5b ebpf 脱壳记录

介绍

记录如何使用 ebpf 脱壳

过程

最近分析一款app, 某啡最新版. 本来以为很简单, 没想到踩了很多坑.

首先 jadx 打开 发现 com.stub.StubApp. 这里就猜到是 数字壳, 尝试用 frida 脱壳看看, 结果一 hook 就崩溃. 并且崩溃后必须重启, 否则即使不挂frida 这个app都无法正常打开.
我们看看是哪个so 导致的崩溃

1
2
3
4
5
6
7
8
9
10
11
12
13
var android_dlopen_ext = Module.findExportByName(null, "android_dlopen_ext");
if(android_dlopen_ext != null){
Interceptor.attach(android_dlopen_ext,{
onEnter: function(args){
var soName = args[0].readCString();
console.log(soName);
},
onLeave: function(retval){
Thread.sleep(3);
}
});
}

img_11
结果崩溃在 libjgdtc.so, 并不是 libmsaoaid.so. ida 打开 libjgdtc.so, 也被混淆了, 无法查看内容.

怎么办呢, 想到了 blackDex, 之前用过, 有的时候还是很有效的, 结果试了发现不行.

于是就想到了fart. 但是我的测试机有各种环境,到时候再装环境太麻烦了。

正好一顿搜索看到了一个开源项目, https://github.com/LLeavesG/eBPFDexDumper
这个项目是基于ebpf 完成脱壳。 之前用过 基于 ebpf 的 stackplz, 非常好用, 内核插桩,一行指令hook libart 下的各种函数. 非常方便.
于是我看了下自己的测试机, 是 pixel 4, 内核为 4.14.150-gf3a84757f21f-ab6216664, 不支持.

于是我想到了我手里还有一台rock5b+. 看能否试试看.

于是装上 radxa 官方提供的镜像. 因为我加了一个固态硬盘, 数据都放在固态硬盘, 每次启动需要将固态挂在到目录下.

sudo mount /dev/nvme0n1p1 /media/ssd

我自己的数据都在 /media/ssd/ubuntu_data/mt 下

然后 通过 redroid 启动一个android 容器. 指定各种参数. 并且这个镜像还支持lsposed + justTrustme 本人亲测可用.

1
docker run -d -p 5557:5555 -v /media/chilly/c5ab23a8-48d8-4d3b-98e7-692b498e1a98/ubuntu_data/android_2:/data --restart unless-stopped --name android_2 --privileged cnflysky/redroid-rk3588:lineage-20 androidboot.redroid_height=1920 androidboot.redroid_width=1080 androidboot.redroid_magisk=1 ro.ril.oem.imei=861503068361145 ro.product.manufacturer=OPPO ro.product.locale=zh-CN ro.product.model=OPPO A83js ro.product.brand=OPPO ro.product.name=A83js ro.product.device=M6763C ro.product.board=full_oppo6763_17101 ro.build.product=oppo6763_17101 androidboot.redroid_fake_wifi=1

然后本机

adb -s 172.31.xxx.xx:5557 shell
uname -r
5.10.0-1012-rockchip

可以看到是 手机显示的 5.10 的内核.
于是我们下载一个 eBPFDexDumper, 然后 adb -s ip:port push /data/local/tmp/

1
2
3
chmox +x eBPFDexDumper

./eBPFDexDumper dump --name com.luxxxcky.xxxxxx /apex/com.android.art/lib64/libart.so 0 0 0>

img_11

然后整个 pull 出来, jadx 打开. 发现成功脱壳

img_11