多机并发抓包
单台设备抓包是串行的。用 redroid 云手机可以多开几台,并行抓多个 App——批量逆向任务效率直接翻倍。
整体架构
三台云手机各自独立,本机开三个 r0capture 进程并发抓包,互不干扰。
关键配置:每台独立 frida 端口
r0capture 多设备不能用 -U——get_usb_device() 会把所有设备当成第一个。正确做法是每台映射不同 frida 端口,用 -H 显式指定:
三台的端口映射表:
| 容器 | adb 端口 | frida forward | frida-server 监听(容器内) |
|---|---|---|---|
| android-001 | 5555 | 27042 | 27042 |
| android-002 | 5556 | 27043 | 27042 |
| android-003 | 5557 | 27044 | 27042 |
注意容器内 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-001 | 0.06% | 1.24G | 8GiB |
| android-002 | 0.13% | 1.13G | 8GiB |
| android-003 | 0.09% | 0.95G | 8GiB |
三台合计约 3.3G 内存、0.28% CPU——几乎无压力。瓶颈在宿主机 CPU(本机还跑 k8s + influxd,load 常年 100+),但 idle 云手机影响极小。
实战见 云手机多机并发实战。