1

私は JavaScript にあまり精通していないため、Frida JS API でいくつかの問題に直面しています。私が見ることができるのは Java.choose() だけです async; つまり、クラスのすべてのライブ インスタンスを列挙しますclassName。ただし、警告は、列挙が終了する前であっても早期に戻る可能性があることです。私のアプリケーションでは、関数 (F) 呼び出しJava.choose()の return は列挙の最後にのみ必要です。内部では、呼び出し元に戻るonMatch()前に完全に入力する必要があるリストを入力しているためです。FGoogle は、使用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[]リストを受け取ります。これを機能させるのはどれくらい難しいですか?同じことを達成するためのより良い方法はありますか?

4

1 に答える 1