D3D Hook ve ImGui Kullanımı [Video Ders] - [CSGO]

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üye
Katılım
11 Tem 2016
Mesajlar
43
Tepki puanı
40
Ödüller
6
9 HİZMET YILI
INTERNAL hile yapımının ardından sıra d3d hook yapımına geldi bundan sonraki derlerde ise menüyü özelleştirmeyi göstermek istiyorum ama şimdi sadece ImGui projesini kodumuza nasıl dahil edeceğimizi gösterdim yabancı sitelerde gördüğünüz menüleri bizde yapabileceğiz artık.


Bağlantıları görmek için lütfen Giriş Yap

buradan kodları indirebilirsiniz.

Bağlantıları görmek için lütfen Giriş Yap

dosya silinse dahi internetten aratıp kolayca bulabilirsiniz.


Oluşturduğunuz projede sırayı takip ederek copy-paste yaparsanız hiç bir sıkıntı çekmezsiniz.

Genel Tanımlamalar
C++:
#include <Windows.h>
#include "detours.h"
#include <d3d9.h>
#include <iostream> 
#pragma comment (lib, "d3d9.lib")#include "imgui/imgui.h"
#include "imgui/imgui_impl_dx9.h"
#include "imgui/imgui_impl_win32.h" 
#define HOOK(func,addy)    
o##func = (t##func)DetourFunction((PBYTE)addy,(PBYTE)hk##func)
#define ES    
0typedef HRESULT(WINAPI* tEndScene)(LPDIRECT3DDEVICE9 pDevice);
LRESULT CALLBACK MsgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { return DefWindowProc(hwnd, uMsg, wParam, lParam); }
tEndScene oEndScene; 
LPCSTR windowName = "Counter-Strike: Global Offensive";
WNDPROC oWndProc;
extern LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);

hkEndScene
Bu kısım ekrana çizdirilecek alan yani burası süreklü güncellenir oyundayken.
C++:
HRESULT WINAPI hkEndScene(LPDIRECT3DDEVICE9 pDevice)
{

    /* Ekranda biþey çizdirmek istediðimiz de bu fonksiyon altýna yazmamýz gerekiyor. :D*/
    /*D3DRECT BarRect = { 100, 100, 200, 200 };
    pDevice->Clear(1, &BarRect, D3DCLEAR_TARGET, D3DCOLOR_ARGB(1, 1, 1, 1), 0.0f, 0); // was black because its upp to 255 and not 0 to 1 :')*/
    static bool init = true;
    if (init)
    {
        init = false;
        ImGui::CreateContext();
        ImGuiIO& io = ImGui::GetIO();
        ImGui_ImplWin32_Init(FindWindowA(NULL, windowName));
        ImGui_ImplDX9_Init(pDevice);
    }
    ImGui_ImplDX9_NewFrame();
    ImGui_ImplWin32_NewFrame();
    ImGui::NewFrame();
    //

    /*imgui kullanma alaný*/
    ImGui::ShowDemoWindow();

    //mebu son
    ImGui::EndFrame();
    ImGui::Render();
    ImGui_ImplDX9_RenderDrawData(ImGui::GetDrawData());

    return oEndScene(pDevice);
}

Create D3D
Burası oyun üzerinde yeni bir D3Dservice oluştur kullanmamız için;
C++:
void DX_Init(DWORD* table)
{
    WNDCLASSEX wc = { sizeof(WNDCLASSEX),CS_CLASSDC,MsgProc,0L,0L,GetModuleHandle(NULL),NULL,NULL,NULL,NULL,"DX",NULL };
    RegisterClassEx(&wc);
    HWND hWnd = CreateWindow("DX", NULL, WS_OVERLAPPEDWINDOW, 100, 100, 300, 300, GetDesktopWindow(), NULL, wc.hInstance, NULL);
    LPDIRECT3D9 pD3D = Direct3DCreate9(D3D_SDK_VERSION);
    D3DPRESENT_PARAMETERS d3dpp;
    ZeroMemory(&d3dpp, sizeof(d3dpp));
    d3dpp.Windowed = TRUE;
    d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
    d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;
    LPDIRECT3DDEVICE9 pd3dDevice;
    pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &pd3dDevice);
    DWORD* pVTable = (DWORD*)pd3dDevice;
    pVTable = (DWORD*)pVTable[0];
    table[ES] = pVTable[42];
    DestroyWindow(hWnd);
}

Gui Erişimi
gui üzerindeki butonları vs. kullanmamıza yarayan fonk.

C++:
LRESULT __stdcall WndProc(const HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {

    if (true && ImGui_ImplWin32_WndProcHandler(hWnd, uMsg, wParam, lParam))
        return true;

    return CallWindowProc(oWndProc, hWnd, uMsg, wParam, lParam);
}
Enjekte etme
burda kodumuz oyuna dahil oluyor;
C++:
DWORD WINAPI MyThread(LPVOID)
{
    HWND  window = FindWindowA(NULL, windowName);
    oWndProc = (WNDPROC)SetWindowLongPtr(window, GWL_WNDPROC, (LONG_PTR)WndProc);
    DWORD VTable[3] = { 0 };
    while (GetModuleHandle("d3d9.dll") == NULL) {
        Sleep(250);
    }
    DX_Init(VTable);
    HOOK(EndScene, VTable[ES]);
    return 0;
}

BOOL WINAPI DllMain(HMODULE hModule, DWORD dwReason, LPVOID lpvReserved)
{
    if (dwReason == DLL_PROCESS_ATTACH) {
        CreateThread(0, 0, MyThread, 0, 0, 0);
    }
    return TRUE;
}
 
Onaylı Üye
Katılım
22 Ağu 2015
Mesajlar
126
Tepki puanı
29
Ödüller
8
Yaş
28
10 HİZMET YILI
Teşekkür ederim eline sağlık
 
Üye
Katılım
16 Şub 2019
Mesajlar
4
Tepki puanı
0
Yaş
51
7 HİZMET YILI
saol
 
Moderatörün son düzenlenenleri:
Üye
Katılım
13 Kas 2018
Mesajlar
35
Tepki puanı
1
Ödüller
5
7 HİZMET YILI
Süpersin teşekkürler
Post automatically merged:

Videodaki CppCLR_Winforms şeysi nedir?
 
Son düzenleme:
Üye
Katılım
15 Mar 2019
Mesajlar
1
Tepki puanı
0
Yaş
26
7 HİZMET YILI
fakat ben aimbot tabı filan yapmak istiyorum nasıl yapıcam discord varmı
 
Onaylı Üye
Katılım
21 Ocak 2019
Mesajlar
80
Tepki puanı
12
Yaş
26
7 HİZMET YILI
Güzel bir Konu C++ ImGui & Hook Öğrenmek isteyenler için bir konu :)
 
Üye
Katılım
5 Eki 2018
Mesajlar
2
Tepki puanı
0
Yaş
35
7 HİZMET YILI
adamsın kanka bu checbox falan düzeltme yerleri nerde :D
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst