私は JavaScript にあまり精通していないため、Frida JS API でいくつかの問題に直面しています。私が見ることができるのは Java.choose() だけです async; つまり、クラスのすべてのライブ インスタンスを列挙しますclassName
。ただし、警告は、列挙が終了する前であっても早期に戻る可能性があることです。私のアプリケーションでは、関数 (F) 呼び出しJava.choose()
の return は列挙の最後にのみ必要です。内部では、呼び出し元に戻るonMatch()
前に完全に入力する必要があるリストを入力しているためです。F
Google は、使用Promise
またはawait
シリアル化できると言っています。私の限られた JS-fu では、どのソリューションも機能しませんでした。JS の第一人者が介入して、この哀れな魂を救うためにスニペットを投げてくれませんか?
また、もう 1 つの懸念は、私が関数型 (イベント駆動型?) プログラミングのバックグラウンドを持っていないことです。非同期関数のシリアル化は、JS の世界で最後の手段として使用されていますか?
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_instances[]
リストを受け取ります。これを機能させるのはどれくらい難しいですか?同じことを達成するためのより良い方法はありますか?