2.7 KiB
Runtime bridges
Why this exists
Frida 17.0.0 removed the Java, Objective-C, and Swift runtime bridges from the
GumJS runtime. An autonomous Gadget Script interaction therefore no longer gets
the Java global implicitly. Frida's REPL and frida-trace remain compatible
because frida-tools injects those bridges itself.
Primary references:
https://frida.re/news/2025/05/17/frida-17-0-0-released/https://frida.re/docs/bridges/https://frida.re/docs/gadget/#using-the-language-bridges
frida-il2cpp-bridge is different: it is a community module and was never a
built-in GumJS bridge. Its current compatibility statement covers Unity 5.3.0
through 6000.3.x, with Android and Linux as the tested platforms:
https://github.com/vfsfitvnm/frida-il2cpp-bridge
FridaBox architecture
Frida scripts have isolated globals. Loading a bridge in a second Script does
not make Java or Il2Cpp visible to the user's Script. FridaBox instead builds
each supported package version with frida-compile, stores the resulting bundle
as an APK asset, and extracts its entry module while preparing the private
on-device agent. The final execution order is:
- FridaBox log capture;
- enabled runtime-bridge entry modules;
- the user's unchanged imported agent copy.
Only the generated runtime copy is composed. The originally imported agent and its recorded digest are not modified.
Bridge settings appear only when the active Gadget is 17.0.0 or newer. They
apply to On-device mode on the next process launch. Computer mode uses Gadget's
Listen interaction; bridge availability there belongs to the attaching client
(frida, frida-trace, or the API-created agent), because remotely created
Scripts have separate isolates.
Pinned versions
The APK contains these reproducible, offline choices:
| Bridge | Versions | Default | Source |
|---|---|---|---|
| Java | 7.0.11, 7.0.12, 7.0.13 | 7.0.13 | official frida-java-bridge npm package |
| IL2CPP | 0.12.2, 0.13.0, 0.13.1 | 0.13.1 | community frida-il2cpp-bridge npm package |
The npm registry contained 92 Java bridge versions from 3.1.1 through 7.0.13 and 77 published IL2CPP versions through 0.13.1 when this catalog was researched on 2026-07-28. FridaBox deliberately ships a recent curated set instead of every historical package to keep the APK small and the test surface bounded.
Rebuilding
Run:
npm ci
python tools/build_frida_agents.py
The package aliases in package.json allow multiple versions to coexist. The
generated bridge bundles are written to
app/src/main/assets/fridabox/bridges/. Gradle's
verifyRuntimeBridgeAssets task validates that every catalog entry exists and
has a Frida bundle header.