Skip to content

多机并发抓包 ​

单台设备抓包是串行的。用 redroid 云手机可以多开几台,并行抓多个 App——批量逆向任务效率直接翻倍。

整体架构 ​

三台云手机各自独立,本机开三个 r0capture 进程并发抓包,互不干扰。

关键配置:每台独立 frida 端口 ​

r0capture 多设备不能用 -U——get_usb_device() 会把所有设备当成第一个。正确做法是每台映射不同 frida 端口,用 -H 显式指定:

三台的端口映射表:

容器adb 端口frida forwardfrida-server 监听(容器内)
android-00155552704227042
android-00255562704327042
android-00355572704427042

注意容器内 frida-server 都监听 27042,但通过 adb forward 映射到本机不同端口,所以不冲突。

三台并发抓包命令 ​

bash
# 1. 每台 adb root(让 frida-server 以 root 跑)
for p in 5555 5556 5557; do adb -s 192.168.1.90:$p root; done

# 2. 每台建 forward
adb -s 192.168.1.90:5555 forward tcp:27042 tcp:27042
adb -s 192.168.1.90:5556 forward tcp:27043 tcp:27042
adb -s 192.168.1.90:5557 forward tcp:27044 tcp:27042

# 3. 三台并发 selftest(用 & 后台 + wait)
python3 r0capture.py -H 127.0.0.1:27042 7033 --selftest -p a1.pcap &
python3 r0capture.py -H 127.0.0.1:27043 2597 --selftest -p a2.pcap &
python3 r0capture.py -H 127.0.0.1:27044 2547 --selftest -p a3.pcap &
wait

实测结果:三台同时各抓到 GET 请求 + 200 响应明文,pcap 全部合法。

创建新云手机 ​

bash
docker run -d --name android-001 \
  --privileged --memory 8g \
  -p 5555:5555 \
  -v /home/cc11001100/redroid/data1:/data \
  redroid/redroid:13.0.0-latest \
  androidboot.redroid_gpu_mode=guest \
  androidboot.redroid_width=720 androidboot.redroid_height=1280 \
  androidboot.redroid_dpi=320 androidboot.redroid_fps=30 \
  androidboot.redroid_memory=8192 androidboot.redroid_cpus=4

内存配置两个层面

  • androidboot.redroid_memory=8192:给 ART/dalvik 的提示值,但 /proc/meminfo 仍显示宿主机总内存
  • --memory 8g:docker cgroup 硬限制,这才是真正生效的(docker stats 显示 XX / 8GiB)
  • 两个都要设,才能保证每台≥8G

踩过的坑 ​

资源占用 ​

宿主机 62G 内存、16 核。三台 idle 时:

容器CPU内存限制
android-0010.06%1.24G8GiB
android-0020.13%1.13G8GiB
android-0030.09%0.95G8GiB

三台合计约 3.3G 内存、0.28% CPU——几乎无压力。瓶颈在宿主机 CPU(本机还跑 k8s + influxd,load 常年 100+),但 idle 云手机影响极小。

实战见 云手机多机并发实战。

基于 VitePress 构建 · 教学用途