代码之家  ›  专栏  ›  技术社区  ›  StarterKit

frida服务器启动后,Android模拟器重新启动/无法通过USB访问

  •  0
  • StarterKit  · 技术社区  · 2 年前

    我或多或少成功地将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上做过)

    0 回复  |  直到 2 年前
        1
  •  0
  •   StarterKit    2 年前

    好的,我尝试在Android 9.0上做同样的事情,并成功了。
    Frida website “另请注意,我们最近的大部分测试都是在运行Android 9的Pixel 3上进行的” “另一种选择是使用模拟器,最好是谷歌提供的arm或arm64的Android 9模拟器图像。(x86也可以工作,但经过的测试要少得多。)”
    似乎Android 8.x x86模拟器与Frida没有很好的兼容性,并且存在一些问题,因为我在7.1.1或9.0中没有做任何不同的事情。

    推荐文章