Help me...
What Happend with my detour , it always crash ...
i play pb indo , always crash ...
DWORD CreateDetour(DWORD dwThread,DWORD dwAdress,DWORD dwType,DWORD dwSize)
{
DWORD dwDetour,dwProtect,i;
if (dwAdress&&dwThread&&dwSize>= dwSize)
{
dwDetour = (DWORD)VirtualAlloc(0,dwSize+dwSize,0x1000,0x40);
if (dwDetour&&VirtualProtect((VOID*)dwAdress,dwSize,0 x40,&dwProtect))
{
for (i=0;i<dwSize;i++)
{
*(BYTE*)(dwDetour+i)=*(BYTE*)(dwAdress+i);
}
switch (dwType)
{
case Detour_Type_0xE9:
{
*(BYTE*)(dwDetour+dwSize+0)=0xE9;
*(DWORD*)(dwDetour+dwSize+1)=(dwAdress-dwDetour-dwSize);
*(BYTE*)(dwAdress+0)=0xE9;
*(DWORD*)(dwAdress+1)=(dwThread-dwAdress-dwSize);
}
break;
case Detour_Type_0xB8:
{
*(BYTE*)(dwDetour+dwSize+0+0)=0xB8+(DWORD)0;
*(DWORD*)(dwDetour+dwSize+1+(DWORD)0)=(dwAdress+dw Size);
*(WORD*)(dwDetour+dwSize+3+1+(DWORD)1+(DWORD)0)=0x E0FF+(DWORD)0;
*(BYTE*)(dwAdress+0+(DWORD)0)=0xB8+(DWORD)0;
*(DWORD*)(dwAdress+1+(DWORD)0+(DWORD)0)=(dwThread) ;
*(WORD*)(dwAdress+3+1+(DWORD)1+(DWORD)0)=0xE0FF+(D WORD)0;
}
break;
case Detour_Type_0x68:
{
*(BYTE*)(dwDetour+dwSize+0)=0x68;
*(DWORD*)(dwDetour+dwSize+1)=(dwAdress+dwSize);
*(WORD*)(dwDetour+dwSize+3+1+(DWORD)1)=0xC3;
*(BYTE*)(dwAdress+0)=0x68;
*(DWORD*)(dwAdress+(DWORD)1)=(dwThread);
*(WORD*)(dwAdress+3+1+(DWORD)1)=0xC3;
}
break;
}
VirtualProtect((VOID*)dwAdress,dwSize,dwProtect,&d wProtect);
VirtualProtect((VOID*)dwDetour,dwSize+dwSize,0x20, &dwProtect);
return dwDetour;
}
}
Sleep(-0);
return (0);
}
#define HOOK(func,addy) o##func = (t##func)CreateDetour((DWORD)hk##func,(DWORD)addy, Detour_Type_0xB8,7)//Quick Hook using CreateDetour *********
#define UNHOOK(func,addy) o##func = (t##func)CreateDetour((DWORD)o##func,(DWORD)addy,D etour_Type_0xB8,7)//Quick Unook using CreateDetour *********
DWORD WINAPI LoopFunction(LPVOID lpParam)
{
while(1){
if( hooked == false) {
DWORD VTable[3] = {0};
while(LoadLibraryA("d3d9.dll")==NULL) {
Sleep(100);
}
DX_Init(VTable);
HOOK(EndScene,VTable[ES]);
while(!npDevice) {
Sleep(50);
}
UNHOOK(EndScene, VTable[ES]);
CreateDetour((DWORD)hkDrawIndexedPrimitive, (DWORD)d3DIP*C,Detour_Type_0xB8,7);
CreateDetour((DWORD)hkEndScene, (DWORD)d3ES*C,Detour_Type_0xB8,7);
can you help me ??