frida-17

Frida 17 JavaScript API compatibility checker and fixer. Use when writing, reviewing, or fixing Frida scripts, especially when migrating from older Frida versions. Detects deprecated APIs removed in Frida 17 (May 2025) and provides correct replacements. Covers Module, Memory, Process APIs and common

By yfe404 · 2,150 installs

npx skills add yfe404/frida-17-skill --skill frida-17

Source repository · Upstream listing

Frida 17 Scripting Guide This skill helps write and fix Frida scripts compatible with Frida 17.0.0 (released May 2025). Breaking Changes in Frida 17 1. Static Module Methods REMOVED 2. Static Memory Methods REMOVED 3. Legacy Enumeration APIs REMOVED 4. Reserved Function Names DO NOT OVERRIDE The following are built in Frida functions. Defining custom functions with these names causes: TypeError: cannot define variable 'hexdump' Reserved names: hexdump Use dumpHex instead for custom hex dump functions ptr pointer constructor shorthand NULL null pointer constant NativePointer Methods (Valid in Frida 17) Conversion: toInt32() cast to signed 32 bit integer toNumber() convert to JavaScript number toString([radix]) convert to string NOT available: toUInt32() DOES NOT EXIST, use toInt32() for sizes < 2^31 Memory reading: readU8() , readS8() , readU16() , readS16() readU32() , readS32() , readU64() , readS64() readByteArray(length) returns ArrayBuffer readPointer() , readCString() , readUtf8String() Memory writing: writeU8(value) , writeS8(value) , etc. writeByteArray(bytes) bytes must be ArrayBuffer or JS array writePointer(ptr) , writeUtf8String(str) Pointer arithmetic: add(rhs) , sub(rhs) , and(rhs) , or(rhs) , xor(rhs) shr(n) , shl(n) , not() isNull() , equals(rhs) , compare(rhs) Java Bridge API (Unchanged in Frida 17) Java byte[] handling: Java byte arrays cannot be passed directly to Memory.alloc().writeByteArray() . Convert manually: Common Patterns for Frida 17 Waiting for a library to load Hooking libc functions Custom hex dump function Checklist for Frida 17 Compatibility When reviewing a Frida script, check for: 1. [ ] Module.findBaseAddress() Process.findModuleByName().base 2. [ ] Module.getBaseAddress() Process.getModuleByName().base 3. [ ] Module.findExportByName(null, name) Process.findModuleByName('libc.so').findExportByName(name) 4. [ ] Module.findExportByName(lib, name) Process.findModuleByName(lib).findExportByName(name) 5. [ ] Module.enumerateExports(lib) Process.getModuleByName(lib).enumerateExports() 6. [ ] Module.enumerateSymbols(lib) Process.getModuleByName(lib).enumerateSymbols() 7. [ ] Memory.readU32(ptr) ptr.readU32() 8. [ ] toUInt32() toInt32() (toUInt32 never existed) 9. [ ] function hexdump() function dumpHex() (name conflict) 10. [ ] Java byte[] with writeByteArray() manual hex conversion References [Frida 17.0.0 Release Notes](https://frida.re/news/2025/05/17/frida 17 0 0 released/) [Frida JavaScript API](https://frida.re/docs/javascript api/) [Frida Android Examples](https://frida.re/docs/examples/android/)