get_status
Get Frida Status
Get an overview of connected devices, active sessions (with platform, script count and last activity), hooks, traces, and the most recent session detaches / process crashes (recent_detaches). Use this first to understand what is available before starting any instrumentation work, and after a session is lost to see why.
輸入參數response_format
Get help on how to use frida-mobile-mcp tools. Use this to learn about available capabilities, method hooking patterns, address notation, script kinds (classic/esm/bundle), TLS capture and example workflows. Topics: overview, hooking, tracing, memory, scripts, native, tls, mobile, examples, advanced, evasion, script_catalog, script_api, recipes.
輸入參數topicresponse_format
explore_app
Explore Mobile App
Launch a mobile app and gather comprehensive initial context including loaded classes, modules, and libraries. This is the recommended starting point for any app analysis. The app will be spawned in suspended mode, instrumented, then resumed. Returns: pid, platform, loaded modules, and filtered class list.
輸入參數devicetarget必填class_filterresponse_format
Hook a method to intercept calls with auto device/session management. Provide the app target (or a session_id of an existing session) and method pattern. Supports Java methods (Android: "com.example.Class.method"), Objective-C methods (iOS: "-[NSURLSession dataTaskWithRequest:]"), and native functions in any notation: "libssl.so!SSL_read" (module export), "libfoo.so+0x1234" or "libfoo.so+4660" (module-relative offset, as shown by Ghidra/IDA), "0x7f1234567890" (absolute address), or "!open" (global export searched across all modules). Native backtraces are reported as "module+0xoff (symbol)". Java overloads: append a signature to hook ONE overload, e.g. "com.pkg.Class.encrypt(byte[], java.lang.String)" (without one, every overload is hooked). Static-analysis findings can be passed as "evidence" instead of "method": {module, offset} (image-base-relative offset from Ghidra/IDA) or {module, address, image_base}, or {class, signature} for Java (jadx/describe_class/JVM descriptor). After hooking, use get_messages to retrieve intercepted calls.
輸入參數spawndevicemethodtargetevidencelog_argslog_retvalsession_idlog_backtraceresponse_formatinterceptor_options
trace_method
Trace Method Calls
Trace function calls matching a pattern for a specified duration. Simplified frida-trace equivalent. Supports glob patterns like "com.example.network.*" for Java, "-[NSURL*]" for ObjC, and "libssl.so!SSL_*" for native. Returns all captured invocations after the duration expires.
輸入參數devicemethod必填targetlog_argslog_retvalsession_idresponse_formatduration_secondsinterceptor_options
execute_script
Execute Custom Frida Script
Execute a custom Frida JavaScript/TypeScript script in a target process (Frida 17 agent). Provide either inline source code or a file path. Three source kinds are supported and detected automatically (override with `source_kind`): classic (non-module) JavaScript, where the `Java` and `ObjC` globals are auto-injected by platform (Java on Android, ObjC on iOS/macOS; override with `bridges`) so legacy Java.perform()/ObjC scripts keep working with their own line numbers; ES modules (import/export, JS or TS) such as `import Java from "frida-java-bridge"`, which are compiled on the host with the Frida Compiler (bridges are bundled by the imports, so `bridges` is ignored); and frida-compile bundles (source starting with the 📦 marker), which are loaded as-is. The full Frida API (Interceptor, Memory, Module, Process, NativePointer, ...) is available everywhere. Results are sent via send() and retrieved with get_messages. `timeout_ms` bounds the script's initial run (default 30000 for one-shot scripts, 0 for persistent ones); a script that overruns is interrupted, then terminated, and the call fails with SCRIPT_TIMEOUT including the partial messages. Use validate_script to check syntax/types without a device. Note: custom scripts must be explicitly enabled in config (allowCustomScripts: true).
輸入參數devicesourcetarget必填bridgesfile_pathpersistentsession_idtimeout_mssource_kindresponse_formatskip_validation
run_prebuilt_script
Run Pre-built Script
Run a pre-built Frida script from the built-in library. Call without script_name to list all available scripts. Available scripts include: ssl_pinning_bypass, root_jailbreak_bypass, class_enumeration, method_hook, crypto_monitor, network_inspector, keychain_prefs, filesystem_monitor, anti_frida_evasion.
輸入參數devicetargetoptionsscript_nameresponse_format
search_classes_and_methods
Search Classes and Methods
Search for classes and their methods by pattern in a running app. Combines class enumeration and method listing. Use regex patterns like "Login", "com\.example\.auth.*", or "NSURLSession". Returns matching classes with their methods when include_methods is true.
輸入參數limitdevicetargetpattern必填session_idinclude_methodsresponse_format
describe_class
Describe Class
Return the full shape of ONE loaded app class so you can pick an exact method overload before hooking. Android: every declared method with parameter types, return type, modifiers and a ready-to-use `signature` (e.g. "encrypt(byte[], java.lang.String)"), constructors (as "$init(...)"), fields, superclass and interfaces; searches all class loaders. iOS: selectors with Objective-C type encodings, superclass and protocols. Pass a returned signature verbatim to hook_method as evidence: {class, signature} to hook exactly that overload. The class must already be loaded; if it is not, use watch_loads or search_classes_and_methods.
輸入參數devicetargetclass_name必填session_idresponse_formatinclude_inherited
discover_crypto
Discover Crypto / Candidate Hook Targets
Find where an app actually performs cryptography (or any API family), without assuming javax.crypto. In one pass it enumerates: Java/ObjC classes whose name matches a pattern (across all class loaders), and native export symbols matching the pattern or a known crypto/TLS symbol (EVP_*, SSL_read/write, CCCrypt, RC4, AES_, mbedtls_, ...). Returns ranked candidates — app-owned classes first, then framework classes, then native symbols. Native candidates hook as-is ("module!symbol"); Java/ObjC candidates are CLASSES — pass "Class.method" to hook_method (method names are in the `java` list), or trace "Class.*". Use this before guessing a hook when the goal is "capture the key", "trace the cipher", etc.
輸入參數limitdevicetargetpatternsession_idinclude_methodsresponse_format
find_secrets_in_memory
Find Secrets in Memory (Content-Aware)
Scan live process memory for the STRUCTURE of secrets, not just names or byte patterns. Finds keys even when you never reached the code that uses them: an RC4 key schedule (256-byte permutation of 0..255, byte[] or Java int[256] — the rc4demo case), an AES key schedule (aeskeyfind-style verification, AES-128/192/256, both encryption AND decryption schedules — and it is MODE-INDEPENDENT: the same expanded key backs CBC/CTR/GCM/XTS), a ChaCha20/XChaCha20 key (located by the exact "expand 32-byte k" sigma constant, key at +16) and Salsa20 state, high-entropy 16/24/32-byte buffers (candidate symmetric keys), PEM/DER private-key headers, and JWT tokens. Raw-key-only ciphers (AES-NI with no in-memory schedule) fall back to high_entropy_key + monitor_crypto at the API boundary. Defaults to writable (heap) ranges where live keys sit. Returns candidates with a module+offset address and a hex/text preview; read the full bytes with read_memory, or hand one to generate_memory_pattern. Complements discover_crypto (name-only) and scan_memory (fixed byte-pattern only).
輸入參數limitscopedevicetargetmax_bytessession_idmin_entropyrecognizersresponse_formatmax_entropy_hits
trace_coverage
Trace Coverage (Reachability Map)
Arm a broad set of cheap entry-hooks over a target set and track which have been REACHED (covered) vs which are still COLD — the reachability signal for a drive loop. Unlike trace_method (time-boxed, logs every call), this is persistent and entry-only: it answers "what code have I NOT exercised yet, so where should I keep driving?". Scope can be a single class (all its methods), a class/package glob ("com.example.*"), a native module glob ("libfoo.so!*"), or an ObjC pattern ("-[MyClass *]"). Workflow: arm it, then alternate trigger_and_wait (drive the UI) with trace_coverage {report_only:true} to watch the cold set shrink. Each target fires at most once (first-seen), so hot methods do not flood output.
輸入參數scopedevicetargetsession_idcoverage_idmax_targetsreport_onlyresponse_format
monitor_crypto
Monitor Crypto (Wide-Net Oracle)
Cast a wide net over cryptography instead of hooking one method at a time. In a single persistent script it discovers and hooks ALL likely crypto sinks at once — app-owned Java classes whose name matches a crypto pattern (every overload of every declared method), plus the framework sinks that almost every app funnels through: javax.crypto Cipher (doFinal/init/getInstance), Mac, MessageDigest and SecretKeySpec on Android; CommonCrypto (CCCrypt, CCCryptorCreate, CC_SHA256, CC_MD5) on iOS; and native OpenSSL/BoringSSL (EVP_*Update, RC4, AES_set_encrypt_key). Every call dumps its byte[]/String key, input and output as hex, so you capture the key and plaintext WITHOUT knowing the exact method. This is persistent instrumentation (like hook_method): it returns immediately, then you drive the app and read the captured events with get_messages. Use when the goal is "grab the key / see the plaintext" and discover_crypto gave too many candidates to hook by hand.
輸入參數devicetargetpatternlog_datasession_idmax_targetsresponse_format
generate_memory_pattern
Generate Memory Pattern (Anchor + Offset)
Turn a secret you already located (e.g. from find_secrets_in_memory) into a reusable anchor pattern: a stable byte signature near the key plus the offset from it to the key. Reads a small window around the address, then derives a recognizer-aware anchor (ChaCha sigma constant, PEM/DER/JWT header, or the longest stable run adjacent to the key). Returns a scan_memory pattern to re-locate the secret by shape across restarts, plus a friTap offsets entry and an ms_agent anchor to hand to capture_tls. This finds no new secret — give it one you have.
輸入參數size必填typelabeldevicetargetaddress必填session_idcontext_bytesresponse_format
drive_coverage
Drive Coverage (Autonomous UI Loop)
Autonomously drive the UI of an already-instrumented session toward uncovered code and stop the moment a signal fires. This arms NOTHING — first arm monitor_crypto and/or trace_coverage, then call drive_coverage to tap through on-screen elements breadth-first, correlating each tap with new hook output (snapshot → tap → wait → delta, like trigger_and_wait in a loop). It stops on the first delta message that matches `stop_on` (default "crypto_event") or looks like a captured key/secret, when coverage stalls for several steps, when no untried elements remain, or at max_steps / the wall-clock cap. Supply `coverage_id` to measure the covered delta the drive produced. Use it to reach a crypto path hands-free instead of tapping manually; read the full output afterwards with get_messages.
輸入參數stop_onmax_stepssession_id必填coverage_idresponse_formatstep_timeout_ms
watch_loads
Watch Late Loads and Anti-Instrumentation Signals
Install a persistent watcher that reports what the app does AFTER attach, straight into the session message buffer. Three signal families, each toggleable: (1) native libraries (.so) loaded late (dlopen/android_dlopen_ext), observed via Frida's loader module-load notifications — no dlopen hook, so it will not destabilize the target — meaning a library that only appears after a UI action is still seen; (2) Java classes loaded late via ClassLoader.loadClass (Android only; the Java.available guard makes it a no-op elsewhere); (3) anti-instrumentation / anti-debug reads of canonical /proc locations (maps, status, task) via open/fopen. The watcher stays loaded and keeps emitting: drive the app (e.g. mobile_action), then call get_messages to read the watch_event entries. Pair with discover_crypto / hook_method once a late-loaded target shows up. Set spoof=true (needs memoryWriteEnabled) to go beyond reporting and actively scrub Frida signatures / zero TracerPid from those /proc reads; for a fuller stealth set use the anti_frida_evasion prebuilt script.
輸入參數spoofdevicetargetsession_idwatch_nativewatch_tamperwatch_classesresponse_format
read_memory
Read Process Memory
Read raw memory from a target process. Requires an active session. Address in any notation: "0x7fff12345678" (absolute), "libfoo.so+0x1234" or "libfoo.so+4660" (module-relative offset), "libssl.so!SSL_read" (module export), or "!open" / "open" (global export). Max 4MB per read. Returns hex-encoded bytes plus the resolved absolute address and module+offset (rva).
輸入參數size必填address必填session_id必填response_format
write_memory
Write Process Memory
Write raw bytes to process memory. DISABLED by default for safety - enable via config (memoryWriteEnabled: true). Provide hex-encoded data. Address in any notation: "0x7fff12345678" (absolute), "libfoo.so+0x1234" or "libfoo.so+4660" (module-relative offset), "libssl.so!SSL_read" (module export), or "!open" / "open" (global export).
輸入參數data必填address必填session_id必填response_format
scan_memory
Scan Process Memory
Scan process memory for a byte pattern. Pattern format: "48 89 5c 24 ?? 57" where ?? is a wildcard. Optionally limit scan to a specific module.
輸入參數modulepattern必填session_id必填response_format
bypass_ssl_pinning
Bypass SSL Pinning
One-click SSL certificate pinning bypass for the target app. Auto-detects platform (Android/iOS) and applies the appropriate bypass techniques. On Android: hooks TrustManager, OkHttp CertificatePinner, and Conscrypt. On iOS: hooks SecTrust, ATS, and BoringSSL verification. Returns which bypass methods were successfully installed.
輸入參數devicetargetsession_idresponse_format
capture_tls
Capture TLS (friTap)
Capture TLS session keys (NSS key log format) and decrypted plaintext from the target using the friTap agent (OpenSSL/BoringSSL, Conscrypt, NSS, GnuTLS, wolfSSL, mbedTLS, Secure Transport, ...). By default the app is spawned suspended, friTap is loaded, then the app is resumed so early handshakes are caught. Key log lines are written to keylog_path (usable with Wireshark tls.keylog_file) and plaintext records are buffered as fritap_datalog messages for get_messages (requires full_capture). Needs the friTap agent bundle: pip install friTap, FRITAP_AGENT_PATH, or allow_download.
輸入參數spawndevicetarget必填offsetspatternsanti_rootpcap_pathkeylog_pathfull_captureallow_downloadresponse_formatduration_seconds
get_messages
Get Script Messages
Retrieve buffered messages from active scripts and hooks. Messages include hook invocations, trace hits, script output (send() calls), and errors. Use "since" for pagination to get only new messages.
輸入參數limitsincescript_idsession_id必填response_format
stop_instrumentation
Stop Instrumentation
Clean up all hooks, scripts, and traces on a target. The "undo everything" tool. Detaches the Frida session and frees all resources. Use when you are done analyzing an app or want to start fresh.
輸入參數alltargetsession_idresponse_format
unload_script
Unload Script
Unload a single script (hook, trace or custom script) from a session while keeping the session attached. Use the script_id returned by hook_method, trace_method, execute_script or run_prebuilt_script. Hooks and traces that belong to the script are removed from the server state. Use stop_instrumentation to tear down a whole session instead.
輸入參數script_id必填session_id必填response_format
mobile_action
Mobile UI Action
Gateway to mobile-mcp UI automation tools. Perform screenshots, taps, swipes, text input, app management and more. Common actions: mobile_take_screenshot, mobile_list_elements_on_screen, mobile_click_on_screen_at_coordinates (params: {x, y}), mobile_swipe_on_screen (params: {direction}), mobile_type_keys (params: {text}), mobile_launch_app (params: {appId}), mobile_list_apps. Call without action to see all available actions.
輸入參數actionparamssession_idresponse_format
trigger_and_wait
Trigger and Wait for Instrumentation
Correlate a UI action with instrumentation output in one round-trip: optionally perform a mobile_action (tap/launch/type) on the session's device, then block until at least `expect_messages` new messages/hook hits arrive (or timeout). Returns exactly the messages the trigger produced and which hooks fired. This is how you confirm "this tap ran the hooked code" — or learn "nothing fired, the hypothesis is wrong" — instead of tapping blindly and polling get_messages. Install hooks first (hook_method / discover_crypto → hook_method), then trigger_and_wait.
輸入參數actionparamssession_id必填timeout_msexpect_messagesresponse_format
detect_app_technologies
Detect App Technologies
Detect what libraries, frameworks, and security mechanisms an app uses. Returns structured results with recommended script targets. Run this before choosing which pre-built scripts to use.
輸入參數devicetargetsession_idresponse_format
validate_script
Validate Frida Script
Check a Frida script for syntax, type and Frida 17 API problems without a device. Use it before execute_script. Classic (non-module) scripts get a JavaScript syntax check plus a lint for APIs removed in Frida 17 (static Module/Memory helpers, *Sync enumerators); referencing them throws at runtime, so they make the result not ok. ES module scripts (import/export) are compiled with the Frida Compiler: strict (default) runs a full TypeScript type check; plain JavaScript is only syntax-checked unless language is "ts". frida-compile bundles (source starting with the 📦 marker) are accepted as-is. Provide either inline source or a file path.
輸入參數sourcestrictlanguageplatformfile_pathresponse_format
search_recipes
Search Recipe Library
Search the purpose-indexed library of ready-to-run classic-JS Frida recipes (custom Java crypto-key capture, standard javax.crypto key/IV, native export hook, JNI RegisterNatives discovery, custom-classloader enumeration, intent/deeplink trace, WebView bridge, iOS Keychain). Returns ranked recipes with their classic-JS source and usage notes; adapt the source and run it with execute_script. An empty query lists the whole library.
輸入參數limitqueryplatforminclude_sourceresponse_format
save_script
Save Frida Script
Save a Frida script to the local library (~/.config/frida-mobile-mcp/scripts/) so it can be re-run later with run_saved_script or shared with export_script. Stores the raw source as <name>.js plus a <name>.json metadata file (sha256, size, created timestamp, description). Names are restricted to letters, digits, underscores and hyphens. Refuses to overwrite an existing script unless overwrite is true. Requires allowCustomScripts to be enabled in config.
輸入參數name必填source必填overwritedescriptionresponse_format
list_saved_scripts
List Saved Frida Scripts
List the Frida scripts saved in the local library (~/.config/frida-mobile-mcp/scripts/) with their description, creation time and size. Returns an empty list when nothing has been saved yet. No device is required.
輸入參數response_format
run_saved_script
Run Saved Frida Script
Load a script previously saved with save_script into a target process. Resolves (or reuses) a session the same way execute_script does and runs the stored source as a custom agent: classic JavaScript gets the Java/ObjC bridges injected by platform, ES modules are compiled with the Frida Compiler, and frida-compile bundles are loaded as-is. Provide a target (app id, process name or PID) or an existing session_id. Requires allowCustomScripts to be enabled in config.
輸入參數name必填devicetargetpersistentsession_idresponse_format
export_script
Export Standalone Frida Script
Turn a Frida script into a STANDALONE classic .js file that the plain frida / frida-tools 17 CLI can run with `frida -U -f <package> -l file.js`, without this MCP server. The output is a header comment + the frida-mobile-mcp preamble helpers + the script body. Provide exactly one of source (inline) or name (a saved script). It does NOT bundle the Java/ObjC bridges (the Frida 17 CLI injects those) and does NOT emit TypeScript. With out_path the file is written and its path returned; otherwise the text is returned inline. This tool only transforms text, so it does not require allowCustomScripts.
輸入參數namesourcepackageout_pathplatformresponse_format
Enumerate all Frida-visible devices including local, USB, and remote devices. Equivalent to frida-ls-devices CLI command.
輸入參數response_format
select_device
Select Device
Explicitly select the active Frida device for subsequent operations.
輸入參數hosttypedevice_idresponse_format
get_device_info
Get Device Info
Get detailed information about a device including OS version, architecture, and system parameters.
輸入參數device_idresponse_format
list_processes
List Processes
List running processes on the target device. Equivalent to frida-ps CLI command.
輸入參數device_idresponse_format
list_applications
List Applications
List installed and running applications on the target device.
輸入參數device_idresponse_format
get_frontmost_application
Get Frontmost Application
Get the currently foreground application on the device.
輸入參數device_idresponse_format
spawn_process
Spawn Process
Spawn a new process in suspended state for early instrumentation. The process will be paused until resume_process is called.
輸入參數deviceprogram必填response_format
attach_process
Attach to Process
Attach to an already running process by PID or name.
輸入參數devicetarget必填response_format
resume_process
Resume Process
Resume a suspended process (after spawn_process).
輸入參數pid必填deviceresponse_format
Kill a process on the target device.
輸入參數pid必填deviceresponse_format
detach_session
Detach Session
Detach from a specific Frida session, unloading all scripts.
輸入參數session_id必填response_format
Enable, disable, or list device-wide spawn gating. When enabled, every newly spawned process (including app-launched child/isolated processes that often run RASP/anti-Frida checks) is held suspended until released. Use "list" to see pending spawns and children, then attach_process + hook_method, and resume_process to release each by PID.
輸入參數action必填deviceresponse_format
Enable or disable child gating on an existing session. When enabled, processes forked/exec'd by the instrumented process are held so they can be instrumented too (e.g. an app that moves detection into a child process). Requires device-wide spawn gating to catch the held children; list them with spawn_gating action="list".
輸入參數enabledsession_id必填response_format
eternalize_script
Eternalize Script
Make a loaded script survive session detach: frida pins it in the target so it keeps running after we detach (or the host exits). Trade-off — once eternalized the script can no longer send messages back, be unloaded, or be inspected; it is fire-and-forget persistence. Use it to leave a bypass/monitor running while you free the session. Give the session_id and the script_id returned by hook_method / execute_script / watch_loads.
輸入參數script_id必填session_id必填response_format
list_sessions
List Sessions
List all active Frida sessions managed by this server.
輸入參數response_format
enumerate_modules
Enumerate Modules
List loaded modules (shared libraries) in the target process with name, base, end (base+size), size and path. Optional case-insensitive regex `filter` matches against name or path. Use base/end to rebase a Ghidra/IDA project; Addresses are absolute runtime pointers; subtract the module base to get the Ghidra/IDA offset (or use resolve_address with a "module+0xoff" target).
輸入參數filtersession_id必填response_format
enumerate_exports
Enumerate Module Exports
List exports (functions and variables) of a specific module, paginated with offset/limit. Hook results with hook_method using "module!name". Addresses are absolute runtime pointers; subtract the module base to get the Ghidra/IDA offset (or use resolve_address with a "module+0xoff" target).
輸入參數limitoffsetsession_id必填module_name必填response_format
enumerate_imports
Enumerate Module Imports
List imports of a specific module (functions it calls in other libraries), paginated with offset/limit. Each entry carries the providing `module` when known, so "module!name" can be hooked directly. Addresses are absolute runtime pointers; subtract the module base to get the Ghidra/IDA offset (or use resolve_address with a "module+0xoff" target).
輸入參數limitoffsetsession_id必填module_name必填response_format
enumerate_symbols
Enumerate Module Symbols
List symbols (including non-exported/debug symbols) of a specific module. Only available on Linux, Android, iOS and macOS. Filtering (case-insensitive regex on the symbol name) and offset/limit paging happen inside the agent, so large symbol tables stay cheap. Addresses are absolute runtime pointers; subtract the module base to get the Ghidra/IDA offset (or use resolve_address with a "module+0xoff" target).
輸入參數limitfilteroffsetsession_id必填module_name必填response_format
hook_function
Hook Function (Low-Level)
Low-level hook with custom onEnter/onLeave JavaScript handlers. For advanced use when hook_method does not provide enough control. Custom handler bodies require allowCustomScripts: true in config; without them the hook sends default enter/leave events. Handler bodies are compiled as functions (new Function) inside the agent: `this` is the Interceptor invocation context (this.context, this.returnAddress, this.threadId, and any fields you set in on_enter are visible in on_leave). Java/ObjC globals are available (auto-injected by platform). A static-analysis finding can be passed as evidence {module, offset} or {module, address, image_base} instead of target.
輸入參數targetevidenceon_enteron_leavesession_id必填response_formatinterceptor_options
unhook_function
Unhook Function
Remove a specific hook by its hook ID.
輸入參數hook_id必填response_format
resolve_address
Resolve Native Address
Translate between absolute process addresses and static-analysis coordinates. Give "0x7f..." to get module+0xoffset (+ nearest symbol); give "libfoo.so+0x1234" or "libfoo.so!func" to get the absolute runtime address. Use it to hand addresses between Frida and Ghidra/IDA.
輸入參數target必填session_id必填response_format
analyze_native_function
Analyze Native Function
Static-style analysis of a native function at runtime: function range (Process.findFunctionRange), basic blocks and edges (Frida 17.12+ ControlFlowGraph; falls back to linear disassembly until the first return and says so in `limitations`), and the first instructions. All addresses are reported as absolute and as module+0xoffset for cross-referencing with Ghidra/IDA.
輸入參數target必填max_blockssession_id必填response_formatmax_instructions
dump_module_memory
Dump Module Memory
Dump a loaded module from process memory to a file on the host (e.g. an unpacked/decrypted library). The file is laid out base-relative: file offset 0 is the module base, readable ranges are copied in 1 MiB chunks, unreadable gaps are zero-filled, so it can be imported into Ghidra/IDA as a raw binary at the returned `base`. out_path must be absolute and inside the current directory, the OS temp directory or ~/.config/frida-mobile-mcp/dumps.
輸入參數out_path必填max_bytessession_id必填module_name必填response_format
List the threads of the target process (id, name, state, current pc as module+0xoffset). With backtraces: true each thread also gets a symbolised backtrace (up to 8 frames) captured from its register context.
輸入參數backtracessession_id必填response_format
frida_server_status
frida-server Status
Report whether frida-server is running on an Android device (via adb): its PIDs, the device CPU ABI, the matching frida release arch, and the exact GitHub .xz asset URL to download for the installed frida-node version.
輸入參數portdeviceprocess_nameresponse_format
frida_server_install
Install frida-server
Push a local frida-server binary to an Android device and make it executable (adb push + chmod 755). Download and decompress the correct .xz for the device ABI first (frida_server_status gives the asset URL).
輸入參數deviceoverwritebinary_path必填remote_pathresponse_format
frida_server_start
Start frida-server
Start frida-server detached on an Android device (adb shell, daemonized with -D), optionally via su. Supports a custom listen address/port and a renamed binary path for stealth setups, then confirms the server came up.
輸入參數portdeviceuse_suextra_argsremote_pathprocess_namelisten_addressresponse_format
frida_server_stop
Stop frida-server
Stop frida-server on an Android device by sending a signal to the matching process (adb shell pkill, optionally via su), then report any remaining PIDs.
輸入參數devicesignaluse_suprocess_nameresponse_format
Run an arbitrary shell command on an Android device via `adb shell`. DISABLED by default: arbitrary command execution must be enabled with allowAdbShell (config) or FRIDA_MCP_ALLOW_ADB_SHELL=1. Enforces allowedDevices.
輸入參數devicecommand必填timeout_msresponse_format
Dump the last N lines of the Android logcat (one-shot, `adb logcat -t N`), optionally filtered by tag:priority specs, or clear the buffer. Useful for correlating app log output with instrumentation events.
輸入參數clearlinesdevicefiltersresponse_format
Pull a file from an Android device to the host (`adb pull`). Enforces allowedDevices.
輸入參數devicelocal_path必填remote_path必填response_format
Push a file from the host to an Android device (`adb push`). Enforces allowedDevices.
輸入參數devicelocal_path必填remote_path必填response_format
Manage adb port forwards (`adb forward`): add a local->remote forward, remove one, or list them. Use it to reach a frida-server on a non-default device port (e.g. local "tcp:27042" -> remote "tcp:12345").
輸入參數listlocaldeviceremoteremoveresponse_format
inject_library
Inject Native Library
Inject a native agent library (.so/.dylib) from the host into a target process via Frida's injector, independent of the JS engine — the parity path for a prebuilt Frida gadget/agent or a custom .so. Runs arbitrary native code in the target, so it needs allowNativeInjection (a capability separate from allowCustomScripts). The library must match the device architecture (arm64-v8a etc.); its optional exported entrypoint is called with the data string. Returns the frida injectee id.
輸入參數datadevicetarget必填entrypointlibrary_path必填response_format