Frida官方文档
欢迎
该网址旨在成为Frida的综合指南。我们将介绍诸如从命令行进行交互式功能跟踪,在Frida的API之上构建自己的工具之类的主题,并为您提供有关参与Frida自身未来发展的一些建议。
Frida到底是什么
它是一个本机应用程序的Greasemonkey(“油猴子”),或者用更加专业的术语,他是一个动态代码检测工具。它允许你将JavaScript代码片段或者你自己的库到Windows, macOS, GNU/Linux, iOS, Android, and QNX的本机应用中。Frida还为您提供了一些基于Frida API的简单工具。。这些可以按原样使用,根据您的需要进行调整,或者用作有关如何使用API的示例。
我为什么需要这个
好问题。 我们将尝试阐明一些用例:
- 每个人都对这个新的热门应用感到非常兴奋,但它仅适用于iOS,并且您希望与之互操作。 您意识到它依赖于加密的网络协议,而诸如Wireshark之类的工具将不会削减它。 您选择Frida并将其用于API跟踪。
- 您正在构建一个已部署在客户站点上的桌面应用程序。 有一个问题,但是内置的日志记录代码还不够。 您需要向客户发送包含大量昂贵日志记录代码的自定义版本。 然后,您意识到您只需要使用Frida并构建一个特定于应用程序的工具,即可在几行Python中添加所需的所有诊断信息。 无需向客户发送新的自定义版本-您只需发送可在您的许多版本的应用程序上使用的工具即可。
- 您想在steroids (类固醇)上构建Wireshark,并支持嗅探加密协议。 它甚至可以操纵函数调用以伪造网络条件,否则将需要您建立测试实验室。
- 您的内部应用程序可以使用一些黑盒测试,而不会使用异类测试所需的逻辑来污染您的生产代码
为什么要使用Python API,但要使用JavaScript调试逻辑?
Frida的核心是用C编写的,并将Google的V8引擎注入到目标进程中,在该目标进程中,您的JS可以完全访问内存,挂钩函数甚至在进程内部调用本机函数来执行。 有一个双向通信通道,用于在您的应用和目标进程中运行的JS之间进行对话。
使用Python和JS可以使用无风险的API进行快速开发。 Frida可以帮助您轻松捕获JS中的错误,并为您提供异常而不是崩溃。
不用Python编写? 没问题。 您可以直接从C使用Frida,并且在此C核心之上有多种语言绑定,例如 Node.js,Python,Swift,.NET,Qml等。为其他语言和环境构建附加绑定非常容易。
ProTips™, Notes, and Warnings
在本指南中,有许多小而方便的信息,这些信息可以使使用Frida更加容易,有趣和危险。 这是要注意的地方。
如果您遇到了我们未涵盖的任何内容,或者您知道其他人会觉得有用的提示,请提出问题,我们将在本指南中予以介绍。