Вопрос Помогите, как читать память? Iternal cheat

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
10 Ноя 2024
Сообщения
16
Реакции
2
использую kiero hook, при попытке получить хп игроков выдает какие то странные значения (675, 1256, 32764).

вот как получаю
uintptr_t entityList = *(uintptr_t*)(BaseAddress + O::offsets::client_dll::dwEntityList);
if (entityList)
{
for (int i = 0; i < 64; i++)
{
uintptr_t listEntry = *(uintptr_t*)(entityList + 0x8 * ((i & 0x7FF) >> 9) + 16);
if (!listEntry) continue;

uintptr_t entity = *(uintptr_t*)(listEntry + 0x78 * (i & 0x1FF));
if (!entity) continue;

int health = *(int*)(entity + O::offsets::C_BaseEntity::m_iHealth);
ImGui::Text("Entity %d health: %d", i, health);
}
}

помогите пожалуйста, пишу чит первый раз.
 

Вложения

  • Снимок экрана 2025-09-10 205538.png
    Снимок экрана 2025-09-10 205538.png
    2.7 MB · Просмотры: 51
Последнее редактирование:
Скрытое содержимое

Пожалуйста, зарегистрируйтесь или авторизуйтесь, чтобы увидеть содержимое.



#include "includes.h"
#include "visual.h"
#include "memory.h"
#include "modules.hpp"
#include "xor.hpp"
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 isMenu = true;

bool ESP = false;
bool ThirdPerson = false;
float boxwidht = 0.5f;
int boxthickness = 2;

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_INSERT) & 1)
isMenu = !isMenu;

ImGui_ImplDX11_NewFrame();
ImGui_ImplWin32_NewFrame();
ImGui::NewFrame();
//int64_t BaseAddress = g_modules->m_modules.client_dll.get();
DWORD BaseAddress = *(DWORD*)GetModuleHandle("client.dll");
if (!BaseAddress)
MessageBoxA(0, "client.dll not found", "Error", 0);

ImGui::Begin("My Cheat");
ImGui::Checkbox("ESP", &ESP);
ImGui::Checkbox("Third Person", &ThirdPerson);\
ImGui::Text("BaseAddress: 0x%p", (void*)BaseAddress);
ImGui::Text("BaseAddress: %llu", BaseAddress); // для 64-битных
ImGui::Text("BaseAddress: %u", (unsigned int)BaseAddress); // для 32-битных

ImGui::End();
//-allow_third_party_software
if (ESP)
{
// V::PlayerESP();
uintptr_t entityList = *(uintptr_t*)(BaseAddress + O::offsets::client_dll::dwEntityList);
if (entityList)
{
for (int i = 0; i < 64; i++)
{
uintptr_t listEntry = *(uintptr_t*)(entityList + 0x8 * ((i & 0x7FFF) >> 9) + 16);
if (!listEntry) continue;

uintptr_t entity = *(uintptr_t*)(listEntry + 120 * (i & 0x1FF));
if (!entity) continue;

int entity_team = *(int*)(entity + O::offsets::C_BaseEntity::m_iTeamNum);

uint32_t playerPawn = *(uint32_t*)(entity + O::offsets::CCSPlayerController::m_hPlayerPawn); // CHandle<C_CSPlayerPawn>

uintptr_t listEntry2 = *(uint32_t*)(entityList + 0x8 * ((playerPawn & 0x7FFF) >> 9) + 16);
if (!listEntry2) continue;

uintptr_t pCSPlayerPawn = *(uintptr_t*)(listEntry2 + 120 * (playerPawn & 0x1FF));
if (!pCSPlayerPawn) continue;

int entity_health = *(int*)(pCSPlayerPawn + O::offsets::C_BaseEntity::m_iHealth);
int entity_armor = *(int*)(pCSPlayerPawn + O::offsets::C_CSPlayerPawn::m_ArmorValue);

ImGui::Text("Entity %d health: %d armor: %d", i, entity_health, entity_armor);
}
}
}


if (ThirdPerson)
{
uintptr_t lplr = *(uintptr_t*)(BaseAddress + O::offsets::client_dll::dwViewAngles);
if (lplr && IsBadReadPtr((void*)lplr, sizeof(uintptr_t)) == 0) // проверка валидности
{
uintptr_t observerModeAddr = lplr + O::offsets::CPlayer_ObserverServices::m_iObserverMode;
if (!IsBadWritePtr((void*)observerModeAddr, sizeof(int)))
{
*(int*)observerModeAddr = 1;
}
}
}


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;
}
при включении функции ESP игра вылетает. Может где то в коде ещё проблема?

P.S сверил все оффсеты, все сходятся
 
использую kiero hook, при попытке получить хп игроков выдает какие то странные значения (675, 1256, 32764).

вот как получаю


помогите пожалуйста, пишу чит первый раз.
C++:
Expand Collapse Copy
const auto Health = *reinterpret_cast<int*>(EntityData.Pawn + Offsets::Health);
        if (Health <= 0 || Health > 100) continue;
 const auto EntityData = GetEntityData(EntityList, i);
        if (!IsValidEntity(EntityData, LocalTeam)) continue;
 
Проверь сначала адреса бейс энтити, и проверь валидные ли они вообще
 
Назад
Сверху Снизу