Olá pessoal, nunca postei algo útil para a comunidade, então deixo esse hook onde os créditos são somente meus, tirando a parte da função que converte hostname para ip que não lembro de onde peguei, acho que foi de um emu do Ragnarok, mais enfim segue.
Esse hook é para fazer o cliente reconhecer DNS no serverlist, isso é muito útil para aqueles que querem abrir servidor do próprio PC sem ter o IP fixo pois podem utilizar como exemplo o NO-IP como dns, entre vários outros, lembre que além de colocar esse hook vocês devem liberar a porta no firewall e no modem.
#include <iostream>
#include <winsock.h>
#pragma comment(lib, "Ws2_32.lib")
int hostname_to_ip(char * hostname, char* ip)
{
struct hostent *he;
struct in_addr **addr_list;
int i;
if ((he = gethostbyname(hostname)) == NULL)
{
return 1;
}
addr_list = (struct in_addr **) he->h_addr_list;
for (i = 0; addr_list[i] != NULL; i++)
{
strcpy(ip, inet_ntoa(*addr_list[i]));
return 0;
}
return 1;
}
void ConvertDNStoIP()
{
DWORD ip[256];
for (int i = 0; i < 110; i++)
{
char * Valor = (char*)(0x011D8CB8 + (64 * i));
if (!memcmp(Valor, "http:/", 6))
{
/*LogLine("\n");
LogLine("HTTP Encontrado ");
LogLine(Valor);*/
}
else
{
if (memcmp(Valor, "", 1))
{
hostname_to_ip(Valor, (char*)ip);
memset(Valor, 0x00, strlen(Valor));
memcpy(Valor, (char*)ip, strlen((char*)ip));
}
}
}
}
DWORD dwBackFix6 = 0x0053A3B5;
__declspec(naked) void Fix6() {
ConvertDNStoIP();
__asm
{
MOV DWORD PTR SS : [EBP - 0x8], 1
MOV DWORD PTR SS : [EBP - 0x4], 0
JMP[dwBackFix6]
}
}
//Esse é o Hook para chamar a função
PlaceJMP((BYTE*)0x0053A3A7, (DWORD)Fix6, 12);
Então é isso, espero que a comunidade faça bom uso.
Abraço a todos.