es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Hook de la Tabla de Direcciones de Importación (IAT) en la función getaddrinfo de Windows en Ws2_32.dll.

Estoy intentando crear un gancho para obtener la URL que el usuario ingresa con el fin de crear un filtro de bloqueo. Leí la documentación de MSDN (https://learn.microsoft.com/en-us/windows/win32/api/ws2tcpip/nf-ws2tcpip-getaddrinfo) y muestra la función como:

INT WSAAPI getaddrinfo(PCSTR pNodeName, PCSTR pServiceName, const ADDRINFOA *pHints, PADDRINFOA *ppResult);

¿Debo crear un puntero a esa función como se muestra a continuación?

// Puntero a getaddrinfo() original
int (WINAPI * p_getaddrinfo)(PCSTR pNodeName, PCSTR pServiceName, const ADDRINFOA *pHints, PADDRINFOA *ppResult);

O, ¿debería ser algo como:

int (WSAAPI * p_getaddrinfo)(PCSTR pNodeName, PCSTR pServiceName, const ADDRINFOA *pHints, PADDRINFOA *ppResult);

Cualquier ayuda y consejo sería muy apreciado.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    En este caso específico, ambas declaraciones son correctas y deberían funcionar. Sin embargo, la segunda declaración es más precisa, ya que especifica la convención de llamada correcta (WSAAPI) para la función getaddrinfo().

    En general, es una buena práctica especificar la convención de llamada correcta para las funciones, ya que asegura la compatibilidad entre diferentes compiladores y plataformas. Además, algunas funciones pueden tener requisitos específicos para su convención de llamada (como __stdcall o __fastcall), por lo que es importante leer cuidadosamente la documentación.

    En resumen, ambas declaraciones deberían funcionar en este caso, pero usar la convención de llamada correcta siempre es una buena práctica.

Comments are closed.