Начинающий
-
Автор темы
- #1
В общем. по гайду дарвина делаю менюшку читиксов. но он юзает хук dx 9 , а у меня игра dx 11. от этого же разраба - kiero есть хук dx 11, но там нету эндсцены. т.е. я не могу никак сделать включение и отключение софта по бинду. только анлоад сумел по гайду сделать.
вот мой говно код:
Пожалуйста, авторизуйтесь для просмотра ссылки.
вот мой говно код:
C++:
#include "includes.h"
#include "vars.h"
extern LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
Present oPresent;
HWND window = NULL;
WNDPROC oWndProc;
ID3D11Device* pDevice = NULL;
ID3D11DeviceContext* pContext = NULL;
ID3D11RenderTargetView* mainRenderTargetView;
void InitImGui()
{
ImGui::CreateContext();
ImGuiIO& io = ImGui::GetIO();
io.ConfigFlags = ImGuiConfigFlags_NoMouseCursorChange;
ImGui_ImplWin32_Init(window);
ImGui_ImplDX11_Init(pDevice, pContext);
}
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);
}
bool init = false;
bool openmenu = false;
static int tabb = 0;
HRESULT __stdcall hkPresent(IDXGISwapChain* pSwapChain, UINT SyncInterval, UINT Flags)
{
if (!init)
{
if (SUCCEEDED(pSwapChain->GetDevice(__uuidof(ID3D11Device), (void**)&pDevice)))
{
pDevice->GetImmediateContext(&pContext);
DXGI_SWAP_CHAIN_DESC sd;
pSwapChain->GetDesc(&sd);
window = sd.OutputWindow;
ID3D11Texture2D* pBackBuffer;
pSwapChain->GetBuffer(0, __uuidof(ID3D11Texture2D), (LPVOID*)&pBackBuffer);
pDevice->CreateRenderTargetView(pBackBuffer, NULL, &mainRenderTargetView);
pBackBuffer->Release();
oWndProc = (WNDPROC)SetWindowLongPtr(window, GWLP_WNDPROC, (LONG_PTR)WndProc);
InitImGui();
init = true;
}
else
return oPresent(pSwapChain, SyncInterval, Flags);
}
if (GetAsyncKeyState(VK_F12))
{
kiero::shutdown();
}
if (GetAsyncKeyState(VK_F6) & 1)
{
openmenu = !openmenu;
}
// выгруз
if (openmenu)
{
ImGui_ImplDX11_NewFrame();
ImGui_ImplWin32_NewFrame();
ImGui::NewFrame();
// размер
ImGui::SetWindowSize(ImVec2(400, 400));
ImGui::JerryStyle();
ImGui::Begin("Tom & Jerry");
// Таблицы
if (ImGui::Button("Aimbot", ImVec2(100.f, 0.f)))
{
tabb = 0;
}
ImGui::SameLine(0.f, 2.f);
if (ImGui::Button("Wallhack", ImVec2(100.f, 0.f)))
{
tabb = 1;
}
ImGui::SameLine(0.f, 2.f);
if (ImGui::Button("Misc", ImVec2(100.f, 0.f)))
{
tabb = 2;
}
ImGui::SameLine(0.f, 2.f);
// Чекбоксы к таблицам
if (tabb == 0)
{
ImGui::Spacing();
ImGui::Checkbox("Legit", &Vars::Aimbot::legit);
ImGui::Checkbox("Rage", &Vars::Aimbot::rage);
}
else if (tabb == 1)
{
ImGui::Spacing();
ImGui::Checkbox("Visuals", &Vars::Wallhack::esp);
ImGui::Checkbox("HealthBar", &Vars::Wallhack::healthbar);
ImGui::Checkbox("Box", &Vars::Wallhack::box);
}
else if (tabb == 2)
{
ImGui::Spacing();
ImGui::Button("Teleport", ImVec2(75.f, 0.f));
ImGui::Checkbox("Spawn Ammo", &Vars::Misc::spawnerAmmo);
ImGui::Checkbox("Spawn Veh", &Vars::Misc::spawnerVeh);
ImGui::Checkbox("Change Bullet (in veh)", &Vars::Misc::changeCanon);
}
}
ImGui::End();
ImGui::Render();
pContext->OMSetRenderTargets(1, &mainRenderTargetView, NULL);
ImGui_ImplDX11_RenderDrawData(ImGui::GetDrawData());
return oPresent(pSwapChain, SyncInterval, Flags);
}
DWORD WINAPI MainThread(LPVOID lpReserved)
{
bool init_hook = false;
do
{
if (kiero::init(kiero::RenderType::D3D11) == kiero::Status::Success)
{
kiero::bind(8, (void**)&oPresent, hkPresent);
init_hook = true;
}
} while (!init_hook);
return TRUE;
}
BOOL WINAPI DllMain(HMODULE hMod, DWORD dwReason, LPVOID lpReserved)
{
switch (dwReason)
{
case DLL_PROCESS_ATTACH:
DisableThreadLibraryCalls(hMod);
CreateThread(nullptr, 0, MainThread, hMod, 0, nullptr);
break;
case DLL_PROCESS_DETACH:
kiero::shutdown();
break;
}
return TRUE;
}