使用内置 Frida(基础)

LAMDA 内置了最新版本的 Frida,这样您无需自行开启 frida-server。我们内置的 Frida 已经具备各种开源的隐藏补丁以及我们自己额外添加的各种隐藏功能,所以您无需担心 Frida 被检测的问题。如果我们内置的 Frida 被检测到,那么代表您能下载到的几乎所有 frida-server 都逃不过被检测的命运。所以请放心使用,您不必关心这些杂七杂八的事情。

注意: LAMDA 自 7.18 版本开始,内置 FRIDA 需要提供 token 参数才可连接,当然客户端库已经为您处理好了一切,如果您使用的是 7.18 之前的版本,请查看旧版本的文档了解使用方法。

LAMDA基础使用 (命令行使用frida及被动隐身反检测)

通过代码使用

使用 LAMDA 客户端 API,您只需要直接像下面这样,使用 d.frida 即可获取到一个连接到了 frida-server 的实例,不必自行使用 frida 库构造连接。

conn = d.frida
conn.enumerate_processes()

当然,如果您想了解他的底层实现,您也可以参考如下代码。

# 获取动态 token
token = d._get_session_token()

manager = frida.get_device_manager()
conn = manager.add_remote_device("192.168.0.2:65000", token=token)
conn.enumerate_processes()

剩下来的,就是看您自己如何使用了,现在您已正常的拿到了实例。

通过命令使用

通过命令行使用,我们的操作可能稍微有些复杂,因为我们还要确保您设备的安全性。我们还想提醒您一下,不要被 其他文章中的命令局限了自己的思维。您需要注意,很多文章中的 frida 命令都会有一个 -U 参数,我们这里没有, 所以如果您连接不上,确保您的命令严格按照样例使用。

在开始之前,我们先提一下,非常建议您通过远程桌面使用 fridafrida-itracefrida-tracefrida-ps 等相关命令,因为在这个环境下,您无需做任何操作,您只要执行 frida 即可,无需提供任何其他的连接参数入 -U-H 等。

Frida

既然您已经看到下面了,那就代表您仍然想在电脑端使用该命令,现在,您需要根据安装情况整理一些信息, 如果您的 LAMDA 启动时使用了加密证书,您需要准备好该文件,还有,您需要准备好需要连接的设备的 IP 地址和 LAMDA 服务端口(默认 65000),注意,这个端口不是 Frida 的 27042 端口,是 LAMDA 服务的端口,您只需要连接到 LAMDA 即可。

首先,您需要先使用 API 获取当前 token,该 token 为固定 16 位字符串,如 czvpyqg82dk0xrnj,我们了解,这个方式可能比较麻烦,我们后期可能会做改变,这也是为什么我们上面建议您在远程桌面中使用 frida 相关命令的原因。

token = d._get_session_token()
print (token)

现在,您从上面的接口得到了一个 token,我们假设他是 czvpyqg82dk0xrnj,现在我们开始编写 frida 命令。 对于所有 frida 官方命令行工具,默认只需加上参数 -H 192.168.0.2:65000 以及 --token xxxxxxxxxxxxxxxx 即可,例如下面这样,注意这里没有 -U 哦。

frida -H 192.168.0.2:65000 -f com.android.settings --token xxxxxxxxxxxxxxxx

如果您的 LAMDA 服务端启动时还用了加密证书,命令里还要加上 --certificate 参数。

frida -H 192.168.0.2:65000 -f com.android.settings --certificate /path/to/lamda.pem --token xxxxxxxxxxxxxxxx

您可能发现了,其实区别就三个,-U,变成了 -H,因为我们需要通过网络连接而不是 USB,多了 --token 参数,如果服务端启用了加密证书,那么还多一个 --certificate 参数,因为我们要确保您设备的安全性,不会被未授权的人访问。

对于其他工具如 objection 等,通常也会有上述参数提供,不过大部分非标准的工具不会实现这么完整,如果您使用的工具不支持如上方式使用,您可以加入我们的群组来获取相关补丁。

暴露应用接口

本段落已迁移到 使用 Frida 导出接口 章节。