私の質問に答えるために DynamoRIO について知る必要はないかもしれませんが、C++ プログラムで C クライアントを使用してDynamoRIOでバイナリ インストルメンテーションを行っています。現在、署名を持つ関数をラップしています:
virtual void foo(Klass& s)
そして、ラップ関数で、この関数呼び出し ( Klass& s
) の引数を void ポインター ( void *arg1
) に取得できます。Klass
この引数を使用する必要があります (つまり、フィールドへのアクセス、メソッドの呼び出し)が、C++ クラスであり、使用しているクライアントが純粋な C であるため、適切なポインターにキャストできません。
void*
の内容を次のようにキャストして印刷しようとすると、次のsize_t
ようになります。
printf("%zd\n", (size_t)arg1);
25102856
それは私がメモリアドレスであると推測しているような8桁の数字を私に与えます。
私の質問は、プログラムでこのオブジェクトにアクセスするにはどうすればよいですか?
Pls はあなたが必要とするすべての情報を尋ねます、私はすべてのアイデアを受け入れます。