No entries match these filters. Clear filters
Frida 17.22.1 adds ProbeListener interface to C++ bindings for arbitrary instruction probes
Frida 17.22.0 adds frida-compile --library for npm packages and extends Swift ApiResolver to Linux/Windows.
└──▷ USE IT
Build a distributable Frida pattern package as an npm module with a single command.
shell
copy
frida-compile --library lib/index.ts -o dist
frida-compile gains the --library flag to build TypeScript/Pattern packages for distribution via npm, replacing manual tsc runs.Swift ApiResolver now supports Linux by detecting the core library and metadata sections per platform. Swift ApiResolver now supports Windows, handling swiftrt.obj zeroed markers and UCRT free() . New Compiler.build_library() and Compiler.watch_library() APIs in frida-core for library compilation.
4 details in Everything
Frida 17.20 adds ImHex-pattern (.hexpat) support for typesafe struct views, scanning, and host-side decoding via PatternCompiler.
Adds ImHex pattern language (.hexpat / .pat) to Frida.Compiler for in-agent struct binding Adds #pragma abi native directive to control C-aligned struct layout in patterns Adds static pattern() method on generated types for use with Memory.scanSync() Adds parse() export from pattern modules for snapshot decoding of complex layouts Adds PatternCompiler API in frida-core for host-side pattern compilation and decoding
+1 more
show less
Updates LanguageServer to serve .hexpat/.pat files with diagnostics and completion
6 details in Everything
Frida 17.21.0 adds types:, protocols:, and conformances: queries to Swift ApiResolver and enables file-based PatternCompiler imports.
Adds types: query support to the Swift ApiResolver, matching nominal types by full name Adds protocols: query support to the Swift ApiResolver, matching protocols by full name Adds conformances: query support to the Swift ApiResolver, matching protocol conformances by type and protocol name Reshapes the PatternCompiler API to accept a file path for pattern compilation, enabling inter-pattern imports on the host
4 details in Everything
Frida 17.19.0 ships PS5 support and adds a barebone WinNT ARM64 ARM64 The 64-bit instruction set architecture from ARM Holdings, used in modern mobile chips, Apple Silicon, and cloud server CPUs; tools target it to run natively on those platforms without emulation overhead. agent︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄
└──▷ GET THIS VERSION
copy
$ git clone --branch 17.19.0 https://github.com/frida/frida.git
$ git checkout 17.19.0
Adds prebuilt Frida binaries for the PlayStation 5 (PS5) platform.︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄ Adds a barebone WinNT ARM64 agent, now included in CI-shipped assets.
2 details in Everything
Frida 17.18.0 adds kernel instrumentation via kext/BTF BTF BPF Type Format, a metadata format in the Linux kernel that embeds type and debug information directly into eBPF programs, letting cyber tools inspect kernel structures safely without kernel headers at runtime. , Native API registry, Language Server API, and Barebone device APIs.
/dev/frida character device enables loading the XNU agent as a macOS kernel extension for direct kernel instrumentationBtf namespace exposes kernel BTF type information (structs, enums, constants) to Frida scriptsGumJS native API registry allows embedders to expose custom native function namespaces independent of the JS runtimeNew Frida.LanguageServer API implements the Language Server Protocol Language Server Protocol Language Server Protocol, the standard way editors get code intelligence such as completions, go-to-definition and errors from a separate per-language server. Coding agents use it to understand code. for embedded editor integration
4 details in Everything
Frida 17.17.0 adds Linux kernel module support for the Barebone agent
└──▷ TRY IT
Run frida-server on the device after configuring Barebone to use the kernel module’s transport.
copy
$ frida-server --device=barebone
Load frida-agent.ko on the Linux device whose exact kernel build was used to compile it.
copy
$ adb shell su -c 'insmod /data/local/tmp/frida-agent.ko'
Adds support for running the existing Barebone agent as a Linux .ko kernel module, with a /dev/frida character-device transport. The kernel-resident agent can be reached through frida-server --device=barebone on the device.
2 details in Everything
Frida 17.16.0 adds spawn-gating scoping and watchdog, frida.aio for async Python, and PACIA/MOVK instruction emitters.
Makes system-wide Linux eBPF eBPF A Linux technology for running verified programs inside the kernel without changing its source. Tools use it to observe processes, enforce rules and process network traffic. spawn gating opt-in through SpawnGatingScope; a shared watchdog disables gating and resumes processes left suspended too long. Adds the spawn_gating_disabled(reason) signal on HostSession (bubbled to Device ) so clients can detect when the spawn-gating watchdog intervened. Introduces the frida.aio package in the Python bindings for asynchronous operations, generated automatically from Frida’s GIR. Adds PACIA and MOVK instruction emitters to the arm64 writer, enabling inline pointer signing and ptrauth discriminator generation.
4 details in Everything
Frida 17.15.4 adds Checksum copy/peek methods and Capstone 6 support
gumjs: Add Checksum copy and peek methods.defs: Add support for Capstone 6.
2 details in Everything
Frida 17.15.0 adds Process.getThreadById() and getFunctionRange() , and improves Darwin dyld and Linux musl linker integration.
Adds Process.getThreadById() to gumjs for looking up a single thread by ID without enumeration Adds Process.getFunctionRange() convenience wrapper that throws on error instead of returning null
2 details in Everything
Adds Script.interrupt() and Script.terminate() APIs for controlling runaway scripts in Frida 17.14.0
Script.interrupt() aborts executing JavaScript while leaving the script loaded and ready to run again.Script.terminate() interrupts execution and unloads the script, including stuck or infinite operations. These operations are unsupported in Barebone sessions.Exposes process argv from enumerate_processes() at metadata scope.
3 details in Everything
Frida 17.13.0 adds process argv access, a Swift typed accessor, ControlFlowGraph.toJSON() , and source locations in generated API documentation.
argv is now included in enumerated process parameters across Windows, macOS, Linux, and FreeBSD when requesting full scope.The swift module exposes a typed accessor for the argv process parameter. ControlFlowGraph.toJSON() (and related classes) now supports JSON serialization via JSON.stringify() .GIR synthesized documentation now includes filename and line information to trace generated API docs back to their source.
4 details in Everything
Frida 17.12.0 adds native Control-Flow Graph analysis in Gum/GumJS and Process.findFunctionRange()
gum now includes a native control-flow graph module with resolver-based construction, Cooper-Harvey-Kennedy dominators, and nearest-first dominating site enumeration.GumJS exposes ControlFlowGraph and BasicBlock objects for analyzing function structures.Adds Process.find_function_range() in Gum and Process.findFunctionRange() in GumJS to locate function ranges in stripped binaries without symbols.
3 details in Everything
Frida 17.11.0 adds ptrace-free injection fallback, in-kernel instrumentation for Virtualization framework, and Gum export sizes
/proc/$pid/mem fallback enables Frida to inject into targets on Linux whose ptrace slot is already owned by another tracer, working on x86, x86_64, and arm64.VZ kernel GDB stub client and physical-memory bridge allow in-kernel instrumentation of Virtualization framework guests via the Barebone backend.Intra-kernel hostlink over vsock brings NativeCallback, Interceptor, and Memory.patchCode() to kernel code without relying on BRK callbacks.Interceptor and Stalker are now functional in the kernel for barebone targets, with writable-remap support and TLB flushing.Gum's enumerateExports() now includes export sizes via the size field in GumExportDetails reports st_size or -1.
+2 more
show less
Linux protection queries use the PROCMAP_QUERY ioctl on Linux 6.11+ to speed up memory analysis. Vala bindings expose X86Writer so Vala code can generate x86 and x86_64 instructions, mirroring Arm64Writer.
7 details in Everything
Frida 17.10.1 adds Memory.findPointers() with SIMD acceleration for finding pointer-aligned words.
gumjs: Expose Memory.findPointers() , backed by the new gum_memory_find_pointers() helper. This provides a focused, SIMD-accelerated way to find pointer-aligned words matching one or more values, across one or more ranges. memory: Add gum_memory_find_pointers() , with parallel range tiling and per-architecture kernels such as SSE2 and NEON.
2 details in Everything
Frida 17.10.0 adds composable Interceptor options via SessionOptions and JavaScript APIs, new UnwindBroker, and stealth improvements.
SessionOptions exposes agent feature toggles for exceptor mode, unwind broker, exit monitor, and thread suspend monitor, plus linker notifier offsets. Replace old attach flags in the Interceptor API with composable option structs covering scratch register selection, relocation policy, replacement data, and listener data Expose custom redirect emitters and default Interceptor options through QuickJS and V8 runtimes to make hook sites less predictable Add support for 32-bit ARM ARM A family of RISC processor architectures designed by Arm Holdings and licensed to chip makers worldwide; tools target it to run natively on mobile, embedded, and increasingly server and desktop hardware. EH ABI in the new UnwindBroker, including ARM-specific personality and exidx handling Enable stalker-x86 unwind support on Android, matching the arm64 backend
5 details in Everything
└──▷ BREAKING ON UPGRADE
! The old attach flags in the Interceptor API are replaced by composable option structs
Frida 17.9.8 adds memory protection option to Memory.alloc() and fixes struct returns in GumJS NativeCallback.
Adds optional protection field to Memory.alloc() options object
1 detail in Everything
Frida 17.9.2 adds --with-apple-min-os, WebRequestHandler API, and Swift Linux bindings
Adds --with-apple-min-os configure flag to raise the Apple deployment-target floor Adds WebRequestHandler, WebRequest, WebResponse, endpoint request-handler support, and PortalService extra-endpoint registration. Adds Swift support on Linux via pkg-config, including bindings for WebRequestHandler, PortalService endpoints, DeviceChange async streams, and broader Variant unmarshalling
3 details in Everything
Frida 17.9.0 adds override_option() , eBPF eBPF A Linux technology for running verified programs inside the kernel without changing its source. Tools use it to observe processes, enforce rules and process network traffic. spawn gater, XCFramework packaging, and control-endpoint config.
Adds override_option() to configure backend-specific options when creating a host session; an established session picks up changes on its next connection. Adds the control-endpoint backend option (default tcp:27042) to Fruity and Droidy layers Adds an eBPF-based spawn gater implementation on Linux Adds a tool to package devkits as XCFrameworks Adds a spawn gating example in the Python module
5 details in Everything
Frida 17.8.0 adds frida-strace syscall tracer with CoreProfile ktrace support on iOS and eBPF eBPF A Linux technology for running verified programs inside the kernel without changing its source. Tools use it to observe processes, enforce rules and process network traffic. backend improvements on Linux.
└──▷ TRY IT
Trace syscalls for a specific Android app package to detect RASP artifacts.
copy
$ frida-strace -U -f com.dexprotector.detector.envchecks
Adds frida-strace CLI tool for observing system calls inside a target process Supports repeated -f flags to spawn multiple programs, combined with -p $pid or -u $username; targeting by user is not supported on iOS.
2 details in Everything
Frida 17.7.0 adds eBPF eBPF A Linux technology for running verified programs inside the kernel without changing its source. Tools use it to observe processes, enforce rules and process network traffic. SyscallTracer service, droidy remote service support, and macOS 26 dyld compatibility
Adds a new eBPF-powered SyscallTracer service on Linux with groundwork for future activity sampling. Adds droidy support for consuming remote services and implementing services locally.
2 details in Everything
Frida 17.6.0 adds FORCE attach flag, removes Zygote injection for Android stability and reworks SELinux SELinux A mandatory access control system built into the Linux kernel, maintained by the NSA and Red Hat, that enforces fine-grained policies restricting what processes can access, even if they run as root. support.
Adds the Interceptor FORCE attach flag for inline hooking functions too small to patch safely; it may overwrite bytes past the function’s end and requires care. Generalizes frida-helper.dex from non-rooted Android to the Linux and Droidy backends, adding activity launch and broadcast requests while eliminating internal system_server injection and the frida-java-bridge dependency.
2 details in Everything
Frida 17.5.2 adds FridaCore Swift bindings via xcframework and improves Windows export accuracy.
Adds FridaCore Swift package with bindings for AuthenticationService, PortalService, EndpointParameters, PackageManager, and Compiler , plus minimal GLib bindings in a sub-namespace Publishes frida-core releases as .xcframework files for direct integration into Xcode projects
2 details in Everything
└──▷ BREAKING ON UPGRADE
! The Swift module previously named Frida_Private has been renamed to FridaCore
Frida 17.5.0 adds CompilerOptions platform/externals and previews revamped async/await Swift bindings available by building from source.
Adds platform and externals options to CompilerOptions for tailored output via frida-compile or Frida.Compiler. Revamps experimental Swift bindings around async/await and DeviceListModel for SwiftUI; users must clone and build from main because this release includes no frida-swift prebuilt binaries. Darwin: AllImageInfos now reports the Dyld Shared Cache UUID UUID A universally unique identifier, usually a 128-bit value used to identify an object across systems. It is designed to make independently generated identifiers unlikely to collide. and slide.
3 details in Everything
Frida 17.4.2 adds get_frontmost_application() to Simmy and fixes hardware.product reporting
Adds get_frontmost_application() to the Simmy backend for identifying the active foreground application
1 detail in Everything
Frida 17.4.1 adds FreeBSD PTY support and Android ArtMethod fixes
Adds PTY (pseudo-terminal) support on FreeBSD so spawn/attach operations requiring a controlling terminal work out of the box
1 detail in Everything
Frida 17.4.0 adds Simulator backend (simmy), early dyld_sim instrumentation, cross-backend host-session, StdioPipes, and VariantReader.list_members()
simmy backend: Spawn apps, instrument processes, and interact with Apple simulators via CoreSimulator.frameworkdarwin: Early instrumentation of dyld_sim, enabling script attachment before the dynamic loader finishes bootstrappinghost-session: Cross-backend communication, allowing devices discovered through one backend to be available to internals in anotherbase: StdioPipes and FileDescriptor helpers for Darwin, Linux, and FreeBSD backendsvalue: New VariantReader.list_members() helper for introspection
5 details in Everything
Frida 17.3.1 improves CoreDevice tunnel performance for Fruit tools
Frida 17.3.0 adds XNU injection support and exposes CModule symbols.
Adds basic XNU injection support in the Barebone backend, tested on iOS 14.0 in QEMU QEMU An open-source machine emulator and virtualizer that lets software run a guest OS or CPU architecture on a different host, giving cyber tools an isolated, inspectable execution environment without dedicated hardware. . Exposes underscore-prefixed CModule symbols so they are usable from Frida scripts.
2 details in Everything
Frida 17.2.15 adds iOS 26 injection via dual-mapping, visionOS platform support, FreeBSD x86 32-bit, and uint type in NativeFunction.
Support iOS 26 through dual-mapping, enabling injection on palera1n Add preliminary visionOS platform support Bring x86 (32-bit) support to FreeBSD Wire up NEON register access on ARM ARM A family of RISC processor architectures designed by Arm Holdings and licensed to chip makers worldwide; tools target it to run natively on mobile, embedded, and increasingly server and desktop hardware. /arm64 for Linux and Darwin Adds uint support to NativeFunction / NativeCallback in the Barebone backend.
5 details in Everything
Frida 17.2.14 adds Module.get_version() and Module#version for source version inspection
Module.get_version() virtual function for native module interfacesModule.get_version() on Darwin (macOS/iOS) exposing LC_SOURCE_VERSIONModule#version property exposed in GumJS/JavaScript
3 details in Everything
Frida 17.2.13 adds support for implementing DebugSymbol APIs in the Barebone backend.
Frida 17.2.12 adds bare-metal support, new Buffer API methods, optional symbol prefixing in devkit, and armv6kz build support
Added preliminary support for running Gum without an operating system to enable Frida on bare-metal targets Added Memory.protect() API to change memory protection on bare-metal targets Added new methods to Buffer API: read_bytes() , write_bytes() , write_int64() , write_uint32() , write_int32() , write_uint16() , write_int16() , write_uint8() , write_int8() Added support for ‘armv6kz-‘ prefixed toolchains in the build system
4 details in Everything
Preliminary iOS 26 support with auto code_signing for enforced debugger mappings
Adds preliminary iOS 26 support for gadget injection where debugger mappings are enforced Sets code_signing to required in the gadget configuration when target memory protection cannot be flipped
2 details in Everything
Frida 17.2.7 enhances its package manager with better npm compatibility, including new role and omits options for the install() function to control dependency types and exclusions.
Adds role option to package-manager's install() method for equivalent of npm's --save-* switches Adds omits option to package-manager's install() method for equivalent of npm's --omit=x switch
2 details in Everything
Frida 17.2.0 adds frida-pm CLI and PackageManager API for discovering and installing Frida-specific packages.
frida-pm search command with keywords:frida-gum filter to find Frida-specific packages without Node.js dependency.frida-pm install <pkg> subcommand to install packages in one command, working without Node.js installed.New frida-core.h API surface: frida_package_manager_new() , frida_package_install_options_new() , and frida_package_manager_install_sync() for C-based package management.
3 details in Everything
Frida 17.1.2 improves frida-node signal handling and runtime stability.
Adds optional DeviceManager constructor parameter in frida-core for cleaner initialization Improves frida-node GVariant signal handler parameters and exception propagation
2 details in Everything
Frida 17 unbundles runtime bridges and removes legacy APIs, directing module introspection through Module instances and global export lookup.
Bundles frida-{objc,swift,java}-bridge directly into the frida REPL and frida-trace agents via frida-tools 14.0.0 Use Process.getModuleByName() to obtain a Module instance before accessing its introspection methods. Adds Module.getGlobalExportByName() to access global exports without a specific module handle Removes legacy static Module methods: Module.ensureInitialized() , Module.findBaseAddress() , Module.getBaseAddress() , Module.findExportByName() , Module.getExportByName() , Module.findSymbolByName() , Module.getSymbolByName() , and Module.enumerateExports()
4 details in Everything
└──▷ BREAKING ON UPGRADE
! The legacy static Module methods (ensureInitialized, findBaseAddress, getBaseAddress, findExportByName, getExportByName, findSymbolByName, getSymbolByName) and Module.enumerateExports() are removed; code using them will fail.! Legacy callback-style enumeration APIs and their Sync-suffixed counterparts are removed; modern synchronous enumeration methods still return arrays.
Frida Node.js bindings rewritten with Node-API and auto-generation in 16.7.15
Rewrites Node.js bindings using Node-API, so one binary per OS/architecture/libc combination supports modern Node.js, Electron, and nw.js versions. Enables auto-generated Node.js API bindings that reflect frida-core changes instantly.
2 details in Everything
Frida 16.7.1 improves ARM32 Thumb code generation and scales to more ADB ADB Android Debug Bridge, a command-line tool maintained by Google that lets a host machine communicate with an Android device over USB or TCP, giving cyber tools shell access, file transfer, and app control. devices.
Increases ADB message size limit in droidy to support more than ~8 connected devices
1 detail in Everything
Frida 16.7.0 adds thread/module observers and JS Profiler/Sampler APIs for dynamic instrumentation.
Introduces Process.attachThreadObserver() API to monitor thread creation, termination, and renaming events Adds Process.attachModuleObserver() API to detect module loading and unloading with synchronous callbacks Exposes Profiler and Sampler classes in JavaScript for worst-case function profiling and metric sampling Introduces six new sampler implementations: CycleSampler, BusyCycleSampler, WallClockSampler, UserTimeSampler, MallocCountSampler, CallCountSampler
4 details in Everything
Frida 16.6.4 revives ARM ARM A family of RISC processor architectures designed by Arm Holdings and licensed to chip makers worldwide; tools target it to run natively on mobile, embedded, and increasingly server and desktop hardware. BE8 support and improves module loading stability.
linux: Restores support for big-endian ARM (BE8) systems.
1 detail in Everything
Frida 16.6.0 adds findSymbolByName() /getSymbolByName(), native instance Module APIs, and .gnu_debugdata fallback for symbol resolution.
gumjs: Adds findSymbolByName() and getSymbolByName() methods for direct native symbol lookup by namemodule / ncm: Turns Module APIs into instance methods to allow multiple queries efficiently (e.g., no longer need to pass module path string to every query)elf-module: Falls back to .gnu_debugdata section parsing when in-memory symbols are missing, decompressing the embedded ELF ELF The standard binary format for executables, shared libraries, and object files on Linux and most Unix-like systems, giving cyber tools a predictable structure to parse, instrument, or analyze compiled code. for symbol reuse
3 details in Everything
└──▷ BREAKING ON UPGRADE
! Drop support for running without GObject
Frida 16.5.8 improves Fruity backend network performance and GIR generation.
Fruity: Multi-transfers boost data transfer efficiency Fruity: Userspace NCM driver batching reduces packet loss in bursty situations Fruity: Enable lwIP TCP TCP A network protocol that delivers a reliable, ordered stream of bytes between two endpoints. It detects lost data and retransmits it. timestamps and SACK to align with Linux IP stack defaults Fruity: Bump lwIP TCP Maximum Segment Size (MSS) to 4036 for better TCP tunnel performance Fruity: Account for frida-server bind() delay to improve connection establishment reliability
+4 more
show less
Fruity: Improve USB device handling on non-macOS systems by avoiding unnecessary USB access when kernel NCM is available Fruity: Improve TcpTunnelConnection teardown to ensure proper cleanup upon the remote end closing the connection api: Generate a proper GObject Introspection Repository (GIR), including necessary types and omitting internal ones api: Omit APIs involving HostSession
9 details in Everything
Frida 16.5.7 adds TCP TCP A network protocol that delivers a reliable, ordered stream of bytes between two endpoints. It detects lost data and retransmits it. tunnel as default backend, Android APK asset loading, MUSL Linux injector compatibility, and PowerPC build support.
TCP tunnel protocol is now the default for Fruity backend connections FRIDA_FRUITY_TUNNEL_PROTOCOL environment variable allows reverting to QUIC QUIC A UDP-based transport protocol standardized by the IETF that bakes in TLS 1.3, multiplexed streams, and connection migration, giving tools low-latency encrypted transport without head-of-line blocking. transportAndroid Gadget supports loading assets from APKs where extractNativeLibs is false Injector compatibility improved for Linux MUSL libc environments Build system now supports the PowerPC architecture
+1 more
show less
Remote call stack allocation added to improve compatibility with small-stack applications like Go
6 details in Everything
Frida 16.5.0 adds thread hardware breakpoints/watchpoints and Windows on ARM ARM A family of RISC processor architectures designed by Arm Holdings and licensed to chip makers worldwide; tools target it to run natively on mobile, embedded, and increasingly server and desktop hardware. support available through source builds.
Adds setHardwareBreakpoint() and unsetHardwareBreakpoint() methods to thread objects for precise breakpoint control Adds setHardwareWatchpoint() and unsetHardwareWatchpoint() methods to thread objects for memory access monitoring Adds source-level Windows on ARM support: arm64 Frida can inject into native arm64 and emulated x86_64/x86 processes, but prebuilt Windows arm64 binaries are not provided in this release. Adds Cancellable.withTimeout() convenience factory function in the Node.js API Adds Cancellable.combine() convenience method in the Node.js API
5 details in Everything
Frida 16.4.6 improves USB loopback reach via UsbmuxDevice, handles non-tunnel devices, and fixes Android 15 JVM JVM The Java Virtual Machine, a runtime maintained by Oracle (and implemented by others) that executes Java bytecode on any OS, giving cyber tools a portable, garbage-collected environment with a large ecosystem of libraries. support
Use UsbmuxDevice from USB transport if present to reach the loopback interface and improve performance. Handle devices without tunnel support on non-macOS platforms. Expose name from USB transport when available, providing a more descriptive identifier than UsbmuxTransport.
3 details in Everything
Frida 16.4.0 adds CoreDevice support on non-macOS via userspace CDC-NCM driver and iOS 18 dyld restart detection
Adds a userspace CDC-NCM driver for Apple CoreDevice connectivity on Windows, Linux, and other libusb-supported platforms when no kernel driver is available. Add Await ObjC runtime initialization on iOS >= 18 to ensure Objective-C runtime is ready before script execution on iOS 18 devices Expose os.build and hardware fields in the exposed system parameters via Frida's introspection API
3 details in Everything
└──▷ BREAKING ON UPGRADE
! Node.js requirement bumped to >=16 || 14 >=14.17, dropping support for Node versions below these thresholds
Frida 16.3.0 adds CoreDevice/iOS 17 support, a device service API, and separate RPC RPC Remote Procedure Call, a protocol that lets a program execute a function on another machine as if it were local, giving cyber tools a structured way to communicate across processes or hosts without managing raw sockets. binary-data passing improvements.
Adds device.open_service() method to connect to device services via xpc:, dtx:, or plist: protocol prefixes. Restores spawning debuggable apps on jailed iOS 17; attaching to already-running apps without spawning is still unsupported. Enables passing binary data as the last argument to RPC exports and returning binary data alongside a JSON-serializable value.
3 details in Everything
Release 16.2.5 improves Android 14 compatibility for dynamic class registration by enforcing read-only Dex files in Java.registerClass() .
Supports setting DexFile to read-only in Java.registerClass() for apps with targetSdk >= 34 on Android 14+
1 detail in Everything
Frida 16.2.2 adds gumjs Process.runOnThread() , Thread.backtrace limit option, and Stalker iterator chaining; new Meson build system replaces MSVS for Windows.
Adds Process.runOnThread() to GumJS to execute code on a specific thread Adds StalkerIterator.put_chaining_return() method for Stalker control flow manipulation
2 details in Everything
Frida 16.2.0 adds thread names, memory protection queries, JavaScript Cloak and fast Interceptor APIs, ELF ELF The standard binary format for executables, shared libraries, and object files on Linux and most Unix-like systems, giving cyber tools a predictable structure to parse, instrument, or analyze compiled code. import slots, and jailbroken tvOS support.
Process.enumerateThreads() now exposes the name property for threads when availableNew Memory.queryProtection() method to determine memory page protection bits New Cloak.hasRangeContaining() API exposed in JavaScript bindings to identify Frida-owned resources New Interceptor.replaceFast() method for lower-overhead hooking of hot targets Module#enumerateImports() now provides the slot property on ELF-based platforms (Linux, Android, FreeBSD, QNX)
5 details in Everything
Frida 16.1.9 improves Interceptor stability and Linux/Android spawn() reliability with new exception handling and ELF ELF The standard binary format for executables, shared libraries, and object files on Linux and most Unix-like systems, giving cyber tools a predictable structure to parse, instrument, or analyze compiled code. parsing logic.
darwin: Switches Mach exception handling to a POSIX POSIX A family of standards for operating-system interfaces, including process, file and shell behavior. Software that uses these interfaces is easier to move between compatible systems. Exceptor backend for better compatibility with recent Apple OS versions linux: Improve spawn() to handle r_brk being hit again and consider on-disk ELF for RTLD symbols android: Handle symlinks in RTLD fallback logic
3 details in Everything
Frida 16.1.6 rolls back two ARM64 ARM64 The 64-bit instruction set architecture from ARM Holdings, used in modern mobile chips, Apple Silicon, and cloud server CPUs; tools target it to run natively on those platforms without emulation overhead. Interceptor/Relocator changes and lets Stalker transformers skip calls on arm64.
└──▷ BREAKING ON UPGRADE
! Two prior arm64 Interceptor/Relocator changes were rolled back: "relocator: Improve scratch register strategy on arm64" and "interceptor: Relocate tiny targets on arm64"
Frida 16.1.5 adds Swift API Resolver, module enumeration, and iOS unpairing
Adds ApiResolver('swift') to resolve and enumerate Swift API functions. Adds enumerateSections() and enumerateDependencies() to the Module API. Adds optional size field to ApiResolver matches. Adds enumerateMatches() support for section scanning via ApiResolver('module') . Adds device.unpair() method (iOS-devices only).
+1 more
show less
Adds Thread Local Variable APIs in darwin-module.
6 details in Everything
Frida 16.1.4 adds Worker API for GUMJS and rootless iOS support
Adds Worker API in GumJS (QuickJS runtime) to offload heavy processing to a background thread. Adds support for rootless iOS systems.
2 details in Everything
Frida 16.1.3 adds StalkerIterator.memoryAccess to detect exclusive store contexts on ARM ARM A family of RISC processor architectures designed by Arm Holdings and licensed to chip makers worldwide; tools target it to run natively on mobile, embedded, and increasingly server and desktop hardware. for safe instrumentation.
StalkerIterator.memoryAccess property allows a custom transformer to check if the current execution context involves an exclusive store operation, returning open or exclusive .
1 detail in Everything
Frida 16.1.0 introduces the alpha-quality Barebone backend for kernel and bare-metal instrumentation through GDB-compatible remote stubs.
Introduces the alpha-quality barebone device (-D barebone) for GDB-compatible remote stubs, with a subset of JavaScript APIs and some features limited to arm64. Adds support for attaching to system-level code by specifying PID 0 when using the new Barebone backend, enabling hooks on kernel modules and bootloader firmware. RustModule uses a local Rust toolchain on PATH to compile no_std code and inject it into the target; intrusive features require a suitable physical-memory base through FRIDA_BAREBONE_HEAP_BASE. Adds the Interceptor.breakpointKind property (settable to 'hard') to force hardware breakpoints, necessary when software breakpoints cannot be injected due to flash-only memory constraints. Introduces the $gdb.continue() command in the Frida REPL to manually resume execution of the target after a breakpoint is hit, as automatic resumption is not yet implemented.
+4 more
show less
Adds the Memory.scanSync capability for the Barebone backend to perform memory scanning on the target side, allowing detection of patterns like kernel syscall handlers without transferring raw memory dumps to the host. Enables passing environment variables FRIDA_BAREBONE_ADDRESS (defaulting to 127.0.0.1:3333) and FRIDA_BAREBONE_HEAP_BASE to configure the Barebone backend's connection endpoint and physical memory allocation base for intrusive features. The temporary internal $gdb API exposes GDB.Client functionality such as register reads and execution control; it is explicitly not a stable public API. Adds NativePointer#readVolatile() to safely read from memory locations that may be unmapped or have changing protection attributes during execution.
9 details in Everything
Frida 16.0.12 adds Linux container injection, no-temp-file operation on Linux >=3.17, and shared library server loading.
Inject into Linux containers such as Flatpak apps with the new re-engineered injector Run without writing temporary files on Linux kernels >= 3.17 using memfd
2 details in Everything
Frida 16.0.10 adds musl libc support and console.debug/info to GumJS
musl libc platform support enables instrumentation on Alpine Linux and other musl-based systems, with release assets published for x86_64 and arm64
1 detail in Everything
Frida 16.0.7 adds replace_fast() for C, iOS sandbox attachment, and DebugSymbol column support
Adds Interceptor.replace_fast() for C API users to emit inline hooks with lower overhead than replace() . Adds path (full absolute path) and column fields to the DebugSymbol API for consistent platform behavior. Improves attachment to hardened Apple processes, including SpringBoard, through a kqueue-based GLib event loop and graceful degradation of advanced features; iOS imagent and WebContent remain unsupported.
3 details in Everything
Frida 16.0.3 adds tvOS/watchOS support and improves compiler/config via tsconfig.json
Add darwin platform support for tvOS and watchOS binaries. Add tsconfig.json configuration support to frida.Compiler for target, lib, and strict options. Add NativeFunction traps with the 'none' option in gumjs.
3 details in Everything
Frida 16 adds V8 snapshot API for faster script loading, moves debugger to Script, and drops Python 2.
Adds V8-only script snapshots through snapshot_script() and create_script() , with Python and Node bindings; snapshots require matching OS, architecture, and V8 version when loaded. Moves debugger API from Session to Script , requiring per-script debugger instances. Drops Python 2 support for all Frida Python bindings. Adds FRIDA_V8_EXTRA_FLAGS environment variable to pass custom flags to the V8 backend.
4 details in Everything
└──▷ BREAKING ON UPGRADE
! The debugger API moves from Session to Script because each script now has its own V8 Isolate.
Adds frida-compile CLI and Python Compiler API for TypeScript/ESM agent bundling
└──▷ TRY IT
Compile a TypeScript agent to JS without installing Node.js dependencies
copy
$ frida-compile agent.ts -o _agent.js
Load and auto-recompile a TypeScript agent in the REPL as you edit it
copy
$ $ frida -p 0 -l agent.ts
Adds frida.Compiler class with build() method in Python bindings Adds watch() method on frida.Compiler to rebuild and reload agents on source changes Enables loading .ts files directly via the frida CLI REPL -l flag
3 details in Everything
Frida 15.1.28 adds read capabilities to the File API and exposes a new Checksum API for SHA-256 SHA-256 A cryptographic hash function that turns data into a fixed 256-bit fingerprint. It is used to check integrity; hashing does not encrypt the original data. and other hashes.
Adds File.readLine() , File.readBytes() , File.readText() , File.seek() , File.tell() and relative offset constants (File.SEEK_CUR, File.SEEK_END) to enable reading from files previously writable only Adds File.readAllText() , File.readAllBytes() , File.writeAllText() , and File.writeAllBytes() as convenience methods for entire file I/O Adds the Checksum API with constructor new Checksum(algorithm) , instance method .update(data) , .getString() , .getDigest() , and static helper Checksum.compute(algorithm, data) to compute hash digests like SHA-256 directly in injected JS
3 details in Everything
Frida 15.1.25 adds ARM ARM A family of RISC processor architectures designed by Arm Holdings and licensed to chip makers worldwide; tools target it to run natively on mobile, embedded, and increasingly server and desktop hardware. FPU/vector register access and new Java.backtrace() properties.
Exposes ARM FPU/vector registers: q0–q15 on 32-bit ARM and q0–q31 on 64-bit ARM, with d0–d31 and s0–s31 on both. JavaScript vector properties use ArrayBuffer. Adds methodFlags and origin properties to frame objects returned by Java.backtrace() .
2 details in Everything
Frida 15.1.23 adds api.jvmti and JDK 17 support, fixes Android 13 detection
java: (android) Expose JVMTI through api.jvmti.java: (jvm) Add basic support for JDK 17.code-writer: Add flush_on_destroy option.
3 details in Everything
Frida 15.1.17 overhauls Java.backtrace() for lazy evaluation and performance, stabilizes its API, and exposes Gum TLS via CModule.
Java.backtrace() now returns a Backtrace object instead of a frame array, with a cheap id for deduplication and lazily computed frames.Stabilizes the Java.backtrace() API which is now considered stable in release notes Exposes Gum’s Thread Local Storage API via CModule in cmodule
3 details in Everything
Frida 15.1.16 adds console.count() and console.countReset() to GumJS bindings
Frida 15.1.14 improves backtracer precision with immediate caller support and adds Thread.try_get_ranges() to Windows and Linux.
backtracer fuzzy backtracers now include the immediate callerWindows Thread.try_get_ranges() implemented Linux Thread.try_get_ranges() implemented
3 details in Everything
Frida 15.1.13 adds Java.backtrace() and improves module resolution on glibc Linux
Improves module resolution accuracy on glibc-based Linux systems. Updates gumjs Kernel.scan*() functions to match the behavior and API of Memory.scan*().
2 details in Everything
Frida 15.1.11 adds regex pattern support to memory.scan() .
memory.scan() now supports regex patterns for more flexible data searching.
1 detail in Everything
Frida 15.1.10 adds regsAccessed/operand.access to Instruction API and optimizes p2p/GDBus performance.
Adds regsAccessed and operand.access fields to the Instruction API (gumjs) for detailed register and operand analysis Improves RPC RPC Remote Procedure Call, a protocol that lets a program execute a function on another machine as if it were local, giving cyber tools a structured way to communicate across processes or hosts without managing raw sockets. and network protocol performance by optimizing server-side GDBus reply handling in vala Enhances p2p reliability by adding graceful handling for unsupported ICE candidates and disabling ICE-TCP TCP A network protocol that delivers a reliable, ordered stream of bytes between two endpoints. It detects lost data and retransmits it.
3 details in Everything
Frida 15.1.5 adds ADB ADB Android Debug Bridge, a command-line tool maintained by Google that lets a host machine communicate with an Android device over USB or TCP, giving cyber tools shell access, file transfer, and app control. server host/port env var support in droidy and exposes GError/GIConv to CModule
Adds ADB_SERVER_HOST and ADB_SERVER_PORT environment variable support in droidy for connecting to remote ADB servers. Exposes GError and GIConv types to CModules in GumJS.
2 details in Everything
Adds Process.cwd() , home, and tmp getters to GumJS
Frida 15.1.2 adds ESM support to gumjs and exposes JNIEnv->GetDirectBufferAddress
gumjs: Add ESM support, so tools like frida-compile can output better code. java: Expose JNIEnv->GetDirectBufferAddress.
2 details in Everything
Frida 15.1.0 introduces the Swift bridge for intercepting Swift code and fixes macOS daemon attachment.
Implements the Swift bridge to explore modules, create JS wrappers, invoke swiftcall functions, and intercept Swift functions with automatic argument parsing.
1 detail in Everything
Frida’s 15.1 series introduces an early-stage Swift bridge on Darwin arm64(e) , plus ESM support and regex memory scanning.
Adds an early-stage Swift bridge for exploring classes, structs, enums, and protocols on Darwin arm64(e) ; its API may change. Extends interception to Swift functions, parsing argument and return types for non-stripped functions and using type metadata to wrap values. Adds ECMAScript Module (ESM) support in gumjs, enabling tools like frida-compile to output better code. Adds Process getters for the current working, home, and temporary directories. Adds regular-expression pattern support to memory scanning.
5 details in Everything
Frida 15.0.17 adds macOS/iOS gadget framework packaging support and NGINX-style directory listing for web-service
Supports gadget packaging as framework on i/macOS with config loading from Resources/config.json and resolution of relative paths for certificate and asset_root.
1 detail in Everything
Frida 15.0.11 uses DTrace for macOS spawn gating, dropping kext support and adding Apple Silicon support
└──▷ BREAKING ON UPGRADE
! Support for the kernel extension is dropped, requiring upgrade to use the new DTrace-based mechanism
Frida 15 introduces Portals for distributed instrumentation, a Bus API for controller messaging, and WebSocket WebSocket A protocol that upgrades an HTTP connection into a persistent, full-duplex channel, letting a server push data to a client without repeated polling. Cyber tools use it for real-time event streaming and live command output. network protocol.
Introduces PortalService API and daemon to orchestrate clusters of remote processes via frida-portal CLI or Python/Node bindings Adds Session.join_portal() method allowing clients to share control of a process with a remote PortalService cluster Adds Device.bus API for controllers connected to a PortalService to exchange application-specific messages Switches Frida's network protocol to WebSocket, enabling direct browser-to-Portal/frida-server communication without middleware Implements setup_peer_connection() on Session to enable WebRTC WebRTC A browser-native, open standard for real-time peer-to-peer audio, video, and data exchange without plugins. Cyber tools use it to tunnel traffic or exfiltrate data through connections browsers treat as legitimate. Data Channel compatible peer-to-peer support via --p2p flag
+2 more
show less
Adds TLS support for Portals and remote devices, configured via --certificate=/path/to/pem in CLI or certificate argument in API Adds authentication support via --token=secret CLI flag or custom backends using frida.EndpointParameters with authentication
7 details in Everything
└──▷ BREAKING ON UPGRADE
! The weak ref API is renamed from WeakRef.bind() and WeakRef.unbind() to Script.bindWeak() and Script.unbindWeak() .! Application and Process objects no longer have small_icon or large_icon properties; use the new parameters dict instead.! Drop support for Firefox OS.
Frida 15.0.0 introduces PortalService for clustered instrumentation, TLS/auth support, and new session persistence capabilities.
Introduces PortalService API and daemon to orchestrate a cluster of remote processes instrumented by Frida Adds Session.join_portal() method to share control of a process with a remote PortalService Adds connect interaction to frida-gadget to join a PortalService cluster Introduces PortalClient for connecting to and joining PortalService clusters with automatic reconnect Supports specifying an ACL ACL An access control list, a set of rules allowing or denying operations for particular users, services or network addresses. It decides who can use a resource. (list of tags) on PortalClient to restrict connected controllers
+11 more
show less
Adds Device.bus API for clients connected to a PortalService to exchange application-specific messages Adds Session persistence support via the persist_timeout option in attach() Adds TLS support by specifying a certificate (PEM) for server and client connections Adds authentication support via static token CLI option or custom authentication backend Moves network protocols to WebSocket WebSocket A protocol that upgrades an HTTP connection into a persistent, full-duplex channel, letting a server push data to a client without repeated polling. Cyber tools use it for real-time event streaming and live command output. with protocol-level keepalives Implements WebRTC WebRTC A browser-native, open standard for real-time peer-to-peer audio, video, and data exchange without plugins. Cyber tools use it to tunnel traffic or exfiltrate data through connections browsers treat as legitimate. Data Channel compatible peer-to-peer support via Session.setup_peer_connection() Adds Device.query_system_parameters() API Adds Script.is_destroyed property in Python bindings Adds Session.is_detached() method for multi-threaded scenarios Adds Device.is_lost property in Python bindings Adds Script.bindWeak() and Script.unbindWeak() replacing the deprecated WeakRef API
16 details in Everything
└──▷ BREAKING ON UPGRADE
! Drops Session.enable_jit() (deprecated protocol bit)! Renames WeakRef.bind() /unbind() to Script.bindWeak() /Script.unbindWeak() ! Crash parameter names changed to kebab-case
Frida 14.2.18 adds RPC RPC Remote Procedure Call, a protocol that lets a program execute a function on another machine as if it were local, giving cyber tools a structured way to communicate across processes or hosts without managing raw sockets. exports listing and fixes i/macOS injector
python: Add RPC exports listing functionality.
1 detail in Everything
Adds Darwin import enumeration from chained fixups and fixes chained fixup handling in jailed iOS injector
Enumerates Darwin imports from chained fixups to support the latest arm64e binaries
1 detail in Everything
Frida 14.2.14 adds Graft, Memory.allocate_near, and jailed Android support.
Adds Gum.DarwinGrafter for AOT grafting to prepare binaries for instrumentation when runtime code modification isn't possible Adds new Memory.allocate_near() function Adds basic support for jailed Android environments
3 details in Everything
Adds GLib Base64 and Checksum primitives to CModule via frida-glib
Frida 14.2 adds realm parameter for emulated processes, CModule.builtins, and new frida-create cmodule CLI
Adds realm="emulated" to Device.attach() and --realm=emulated to the CLI for Android NativeBridge processes. Rosetta support is not implemented yet, and Java instrumentation must remain in the native realm. Adds CModule.builtins property for tooling access to built-in headers and preprocessor defines.
2 details in Everything
Frida 14.2.8 adds Stalker EventSink.make_from_callback() , BLOCK events, and prefetch support.
Adds EventSink.make_from_callback() method for Stalker C API consumers who only need event handling without lifecycle hooks or code transformations Emit Stalker BLOCK event at the start of the block to improve coverage measurement and intuitiveness relative to COMPILE events Adds Stalker prefetch support for optimizing AFL fork server -like use-cases
3 details in Everything
Frida 14.2.3 adds inline hooking for ART runtime and near-address Memory.alloc()
Frida 14.2 adds the --disable-preload / -P flag to frida-server and a new Java.deoptimizeBootImage() API for instrumenting emulated realms.
└──▷ TRY IT
Attach to a sensitive OS process that crashes under normal preload injection conditions.
copy
$ frida-server --disable-preload
Deoptimize the Android boot image to allow dynamic instrumentation of AOT-compiled code in an emulated realm.
javascript
copy
Java.deoptimizeBootImage();
Adds --ignore-crashes flag to frida-server and re-enables V8 debugger by default.
└──▷ USE IT
Run frida-server on unsupported OS versions or where crash reporting conflicts with your workflow.
shell
copy
frida-server --ignore-crashes
Adds –ignore-crashes (and -C) CLI argument to frida-server for disabling the native crash reporter integration
1 detail in Everything
Adds Windows inprocess injection to dodge AV heuristics; adds size_t/ssize_t GumJS support
Frida 14.1 adds iOS 14.2 support, GumJS size_t/ssize_t types, Windows in-process injection, and sysGLib/GI bindings.
make -f Makefile.sdk.mk FRIDA_HOST=android-arm64 libunwind builds a single dependency like libunwind for Android ARM64 ARM64 The 64-bit instruction set architecture from ARM Holdings, used in modern mobile chips, Apple Silicon, and cloud server CPUs; tools target it to run natively on those platforms without emulation overhead. make -f Makefile.sdk.mk symlinks-libunwind switches the prebuilt SDK to a locally built libunwind for iterative development. Adds size_t and ssize_t support to GumJS APIs such as NativeFunction Supports GObject Introspection definitions for auto-generated language bindings Windows injection can avoid frida-helper executables when the target uses the same architecture and no elevation is required.
+1 more
show less
--ignore-crashes and -C flags added to frida-server to disable native crash reporter integration
6 details in Everything
└──▷ BREAKING ON UPGRADE
! QuickJS bytecode format volatility means frida-compile -b output is no longer guaranteed stable across versions; users should pin exact Frida versions when using precompiled bytecode.
Frida 14.0.6 adds explicit support for Raspberry Pi 32- and 64-bit binaries
Publishes official binaries for Raspberry Pi 32-bit and 64-bit platforms
1 detail in Everything
Frida 14.0 replaces default V8 runtime with QuickJS (QJS), dropping 32-bit macOS support and shrinking binary size.
Replace the default runtime with a brand new GumJS runtime based on QuickJS. Disable V8 by default in official binaries, reducing binary footprint significantly. Drop enumerate trap from the global access API in the new runtime. Publish binaries for Raspberry Pi 32- and 64-bit systems. Publish binaries for Fedora 33 and Ubuntu 20.10 targets.
5 details in Everything
└──▷ BREAKING ON UPGRADE
! Official binaries no longer include the V8 runtime; users requiring it must build from source by enabling it manually.! The enumerate trap is removed from the global access API, breaking scripts relying on this specific method.
Frida 14.0.0 replaces default runtime with GumJS (QuickJS), disabling V8.
Replaces the default runtime with a brand new GumJS runtime based on QuickJS Disables V8 by default
2 details in Everything
└──▷ BREAKING ON UPGRADE
! The enumerate trap has been dropped from the global access API.
Frida 12.11.16 adds synchronous event processing via Stalker.follow onEvent option and exposes live CPU CPU The main general-purpose processor in a computer. It runs application instructions and coordinates work with memory and other hardware. context to sinks
Adds onEvent option to Stalker.follow() for synchronous native code event processing Exposes Stalker's live CpuContext to EventSink via the onEvent callback and Gum C API
2 details in Everything
Frida 12.11.12 adds CoreFoundation init for early i/macOS instrumentation and null EventSink support in Stalker.
Initializes CoreFoundation during early instrumentation on i/macOS Supports a NULL EventSink in Stalker
2 details in Everything
Frida 12.11.11 adds opaque JNI JNI Java Native Interface, a standard Java SE feature that lets Java code call and be called by native C or C++ libraries, giving cyber tools a bridge between JVM-hosted logic and low-level system code. ID support on Android R and QML process spawning
Frida 12.11 adds Apple silicon support and several new qml/node features.
Add support for macOS 11 and Apple silicon (arm64/arm64e). Add Android spawn() uid option to specify user ID. Add ArmWriter to the CModule runtime for ARM ARM A family of RISC processor architectures designed by Arm Holdings and licensed to chip makers worldwide; tools target it to run natively on mobile, embedded, and increasingly server and desktop hardware. . qml: Add support for listing applications. qml: Add support for spawning processes.
+1 more
show less
Add onEvent option to Stalker.follow() for synchronous event processing.
6 details in Everything
Frida 12.11.2 adds ArmWriter to CModule runtime and QML script runtime selection
qml: Add support for specifying the script runtime to use.
1 detail in Everything
Frida 12.11.0 adds macOS 11/Apple silicon support and Android spawn uid option
└──▷ TRY IT
Spawn a process on an Android device running as a specific user (e.g., guest or system).
copy
$ frida -U -l script.js 'var p = Process.spawn("<app_package>", { uid: 1000 });'
Adds uid parameter to the Android spawn() API to specify the user ID for the spawned process.
1 detail in Everything
Frida 12.10 adds HotSpot JVM JVM The Java Virtual Machine, a runtime maintained by Oracle (and implemented by others) that executes Java bytecode on any OS, giving cyber tools a portable, garbage-collected environment with a large ecosystem of libraries. support and Java.enumerateMethods API
Java.enumerateMethods(query) API for locating Java methods matching a query string with globs and modifiers (i, s, u)--runtime=v8 flag on frida-trace to enable tracing of Java methods using the V8 runtimeSupport for HotSpot JVM in the Java runtime bridge via JVMTI, allowing class enumeration and object selection outside Android
3 details in Everything
Frida 12.10 adds HotSpot JVM JVM The Java Virtual Machine, a runtime maintained by Oracle (and implemented by others) that executes Java bytecode on any OS, giving cyber tools a portable, garbage-collected environment with a large ecosystem of libraries. support and ObjC Block.declare()
Adds Java support for HotSpot JVM using JVMTI to enumerate classes and intercept methods Adds Block.declare() in the ObjC layer to work with blocks without signature metadata
2 details in Everything
Frida 12.9.8 adds case-insensitive ApiResolver queries, DebugSymbol.load() , and Java.enumerateMethods() .
└──▷ USE IT
Perform case-insensitive API lookups in Frida scripts using ApiResolver.
shell
copy
frida -U myapp -l script.js
// Inside script.js:
var resolver = new ApiResolver('module');
resolver.enumerateMatches('/i someAPI**/', { onMatch: function(match) { console.log(match); }, onComplete: function() {} });
Supports case-insensitive matching in ApiResolver by appending /i to the query string. Adds DebugSymbol.load() function for explicitly loading debug symbols. Supports module!symbol notation in DebugSymbol on Windows for improved performance and precision. Adds Java.enumerateMethods(query) API for efficiently locating methods matching a given query.
4 details in Everything
Frida 12.9.7 makes iOS early instrumentation more reliable on unc0ver jailbreak by loading substrate-inserter.dylib
Loads substrate-inserter.dylib during early instrumentation to bootstrap the process and enable hooking system APIs modified by the bootstrapper
1 detail in Everything
Frida 12.9.5 adds iOS early instrumentation on unc0ver and SystemFunction call/apply in Duktape.
iOS early instrumentation (spawn) supported on latest unc0ver versionsSystemFunction now implements call() and apply() in the Duktape runtime
2 details in Everything
Frida 12.9.3 adds Android 11 Dev Preview 4 support and improves Stalker ARM32 with clone syscalls, IT block handling, and trust threshold.
Android 11 Developer Preview 4 is now supportedStalker ARM32 supports clone syscalls in Thumb mode Interceptor hooks more cases via ArmRelocator and ThumbRelocator improvementsStalker ARM32 suppresses events around exclusive ops
4 details in Everything
Frida 12.9 adds Stalker on ARM32, V8 8.4 JS features, and new APIs like DebugSymbol.load() and Java.enumerateMethods() .
Stalker is now available on ARM32 architectures. Upgraded to V8 8.4, enabling native support for JavaScript optional chaining and nullish coalescing without frida-compile. Added DebugSymbol.load() API to explicitly load debug symbols, with Windows support for module!symbol notation. Added Java.enumerateMethods(query) API for efficient method enumeration in the Java bridge. ApiResolver now supports case-insensitive matching by appending /i to the query string.
+1 more
show less
CModule runtime exposes Thread.{get,set}_system_error() methods.
6 details in Everything
Frida 12.9.0 adds Stalker on ARM32, early instrumentation support, and iOS jailed spawn on arm64e.
Adds Stalker.follow() reliability for WoW64 targets Adds V8 runtime to Gadget for early instrumentation on 64-bit ELF ELF The standard binary format for executables, shared libraries, and object files on Linux and most Unix-like systems, giving cyber tools a predictable structure to parse, instrument, or analyze compiled code. targets
2 details in Everything
Frida 12.8.18 adds Java.scheduleOnMainThread() API and CriticalNative hooking support
└──▷ USE IT
Invoke a Java API that requires the main thread context from a Frida script without triggering threading exceptions
javascript
copy
Java.scheduleOnMainThread(() => {
const MainClass = Java.use('com.example.Main');
const ctx = MainClass.getApplicationContext();
console.log(ctx);
});
Attach a Frida agent to an Android process to intercept calls to CriticalNative functions in libnative.so
shell
copy
frida -U -n <app_name> -l critical_native_hook.js
Adds Java.scheduleOnMainThread() to the JavaScript API for synchronously calling Java methods on the main thread Enables hooking of CriticalNative methods in Android Native Bridge
2 details in Everything
Frida 12.8.15 adds iOS/arm64e support with new NativePointer methods and improved Android fault tolerance
Adds sign() , strip() , and blend() methods to NativePointer for iOS/arm64e instrumentation
1 detail in Everything
Frida 12.8.12 introduces Android Java Proxy integration, Cancellable FD API for Python bindings, and performance enhancements.
Python bindings expose a file descriptor from Cancellable objects to enable integration with event loops and poll() -style use cases. Device enumeration no longer executes adb shell commands for device name resolution when the local ADB ADB Android Debug Bridge, a command-line tool maintained by Google that lets a host machine communicate with an Android device over USB or TCP, giving cyber tools shell access, file transfer, and app control. daemon is sufficiently new (>= circa 2017), significantly speeding up enumeration.
2 details in Everything
Frida 12.8.11 adds Electron prebuilds for V8 v9 (beta) and stabilizes macOS Exceptor API hooks
Adds electron prebuilds for V8 v9 (beta) alongside the existing v8 (stable) prebuilds
1 detail in Everything
└──▷ BREAKING ON UPGRADE
! Electron prebuilds are no longer provided for V8 v7; users must upgrade to v8 or v9.
Adds Java.ClassFactory.get() for multi-classloader support
Introduces the Java.ClassFactory.get() method to enable working with multiple class loaders without name collisions. Provides class handles in addition to names from Java.enumerateLoadedClasses() . Adds GetByteArrayRegion() to the JNI JNI Java Native Interface, a standard Java SE feature that lets Java code call and be called by native C or C++ libraries, giving cyber tools a bridge between JVM-hosted logic and low-level system code. Env wrapper.
3 details in Everything
Frida 12.8.0 adds Stalker queue drain control, NativeFunction Interceptor API, ObjC.Block options and prebuilt Python 3 extension support
└──▷ USE IT
Work with ArrayBuffer using the new wrap and unwrap methods.
shell
copy
const buffer = Memory.alloc(16);
const ab = buffer.toArrayBuffer();
const wrapped = ArrayBuffer.wrap(ab);
const unwrapped = ArrayBuffer.unwrap(wrapped);
Adds Interceptor unwinding API for better exception handling in NativeFunction Adds GumJS devkit on i/macOS supports V8 once again (restored platform support) Adds ArrayBuffer wrap() and unwrap() methods to JavaScript API Enables configuration of Java and ObjC NativeFunction options via clone(options) and second argument to ObjC.Block() Allows disabling automatic Stalker queue drain for better control over tracing behavior
+2 more
show less
Supports older x86 CPUs CPUs The main general-purpose processor in a computer. It runs application instructions and coordinates work with memory and other hardware. without AVX2 support in Stalker Prebuilt Python 3 extension for Windows now supports all Python 3 versions >= 3.4
7 details in Everything
Frida 12.8 adds Stalker support for NativeFunction calls and ArrayBuffer.wrap/unwrap APIs
Adds traps: 'all' option to NativeFunction constructor to enable Stalker instrumentation across native function boundaries. Adds new ArrayBuffer.wrap() method to access memory regions directly as JavaScript arrays without copying. Adds new ArrayBuffer.unwrap() method to access the backing store of an ArrayBuffer.
3 details in Everything
Frida 12.7.26 adds Stalker temp reactivation, NativeFunction traps: all , and Yama Linux thread enumeration
Adds temporary reactivation support to Stalker for stalking code from inside excluded memory ranges Adds traps: 'all' option to NativeFunction to stalk calls within Frida's own excluded memory range
2 details in Everything
Frida 12.7.25 adds Module.enumerateSymbols() size property and Java cache bypass
└──▷ USE IT
Retrieve the size of symbols during module analysis on Linux targets.
js
copy
const symbols = Module.enumerateSymbolsSync('libexample.so');
symbols.forEach(sym => console.log(sym.name + ': ' + sym.size);
Interact with a Java class that has been loaded by a different classloader to avoid name collisions.
js
copy
var MyClass = Java.use('com.example.Class', { cache: 'skip' });
MyClass.$new();
Adds a size property to the results of Module.enumerateSymbols() on Linux/Android platforms. Enables bypassing class caching in Java.use() by passing { cache: 'skip' } as the second argument.
2 details in Everything
Frida 12.7.23 adds CModule ModuleMap support, ARMBE8 profiling, faster Stalker via RWX pages, and spawn() FD inheritance on i/macOS.
└──▷ TRY IT
Inspect module maps inside a native library using the new CModule API
copy
$ frida -U -n AppName --eval 'var cmodule = await Frida.loadModule("./lib.so"); console.log(cmodule.moduleMap);'
CModule runtime now supports working with ModuleMap objectsAdds ARMBE8 architecture profile for Stalker Stalker performance boost on iOS jailbreaks with RWX page support spawn() now passes parent file descriptors to child processes on i/macOS
4 details in Everything
Frida 12.7.20 adds support for encrypted iOS lockdown channels and lockdown: address scheme
Enables cleartext iOS lockdown channels with TLS handshake-only option via ?tls=handshake-only query parameter
1 detail in Everything
Frida 12.7.17 adds UNIX socket transport, variadic NativeFunction support, and direct agent communication with orphan cleanup.
Adds UNIX sockets support for communicating with a remote frida-server or frida-gadget NativeFunction now supports variadic functions without needing one instance per unique argument list signature Frida communicates directly with the remote iOS/Android agent via a fresh TCP TCP A network protocol that delivers a reliable, ordered stream of bytes between two endpoints. It detects lost data and retransmits it. connection and file-descriptor pass-through, removing frida-server from the data path Automatically kills spawned processes if a client disconnects before resuming or killing them, preventing orphaned processes
4 details in Everything
Frida 12.7.12 adds iOS lockdown integration and Windows device detection.
Unifies devices to support jailed iOS devices alongside jailbroken ones Automatically injects Gadget into debuggable jailed iOS apps without repacking Enables detection of recent iOS devices on Windows
3 details in Everything
MemoryAccessMonitor expanded to all platforms and Duktape; Gadget constructor config support on i/macOS.
└──▷ USE IT
Pass custom configuration to a Gadget instance via the constructor on i/macOS.
javascript
copy
const FridaGadget = require('frida-gadget');
const gadget = new FridaGadget({ config: 'path/to/config.json' });
MemoryAccessMonitor is now available on all platforms and the Duktape runtimeGadget supports passing a config through its constructor function on i/macOS
2 details in Everything
└──▷ BREAKING ON UPGRADE
! Gadget’s system loop integration was removed on i/macOS, which may cause undefined behavior in scenarios relying on it.
Frida 12.7.8 adds Android 10 Java bridge support, activity parameter for spawn() , and iOS launchd fault tolerance
Adds activity parameter to spawn() to handle Android apps without a launcher activity Supports Android 10 in the Java bridge Improves iOS launchd agent behavior to kill pending processes on unload, preventing suspended state after frida-server dies
3 details in Everything
Frida 12.7.7 adds rudimentary iOS/arm64e support and improves host agent lifecycle.
Eternalized agents are now kept around when the last session gets closed, which means they can be reused for as long as the HostSession side, e.g. frida-server, sticks around.
1 detail in Everything
Frida 12.7.6 adds -D flag to frida-inject, Linux/arm64 thread stalk
frida-inject gains -D/–device for targeting non-local devicesAdds stalking of thread creation support on Linux/arm64 Exposes Gum.DarwinModule as part of the cross-platform Gum API
3 details in Everything
Frida 12.7.5 introduces the Channels API for TCP TCP A network protocol that delivers a reliable, ordered stream of bytes between two endpoints. It detects lost data and retransmits it. connections to tethered devices and fixes timeout logic in DeviceManager.
Adds the Channels API for establishing TCP connections to a tethered iOS or Android device and talking to lockdown services on a tethered iOS device Enables introspection of instance fields in Java marshaling of java.lang.Class without needing an instance
2 details in Everything
frida-inject now supports spawn() and V8 runtime deadlock fix on i/macOS
Adds spawn() support to the frida-inject tool.
1 detail in Everything
Frida 12.7 adds CModule API for inline C compilation and Stalker.exclude() JS binding
Adds CModule API to compile C source strings to machine code at runtime Exposes Stalker.exclude() function in JavaScript bindings
2 details in Everything
Frida 12.7.3 adds CModule.dispose() and improves V8 GC for CModule memory.
└──▷ USE IT
Eagerly release a CModule's memory before script unload to prevent leaks.
javascript
copy
const cmodule = new Frida.CModule(...);
// ... use cmodule ...
cmodule.dispose();
Adds CModule.dispose() method to eagerly clean up CModule memory V8 garbage collector now informed about externally allocated CModule memory for better decisions
2 details in Everything
Frida 12.7.1 adds GLib.String, GLib.Timer, Json.Builder to CModule and speeds up ObjC.choose() .
Frida 12.7.0 adds CModule API, exposes Stalker.exclude() , and supports concurrent Java.use()
Adds CModule API powered by TinyCC for embedding embedding Lists of numbers a model produces to represent the meaning of text, images or code, so similar items sit close together. They power semantic search and RAG. compiled C code Exposes Stalker.exclude() to JS to mark memory ranges as excluded Supports concurrent calls to Java.use()
3 details in Everything
Adds Java.retain() API and MIPS64 support in Frida 12.6.17
Adds Java.retain() to store Java objects for later use outside a replaced method. Adds initial support for the MIPS64 architecture.
2 details in Everything
Frida 12.6.14 adds user-defined constructors and fields to Java.registerClass API.
Frida 12.6.12 adds -P/–parameters to frida-inject, unfollow() support in Stalker transform callbacks, and Java.registerClass() super class specification.
└──▷ USE IT
Pass multiple key-value pairs as arguments to a Frida script running inside an injected process.
shell
copy
frida-inject -P username=admin -P port=8080 <PID>
Unfollow a specific instrumentation path within the Stalker transform callback without killing the target.
js
copy
// In your transform callback:
frida.stalker.unfollow(threadId);
Define a Java class inheriting from a specific superclass in Frida Gadget or CLI.
js
copy
Java.registerClass({
name: 'com.example.MyClass',
superclass: Java.use('com.example.BaseClass'),
methods: { /* ... */ }
});
Adds -P / --parameters flag to frida-inject for passing parameters to scripts Enables unfollow() calls from the Stalker transform callback without crashing
2 details in Everything
Frida 12.6.9 adds early instrumentation support for iOS 12, extends child gating timeout beyond 25s, and updates Swift bindings to 5.0.
Adds full instrumentation logic support for iOS 12 Extends child gating hold duration beyond 25 seconds (previously auto-resumed)
2 details in Everything
└──▷ BREAKING ON UPGRADE
! Swift bindings now require Swift 5.0; earlier Swift versions are no longer supported.
Frida 12.6.7 adds support for latest Chimera iOS jailbreaks and fixes Linux injector ambiguity.
Adds support for the latest Chimera iOS jailbreaks, confirmed working on version 1.0.8 Improves Linux injector to handle target processes where the libc name is ambiguous
2 details in Everything
Frida 12.6.3 restores Java.choose() on Android 8.1+ and re-enables hook unhooking and script unload.
Frida 12.5.6 adds JNI JNI Java Native Interface, a standard Java SE feature that lets Java code call and be called by native C or C++ libraries, giving cyber tools a bridge between JVM-hosted logic and low-level system code. checked mode and optional debug ports
└──▷ USE IT
Start the Node.js debugger without hardcoding a random port in your script.
code
copy
const server = require('frida-server');
server.enableDebugger(); // Now picks a default or waits for connection logic internally
Android Java integration supports JNI checked mode like it used to. Node.js bindings’ enableDebugger() method no longer requires specifying which port to listen on.
2 details in Everything
Frida 12.5 upgrades V8 and runtime selection, adds Module.load() , and removes arm64 Stalker’s requirement for RWX pages.
Session.createScript now accepts a runtime argument (e.g., 'v8', 'duk') to select the JavaScript engine per script, deprecating session.enable_jit() .Adds Module.load(path) JavaScript API to load native shared libraries across platforms, resolving Android 8+ dlopen restrictions. Stalker no longer requires RWX pages on arm64, making it more accessible on iOS.
3 details in Everything
Frida 12.5.3 adds Android linker integration and fixes ARM64 ARM64 The 64-bit instruction set architecture from ARM Holdings, used in modern mobile chips, Apple Silicon, and cloud server CPUs; tools target it to run natively on those platforms without emulation overhead. Java crashes.
android.linker integration supports more devices, enabling instrumentation of the dynamic linker on additional Android hardware.LineageOS 15.1 is now supported for Frida agents via a necessary SELinux SELinux A mandatory access control system built into the Linux kernel, maintained by the NSA and Red Hat, that enforces fine-grained policies restricting what processes can access, even if they run as root. rule addition.
2 details in Everything
Frida 12.2 extends experimental iOS kernel introspection for recent 64-bit kernels, requiring a jailbreak and kernel-task access.
Adds Kernel.base property to retrieve the kernel's base address for calculating slid virtual addresses Adds Kernel.scan() and Kernel.scanSync() methods to perform memory pattern searches in kernel space Adds Kernel.enumerateModules() and Kernel.enumerateModulesSync() methods to list KEXT names and offsets Adds Kernel.enumerateModuleRanges() and Kernel.enumerateModuleRangesSync() methods to enumerate Mach-O section memory ranges with protection and name details
4 details in Everything
Frida 12.1 adds V8 Inspector support via enable_debugger() and a Process.id property
Introduces Process.id to retrieve the PID of the process in which the agent is executing without calling getpid() through NativeFunction.
1 detail in Everything
└──▷ BREAKING ON UPGRADE
! The V8 debugger API is replaced by the Inspector API; code relying on the old V8 debugger interface must migrate.
Frida 12.0.4 adds memory search with mask support and fixes macOS initialization and RPC RPC Remote Procedure Call, a protocol that lets a program execute a function on another machine as if it were local, giving cyber tools a structured way to communicate across processes or hosts without managing raw sockets. crashes.
Frida 11.0.5 adds Java.registerClass() overload support
Java.registerClass() now supports method overloadsAdds native packages for Fedora and Ubuntu distributions
2 details in Everything
Frida 11.0 overhauls the spawn() API with SpawnOptions for env, cwd, stdio, and platform-specific aux controls.
Adds SpawnOptions class to Device.spawn() enabling envp, env, cwd, stdio, and aux arguments. Supports platform-specific options in the aux dictionary (e.g., aslr, url, activity) passed via unrecognized keyword arguments.
2 details in Everything
Frida 10.8 adds child gating for fork/exec instrumentation and flush-before-exit support
Session.enable_child_gating() opts into suspending child processes until the client resumes them.Device.delivered signal notifies on new child processes for instrumentation before resumption.Device.enumerate_pending_children() lists suspended children waiting for resumption.An RPC RPC Remote Procedure Call, a protocol that lets a program execute a function on another machine as if it were local, giving cyber tools a structured way to communicate across processes or hosts without managing raw sockets. export named dispose, defined in rpc.exports, runs custom cleanup when the process terminates or the script unloads.
4 details in Everything
Frida 10.6 adds config file support for Gadget, binary renaming, and directory-based script loading.
Replaces Gadget environment-variable configuration with an optional configuration file.
1 detail in Everything
Frida 10.5 adds Stalker transform callback for per-instruction code rewriting and documents Process.setExceptionHandler
Adds transform option to Stalker.follow() enabling per-instruction code rewriting via the CodeWriter API. Documents the previously undocumented Process.setExceptionHandler() API.
2 details in Everything
Frida 10.4 adds JavaScript bindings for low-level code generation and relocations across x86, ARM ARM A family of RISC processor architectures designed by Arm Holdings and licensed to chip makers worldwide; tools target it to run natively on mobile, embedded, and increasingly server and desktop hardware. , Thumb, Arm64, and MIPS MIPS A RISC processor architecture originally developed at Stanford and commercialized by MIPS Technologies, widely used in embedded and network devices; cyber tools target it to analyze or exploit routers, cameras, and similar hardware. architectures.
Frida 9.0 replaces V8 with Duktape as default JS runtime and removes Cydia Substrate dependency for iOS launching
Adds Duktape as the default JavaScript runtime on all platforms for better compatibility with resource-constrained devices and systems without RWX memory. Session.enable_jit() or --enable-jit selects V8 before scripts are created where V8 is available; prebuilt iOS binaries omit V8 in this release.Implements direct iOS app launching in Frida, removing the dependency on Cydia Substrate for this operation.
3 details in Everything
Frida 8.1 adds net/http module support through frida-compile and SystemFunction for reliable errno/lastError capture.
Adds Socket.listen() and Socket.connect() APIs to Frida's JavaScript runtime Adds SystemFunction API for reliable access to errno/lastError after system calls
2 details in Everything
Frida 8.0 introduces parallel sessions with independent lifecycles and adds binary data support to post()
Each call to attach() now creates an independent Session, allowing multiple clients to detach without affecting others Renamed post_message() to post() to allow passing out-of-band binary data alongside JSON-serializable messages
2 details in Everything
└──▷ BREAKING ON UPGRADE
! Script.post_message() is renamed to Script.post()
Frida 7.3 adds Script.setGlobalAccessHandler() and improves hexdump() support for NativePointer objects
Adds compileScript and createScriptFromBytes API for JavaScript bytecode caching in Frida 7.2
Introduces the new compileScript and createScriptFromBytes APIs to compile JavaScript source code to cached bytecode (Duktape runtime only) and instantiate scripts from that bytecode. Use Session.disable_jit() / disableJit() to select Duktape before compiling or loading its bytecode.
2 details in Everything
Frida 7.0 introduces Int64/UInt64 types, hexdump() , stream APIs, and improved hooking success rates
Introduces Int64 and UInt64 types to properly represent 64-bit integers in the Memory, NativeFunction, and NativeCallback APIs Adds hexdump() API to Script runtimes for simple memory inspection Adds stream APIs via UnixInputStream, UnixOutputStream, Win32InputStream, and Win32OutputStream for GIO stream support Implements enumerate_threads() and modify_thread() for QNX platform support Spins the main CFRunLoop while waiting for Device#resume() when spawning iOS apps to allow thread-sensitive early instrumentation
5 details in Everything
Frida 6.2 adds ApiResolver API and transaction-based Interceptor for batched hooking
Adds ApiResolver API for dynamic function discovery Adds native Interceptor begin_transaction() /end_transaction() calls for batched hooks; JavaScript runtime entries and exits handle transactions automatically.
2 details in Everything
Frida 6.1 introduces Duktape runtime with --disable-jit flag and linux-armhf support
Replaces JavaScriptCore with a new Duktape-based JavaScript runtime to reduce memory footprint and improve performance on embedded devices Adds --disable-jit CLI switch to enable the new Duktape engine in command-line tools Adds session.disable_jit() API to core Session object for programmatic control of the JIT JIT A runtime compilation strategy where code is translated from an intermediate form to native machine instructions at execution time, giving tools the speed of compiled code without sacrificing dynamic flexibility. engine
3 details in Everything
Frida 6.0 adds iOS 9 support, JavaScriptCore runtime, and Windows/ARM ARM A family of RISC processor architectures designed by Arm Holdings and licensed to chip makers worldwide; tools target it to run natively on mobile, embedded, and increasingly server and desktop hardware. improvements
Adds core support for OS X El Capitan and iOS 9, enabling instrumentation on these platforms. Adds a JavaScriptCore runtime for iOS 9, where the current jailbreak does not permit V8. Adds a system session when attaching to PID 0. Improves arm hooking to include support for early TBZ/TBNZ/IT/B.cond instructions and avoid relocating looped instructions. Implements MemoryAccessMonitor enhancements allowing monitoring of any combination of R, W or X operations on a page.
+3 more
show less
Adds logical shift right and left operations to NativePointer. Improves Interceptor to attach to replaced functions and separately adds support for hooking tiny functions on 32-bit ARM. Emulates {Get/Set}LastErrror and TLS key access on Windows, allowing hooking of more low-level APIs.
8 details in Everything
Frida 5.0 introduces persistent Device IDs, Droidy Android backend, frida-trace for imported functions, and native exception handling.
└──▷ USE IT
List all connected devices using the new CLI tool
shell
copy
frida-ls-devices
Adds persistent Device.id to represent individual devices across reconnects and hotplug events Adds new Droidy backend for interfacing with connected Android devices Adds frida-ls-devices CLI tool for listing connected devices Adds -D switch in python bindings for specifying the device ID to connect to Extends frida-trace with convenient tracing of imported functions.
+3 more
show less
Adds Module.enumerateImports() API implemented on Darwin, Linux, and Windows Adds Process.setExceptionHandler() for handling native exceptions from JS Adds support for RPC RPC Remote Procedure Call, a protocol that lets a program execute a function on another machine as if it were local, giving cyber tools a structured way to communicate across processes or hosts without managing raw sockets. methods returning ArrayBuffer values in python and node bindings
8 details in Everything
└──▷ BREAKING ON UPGRADE
! Device.id now represents individual devices across reconnects, changing its identity behavior from previous versions
Frida 4.4 adds a new RPC RPC Remote Procedure Call, a protocol that lets a program execute a function on another machine as if it were local, giving cyber tools a structured way to communicate across processes or hosts without managing raw sockets. API for script-application communication and exposes it via Python/Node clients
Introduces the RPC API to expose services from scripts to applications Adds Python support for calling RPC exports via the frida module Adds Node.js support for calling RPC exports via frida-node
3 details in Everything
Frida 4.3 adds frontmost application introspection, Objective-C block support, and Dalvik threading primitives.
Adds Device.get_frontmost_application() (Python), Device.getFrontmostApplication() (Node), and core-level iOS support to identify the active foreground app Adds ObjC.Block class for implementing and interacting with Objective-C blocks Adds Dalvik threading primitives: Dalvik.synchronized() , Dalvik.scheduleOnMainThread() , and Dalvik.isMainThread()
3 details in Everything
Frida 4.2 adds ObjC.choose for Objective-C object carving and %time profiling command
Adds ObjC.choose() to scan the Objective-C heap for objects of a specific class. The article also covers $className and $super on ObjC.Object, introduced in 4.1.8. The article also covers by-value struct support in NativeFunction and NativeCallback, introduced in 4.1.9, using nested arrays of field types.
3 details in Everything
Frida 4.1 adds iOS app enumeration, early instrumentation via spawn(app_id) , ObjC class/proxy registration, Dalvik class listing, and malloc range enumeration.
└──▷ TRY IT
List running iOS apps on a connected device to identify targets for instrumentation.
frida-ps -U -a lists running iOS applications; adding -i includes installed applications that are not running. Device.spawn() accepts an iOS app identifier for early instrumentation; this release requires Cydia Substrate for app launching.ObjC.registerClass() and ObjC.registerProxy() allow creating Objective-C classes and proxies in pure JavaScriptObjC.protocols API added for enumerating protocolsDalvik.enumerateLoadedClasses() lists loaded Dalvik classes
+2 more
show less
Process.enumerateMallocRanges() and Process.enumerateMallocRangesSync() enumerate malloc rangesNativePointer.compare() and NativePointer.equals() compare pointers
7 details in Everything
Frida 4.0.0 adds --debug CLI flag, integrated debugger, native backtraces, MemoryAccessMonitor API, and renames frida-repl to frida.
Adds --debug switch to all CLI tools to enable the integrated Node.js-compatible debugger Provides Backtracer.ACCURATE support in Thread.backtrace() for symbolicated stack traces Exposes MemoryAccessMonitor through JavaScript for monitoring memory access on Windows. Renames frida-repl CLI tool to frida with tab completion support Adds synchronous enumeration methods (e.g., enumerateThreadsSync) alongside existing async versions
+1 more
show less
Adds NativePointer.and() , .or() , and .xor() bitwise operations
6 details in Everything
└──▷ BREAKING ON UPGRADE
! The CLI tool frida-repl has been renamed to frida.! The CPU CPU The main general-purpose processor in a computer. It runs application instructions and coordinates work with memory and other hardware. registers object this.registers in Interceptor callbacks is renamed to this.context.! Process.enumerateThreads() thread objects rename their registers field to context.
Frida 3.0.0 adds asynchronous Node.js bindings, 32-bit Linux support with cross-arch injection, and frida-trace man-page auto-generation.
Adds fully asynchronous Node.js bindings accessible via npm install frida, exposing a 1:1 mapping of the Python API using ES6 Promise objects. Enables 32-bit Linux support for core Frida functionality, including Stalker instrumentation and cross-architecture injection (e.g., injecting into 32-bit processes from a 64-bit Frida process). Updates frida-trace to use man-pages for auto-generating log handlers. Recycles frida-server ports, avoiding repeated forwarding of additional ports on Android unless attaching to multiple processes simultaneously. Expands Linux and Android spawn() support to include PIE binaries .
5 details in Everything
└──▷ BREAKING ON UPGRADE
! Python bindings simplified: frida.attach(pid) .session.create_script() is now frida.attach(pid) .create_script() , requiring code updates in existing scripts.
Frida 2.0.0 adds manual dylib injection, new Python device APIs, and x86/Android support
Mac and iOS injector now performs manual mapping of Frida's dylib to attach to heavily sandboxed processes CLI tools like frida-trace gain support for spawning processes directly via command-line arguments Python API adds frida.get_usb_device(timeout=0) and frida.get_remote_device() for easier device access Adds Android 5.0 compatibility excluding ART, and Android/x86 support excluding Dalvik integration.
4 details in Everything
└──▷ BREAKING ON UPGRADE
! console.log() logs to the application's side console instead of the target process, requiring script adjustments
Frida 1.6.3 adds Memory.protect() API and improves Stalker with Capstone migration.
Memory.protect() is now available in the JavaScript API to change page memory protectionsStalker engine now supports tracing binaries with very recent x86 instructions thanks to migration from udis86 to Capstone Process.enumerateThreads() now automatically omits Frida's own internal threads
3 details in Everything
Adds Instruction.parse() JS API to disassemble instructions directly from Frida scripts
Adds Instruction.parse() JavaScript API allowing scripts to disassemble machine code using the Capstone framework
1 detail in Everything
Frida 1.6.0 expands instrumentation capabilities to Android's Dalvik VM and enriches the JavaScript API with new memory manipulation and weak reference tools.
Supports Java code instrumentation on Android through new Dalvik API methods (perform, use). Introduces several new JavaScript functions for memory handling (Memory.copy, Memory.dup, Memory.write*) and object lifecycle management (WeakRef.*).
2 details in Everything
Frida 1.4.0 adds Android support and integrates Capstone Disassembly Engine for instrumentation
Frida 1.2.0 adds ARM64 ARM64 The 64-bit instruction set architecture from ARM Holdings, used in modern mobile chips, Apple Silicon, and cloud server CPUs; tools target it to run natively on those platforms without emulation overhead. support for injecting into 64-bit processes on iOS devices
Frida 1.0.10 adds frida-repl CLI tool and enhances Interceptor.attach with onLeave replacement and error inspection.
└──▷ USE IT
Launch the new REPL to interact with a target process live.
shell
copy
frida-repl TargetApp
Introduces frida-repl as a new CLI tool for basic REPL experimentation with the JavaScript API inside a target process. Adds retval.replace() capability to the onLeave callback in Interceptor.attach() , allowing return value manipulation. Exposes this.errno (UNIX) and this.lastError (Windows) in both onEnter and onLeave callbacks of Interceptor.attach() for thread error inspection.
3 details in Everything
Adds Objective-C interop for Mac/iOS and variable enumeration to Module.enumerateExports()
Adds Objective-C integration on Mac and iOS, including ObjC.use() and ObjC.schedule() ; the source demonstrates UIAlertView specifically on iOS. Module.enumerateExports() now returns exported variables in addition to functions, with the exp.type field indicating function or variable
2 details in Everything
Frida 1.0.7 adds USB support via -U switch and module-relative function tracing.
└──▷ TRY IT
List processes on a tethered iOS device via USB.
frida-ps gains -U flag to enumerate processes on tethered iOS devices locally and remotely-U switch added to frida-trace and frida-discover for USB device targetingfrida-trace supports -a with module-relative offsets like 'kernel32.dll+0x1234'
3 details in Everything
Frida 1.0.5 adds frida-trace filesystem script reload and Python 3 support
frida-trace gains auto-generating, loading and reloading function handlers from scripts on the filesystemPython 3 (Py3k ) support is now available from PyPI on all platforms
2 details in Everything