
Fermion, an electron wrapper for Frida & Monaco.
O Fermion é um aplicativo Electron que encapsula frida-node e monaco-editor. Ele oferece um ambiente totalmente integrado para prototipar, testar e refinar scripts Frida por meio de uma única interface. Com a integração do Monaco, vêm todos os recursos que você esperaria do Visual Studio Code: linting, IntelliSense, atalhos de teclado, etc. Além disso, o Fermion possui uma definição de linguagem TypeScript para a API do Frida, facilitando a escrita de scripts Frida.
O que há em um nome: Um férmion pode ser uma partícula elementar, como o elétron, ou pode ser uma partícula composta, como o próton. Os férmions incluem todos os quarks e léptons, bem como todas as partículas compostas por um número ímpar deles, como todos os bárions e muitos átomos e núcleos.
Baixe o repositório e navegue até a pasta Fermion no terminal. Uma vez lá, defina as seguintes variáveis de 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
Em seguida, instale os pacotes necessários para executar o Fermion com:
npm install
Quando concluído, você pode executar o Fermion com:
npm start
Conclua os passos acima e então execute o seguinte comando no 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
Você pode obter a versão pré-compilada mais recente do Fermion para Windows x64 e Linux em releases.
Fermion informando qual é o problema e como resolvê-lo. No entanto, em geral, você pode executar o Fermion ou o Frida Server como root ou, alternativamente, executar o seguinte comando sudo sysctl kernel.yama.ptrace_scope=0.P: Quero compilar minha própria versão do Fermion com uma nova versão do Frida/Electron. Como posso descobrir quais prebuilds existem atualmente?
ELECTRON_TARGETS_DEFAULT e ELECTRON_TARGETS_FREEBSD, respectivamente.P: Quero revisar/alterar/atualizar as definições de tipo usadas no editor Monaco, como posso fazer isso?
node_modules/@types/frida-gum/index.d.ts.P: Por que você não tem trace estável, cara (╯°□°)╯︵ ┻━┻
hot pointer e/ou o rastreamento estiver gerando gráficos com milhares de nós, provavelmente verá a trace window ficar lenta enquanto recebe dados. Além disso, como qualquer tipo de rastreamento, isso pode causar instabilidade / travamentos / congelamentos do processo.Você pode ver um exemplo do Fermion em ação abaixo, neste caso instrumentando kernel32!ReadFile.

O Fermion possui preenchimento automático, linting e suporte a símbolos da API do Frida.

O Fermion pode se conectar a um servidor Frida para depurar aplicativos remotos usando o menu de contexto device. Em muitos casos, como na depuração via USB ou ao anexar a aplicativos móveis por meio de emuladores como genymotion, o Fermion detectará automaticamente o servidor como disponível. No entanto, também é possível especificar um servidor remoto usando uma combinação de IP e Port.

O Fermion tem suporte integrado para CALL tracing de threads.

Isso pode não fazer exatamente o que você espera. Quando você define um pointer ou uma combinação de module/Symbol, o rastreador irá anexar a esse local e, sempre que uma thread executar nesse ponto, ele começará a rastrear todas as instruções CALL que essa thread executa até retornar. Isso significa que execuções diferentes podem gerar gráficos diferentes; também significa que você pode não ver tudo o que uma função está fazendo (por exemplo, se, dentro da função, uma thread diferente for criada).

O Fermion converte esses rastreamentos em um formato Graphviz SVG usando dot, que você pode então explorar. Este é um recurso que considero útil ocasionalmente ao realizar trabalhos exploratórios (O que uma função faz? Qual é a complexidade dessa execução?). Dito isso, este é um recurso protótipo que construí sobre o Fermion e que provavelmente precisa de mais carinho para ficar mais pronto para produção.
O Fermion também possui documentação integrada para a JavaScript API do Frida. Como todo mundo, nem sempre me lembro de como tudo funciona, e ter a documentação no aplicativo elimina a necessidade de manter uma janela do navegador aberta.

Para mais detalhes sobre alterações específicas de versão, consulte o changelog.
Se você integrar o Fermion ao seu fluxo de trabalho e achá-lo útil, encorajo você a fazer pull requests, enviar relatórios de bugs e pedir recursos para melhorar o aplicativo. Não sou exatamente um desenvolvedor Node, então tenho certeza de que as pessoas encontrarão maneiras de otimizar e reformular alguns dos componentes.
Frida v15.0+.Quero apenas fazer alguns agradecimentos especiais!