Fermion is an electron application that wraps frida-node and monaco-editor. It offers a fully integrated environment to prototype, test and refine Frida scripts through a single UI. With the integration of Monaco come all the features you would expect from Visual Studio Code: Linting, IntelliSense, keybindings, etc. In addition, Fermion has a TypeScript language definition for the Frida API so it is easy to write Frida scripts.
What's in a name: A fermion can be an elementary particle, such as the electron, or it can be a composite particle, such as the proton. Fermions include all quarks and leptons, as well as all composite particles made of an odd number of these, such as all baryons and many atoms and nuclei.
Download the repository and navigate to the "Fermion" folder in the terminal. Once there, set the following environment variables.
# Windows
set npm_config_runtime=electron
set npm_config_target=9.0.0
# Linux / OSX
export npm_config_runtime=electron
export npm_config_target=9.0.0
Afterwards install the packages required to run Fermion with:
npm install
Once complete, you can run Fermion by issuing:
npm start
Complete the steps above and then issue the following command from the terminal:
# Windows
electron-packager . --icon assets\img\fermion-ico.ico
# Linux
electron-packager . --icon assets/img/fermion-ico.png
# OSX
electron-packager . --icon assets/img/fermion-ico.icns
You can get the latest pre-built Fermion for x64 Windows, Linux and OSX from releases.
- Q: I need to inject a SYSTEM level process, how can I do that?
- A: You used to be able to utilize tools like psexec to run Fermion as SYSTEM however since Electron v8 this causes Fermion to freeze. What you really need is for Fermion to run as Administrator and have SeDebugPrivilege privileges. As a workaround you can launch PowerShell as Administrator and use that to launch Fermion.
You can see a sample of Fermion at work below.
Fermion has auto-complete, linting and Frida API symbol definitions.
Fermion can connect to a Frida server to debug remote applications using the device dropdown.
For more details on version specific changes consult the changelog.
If you integrate Fermion into your work-flow and find it useful I encourage you to make pull requests, submit bug reports and ask for features to improve the application. I'm not exactly a Node developer so I am sure people will find ways optimize and rework some of the components.
- Implement a more complete device manager interface.
I just want to give a few special thanks!
- A huge thanks to Ole André V. Ravnås for all his work on Frida and having a lot of patience answering my pedestrian questions about Frida, NodeJS and Monaco!
- A shout-out also to mattahan. I'm using a Buuf icon for the Windows package of Fermion. I'm sure we have all used some of his icons on NIX over the years.
- Thanks to @lez0sec & @berkayyildi for contributing some time/code to Fermion!