[安全] Frida Labs 0x4
首先在 jadx 的左侧这里可以看到所有的类
这可以发现一些 MainActivity 没有调用而隐藏起来的逻辑

确定以下主要逻辑
我们需要调用 get_flag 方法
public class Check {
public String get_flag(int a) {
if (a == 1337) {
byte[] decoded = new byte["I]FKNtW@]JKPFA\\[NALJr".getBytes().length];
for (int i = 0; i < "I]FKNtW@]JKPFA\\[NALJr".getBytes().length; i++) {
decoded[i] = (byte) ("I]FKNtW@]JKPFA\\[NALJr".getBytes()[i] ^ 15);
}
return new String(decoded);
}
return "";
}
}调用非静态方法的时候必须实例化, frida 中也有对应的 api
Java.perform(function() {
var <class_reference> = Java.use("<package_name>.<class>");
var <class_instance> = <class_reference>.$new(); // Class Object
<class_instance>.<method>(); // Calling the method
})依靠这个模板, 我们可以写出以下代码
import Java from "frida-java-bridge";
if (Java.available) {
Java.perform(() => {
const Check = Java.use("com.ad2001.frida0x4.Check");
const check = Check.$new();
const dec_s = check.get_flag(1337);
console.log(typeof(dec_s), dec_s);
});
} else {
console.log("No Java VM in this process");
}