[AYUDA] Como hacer call y significado: _DWORD *__thiscall

  • Hola Invitado, ¿Quieres ganar dinero con GamerzHacking?, estamos necesitando creadores de contenido en game hacking o pirateria de juegos ingresa al siguiente enlance para mayor informacion AQUI
  • Hola Invitado, ¿Creas contenido sobre game hacking en tu blog o sitio web?, ¿Te gustaria formar una alianza para asi poder generar mas trafico en tu sitio y seguir creciendo como comunidad? INGRESA AQUI
Estado
Cerrado para nuevas respuestas.


3
Me Gusta
1
Temas

kuhi

Curioso
Registrado
29 Abr 2020
Temas
1
Mensajes
3
Mejores respuestas
1
Buenas amigos :)
Tengo una duda... Así me encuentro las funciones normalmente en IDA:
C++:
Porfavor, Acceder o Registrarse para ver el contenido de los códigos!

Y las uso de esta forma:
C++:
Porfavor, Acceder o Registrarse para ver el contenido de los códigos!

Hasta aquí todos contentos... el caso es que esta vez me he encontrado con esto:
C++:
Porfavor, Acceder o Registrarse para ver el contenido de los códigos!

Entiendo la primera definición (devolver void, calling convention es thiscall, la dirección de la función, el puntero a la clase ya que es thiscall, y los parámetros de la función.
Pero la segunda definición no la entiendo... :(

No sé como llamar a la segunda función... ¿Alguien sabría explicarme que significa ese tipo de declaración y cómo debería usarla?is...

Mil gracias <3
 
  • Like
Reacciones : Mstik


3
Me Gusta
1
Temas

kuhi

Curioso
Registrado
29 Abr 2020
Temas
1
Mensajes
3
Mejores respuestas
1
Lo he solucionado! Al final tenía que declarar la función de esta forma:

C++:
Porfavor, Acceder o Registrarse para ver el contenido de los códigos!

El error ha sido confiar únicamente en los resultados de IDA y no revisar Ghidra.

Tras revisar con Ghidra he encontrado el camino :)

Esta es la call desde mi dll por si a alguien le interesa:


C++:
Porfavor, Acceder o Registrarse para ver el contenido de los códigos!
 
Última edición:
  • Like
Reacciones : c0de y Mstik


24
Me Gusta
15
Temas

Mstik

Moderador
Registrado
4 May 2021
Temas
15
Mensajes
37
Mejores respuestas
0
Porfavor, Acceder o Registrarse para ver el contenido citado!
no puedes declarar un prototipo de funcion directamente con esta convencion de llamada, no esta permitido, lo que si puedes hacer, es declarar con la convencion de __fastcall, cual es la diferencia? bueno fastcall hace exactamente lo que hace thiscall, simplemente es que debes recivir a EDX como segundo parametro de la funcion, despues siguen los parametros normalmente de la stack
Porfavor, Acceder o Registrarse para ver el contenido citado!
se veria asi:
Código:
Porfavor, Acceder o Registrarse para ver el contenido de los códigos!
Porfavor, Acceder o Registrarse para ver el contenido citado!
la segunda funcion, seria un prototipo similar, sobre el tipo de dato _DWORD, si estas en 32 bits es de 4 bytes que lo podrias representar facilmente con un uint32_t, lo mismo en 64 bits, uint64_t, o simplemente unsigned int o void*, independientemente de la plataforma
el prototipo de la segunda se veria asi:
Código:
Porfavor, Acceder o Registrarse para ver el contenido de los códigos!
 


3
Me Gusta
1
Temas

kuhi

Curioso
Registrado
29 Abr 2020
Temas
1
Mensajes
3
Mejores respuestas
1
Porfavor, Acceder o Registrarse para ver el contenido citado!
Hola @Mstik gracias por tu respuesta.
El caso es que siempre he usado __thiscall y siempre me ha funcionado:

1652906337536.png
Todas esas funciones me van perfectamente en el juego, excepto la última. Por lo que no entiendo que no está permitido, a mi me funciona... Si no me equivoco a partir de vc++ 2015 se puede.

¿Entonces simplemente la diferencia de una declaración a otra es que esta última devuelve un puntero a un dword y que el parámetro que instancia la clase es un puntero a un puntero?
 
Estado
Cerrado para nuevas respuestas.
AdBlock Detectado

Lo sentimos, los anuncios son molestos!

Claro, el software de bloqueo de anuncios hace un gran trabajo al bloquear anuncios, pero también bloquea funciones útiles de nuestro sitio web. Para obtener la mejor experiencia en el sitio, deshabilite su AdBlocker.

He desactivado AdBlock    No, gracias