在弗里达中迭代列表



我正在尝试弄清楚如何使用Frida读取Java类的公共unmodifiableList字段。 这是我的班级:

public final class MyClass {
public final String myString;
public final List myList;
public MyClass() {
this.myString = "Hello!";
this.myList = Collections.unmodifiableList({ "this_is_a_string" });
}
}

这是我用来提取两个字段的 JS Frida 代码:

Java.perform(function() {
function onField(instance) {
const fields = instance.getClass().getDeclaredFields();
for(var i = 0; i < fields.length; i++) {
const value = fields[i].get(instance);
if(fields[i].getName() == "myString") {
// This correctly prints "Hello!".
console.log("myString: " + value);
} else if(fields[i].getName() == "myList") {
for(var j = 0; j < value.length; i++) {
// This prints out a blank line, as opposed to "this_is_a_string".
console.log(value[j]);
}
}
}
}
Java.choose("com.myapp.MyClass", { onField: onField, onComplete: function() {} })
});

问题是我无法访问不可修改列表的任何方法或字段(包括 size(( 和索引。如何从此列表中阅读?

使用Java.cast解决了这个问题。

// ...
var list = Java.cast(value, Java.use("java.util.List"));

相关内容

  • 没有找到相关文章

最新更新