
Fermion, an electron wrapper for Frida & Monaco.
Fermion è un'applicazione Electron che avvolge frida-node e monaco-editor. Offre un ambiente completamente integrato per prototipare, testare e perfezionare script Frida attraverso un'unica interfaccia. Con l'integrazione di Monaco arrivano tutte le funzionalità che ti aspetteresti da Visual Studio Code: linting, IntelliSense, scorciatoie da tastiera, ecc. Inoltre, Fermion include una definizione del linguaggio TypeScript per l'API di Frida, così è facile scrivere script Frida.
Cosa si nasconde in un nome: un fermione può essere una particella elementare, come l'elettrone, oppure una particella composta, come il protone. I fermioni includono tutti i quark e i leptoni, così come tutte le particelle composite formate da un numero dispari di questi, come tutti i barioni e molti atomi e nuclei.
Scarica il repository e naviga fino alla cartella Fermion nel terminale. Una volta lì, imposta le seguenti variabili d'ambiente.
# 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
Successivamente, installa i pacchetti necessari per eseguire Fermion con:
npm install
Una volta completato, puoi eseguire Fermion digitando:
npm start
Completa i passaggi precedenti e poi esegui il seguente comando dal terminale:
# 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
Puoi ottenere l'ultima versione precompilata di Fermion per Windows e Linux x64 dalle releases.
Fermion che ti dice qual è il problema e come risolverlo. Tuttavia, in generale, puoi eseguire Fermion o il Frida Server come root oppure eseguire il seguente comando sudo sysctl kernel.yama.ptrace_scope=0.D: Voglio creare la mia versione di Fermion basata su una nuova versione di Frida/Electron. Come posso scoprire quali prebuild esistono attualmente?
ELECTRON_TARGETS_DEFAULT e ELECTRON_TARGETS_FREEBSD.D: Voglio rivedere/modificare/aggiornare le definizioni dei tipi usate nell'editor Monaco, come posso fare?
node_modules/@types/frida-gum/index.d.ts.D: Perché niente trace stabile, amico (╯°□°)╯︵ ┻━┻
hot pointer e/o la traccia sta generando grafi con migliaia di nodi, probabilmente la finestra di trace rallenterà mentre riceve i dati. Inoltre, come con qualsiasi tipo di tracing, può causare instabilità / crash / blocchi del processo.Puoi vedere un esempio di Fermion all'opera qui sotto, in questo caso strumentando kernel32!ReadFile.

Fermion ha completamento automatico, linting e supporto per i simboli dell'API Frida.

Fermion può connettersi a un server Frida per eseguire il debug di applicazioni remote usando il menu contestuale device. In molti casi, come con il debug USB o quando ci si aggancia ad applicazioni mobili tramite emulatori come genymotion, Fermion rileverà automaticamente il server come disponibile. Tuttavia, è anche possibile specificare un server remoto usando una combinazione di IP e Porta.

Fermion ha il supporto integrato per il CALL tracing dei thread.

Questo potrebbe non fare esattamente ciò che ti aspetti. Quando definisci una combinazione di pointer o module/Symbol, il tracer si aggancia a quella posizione e ogni volta che un thread esegue codice in quel punto, inizierà a tracciare tutte le istruzioni CALL che quel thread esegue finché non ritorna. Questo significa che esecuzioni diverse possono generare grafi diversi; significa anche che potresti non vedere tutto ciò che una funzione sta facendo (ad es. se, all'interno della funzione, viene avviato un thread diverso).

Fermion converte queste tracce in un formato Graphviz SVG usando dot, che puoi poi esplorare. Questa è una funzionalità che trovo utile di tanto in tanto quando svolgo lavoro esplorativo (Cosa fa una funzione? Quanto è complessa quell'esecuzione?). Detto questo, è una funzionalità prototipo che ho costruito sopra Fermion e probabilmente ha bisogno di ulteriori rifiniture per essere più pronta per la produzione.
Fermion ha anche documentazione integrata per la JavaScript API di Frida. Come tutti gli altri, non ricordo sempre come funziona tutto e avere i documenti nell'app elimina la necessità di tenere aperta una finestra del browser.

Per maggiori dettagli sulle modifiche specifiche delle versioni, consulta il changelog.
Se integri Fermion nel tuo flusso di lavoro e lo trovi utile, ti incoraggio a fare pull request, segnalare bug e richiedere funzionalità per migliorare l'applicazione. Non sono esattamente uno sviluppatore Node, quindi sono sicuro che le persone troveranno modi per ottimizzare e rielaborare alcuni dei componenti.
Frida v15.0+.Voglio solo fare alcuni ringraziamenti speciali!