• movecert注意要改update-binary中的脚本,参考链接

Frida注意事项

python脚本无法开启指定应用

报错的内容如下:

1
2
3
4
5
6
7
8
9
10
# windows
$ python frida_start.py
Traceback (most recent call last):
File "frida_start.py", line 23, in <module>
cur_pid=device.spawn("com.xxx")
File "D:\Users\hasee\AppData\Local\Programs\Python\Python310\lib\site-packages\frida\core.py", line 26, in wrapper
return f(*args, **kwargs)
File "\Python\Python310\lib\site-packages\frida\core.py", line 149, in spawn
return self._impl.spawn(program, argv, envp, env, cwd, stdio, aux_options)
frida.NotSupportedError: need Gadget to attach on jailed Android; its default location is: C:\Users\xxx\AppData\Local\Microsoft\Windows\INetCache\frida\gadget-android-arm64.so

这里看起来像是python脚本的frida尝试去连接windows的frida server,但实际上我们想要连接的是Android设备。

这里的原因是,为了对抗应用检测frida server的运行,我们一般会修改frida server的binary文件名称以及默认监听端口27042,但是更改之后,使用frida.get_usb_device()的时候,python程序通过默认端口去连接frida的时候就会找不到。

目前试过的解决方法有两种:

  1. 关闭设定的监听端口,仍然是转发主机的27042端口到设备的27042端口,但缺点是无法设定端口可能会被检测;
  2. 转发主机的27042端口到设备的指定监听端口,并且在python脚本中通过frida.get_remote_device()函数连接设备;

吐槽:这个问题我在github的issue和搜索引擎中搜了很久,得到的唯一一个有用的信息就是设备连接不上,各种方法试了下都没有生效(除了把frida版本降成),并且我一开始猜测到了端口转发可能有所影响,因为在python脚本中似乎没有提供给我设定端口的地方。反正还是要多按照自己的思路试试,如果没有找到很匹配的问题以及解决方法的话。