我或多或少成功地将Frida与Android 7.1.1模拟器一起使用,该模拟器是Android studio的一部分。
现在,我试图在更高版本的安卓8.0或8.1上做同样的事情。它的行为不同,我遇到了一些我不完全理解的问题。
我运行frida服务器
adb shell "/path-to-dir/frida-server &"
。在Android 7.1.1上使用此命令时,视觉上没有任何反应,然后一切正常。
但我看到当我在Android 8.0或8.1上使用此命令时,模拟器会重新启动(它是可见的,我有这样的消息
INFO | Boot completed in XXX ms
在日志中)。我不确定这是好是坏,因为重新启动后,我看到frida服务器正在模拟器中运行:
generic_x86:/ # ps -ef | grep frida
root 3800 1 73 13:39:42 ? 00:00:08 frida-server
root 5457 3790 0 13:39:53 pts/0 00:00:00 grep frida
generic_x86:/ #
所以,frida服务器可能已经正常运行。
但还有另一个问题——我无法对它做任何事情,因为重启后,与模拟器的USB连接似乎被中断了。一切都可以通过ADB运行,但frida本身不再看到USB设备:
[user@pc]$ frida-ps -U -a
Failed to enumerate applications: timeout was reached
[user@pc]$
(其他frida命令的行为方式类似——它们看不到USB设备,最终会超时)。
在我启动frida服务器之前,同样的命令运行良好。
如果我转到“设置”,我可以修复它。>模拟器内的开发人员选项,关闭USB调试,然后再打开。指挥部
frida-ps -U -a
此操作后立即成功工作。但此操作会杀死frida服务器。
我试图了解我做错了什么,以及如何在frida服务器启动后通过USB让frida继续使用模拟器。或者,如果不可能,如何配置对模拟器的IP访问。我可以从模拟器ping主机,但无法从主机访问模拟器(我怀疑这是因为NAT,但不确定如何以良好的方式访问)。
关于模拟器生根的更新。
我这样启动frida服务器:
[user@pc]$ adb root
restarting adbd as root
[user@pc]$ adb remount
remount succeeded
[user@pc]$ adb shell "/data/local/tmp/frida-server &"
< here it stops and waits without exit >
所以我不确定我是否需要root模拟器(我还没有在Android 7.1.1上做过)