O problema de detectar em seu caso não sei te dizer o que é, pois bem, não sei como esta o seu código após esse trecho que você mencionou. Mas em Windows 7 32 Bits, funciona dessa maneira com esse detour modo:
Code:LPVOID DetourCreate( PBYTE pbTargetFunction, PBYTE pbDetourFunction, INT intSize ) { DWORD dwProtect; PBYTE pbDetour = ( PBYTE )malloc( intSize + 5 ); VirtualProtect( pbTargetFunction, intSize, PAGE_EXECUTE_READWRITE, &dwProtect ); memcpy( pbDetour, pbTargetFunction, intSize ); pbDetour += intSize; *( BYTE * ) ( pbDetour + 0 ) = 0xE9; *( DWORD * )( pbDetour + 1 ) = ( DWORD )( pbTargetFunction + intSize - pbDetour ) - 5; *( BYTE * ) ( pbTargetFunction + 0 ) = 0xB8; *( DWORD * )( pbTargetFunction + 1 ) = ( DWORD )( pbDetourFunction ); *( WORD * ) ( pbTargetFunction + 5 ) = 0xE0FF; for( INT i = 7; i < intSize; i++ ) *( BYTE * )( pbTargetFunction + i ) = 0x90; VirtualProtect( pbTargetFunction, intSize, dwProtect, &dwProtect ); return ( pbDetour - intSize ); }Windows 7 32 e 64 Bits.Code:DWORD vTable[2] = {0}; CreateDevice(vTable); oReset = ( tReset ) DetourCreate( ( PBYTE )vTable[16], ( PBYTE )&ResetDevice, ResetSize ); oPresent = ( tPresent ) DetourCreate( ( PBYTE )vTable[17], ( PBYTE )&PresetDevice, PresentSize );
ResetSize com esses valores: 11, 12, 13 e 16.
PresentSize com esses valores: 7 e 10.
MEU DEUS VEIO.
VC INICIALIZA 2 DWORD com nome vTable e chama elas como 16 e 17 sendo na CreateDevice deve ser vTable[0] e vTable[1], PQP QUE BURIÇ !DWORD vTable[2] = {0};
CreateDevice(vTable);
oReset = ( tReset ) DetourCreate( ( PBYTE )vTable[16], ( PBYTE )&ResetDevice, ResetSize );
oPresent = ( tPresent ) DetourCreate( ( PBYTE )vTable[17], ( PBYTE )&PresetDevice, PresentSize );
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
Fєηix (12-13-2013)
Aqui testei com sua Detour e todos os números no ResetSize e PresntSize e deu DC, ai eu fiz funcionar assim, porem da 1 minuto dentro do Jogo ele da Conexão Encerrada:
Code:VOID *DetourJUMP(BYTE *src, CONST BYTE *dst, CONST INT len) { DWORD dwback; VirtualProtect(src, len, PAGE_READWRITE, &dwback); BYTE *jmp = (BYTE *)malloc(len + 5); memcpy(jmp, src, len); jmp += len; jmp[0] = 0xE9; *(DWORD *)(jmp + 1) = (DWORD)(src + len - jmp) - 5; src[0] = 0xE9; *(DWORD *)(src + 1) = (DWORD)(dst - src) - 5; return(jmp - len); } void Hook(void) { DWORD vTable[2] = {0}; CreateDevice(vTable); #define ResetSize 5 #define PresentSize 5 #define DetourType DetourJUMP #define DetourVar1 0 #define DetourVar2 1 oReset = ( tReset ) DetourType( ( PBYTE )vTable[DetourVar1], ( PBYTE )&ResetDevice, ResetSize ); oPresent = ( tPresent ) DetourType( ( PBYTE )vTable[DetourVar2], ( PBYTE )&PresetDevice, PresentSize ); }
Impossível estar acontecendo isso com os sizes que lhe informei, a não ser que eu esteja equivocado em relação a sua edição de Windows 7.
Qual é a edição do seu Windows 7: Starter, Home Basic, Home Premium, Professional, Enterprise ou Ultimate ? Informe também se está com o Service Pack 1.
Porque pelo visto com os sizes que você testou condiz que está gerando crash sem iniciar o jogo, correto ?
Pode Ser sua hook.
Windows 7 Professional
Service Pack 1
Notebook Dell
Intel Core i3
Sistema de 32 Bits
e sim, com detour e sizes que você me passou, gera crash antes de entra na tela de login do CA.
Já com esse tipo que lhe mostrei funciona, entra no lobby, entra na sala, e entra no Jogo, ai demora uns menos de 2 min da Conexão encerrada.
OBS: Base do Vector -> Vector Hot Simple v1.0 é em Hotkeys e não ativa as funçoes...
Last edited by Disconect; 12-13-2013 at 06:58 PM.