如何序列化Frida JavaScript API中的Java.choose()?
我不是很精通JavaScript,因此在FridaJSAPI中遇到了一些麻烦。我所能看到的Java.choose()是异步的;这意味着它枚举类的所有活动实例如何序列化Frida JavaScript API中的Java.choose()?,javascript,serialization,frida,Javascript,Serialization,Frida,我不是很精通JavaScript,因此在FridaJSAPI中遇到了一些麻烦。我所能看到的Java.choose()是异步的;这意味着它枚举类的所有活动实例className。但是,需要注意的是,它甚至可以在枚举完成之前提前返回。在我的应用程序中,我需要函数(F)调用Java.choose()仅在枚举结束时返回。因为在onMatch()中,我正在填充一个列表,该列表需要在F返回到调用方之前完全填充。谷歌说我可以使用Promise或wait对其进行序列化。由于我有限的JS fu,我无法使任何解决方
className
。但是,需要注意的是,它甚至可以在枚举完成之前提前返回。在我的应用程序中,我需要函数(F)调用Java.choose()
仅在枚举结束时返回。因为在onMatch()
中,我正在填充一个列表,该列表需要在F
返回到调用方之前完全填充。谷歌说我可以使用Promise
或wait
对其进行序列化。由于我有限的JS fu,我无法使任何解决方案起作用。一个JS大师能进来,抛出一些片段来拯救这个可怜的灵魂吗
另外,另一个问题是,我不是功能(事件驱动?)编程背景。序列化异步函数是JS world中的最后手段吗
const getObjectInstances = function(argument){
searchHeap(argument)
.then(function(class_instances){
console.log(class_instances);
//return class_instances;
})
.catch(function(error){
console.log("error");
})
}
const searchHeap = function(cls_name){
var class_instances = [];
Java.choose(cls_name, {
onMatch:function(instance){
console.log("Found instance" + instance);
class_instances.push(instance);
},
onComplete:function() {
console.log("search done");
}
});
}
我想要的是
searchHeap()
仅在枚举完成时返回。否则,调用方将收到一个不完整的class\u实例[]
列表。要做到这一点有多难?有没有更好的方法来达到同样的效果?您只需执行以下操作即可
var class_instances;
Java.choose(cls_name, {
onMatch:function(instance){
console.log("Found instance" + instance);
class_instances = instance;
},
onComplete:function() {
console.log("search done");
}
});
然后可以调用该类名的任何方法。例如,如果它有一个名为status
的函数,则可以调用它instance.status()
可以在apk的结构中查看这些实例。我用这个。您可能还想尝试一个集成了Frida和其他有用工具的框架,使动态和静态分析成为可能。您可以执行以下操作
var class_instances;
Java.choose(cls_name, {
onMatch:function(instance){
console.log("Found instance" + instance);
class_instances = instance;
},
onComplete:function() {
console.log("search done");
}
});
然后可以调用该类名的任何方法。例如,如果它有一个名为status
的函数,则可以调用它instance.status()
可以在apk的结构中查看这些实例。我用这个。您可能还想尝试一个集成了Frida和其他有用工具的框架,使动态和静态分析成为可能