
Fermion, un wrapper électron pour Frida & Monaco.
Fermion est une application electron qui enveloppe frida-node et monaco-editor. Elle offre un environnement entièrement intégré pour prototyper, tester et affiner des scripts Frida à travers une interface unique. Avec l'intégration de Monaco viennent toutes les fonctionnalités attendues de Visual Studio Code : linting, IntelliSense, raccourcis clavier, etc. De plus, Fermion dispose d'une définition de langage TypeScript pour l'API Frida, ce qui facilite l'écriture de scripts Frida.
What's in a name : Un fermion peut être une particule élémentaire, comme l'électron, ou une particule composite, comme le proton. Les fermions incluent tous les quarks et leptons, ainsi que toutes les particules composites constituées d'un nombre impair de ces derniers, comme tous les baryons et de nombreux atomes et noyaux.
Téléchargez le dépôt et placez-vous dans le dossier Fermion dans le terminal. Une fois sur place, définissez les variables d'environnement suivantes.
# 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
Ensuite, installez les paquets nécessaires à l'exécution de Fermion avec :
npm install
Une fois terminé, vous pouvez exécuter Fermion en lançant :
npm start
Effectuez les étapes ci-dessus puis exécutez la commande suivante dans le terminal :
# 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
Vous pouvez obtenir la dernière version précompilée de Fermion pour Windows et Linux x64 depuis les releases.
Fermion vous indiquant le problème et la manière de le résoudre. Cependant, en général, vous pouvez exécuter Fermion ou le Frida Server en tant que root, ou bien exécuter la commande suivante : sudo sysctl kernel.yama.ptrace_scope=0.Q : Je veux construire ma propre version de Fermion avec une nouvelle version de Frida/Electron. Comment puis-je savoir quels prebuild existent actuellement ?
ELECTRON_TARGETS_DEFAULT et ELECTRON_TARGETS_FREEBSD respectivement.Q : Je veux examiner/modifier/mettre à jour les définitions de types utilisées dans l'éditeur Monaco, comment puis-je faire ?
node_modules/@types/frida-gum/index.d.ts.Q : Pourquoi tu ne fais pas de trace stable, mec (╯°□°)╯︵ ┻━┻
hot pointer et/ou si la trace génère des graphes avec des milliers de nœuds, il est probable que la trace window lag pendant la réception des données. De plus, comme avec tout type de tracing, cela peut provoquer une instabilité / un crash / un gel du processus.Vous pouvez voir un exemple de Fermion en action ci-dessous, dans ce cas en instrumentant kernel32!ReadFile.

Fermion dispose de l'auto-complétion, du linting et du support des symboles de l'API Frida.

Fermion peut se connecter à un serveur Frida pour déboguer des applications distantes à l'aide du menu contextuel device. Dans de nombreux cas, comme avec le débogage USB ou lors de l'attachement à des applications mobiles via des émulateurs comme genymotion, Fermion détectera automatiquement le serveur disponible. Cependant, il est également possible de spécifier un serveur distant en utilisant une combinaison IP et Port.

Fermion prend en charge nativement le CALL tracing des threads.

Cela ne fait peut-être pas exactement ce que vous attendez. Lorsque vous définissez une combinaison pointer ou module/Symbol, le tracer va s'attacher à cet emplacement et chaque fois qu'un thread s'exécute à cet endroit, il commencera à tracer toutes les instructions CALL que ce thread effectue jusqu'à son retour. Cela signifie que différentes exécutions peuvent générer des graphes différents, et aussi que vous ne verrez peut-être pas tout ce que fait une fonction (par exemple, si un autre thread est créé à l'intérieur de la fonction).

Fermion convertit ces traces au format Graphviz SVG en utilisant dot, que vous pouvez ensuite explorer. C'est une fonctionnalité que je trouve utile de temps en temps lors de travaux exploratoires (Que fait une fonction ? Quelle est la complexité de cette exécution ?). Cela dit, c'est une fonctionnalité prototype que j'ai construite au-dessus de Fermion et qui a probablement besoin d'être davantage peaufinée pour être plus proche d'une version de production.
Fermion dispose également d'une documentation intégrée pour l'API JavaScript de Frida. Comme tout le monde, je ne me souviens pas toujours du fonctionnement de chaque chose et avoir la documentation dans l'application évite d'avoir une fenêtre de navigateur ouverte.

Pour plus de détails sur les changements spécifiques aux versions, consultez le changelog.
Si vous intégrez Fermion dans votre flux de travail et le trouvez utile, je vous encourage à faire des pull requests, à soumettre des rapports de bugs et à demander des fonctionnalités pour améliorer l'application. Je ne suis pas vraiment un développeur Node, donc je suis sûr que des gens trouveront des moyens d'optimiser et de retravailler certains composants.
Frida v15.0+.Je veux juste adresser quelques remerciements spéciaux !