Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "Includes.h"
- #pragma comment(lib, "d3d9.lib")
- #pragma comment(lib, "d3dx9.lib")
- void* d3d9Device[119];
- BYTE EndSceneBytes[7]{ 0 };
- tEndScene oEndScene = nullptr;
- extern LPDIRECT3DDEVICE9 pDevice = nullptr;
- extern LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
- Hack* hack;
- WNDPROC oWndProc;
- DWORD* D3d9VTable;
- DWORD D3d9Base;
- bool showMenu = true;
- const char* windowName = "Counter-Strike: Global Offensive";
- void DrawImGui() {
- ImGui_ImplDX9_NewFrame();
- ImGui_ImplWin32_NewFrame();
- ImGui::NewFrame();
- ImGui::Begin("Window");
- // start doing ur imgui drawing here
- ImGui::Text("Test");
- ImGui::Render();
- ImGui_ImplDX9_RenderDrawData(ImGui::GetDrawData());
- }
- void APIENTRY hkEndScene(LPDIRECT3DDEVICE9 o_pDevice) {
- if (!pDevice)
- pDevice = o_pDevice;
- static bool init = true;
- if (init)
- {
- init = false;
- ImGui::CreateContext();
- ImGuiIO& io = ImGui::GetIO();
- ImGui_ImplWin32_Init(FindWindowA(NULL, windowName));
- ImGui_ImplDX9_Init(pDevice);
- }
- if (showMenu) {
- DrawImGui();
- }
- oEndScene(pDevice);
- }
- LRESULT __stdcall WndProc(const HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
- if (showMenu && ImGui_ImplWin32_WndProcHandler(hWnd, uMsg, wParam, lParam))
- return true;
- return CallWindowProc(oWndProc, hWnd, uMsg, wParam, lParam);
- }
- DWORD WINAPI mainThread(HMODULE hModule) {
- if (GetD3D9Device(d3d9Device, sizeof(d3d9Device))) {
- memcpy(EndSceneBytes, (char*)d3d9Device[42], 7);
- oEndScene = (tEndScene)TrampHook((char*)d3d9Device[42], (char*)hkEndScene, 7);
- oWndProc = (WNDPROC)SetWindowLongPtr(window, GWL_WNDPROC, (LONG_PTR)WndProc);
- }
- while (!GetAsyncKeyState(VK_END)) {
- if (GetAsyncKeyState(VK_INSERT)) {
- showMenu = !showMenu;
- Sleep(500);
- }
- }
- Patch((BYTE*)d3d9Device[42], EndSceneBytes, 7);
- Sleep(1000);
- FreeLibraryAndExitThread(hModule, 0);
- }
- BOOL APIENTRY DllMain(HMODULE hModule,
- DWORD ul_reason_for_call,
- LPVOID lpReserved
- )
- {
- switch (ul_reason_for_call)
- {
- case DLL_PROCESS_ATTACH:
- CloseHandle(CreateThread(nullptr, 0, (LPTHREAD_START_ROUTINE)mainThread, hModule, 0, nullptr));
- case DLL_THREAD_ATTACH:
- case DLL_THREAD_DETACH:
- case DLL_PROCESS_DETACH:
- break;
- }
- return TRUE;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement