これが私が達成したいことです。クラス データを格納する構造体として定義したクラスを特定しました。クラスのメソッドの 1 つは、class-field を vtable へのポインタであるかのように使用します。
int __thiscall SignOn(struc_4 *this)
{
v1 = this;
if ( !v1->vtable_40194AE0 )
return E_UNEXPECTED;
v1->field_3E8 = 0;
if ( !sub_686F7193(v1) )
return (*(*v1->vtable_40194AE0 + 12))(v1->vtable_40194AE0, 0, 0); // sub_40128EEE
}
ご覧のとおり、vtable から 3 番目の関数を呼び出します。実行時に、vtable_40194AE0 が次のような .data セクションの配列を指していることを確認しました
off_40194AE0 dd offset InternalQueryInterface
dd offset AddRef
dd offset Release
dd offset sub_40128EEE ; 3
dd offset sub_40128F8C
dd offset sub_4012C2E2 ; 5
vtable_40194AE0 が常に 0x40194AE0 の vtable を指していることを何らかの方法で IDA に伝える方法はありますか?
return vtable_40194AE0->sub_40128EEE(v1->vtable_40194AE0, 0, 0);
?
構造体の vtable_40194AE0 を「ユーザー定義のオフセット」に設定しようとしましたが、役に立ちません:(
どうもありがとう !