¿Es posible en Ida Pro hacer una compensación de campo de estructura para VTable que se define en el segmento .data?
-
30-10-2019 - |
Pregunta
Esto es lo que quiero lograr. Identifiqué una clase que definí como una estructura para almacenar datos de clase. Uno de los métodos de la clase usa el campo de clase como si fuera un puntero a 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
}
Como puede ver, llama a la tercera función de VTable. En tiempo de ejecución, identifiqué que VTABLE_40194AE0 señala la matriz en la sección .data que se ve así
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
¿Hay alguna forma de decir de alguna manera Ida que VTABLE_40194AE0 siempre apunta a Vtable a 0x40194ae0, por lo que se verá una llamada en el código de pseudo?
return vtable_40194AE0->sub_40128EEE(v1->vtable_40194AE0, 0, 0);
?
Traté de configurar VTABLE_40194AE0 de la estructura para que sea "compensación definida por el usuario", pero no ayuda :(
Muchas gracias !
No hay solución correcta
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow