Voici ce que je veux réaliser. J'ai identifié une classe que j'ai définie comme une structure pour stocker des données de classe. L'une des méthodes de la classe utilise class-field comme si c'était un pointeur sur vtable.Est-il possible dans IDA Pro d'effectuer un décalage de champ struct vers vtable qui est défini dans le segment .data?
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
}
Comme vous pouvez le voir, il appelle la 3ème fonction de vtable. En exécution j'identifiais que vtable_40194AE0 pointe vers tableau dans la section .data qui ressemble à ce
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
Est-il possible de dire en quelque sorte que l'IDA vtable_40194AE0 pointe toujours à VTABLE à 0x40194AE0 appel ainsi donné dans le pseudo-code ressemblera à
return vtable_40194AE0->sub_40128EEE(v1->vtable_40194AE0, 0, 0);
?
J'ai essayé de mettre vtable_40194AE0 de la structure pour être « décalage défini par l'utilisateur », mais il ne permet pas :(
Merci beaucoup!
Salut! vtable_40194AE0 n'est pas une structure dans mon cas. C'est un nom d'un champ de structure struc_4. – expert