Frida compatibility
noxen is intended to work across current Frida versions that support the required Java instrumentation APIs. It has been tested with Frida 16.6.6 and 17.7.3 because Frida 17 introduced a compatibility boundary that older scripts often fail to cross.
Those tested versions are not the only supported versions. The important distinction is the behavior before and after Frida 17.
The Frida 17 change
Section titled “The Frida 17 change”Frida 17 changed how the Java bridge is provided. Code that assumes a global Java
object can fail unless the bridge is explicitly loaded.
The agent handles this with a compatibility shim:
const Java = globalThis.Java !== undefined ? globalThis.Java : require('frida-java-bridge');globalThis.Java = Java;Runtime bundle
Section titled “Runtime bundle”Normal package installs include the JavaScript runtime bundles required by noxen. Users do not need to rebuild them.
When running from the source tree, Python loads:
agent/script_bundle.jsInstalled packages use the packaged copy under:
src/noxen/runtime/agent/script_bundle.jsThe installed wheel stores the same file inside the noxen Python package. The
bundle includes what is needed for Frida 17-style Java bridge loading.
If the bundle is missing, the tool falls back to:
agent/script.jsThat fallback can work with older Frida versions, but versions with Frida 17-style Java bridge loading should be expected to fail without the bundle.
Extra scripts
Section titled “Extra scripts”Extra scripts selected from the Home tab are appended after the main Frida agent bundle.
That means custom scripts can use:
Java.perform(function () { // custom logic});without importing frida-java-bridge themselves.
Developer rule
Section titled “Developer rule”After changing:
agent/script.jsagent/system_server.jsrun:
npm run buildand commit the changed source file with its matching bundle and packaged runtime copy:
agent/script.jsagent/script_bundle.jsagent/system_server.jsagent/system_server_bundle.jssrc/noxen/runtime/agent/Version troubleshooting
Section titled “Version troubleshooting”If the session fails before hooks are installed:
- Confirm the Android
frida-serverversion. - Confirm the Python
fridapackage version. - If running from the source tree, confirm
agent/script_bundle.jsexists. - Try the same command with a known working pre-17 or 17+ Frida environment.
- Check the Log tab for JavaScript initialization errors.