Skip to main content

Practical Frida Java API Tips

· One min read
Apache Wangye
Software developer and technical writer

This note collects a few useful patterns for working with Android Java classes through Frida.

Frida Java API operations must run inside a Java.perform callback, and overloaded methods must be selected with the exact parameter signature. Use these techniques only on applications and devices you are authorized to test.

Assign a value to an instance field

Create an object with $new() and access a Java field through its .value property:

Java.perform(function () {
var TargetClass = Java.use("com.tencent.mm.o");
var instance = TargetClass.$new();
instance.a.value = 1;
});

If the field is inherited, private, renamed by obfuscation, or represented by an accessor method, inspect the runtime class before assuming the field name is stable.

Call an overloaded static method

Use overload() to select the required signature explicitly:

Java.perform(function () {
var StringClass = Java.use("java.lang.String");
var TargetClass = Java.use("com.tencent.mm.o");

TargetClass.b
.overload("java.lang.String")
.call(TargetClass, StringClass.$new("111"));
});

For a true static method, the receiver passed to call() is usually the class wrapper. For an instance method, pass the target object instead. When a hook fails, print the available overloads and verify the class loader, method signature, and application version.

Page views: --

Total views -- · Visitors --