一,检查frida 版本是否匹配模拟器
要检查模拟器是 x86 架构还是 ARM 架构,以及它是 32 位还是 64 位,你可以使用 Android Debug Bridge (adb) 来执行一些命令。
adb shell getprop ro.product.cpu.abi
这个命令将返回一个字符串,表明 CPU 的架构类型,例如 armeabi-v7a
对于 32 位 ARM,arm64-v8a
对于 64 位 ARM,x86
对于 32 位 x86,或 x86_64
对于 64 位 x86。
然后去下载对应的版本:
二,对frida进行端口转发
检查端口
使用ss -tuln,观察端口情况
ss -tuln
如下图所示:ss -tuln
输出结果来看,端口 27042 已经被一个 TCP 服务监听,并且这个服务绑定在本地回环地址 127.0.0.1
上。回环地址用于同一台主机上的网络通信,通常用于测试或服务不打算被其他主机访问的情况。
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 0.0.0.0:5353 0.0.0.0:*
udp UNCONN 0 0 0.0.0.0:49608 0.0.0.0:*
udp UNCONN 0 0 *:5353 *:*
udp UNCONN 0 0 *:43401 *:*
tcp LISTEN 0 10 127.0.0.1:27042 0.0.0.0:*
tcp LISTEN 0 4 *:5555 *:*
:/ # ss -tuln | grep 27042
tcp LISTEN 0 10 127.0.0.1:27042 0.0.0.0:*
或者使用 netstat -tulnp
netstat -tulnp
输出如下
:/ # netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program Name
tcp 0 0 127.0.0.1:27042 0.0.0.0:* LISTEN 2975/frida-server-16.4.7-android-x86_64
tcp 0 0 172.16.1.4:37020 114.114.114.114:853 ESTABLISHED 1405/netd
tcp 0 0 172.16.1.4:59832 119.29.29.29:853 ESTABLISHED 1405/netd
tcp6 0 0 :::5555 :::* LISTEN 2373/adbd
tcp6 0 0 ::ffff:172.16.1.4:5555 ::ffff:172.16.1.2:53656 ESTABLISHED 2373/adbd
udp 2304 0 172.16.1.4:68 172.16.1.3:67 ESTABLISHED 1579/system_server
udp 0 0 0.0.0.0:5353 0.0.0.0:* 2380/mdnsd
udp 0 0 0.0.0.0:49608 0.0.0.0:* 2380/mdnsd
udp6 0 0 :::5353 :::* 2380/mdnsd
udp6 0 0 :::43401 :::* 2380/mdnsd
可以看到tcp 0 0 127.0.0.1:27042 0.0.0.0:* LISTEN 2975/frida-server-16.4.7-android-x86_64。从名称可以看出,这确实是 Frida 的服务器组件。
端口转发
要使用 `adb` 将端口转发到 27042 端口,可以使用以下命令:
adb forward tcp:27042 tcp:27042
这个命令会将计算机上的 27042 端口转发到连接的 Android 设备上的 27042 端口 。这通常用于 Frida 调试场景,其中 `frida-server` 运行在设备上并监听 27042 端口。当你执行这个命令后,你可以从计算机上通过该端口与设备上的 `frida-server` 进行通信。
如果你遇到端口已经被使用的错误,例如 "Unable to start: Error binding to address 127.0.0.1:27042: Address already in use",那么可以使用以下命令来移除现有的端口转发:
adb forward --remove tcp:27042
然后再次尝试设置端口转发:
adb forward tcp:27042 tcp:27042
若需要查看当前设置的所有端口转发,可以使用以下命令:
adb forward --list
这将列出所有的 adb 端口转发规则 。如果使用多台模拟器,需要连接到特定名称的模拟器或设备,你可以使用 `-s` 参数指定设备名称,例如:
adb -s emulator-5554 forward tcp:27042 tcp:27042
将 emulator-5554`替换为你的模拟器或设备的适当名称 。