frida-mcp-native

vsh00t/frida-mcp-native

3.2

If you are the rightful owner of frida-mcp-native and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.

Frida MCP Native is a server that leverages the native CLI of Frida to provide full access to Java and ObjC APIs on Android and iOS, bypassing the limitations introduced in Frida 17.

Tools
9
Resources
0
Prompts
0

Frida MCP Native

MCP server para Frida que usa el CLI nativo de Frida en lugar de las librerías de Python o npm.

¿Por qué?

A partir de Frida 17, el bridge de Java ya no está incluido en el runtime de GumJS. Esto afecta a:

  • python-frida (pip)
  • frida (npm/Node.js)

Sin embargo, el CLI de Frida (frida, frida-ps, etc.) sí incluye el bridge de Java para el REPL y frida-trace.

Este MCP server usa directamente los comandos CLI de Frida via subprocess, lo que permite:

  • ✅ Acceso completo a Java.* API en Android
  • ✅ Acceso completo a ObjC.* API en iOS
  • ✅ Compatible con Android 16 + Frida 17.5.1
  • ✅ Sin dependencias de python-frida o npm frida

Requisitos

  • Python 3.10+
  • Frida CLI tools instalados (pip install frida-tools o descarga desde GitHub releases)
  • frida-server corriendo en el dispositivo target

Instalación

cd frida-mcp-native
pipx install .

Uso con Claude Desktop / VS Code

Agregar a tu configuración de MCP:

{
  "mcpServers": {
    "frida-native": {
      "command": "frida-mcp-native"
    }
  }
}

Herramientas disponibles (30 tools)

📱 Dispositivos

HerramientaDescripción
list_devicesLista dispositivos disponibles
add_remote_deviceConecta a un dispositivo remoto (frida-server)
list_remote_devicesLista dispositivos remotos configurados

⚙️ Procesos

HerramientaDescripción
list_processesLista procesos en un dispositivo
list_installed_appsLista todas las apps instaladas (no solo las en ejecución)
spawn_processInicia una aplicación
kill_processTermina un proceso

📜 Scripting

HerramientaDescripción
execute_scriptEjecuta código JavaScript en un proceso (one-shot)
execute_script_spawnSpawn + script (para hooks tempranos)
create_sessionCrea una sesión interactiva para múltiples comandos
run_in_sessionEjecuta código en una sesión existente
close_sessionCierra una sesión
list_sessionsLista sesiones activas
check_java_availableVerifica si Java bridge está disponible
get_frida_versionObtiene la versión de Frida CLI

🔍 RMS Functions - Análisis de Apps (Phase 1-2)

HerramientaDescripción
get_app_env_infoObtiene rutas y directorios de la app
list_files_at_pathLista archivos en un path del dispositivo
load_classesEnumera todas las clases cargadas
load_classes_with_filterEnumera clases con filtros avanzados (regex, case-sensitive)
load_methodsObtiene métodos de clases específicas con sus firmas

🪝 RMS Functions - Hook Templates (Phase 3)

HerramientaDescripción
generate_hook_templateGenera código de hooks para clases/métodos
heap_search_templateGenera código para buscar instancias en heap

⚡ RMS Functions - Live Hooking (Phase 4)

HerramientaDescripción
hook_classes_and_methodsInstala hooks en tiempo real

📊 RMS Functions - API Monitor (Phase 5)

HerramientaDescripción
list_api_categoriesLista categorías de APIs disponibles para monitorear
api_monitorMonitorea APIs del sistema (Crypto, Network, SharedPrefs, etc.)
load_custom_api_configCarga configuración personalizada de APIs (formato RMS)

🛡️ RMS Functions - Custom Scripts Library (Phase 6)

HerramientaDescripción
list_custom_scriptsLista todos los scripts disponibles (con filtros)
run_custom_scriptEjecuta un script de la librería built-in
load_script_from_fileCarga y ejecuta cualquier archivo .js
get_script_codeObtiene el código fuente de un script

📊 Categorías de API Monitor

CategoríaAPIs Monitoreadas
Device InfoTelephonyManager, WifiInfo, Debug.isDebuggerConnected
CryptoSecretKeySpec, Cipher.doFinal
HashMessageDigest.digest/update
Base64Base64.encode/decode/encodeToString
NetworkURL.openConnection, Socket
WebViewloadUrl, evaluateJavascript, addJavascriptInterface
SharedPreferencesgetString/putString, getInt/putInt, etc.
DatabaseSQLiteDatabase execSQL/rawQuery/insert
FileSystemFileInputStream/FileOutputStream
CommandsRuntime.exec, ProcessBuilder.start
JNIRuntime.loadLibrary/load
ClipboardClipboardManager getPrimaryClip/setPrimaryClip
SMSSmsManager.sendTextMessage
LocationLocation.getLatitude/getLongitude
PermissionscheckSelfPermission

🛡️ Scripts Built-in

Android (7 scripts)

ScriptCategoríaDescripción
ssl_pinning_bypassbypassSSL Pinning universal (OkHttp3, Trustkit, TrustManager)
root_detection_bypassbypassOculta indicadores de root (Magisk, SuperSU, etc.)
intercept_cryptotracerIntercepta operaciones criptográficas (keys, algorithms)
emulator_detection_bypassbypassHace parecer emulador como dispositivo real
debugger_bypassbypassOculta debugger de anti-tampering
fingerprint_bypassbypassBypass de autenticación biométrica
flag_secure_bypassbypassPermite screenshots en pantallas protegidas

iOS (4 scripts)

ScriptCategoríaDescripción
ios_ssl_pinning_bypassbypassSSL Pinning para iOS 12-17 (libboringssl)
ios_jailbreak_bypassbypassOculta indicadores de jailbreak
ios_touch_id_bypassbypassBypass de Touch ID / Face ID
ios_keychain_dumpdumpExtrae todos los items del keychain

📝 Ejemplos de uso

Listar procesos

list_processes(device="192.168.4.220:9999", applications_only=True)

Ejecutar script con Java API

execute_script(
    device="192.168.4.220:9999",
    target="com.example.app",
    script="Java.perform(() => { console.log('Classes:', Java.enumerateLoadedClassesSync().length); })"
)

Buscar clases con regex

load_classes_with_filter(
    target="com.example.app",
    filter_pattern="Security|Crypto|Root",
    is_regex=True,
    device="192.168.4.220:9999"
)

Monitorear APIs

api_monitor(
    target="com.example.app",
    categories=["Crypto", "Network", "SharedPreferences"],
    device="192.168.4.220:9999"
)

Bypass SSL Pinning

run_custom_script(
    target="com.example.app",
    script_name="ssl_pinning_bypass",
    device="192.168.4.220:9999"
)

Bypass Root Detection

run_custom_script(
    target="com.example.app",
    script_name="root_detection_bypass",
    device="192.168.4.220:9999"
)

Cargar script personalizado

load_script_from_file(
    target="com.example.app",
    script_path="/path/to/custom_script.js",
    device="192.168.4.220:9999"
)

✅ Progreso de Implementación

FaseDescripciónEstado
Phase 1Core RMS functions (get_app_env_info, list_files, load_classes)✅ Complete
Phase 2Advanced filtering (load_classes_with_filter, load_methods)✅ Complete
Phase 3Hook templates (generate_hook_template, heap_search_template)✅ Complete
Phase 4Live hooking (hook_classes_and_methods)✅ Complete
Phase 5API Monitor (api_monitor, list_api_categories)✅ Complete
Phase 6Custom Scripts Library (11 scripts, 4 tools)✅ Complete

Total: 30 herramientas MCP + 11 scripts built-in


🔗 Links

📄 License

MIT License