返回介绍

欢迎使用

发布于 2025-01-02 22:31:47 字数 1821 浏览 0 评论 0 收藏 0

这篇文章的主要目的是对 Frida 做一个概要的阐述。主要涵盖如下几个方面:

  1. 命令行模式下,交互式函数跟踪
  2. 基于 Frida API 编写你自己的实用工具
  3. 关于 Frida 开发的一些建议

Frida 到底是什么?

通俗一点讲,Frida 是为 Native 应用开发出来的一把瑞士军刀。从技术的角度讲,Frida 是一个动态代码执行工具包。通过 Frida 你可以把一段 JavaScript 注入到一个进程中去,或者把一个动态库加载到另一个进程中去,并且 Frida 是跨平台的,也就是说,你可以对 Windows, macOS, GNU/Linux, iOS, Android 以及 QNX 系统上的进程进行上述操作。

为了使用方便,Frida 工具包在基于自身 API 的基础上也提供了一些简单的小工具, 你可以根据自己的需求直接拿来使用,或者可以作为你后续进行 Frida 脚本开发的参考示例。

Frida 能干啥呢?

这个问题很实际, 我们来看几个实际的使用场景你就大致明白了:

假如说现在市面上出了很火的 App, 目前只有 iOS 版本的, 现在假如你对这个 App 比较感兴趣想了解下大致的实现逻辑。 通过 WireShark 这样的抓包工具发现, 网络协议是加密的, 看不到有效的信息,这个抓包的办法就不行了。这个时候,你就可以考虑用 Frida 进行 API 跟踪的方式来达到你的目的。

  • 假如你开发了一个桌面应用并且已经部署到用户那里,现在用户反馈过来一个问题,但是你发现你打的日志信息又不足以定位问题, 那你只能说再加一些日志,然后再给用户单独发一个版本来定位问题,这个是传统的问题定位方式。但是如果考虑用 Frida 的话,那问题定位就简单多了,使用 Frida 你可以只需要几行脚本就可以随意加入你想要的问题诊断逻辑,而不需要再给用户单独发一个问题定位版本。
  • 你还可以使用 Frida 给 WireShark 快速的做一个经过加密的协议嗅探器,更进一步,为了满足你的实验需求,你甚至可以主动发起函数调用来模拟不同的网络状态。
  • 如果你有一个内部 App 需要做黑盒测试,如果你用 Frida 的话,你就可以用完全不侵染原有业务逻辑的基础上进行测试,尤其在进行逻辑异常流程测试的时候,效果很好。

为什么 Frida 使用 Python 提供 API, 又用 JavaScript 来调试程序逻辑呢?

  • Frida 核心引擎是用 C 写的, 并且集成了 google 的 JavaScript 引擎 V8, 把包含了 V8 的代码注入到目标进程之后,通过一个专门的信息通道,目标进程就可以和这个注入进来的 JavaScript 引擎进行通信了, 这样通过 JavaScript 代码就可以在目标进程中做很多事情了,比如:内存访问、函数 Hook 甚至调用目标进程中的原生函数都可以。
  • 通过 Python 和 JS 代码, 你可以快速的开发出无风险的 Frida 脚本,因为如果你的 JS 代码里面错误或者异常的话,Frida 都会给你捕获到,不会让目标进程 Crash 的,所以叫无风险。
  • 如果你非得不想使用 Python 进行开发, 你也可以直接用 C 进行开发, 并且 Frida 还提供了 Node.js、 Swift、.net、Qml 等语言的接口封装。

建议、提醒

  • 这里提供了一些建议、提醒的信息链接,抽空可以去看看
  • 具体信息请参考(https://www.frida.re/docs/home/)最下面, 我就不贴图了。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文