hey hab nochmal des tut von purple.d1amond gemacht.
das erstellen klappt ohne Fehler, doch es wird kein kasten angezeigt im game(warrock)
erkennt jmd den fehler?
habe ich auch das DrawRect ( pDevice, 10, 10, 200, 200, txtPink); richtig gesetzt?
das erstellen klappt ohne Fehler, doch es wird kein kasten angezeigt im game(warrock)
Code:
#include <windows.h>
#include <cstdio>
#include <d3d9.h>
#include <d3dx9.h>
const D3DCOLOR txtPink = D3DCOLOR_ARGB(255,255,0,255);
void *DetourFunc(BYTE *src, const BYTE *dst, const int len) // credits to gamedeception
{
BYTE *jmp = (BYTE*)malloc(len+5);
DWORD dwback;
VirtualProtect(src, len, PAGE_READWRITE, &dwback);
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;
VirtualProtect(src, len, dwback, &dwback);
return (jmp-len);
}
typedef HRESULT(_stdcall* EndScene_t)(LPDIRECT3DDEVICE9);
EndScene_t pEndScene;
void DrawRect (LPDIRECT3DDEVICE9 Device_t, int X, int Y, int L, int H, D3DCOLOR color)
{
D3DRECT rect = {X, Y, X+L, Y+H};
Device_t->Clear(1, &rect, D3DCLEAR_TARGET, color, 0, 0); // bei Google gibt’s näheres
}
HRESULT _stdcall hkEndScene(LPDIRECT3DDEVICE9 pDevice)
{
DrawRect ( pDevice, 10, 10, 200, 200, txtPink);
return pEndScene(pDevice);
}
void initHook()
{
HMODULE hModule = NULL;
while(!hModule)
{
hModule = GetModuleHandleA("d3d9.dll");
Sleep(100);
}
pEndScene = (EndScene_t)DetourFunc((PBYTE) 0x7542CE09, (PBYTE)hkEndScene, 5);
}
int WINAPI DllMain(HINSTANCE hInst,DWORD reason, LPVOID reserverd)
{
switch(reason)
{
case DLL_PROCESS_ATTACH:
CreateThread(0,0,(LPTHREAD_START_ROUTINE)initHook, 0, 0, 0);
break;
}
return true;
}
erkennt jmd den fehler?
habe ich auch das DrawRect ( pDevice, 10, 10, 200, 200, txtPink); richtig gesetzt?