Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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);
- }
- typedef HRESULT(__stdcall *tPresent)(IDirect3DDevice9 *, CONST RECT *, CONST RECT *, HWND, CONST RGNDATA *);
- typedef HRESULT(__stdcall *tReset)(IDirect3DDevice9 *, D3DPRESENT_PARAMETERS *);
- tReset gOriginalReset = nullptr;
- tPresent gOriginalPresent = nullptr;
- D3DPRESENT_PARAMETERS* gPresentParams = nullptr;
- void CalcScreenCoors(CVector * vecWorld, CVector * vecScreen)
- {
- D3DXMATRIX m((float*)(0xB6FA2C));
- DWORD *dwLenX = (DWORD*)(0xC17044);
- DWORD *dwLenY = (DWORD*)(0xC17048);
- vecScreen->fX = vecWorld->fZ * m._31 + vecWorld->fY * m._21 + vecWorld->fX * m._11 + m._41;
- vecScreen->fY = vecWorld->fZ * m._32 + vecWorld->fY * m._22 + vecWorld->fX * m._12 + m._42;
- vecScreen->fZ = vecWorld->fZ * m._33 + vecWorld->fY * m._23 + vecWorld->fX * m._13 + m._43;
- float fRecip = 1.0f / vecScreen->fZ;
- vecScreen->fX *= fRecip * (*dwLenX);
- vecScreen->fY *= fRecip * (*dwLenY);
- }
- CVector screen = {};
- HRESULT __stdcall hkdReset(IDirect3DDevice9 *d3dDev, D3DPRESENT_PARAMETERS *presentParams)
- {
- HRESULT hRes = gOriginalReset(d3dDev, presentParams);
- return hRes;
- }
- HRESULT __stdcall hkdPresent(IDirect3DDevice9 *d3dDev, CONST RECT *srcRect, CONST RECT *destRect, HWND destWindow, CONST RGNDATA *dirtyRegion)
- {
- DrawRect(d3dDev, (int)screen.fX - 5, (int)screen.fY + 5, 20, 10, D3DCOLOR_ARGB(200, 50, 50, 255));
- HRESULT hRes = gOriginalPresent(d3dDev, srcRect, destRect, destWindow, dirtyRegion);
- return hRes;
- }
- DWORD FindDevice(DWORD dwLen)
- {
- DWORD dwObjBase = (DWORD)LoadLibraryA("d3d9.dll");
- if (dwObjBase == 0x0)
- return 0x0;
- while (dwObjBase++ < dwObjBase + dwLen)
- {
- if ((*(WORD*)(dwObjBase + 0x00)) == 0x06C7 && (*(WORD*)(dwObjBase + 0x06)) == 0x8689 && (*(WORD*)(dwObjBase + 0x0C)) == 0x8689)
- {
- dwObjBase += 2;
- break;
- }
- }
- return dwObjBase;
- };
- bool initD3DRes()
- {
- DWORD* VTable;
- *(DWORD*)&VTable = *(DWORD *)FindDevice(0x128000);
- DWORD VP16, VP17;
- VirtualProtect((LPVOID)&VTable[16], 4, PAGE_READWRITE, &VP16);
- VirtualProtect((LPVOID)&VTable[17], 4, PAGE_READWRITE, &VP17);
- gOriginalReset = (tReset)VTable[16];
- gOriginalPresent = (tPresent)VTable[17];
- VTable[16] = (DWORD)hkdReset;
- VTable[17] = (DWORD)hkdPresent;
- VirtualProtect((LPVOID)&VTable[16], 4, VP16, &VP16);
- VirtualProtect((LPVOID)&VTable[17], 4, VP17, &VP17);
- return true;
- }
- void destD3DRes()
- {
- DWORD* VTable;
- *(DWORD*)&VTable = *(DWORD*)FindDevice(0x128000);
- DWORD VP16, VP17;
- VirtualProtect((LPVOID)&VTable[16], 4, PAGE_READWRITE, &VP16);
- VirtualProtect((LPVOID)&VTable[17], 4, PAGE_READWRITE, &VP17);
- VTable[16] = (DWORD)gOriginalReset;
- VTable[17] = (DWORD)gOriginalPresent;
- VirtualProtect((LPVOID)&VTable[16], 4, VP16, &VP16);
- VirtualProtect((LPVOID)&VTable[17], 4, VP17, &VP17);
- }
- BOOL WINAPI DllMain(HINSTANCE hModule, DWORD dwReason, LPVOID lpvReserved)
- {
- if (dwReason == DLL_PROCESS_ATTACH)
- {
- DisableThreadLibraryCalls(hModule);
- CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)&hkdPresent, NULL, NULL, NULL);
- }
- else if (dwReason == DLL_PROCESS_DETACH) {
- }
- return TRUE;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement