Вопрос Не инжектит дллку в байтах

Начинающий
Статус
Оффлайн
Регистрация
4 Июл 2022
Сообщения
45
Реакции[?]
2
Поинты[?]
0
перевел длл в байты, запускаю, но чит тупо не инжектится, проблема в коде или в самой дллке?
C++:
#include <iostream>
#include <Windows.h>
#include <TlHelp32.h>

DWORD get_proc_id(const char* proc_name)
{
    DWORD proc_id = 0;
    auto* const h_snap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

    if (h_snap != INVALID_HANDLE_VALUE)
    {
        PROCESSENTRY32 proc_entry;
        proc_entry.dwSize = sizeof(proc_entry);

        if (Process32First(h_snap, &proc_entry))
        {
            do
            {
                if (!_stricmp(proc_entry.szExeFile, proc_name))
                {
                    proc_id = proc_entry.th32ProcessID;
                    break;
                }
            } while (Process32Next(h_snap, &proc_entry));
        }
    }

    CloseHandle(h_snap);
    return proc_id;
}

unsigned char dll_bytes[] = {
// байты
};

size_t dll_size = sizeof(dll_bytes);

int main()
{
    const char* proc_name = "RustClient.exe";
    DWORD proc_id = 0;

    while (!proc_id)
    {
        proc_id = get_proc_id(proc_name);
        Sleep(30);
    }

    auto* const h_proc = OpenProcess(PROCESS_ALL_ACCESS, 0, proc_id);

    if (h_proc && h_proc != INVALID_HANDLE_VALUE)
    {
        LPVOID loc = VirtualAllocEx(h_proc, nullptr, dll_size, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
        if (loc)
        {
            WriteProcessMemory(h_proc, loc, dll_bytes, dll_size, nullptr);

            auto* const h_thread = CreateRemoteThread(h_proc, nullptr, 0, reinterpret_cast<LPTHREAD_START_ROUTINE>(GetProcAddress(GetModuleHandleA("kernel32.dll"), "LoadLibraryA")), loc, 0, nullptr);

            if (h_thread) CloseHandle(h_thread);
        }
    }

    if (h_proc) CloseHandle(h_proc);
    return 0;
}
 
ппоршень
Пользователь
Статус
Оффлайн
Регистрация
15 Фев 2020
Сообщения
286
Реакции[?]
46
Поинты[?]
33K
прихуел я конечно с этого, но ладно
auto* const h_thread = CreateRemoteThread(h_proc, nullptr, 0, reinterpret_cast<LPTHREAD_START_ROUTINE>(GetProcAddress(GetModuleHandleA("kernel32.dll"), "LoadLibraryA")), loc, 0, nullptr);
своей вот этой хуйней ты вызываешь в процессе функцию
Пожалуйста, авторизуйтесь для просмотра ссылки.
, почитай внимательно какие она аргументы принимает и что ты скормил ей.
const char* proc_name = "RustClient.exe";
надеюсь в твоем расте нет еака или другого ач
WriteProcessMemory(h_proc, loc, dll_bytes, dll_size, nullptr);
ты записал чит в регион, хорошо. но помимо того что тебе нужно врайтнуть буфер тебе также придется:
1. раскидать секции по их виртуальным адресам (sec_header->VirtualAddress)
2. релоцировать бинарь (pOpt->DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC])
3. пофиксить импорты (pOpt->DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT])
4. вызвать TLS коллбеки (pOpt->DataDirectory[IMAGE_DIRECTORY_ENTRY_TLS]) (если есть)
5. пофиксить SEH
6. очистить пе хеадер (опционально)
все это уже реализовано в любом мануал-мап инжекторе (например
Пожалуйста, авторизуйтесь для просмотра ссылки.
)
 
Начинающий
Статус
Оффлайн
Регистрация
4 Июл 2022
Сообщения
45
Реакции[?]
2
Поинты[?]
0
не, на девблог нужен инжектор
прихуел я конечно с этого, но ладно

своей вот этой хуйней ты вызываешь в процессе функцию
Пожалуйста, авторизуйтесь для просмотра ссылки.
, почитай внимательно какие она аргументы принимает и что ты скормил ей.

надеюсь в твоем расте нет еака или другого ач

ты записал чит в регион, хорошо. но помимо того что тебе нужно врайтнуть буфер тебе также придется:
1. раскидать секции по их виртуальным адресам (sec_header->VirtualAddress)
2. релоцировать бинарь (pOpt->DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC])
3. пофиксить импорты (pOpt->DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT])
4. вызвать TLS коллбеки (pOpt->DataDirectory[IMAGE_DIRECTORY_ENTRY_TLS]) (если есть)
5. пофиксить SEH
6. очистить пе хеадер (опционально)
все это уже реализовано в любом мануал-мап инжекторе (например
Пожалуйста, авторизуйтесь для просмотра ссылки.
)
от души
 
Сверху Снизу