Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Fermion — Fermion,一个用于 Frida 与 Monaco 的 Electron 封装器。 | Kitploit
工具/GitHubGitHub/fuzzysecurity/fermion
Android安全动态分析 (沙盒)动态代码分析 (DAST)移动应用渗透测试逆向工程调试器二进制分析
GitHubfuzzysecurity/fermion

Fermion

Fermion,一个用于 Frida 与 Monaco 的 Electron 封装器。

查看仓库
7008391年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CI stars forks release frida-node frida-gum

Fermion

Fermion 是一个封装了 frida-node 和 monaco-editor 的 electron 应用程序。它通过单一 UI 提供了一个完全集成的环境,用于原型设计、测试和优化 Frida 脚本。随着 Monaco 的集成,带来了你所期望的 Visual Studio Code 的所有功能:代码检查(Linting)、IntelliSense、按键绑定等。此外,Fermion 还带有 Frida API 的 TypeScript 语言定义,因此编写 Frida 脚本很容易。

名字里有什么? 费米子可以是基本粒子,例如电子,也可以是复合粒子,例如质子。费米子包括所有夸克和轻子,以及由奇数个此类粒子组成的复合粒子,例如所有重子和许多原子及原子核。

如何获取 Fermion?

从源码运行 Fermion

下载仓库并在终端中导航到 Fermion 文件夹。进入后,设置以下环境变量。

root@kitploit:~
# Windows
set npm_config_runtime=electron
set npm_config_target=21.0.0

# Linux / OSX
export npm_config_runtime=electron
export npm_config_target=21.0.0

之后,使用以下命令安装运行 Fermion 所需的包:

root@kitploit:~
npm install

完成后,你可以通过执行以下命令运行 Fermion:

root@kitploit:~
npm start

编译发布包

完成上述步骤,然后在终端中执行以下命令:

root@kitploit:~
# Windows
electron-packager . --icon .\src\images\fermion-ico.ico

# Linux
electron-packager . --icon ./src/images/fermion-ico.png

# OSX
electron-packager . --icon ./src/images/fermion-ico.icns

发布版本

你可以从 releases 获取适用于 x64 Windows 和 Linux 的最新预构建 Fermion。

常见问题说明

Windows

  • 问:我需要注入一个 SYSTEM 级别的进程,该怎么做?
    • 答:以前你可以使用 psexec 之类的工具以 SYSTEM 身份运行 Fermion,但自从 Electron v8 起,这会导致 Fermion 冻结。你真正需要的是让 Fermion 以管理员身份运行并拥有 SeDebugPrivilege 权限。作为一种变通方案,你可以以管理员身份启动 PowerShell,并用它来启动 Fermion。

Linux

  • 问:我无法附加到正在运行的进程?
    • 答:系统限制可能会阻止你附加,通常你会在 Fermion 中看到一条消息,告诉你问题所在以及如何解决。但一般来说,你可以以 root 身份运行 Fermion 或 Frida Server,或者运行以下命令 sudo sysctl kernel.yama.ptrace_scope=0。

一般问题

  • 问:我想针对新版本的 Frida/Electron 构建自己的 Fermion 版本。如何找出当前存在哪些 prebuild?

    • 答:你应该查看 这里,你可以在 ELECTRON_TARGETS_DEFAULT 和 ELECTRON_TARGETS_FREEBSD 中分别查看默认构建版本。
  • 问:我想查看/更改/更新 Monaco 编辑器中使用的类型定义,我该怎么做?

    • 答:这现在已作为构建过程的一部分处理,因此你的语言定义应始终保持最新。如果你想手动编辑应用程序的语言定义,可以在这里找到它们:node_modules/@types/frida-gum/index.d.ts。
  • 问:老哥,为啥你的 trace 不稳定 (╯°□°)╯︵ ┻━┻

    • 答:调用跟踪非常消耗资源。在大多数情况下它都可以正常工作,但如果你正在跟踪一个 hot pointer 和/或跟踪生成的图包含数千个节点,那么你很可能会发现 trace 窗口 在接收数据时会出现延迟。此外,与任何类型的跟踪一样,它可能导致进程不稳定 / 崩溃 / 冻结。

关于

你可以在下面看到一个 Fermion 实际运行的示例,本例中是对 kernel32!ReadFile 进行插桩。

Fermion

Fermion 具有自动补全、代码检查(linting)和 Frida API 符号支持。

Help

Fermion 可以使用 device 上下文菜单连接到 Frida server,以调试远程应用程序。在许多情况下,例如通过 USB 调试或通过类似 genymotion 的模拟器附加到移动应用程序时,Fermion 会自动检测到可用的服务器。不过,也可以使用 IP 和 Port 组合来指定远程服务器。

Server

Fermion 内置了对线程 CALL tracing 的支持。

Trace

这可能并不完全符合你的预期。当你定义一个 pointer 或 module/Symbol 组合时,tracer 将 attach 到该位置,只要有 thread 在该位置执行,它就会开始跟踪该线程在执行期间执行的所有 CALL 指令,直到它返回。这意味着不同的执行可能会生成不同的图,也意味着你可能无法看到函数所做的所有事情(例如,如果在函数内部产生了一个不同的线程)。

SVG

Fermion 使用 dot 将这些跟踪转换为 Graphviz SVG 格式,然后你可以对其进行探索。这是我在进行探索性工作时偶尔会觉得有用的一个功能(函数做了什么?那次执行有多复杂?)。话虽如此,这是一个我在 Fermion 之上构建的 prototype 功能,可能需要更多的打磨才能更适合生产环境。

Fermion 还内置了 Frida JavaScript API 的文档。和其他人一样,我并不总能记住所有东西是如何工作的,而在应用程序中内置文档则无需再打开浏览器窗口。

Docs

说明

更新日志

有关版本具体变更的更多详细信息,请参阅 changelog。

行动号召

如果你将 Fermion 集成到你的工作流中并觉得它有用,我鼓励你提交 pull request、提交 bug 报告以及提出功能请求来改进这个应用程序。我并非一名专业的 Node 开发者,所以我相信人们会找到方法来优化和重做某些组件。

路线图

  • 实现更完整的设备管理器界面。
  • UI 重新设计。
  • 评估在 Fermion 之上构建更多原生工具的需求,并添加这些工具。
  • 扩展设备管理器,以利用集成到 Frida v15.0+ 中的新功能。

特别感谢

我只想表达一些特别的感谢!

  • 非常感谢 Ole André V. Ravnås 为 Frida 所做的一切工作,并非常有耐心地回答我关于 Frida、NodeJS 和 Monaco 的初级问题!
  • 还要感谢 mattahan。我使用的是 Buuf 图标作为 Fermion 的 Windows 软件包图标。我相信这些年来我们都在 NIX 上用过他的一些图标。
  • 感谢 @MiscMisty、@lez0sec 和 @berkayyildi 为 Fermion 贡献时间和代码!
下载工具