Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Исходник [Сурс] Combat Arms — Internal база (Chams, Speedhack, Super Jump)

Sloppy
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
13 Фев 2026
Сообщения
663
Реакции
18
В руки попал занятный набросок под Combat Arms. Автор жалуется, что софт отлетает через минуту игры — классический симптом либо детекта метода хука, либо срабатывания серверного хартбита на измененные параметры физики. База написана на C++, юзает классический D3D9 Present Hook и лезет в память движка через прямые оффсеты в CShell.dll.

Что внутри этого билда:
  1. Юзает LTClientEXE для проброса команд прямо в консоль Литич-движка (LithTech).
  2. Реализованы Чамсы через консольную переменную +SkelModelStencil.
  3. Прямая перезапись JumpVel и FRunVel для спидхака и высокого прыжка.
  4. Простенький Detour для перехвата Present.

Технически тут всё довольно топорно: DetourEazyCreating делает обычный jmp, что античит хавает на завтрак. Если игра закрывается ровно через минуту, стоит проверить целостность VTable или перейти на более скрытные методы инжекта.

Func.h:
Expand Collapse Copy
#include <windows.h>
#include <d3dx9.h>
#pragma comment(lib, "d3dx9.lib")
 
 
bool iChams, iJump, iSpeed;
 
#define LTClientEXE            0x4909F0
#define JumpVel                0x384870D4
#define FRunVel                0x38487068
#define BRunVel                0x3848708C
#define SRunVel                0x384870B0
#define GameStatus            0x384274BC
 
VOID pMemoria(LPVOID andress, LPVOID ByteMemcpy, INT Len)
{
    DWORD dwBack;
    VirtualProtect((LPVOID)andress, Len, 0x40, &dwBack);
    memcpy((LPVOID)andress, ByteMemcpy, Len);
    VirtualProtect((LPVOID)andress, Len, dwBack, &dwBack);
}
 
VOID VerifyClick(bool&val, int vkKey)
{
    if (GetAsyncKeyState(vkKey) & 1)
        val = !val;
}
VOID Console(CONST CHAR* CMD)
{
    _asm
    {
        PUSH CMD
        MOV EAX, LTClientEXE
        CALL EAX
        ADD ESP, 0x4
    }
}
 
void FeatureCode()
{
    if (*(BYTE*)GameStatus == 1)
    {
        if (iChams)
        {
            Console("+SkelModelStencil 1");
        }
        else
        {
            Console("+SkelModelStencil 0");
        }
        if (iSpeed)
        {
            *(FLOAT*)FRunVel = 285.0f * 2;
            *(FLOAT*)BRunVel = 285.0f * 2;
            *(FLOAT*)SRunVel = 285.0f * 2;
        }
        else
        {
            *(FLOAT*)FRunVel = 285.0f;
            *(FLOAT*)BRunVel = 285.0f;
            *(FLOAT*)SRunVel = 285.0f;
        }
        if (iJump)
        {
            *(FLOAT*)JumpVel = 330.0f * 2;
        }
        else
        {
            *(FLOAT*)JumpVel = 330.0f;
        }
    }
}
Main.cpp:
Expand Collapse Copy
#include "Func.h"
 
BOOL CheatActivationStuff()
{
    while (GetModuleHandle("cshell.dll") == NULL) {}
 
    while (true)
    {
 
        VerifyClick(iChams, VK_NUMPAD1);
        VerifyClick(iJump, VK_NUMPAD2);
        VerifyClick(iSpeed, VK_NUMPAD3);
 
        FeatureCode();
    }
    return true;
}
BOOL __stdcall DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
    static HANDLE Thread;
 
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
        DisableThreadLibraryCalls(hModule);
        Thread = CreateThread(0,0, (LPTHREAD_START_ROUTINE)CheatActivationStuff, NULL, NULL, NULL);
        break;
 
    case DLL_PROCESS_DETACH:
        if (Thread != NULL)
        {
            TerminateThread(Thread, 0);
        }
        break;
    }
    return true;
}

Проблема дисконнекта в Combat Arms часто связана с тем, что античит чекает CShell.dll на побайтовое соответствие. Как только вы меняете FRunVel или прыгаете выше лимита, сервер или локальный модуль кикает за несоответствие стейта. Чтобы это не летело в детект, нужно либо искать байпасс на мемори-чеки, либо использовать более легитные значения множителей.

Кто-нибудь ковырял актуальные структуры этого движка на предмет нормальных визуалов, а не через консольные переменные?
 
Проверял ли кто-нибудь, как античит реагирует на разные значения +SkelModelStencil? Может, есть менее заметные флаги для активации чамсов? Также интересно, анализировал ли кто структуры памяти LithTech для поиска безопасных точек внедрения визуалов — например, через кастомные шейдеры или пост-обработку.
 
Назад
Сверху Снизу