HelpProblema Hook S2S

Posts 1–15 of 17 · Page 1 of 2
Problema Hook S2S
Estou tentando fazer um hook no S2S pra logar os packets mas quando eu entro na partida e aperto INSERT pra ativar o hook o jogo fecha. Estou utilizando a Detour que o luizimloko postou. Será que é porque eu não estou utilizando o SDK e estou fazendo os parâmetros com o tipo errado?

Se alguem puder dar uma olhada no código...

Code:
#include <stdio.h>
#include <windows.h>

typedef unsigned int(*pS2S)(void *buf, unsigned int flags);
pS2S oS2S;

#define ADDR_BYPASS 0x539949
#define ADDR_S2S 0x47B940

LPVOID DetourCreate(BYTE *src, CONST BYTE *dst, CONST INT len)
{
	BYTE *jmp = (BYTE*)malloc(len + 5);
	DWORD dwBack;
	VirtualProtect(src, len, PAGE_READWRITE, &dwBack);
	memcpy(jmp, src, len);
	jmp += len;
	jmp[0] = '\xE9';
	*(DWORD*)(jmp + 1) = (DWORD)(src + len - jmp) - 5;
	
	src[0]  = '\xB8';
	src[5]  = '\xA9';
	src[10] = '\x50';
	src[11] = '\x90';
	src[12] = '\xC3';
	src[13] = '\x90';
	
	*(DWORD*)(&src[1]) = (DWORD)dst;
	*(DWORD*)(&src[6]) = (DWORD)dst;
	for (INT i = 14; i < len; i++) src[i] = 0x90;
	VirtualProtect(src, len, dwBack, &dwBack);
    
	return (jmp - len);
}

unsigned int hkS2S(void *buf, unsigned int flags)
{
	__asm PUSHAD;

	printf("hu3hu3");

	__asm POPAD;
	return oS2S(buf, flags);
}


void Main()
{
		
	DWORD dwOld;
	VirtualProtect((void*)ADDR_BYPASS, 6, PAGE_EXECUTE_READWRITE, &dwOld);

	while(memcmp((CONST VOID*)ADDR_BYPASS, (CONST VOID*)"\x0F\x84\xB4\x00\x00\x00", 6) != 0) Sleep(100);

	memcpy((void*)ADDR_BYPASS, "\xE9\x19\x01\x00\x00\x90", 6);

	while (1)
	{
		if (GetAsyncKeyState(VK_INSERT) & 1) // Ativa hook.
			oS2S = (pS2S)DetourCreate((BYTE*)ADDR_S2S, (BYTE*)hkS2S, 7);
	}

	VirtualProtect((void*)ADDR_BYPASS, 6, dwOld, 0);

}


BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call,	LPVOID lpReserved )
{
	switch ( ul_reason_for_call )
	{
		case DLL_PROCESS_ATTACH:
			AllocConsole();
			freopen("CONOUT$", "w", stdout);
			CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)&Main, NULL, 0,NULL);
		break;
	}
	return TRUE;
}
Quote Originally Posted by NeoStryker View Post
Estou tentando fazer um hook no S2S pra logar os packets mas quando eu entro na partida e aperto INSERT pra ativar o hook o jogo fecha. Estou utilizando a Detour que o luizimloko postou. Será que é porque eu não estou utilizando o SDK e estou fazendo os parâmetros com o tipo errado?

Se alguem puder dar uma olhada no código...

Code:
#include <stdio.h>
#include <windows.h>

typedef unsigned int(*pS2S)(void *buf, unsigned int flags);
pS2S oS2S;

#define ADDR_BYPASS 0x539949
#define ADDR_S2S 0x47B940

LPVOID DetourCreate(BYTE *src, CONST BYTE *dst, CONST INT len)
{
	BYTE *jmp = (BYTE*)malloc(len + 5);
	DWORD dwBack;
	VirtualProtect(src, len, PAGE_READWRITE, &dwBack);
	memcpy(jmp, src, len);
	jmp += len;
	jmp[0] = '\xE9';
	*(DWORD*)(jmp + 1) = (DWORD)(src + len - jmp) - 5;
	
	src[0]  = '\xB8';
	src[5]  = '\xA9';
	src[10] = '\x50';
	src[11] = '\x90';
	src[12] = '\xC3';
	src[13] = '\x90';
	
	*(DWORD*)(&src[1]) = (DWORD)dst;
	*(DWORD*)(&src[6]) = (DWORD)dst;
	for (INT i = 14; i < len; i++) src[i] = 0x90;
	VirtualProtect(src, len, dwBack, &dwBack);
    
	return (jmp - len);
}

unsigned int hkS2S(void *buf, unsigned int flags)
{
	__asm PUSHAD;

	printf("hu3hu3");

	__asm POPAD;
	return oS2S(buf, flags);
}


void Main()
{
		
	DWORD dwOld;
	VirtualProtect((void*)ADDR_BYPASS, 6, PAGE_EXECUTE_READWRITE, &dwOld);

	while(memcmp((CONST VOID*)ADDR_BYPASS, (CONST VOID*)"\x0F\x84\xB4\x00\x00\x00", 6) != 0) Sleep(100);

	memcpy((void*)ADDR_BYPASS, "\xE9\x19\x01\x00\x00\x90", 6);

	while (1)
	{
		if (GetAsyncKeyState(VK_INSERT) & 1) // Ativa hook.
			oS2S = (pS2S)DetourCreate((BYTE*)ADDR_S2S, (BYTE*)hkS2S, 7);
	}

	VirtualProtect((void*)ADDR_BYPASS, 6, dwOld, 0);

}


BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call,	LPVOID lpReserved )
{
	switch ( ul_reason_for_call )
	{
		case DLL_PROCESS_ATTACH:
			AllocConsole();
			freopen("CONOUT$", "w", stdout);
			CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)&Main, NULL, 0,NULL);
		break;
	}
	return TRUE;
}
Será que é porque eu não estou utilizando o SDK e estou fazendo os parâmetros com o tipo errado?
SDK, e isso:

Code:
while (1)
	{
		if (GetAsyncKeyState(VK_INSERT) & 1) // Ativa hook.
			oS2S = (pS2S)DetourCreate((BYTE*)ADDR_S2S, (BYTE*)hkS2S, 7);
}
Quote Originally Posted by Fix2 View Post




SDK, e isso:

Code:
while (1)
	{
		if (GetAsyncKeyState(VK_INSERT) & 1) // Ativa hook.
			oS2S = (pS2S)DetourCreate((BYTE*)ADDR_S2S, (BYTE*)hkS2S, 7);
}
"E isso" vc quer dizer a gambiarra que eu fiz pra não usar GameStatus ou onde eu crio a Detour?
Disfarça percebi o len errado. Baixei o SDK aqui, acho que vai funcionar agora só to esperando a manutenção... Valeu pela ajuda!
isso deve dar um lag heim, coloca um Sleep nesse loop
Quote Originally Posted by New - Hacker View Post
isso deve dar um lag heim, coloca um Sleep nesse loop
Continua dando DC, mas valeu pela dica...
Quote Originally Posted by NeoStryker View Post
Continua dando DC, mas valeu pela dica...
claro!, modificação de memória na engine é detectado pelo HShield.
Então esse bypass não funciona? Como posso logar os ids então?
não é necessário do SDK para fazer a hook, mas se quiser gravar os IDs vai precisar, já que necessita do ILTMessage_Read para pegar o ID
tente só verificar os módulos do CA e o GameStatus, e logo em seguida "iniciar" a hook, eu lembro que se não verificar o GS ele da crash quando chega na tela de login

Quote Originally Posted by luizimloko View Post


claro!, modificação de memória na engine é detectado pelo HShield.
faz tempo que eu não mexo com o CA, mas acho que o problema no caso é erro na sintaxe do código, se fosse detectação não iria dar crash na mesma hora, bem pelo menos antes não dava...

Quote Originally Posted by NeoStryker View Post
Então esse bypass não funciona? Como posso logar os ids então?
O bypass não funciona, para pegar os ids você usa o (ILTMessage_Read) pMsg->Readuint8( ) na hook
Quote Originally Posted by New - Hacker View Post

faz tempo que eu não mexo com o CA, mas acho que o problema no caso é erro na sintaxe do código, se fosse detectação não iria dar crash na mesma hora, bem pelo menos antes não dava...
ele disse:

"Continua dando DC" , interpretei DC ( Disconect )
Eu sei que se eu ativar o hook antes de entrar na partida vai dar DC. Por isso eu só apertei INSERT pra iniciar o hook quando estava dentro do modo treinamento e no mesmo instante o jogo travou e depois de alguns segundos fechou. O que eu faço?
Quote Originally Posted by NeoStryker View Post
Eu sei que se eu ativar o hook antes de entrar na partida vai dar DC. Por isso eu só apertei INSERT pra iniciar o hook quando estava dentro do modo treinamento e no mesmo instante o jogo travou e depois de alguns segundos fechou. O que eu faço?
Tira esse negócio de INSERT, verifica os módulos e "inicia" a hook quando o GS for diferente de 5 e 0 (looby)
Quote Originally Posted by New - Hacker View Post


Tira esse negócio de INSERT, verifica os módulos e "inicia" a hook quando o GS for diferente de 5 e 0 (looby)
Sim, sei que fiz gambiarra, mas isso removeria o DC?

Quote Originally Posted by luizimloko View Post
claro!, modificação de memória na engine é detectado pelo HShield.
Então existe alguma forma de fazer hook sem modificar a memória? Eu estou pesquisando sobre Hardware Breakpoints, será que dá certo?
S2S não funciona com Hardware Breakpoint, tem que fazer bypass mesmo.
Quote Originally Posted by New - Hacker View Post
S2S não funciona com Hardware Breakpoint, tem que fazer bypass mesmo.
Não acho que não seja possivel, uma hora o jogo acessa a função então teria sim como fazer HWBP mas não adiantaria de nada já que o HShield checa as Threads que são chamada do GetThreadContext() e algumas APIs necessarias pra criar o HWBP tipo o AddVectoredExceptionHandler.

Outra coisa, ja ta na hora do pessoal começar a logar os proprios erros (crash) que a .DLL causa loggando os exceptions e o local deles.

Procurando um pouquinho você acha, não me venha com "RBBRBRBRBR HEUEHEUEHUHUHU PREGUIÇA" você não vai ganhar nada além de desrespeito com essas coisas...
Posts 1–15 of 17 · Page 1 of 2

Post a Reply

Similar Threads

Tags for this Thread

None

Need help?