
Servidor MCP estilo C2 agêntico para instrumentação Frida em Android com root e iOS com jailbreak.
Um servidor MCP com transporte HTTP streamable que executa a instrumentação dinâmica do Frida inteiramente no dispositivo — sem exigir nenhuma ferramenta no lado do cliente.
Este projeto roda diretamente em dispositivos Android com root e iOS com jailbreak, expondo o Frida como um conjunto de ferramentas acionáveis via HTTP. Qualquer cliente compatível com MCP pode se conectar a um dispositivo na rede e realizar instrumentação dinâmica sem instalar nenhuma ferramenta do Frida localmente.
Daqui em diante, o desenvolvimento tem como alvo principal o Gemini CLI e o Claude Code, já que ambos estão construindo orquestração multiagente nativa e suporte a MCP — o que está alinhado com a direção deste projeto de compor múltiplos servidores MCP (por exemplo, FridaC2MCP + Jadx-MCP) em fluxos de trabalho automatizados. O 5ire foi amplamente utilizado durante o desenvolvimento inicial e continua sendo uma ótima opção de GUI para interagir com o servidor.
Gemini CLI — registre o servidor MCP do dispositivo (substitua <DEVICE_IP> pelo endereço LAN do seu telefone):
gemini mcp add --transport http frida-c2-mcp http://<DEVICE_IP>:6767/mcp
Demonstração no Android
https://github.com/user-attachments/assets/7cee77c5-ed40-4797-b6b5-3edb5fdd03ce
Demonstração no iOS
https://github.com/user-attachments/assets/1f0fa9c4-6fd0-4dfd-a640-78c9f8a95a6b
keep_alive=True).O objetivo é o teste de segurança móvel totalmente automatizado e conduzido por agentes. Ao expor o Frida como um servidor MCP, um pentester ou um agente de IA pode inspecionar e manipular o comportamento de um aplicativo sem conexão USB direta ou acesso local ao shell após a configuração inicial. O cliente não precisa de nenhuma ferramenta do Frida — tudo roda no dispositivo alvo.
Um fluxo de trabalho típico:
Isso se estende naturalmente a configurações com vários dispositivos: execute vários telefones na mesma rede, cada um com seu próprio servidor MCP, e orquestre-os a partir de um único agente.
cli.py)Roda no Termux em Android com root. Usa o esbuild para empacotamento de scripts on-the-fly e o frida-java-bridge para instrumentação do runtime Java/Android. Embora o frida-compile esteja tecnicamente disponível via frida-tools, ele não pode ser usado no Termux porque o domínio SELinux untrusted_app do Android bloqueia os mapeamentos de memória W^X exigidos pelo compilador JIT do V8 — causando um SIGSEGV em qualquer script não trivial. O esbuild é um binário Go estaticamente linkado, sem JIT, portanto roda sem problemas em qualquer contexto SELinux.
ios.py)Roda em iOS com jailbreak rootless (testado em iPhone X, iOS 16.7.12 com palera1n). Usa o frida-compile para empacotamento de scripts e o frida-objc-bridge para instrumentação do runtime Objective-C. Node.js não é necessário no dispositivo.
A versão para iOS exigiu a compilação personalizada de uma toolchain completa de Python 3.12 para arm64, já que nenhum desses pacotes estava disponível para iOS com jailbreak rootless:
Wheels pré-compilados e o .deb do Python estão incluídos em ios_precompiled/ para que você não precise compilá-los manualmente. Consulte setup.md para instruções de instalação no iOS.
Execução no Dispositivo: Tanto o servidor quanto o cliente do Frida rodam no dispositivo alvo. O servidor MCP traduz requisições HTTP em comandos do Frida. Isso é uma mudança em relação ao modelo tradicional, em que um cliente do Frida roda em um computador separado.
Transporte HTTP Streamable: Usa HTTP streamable em vez de stdio para suportar múltiplas conexões concorrentes e orquestração de vários dispositivos.
Empacotamento de Scripts no Dispositivo: O Frida 17+ exige JavaScript empacotado. No Android, o esbuild cuida do empacotamento (ele roda em qualquer contexto SELinux sem JIT). No iOS, o frida-compile é usado com imports da bridge ObjC injetados automaticamente.
Design Centrado em Agentes: Construído para ser consumido por agentes de IA em vez de operadores humanos. A interface de ferramentas do MCP é projetada para que um LLM possa navegar autonomamente por um fluxo de trabalho completo de pentest — iniciar apps, anexar sessões, escrever e injetar hooks, ler resultados — em uma única conversa.
O FridaC2MCP é um scaffolding para um framework automatizado de pentest móvel. A ideia é compor múltiplos servidores MCP especializados — por exemplo: FridaC2MCP para instrumentação dinâmica, Jadx-MCP para análise estática — e deixar que os agentes de IA orquestrem o fluxo de trabalho completo. Descompile um APK, identifique métodos interessantes e aplique hooks neles ao vivo. Sem troca manual de ferramentas, sem copiar e colar entre terminais.
Isso combina naturalmente com o Gemini CLI e o Claude Code, que já suportam fluxos de trabalho MCP com múltiplas ferramentas nativamente. O framework não precisa implementar sua própria orquestração de agentes — ele só precisa fornecer os servidores MCP certos e deixar que os agentes existentes façam o que fazem de melhor.
iOS OpenSSL / SSL: A integração do OpenSSL no build do Python 3.12 não está totalmente correta. Isso não bloqueou o servidor MCP (que não depende de HTTPS para seu próprio transporte), mas pode ser relevante se uma dependência futura precisar de um contexto TLS funcional no dispositivo. Consulte devlog.md para detalhes.
Apenas FastMCP 2.x: O FastMCP 3.x introduziu mudanças de API que quebram compatibilidade. Android e iOS fixam a versão abaixo da 3.x. Instale via requirements-android.txt ou requirements-ios.txt — não faça upgrade para um fastmcp sem fixação de versão até que este repositório migre.
Este projeto é uma evolução em rede do FridaMCP original, criado por Daniel Nakov. Enquanto o projeto original foi pioneiro no uso do Frida como servidor MCP via stdio, o FridaC2MCP adapta esse conceito para ambientes C2 remotos e com múltiplos dispositivos, usando Streamable HTTP e o empacotamento moderno do Frida 17.
O runtime Python 3.12 para iOS é baseado no python3.12-ios-arm64 de k1tty-xz. O projeto original era voltado para jailbreaks rootful — foram necessárias modificações significativas para adaptá-lo a ambientes de jailbreak rootless (palera1n, layout /var/jb/).
Isto é uma prova de conceito. Não possui gerenciamento de sessão adequado, tratamento elegante de erros, nem qualquer forma de segurança. Toda a comunicação é não criptografada e não autenticada. Use por sua conta e risco e somente em ambientes de rede seguros e isolados.
| Pacote | Versão | Sistema de Build | Motivo |
|---|
| Python | 3.12.5 | configure + Make | Runtime base — não disponível via Procursus |
| frida-python | 17.6.0 | Meson + setuptools | Bindings principais do Frida |
| pydantic-core | 2.41.5 | maturin (Rust/PyO3) | Exigido pelo FastMCP |
| cryptography | 47.0.0.dev1 | maturin (Rust) + OpenSSL 3.x | Cadeia de dependências; exigiu correção de SIGILL para A11 |
| cffi | 2.0.1.dev0 | setuptools + libffi | Exigido pelo cryptography |
| pyyaml | 7.0.0.dev0 | setuptools + libyaml | Exigido pelas dependências do FastMCP |
| rpds-py | 0.30.0 | maturin (Rust/PyO3) | Exigido pelas dependências do FastMCP |
| lupa | 2.6 | setuptools + Lua | Embutimento de Lua |