Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

Вопрос Патчинг из длл

  • Автор темы Автор темы yovimi
  • Дата начала Дата начала
Забаненный
Забаненный
Статус
Оффлайн
Регистрация
5 Сен 2020
Сообщения
993
Реакции
275
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
всем привет , может я тупой ну скорее всего я тупой , при попытке перезаписать память выдаёт ошибку 0x5
1648117926708.png

пробывал менять протект через VirtualProtect но я мог сделать что то не так поэтому прошу дополнить мой говно код что бы он стал работать
плиз не надо писать про говно код или же какой я тупой я очень ранимый сэд ребенок :(
C++:
Expand Collapse Copy
BYTE bt1[] = { 0xEB, 0x17 };
int patched_address = 45889;

void pacth_to_dll()
{
    openprcs();

    hProcess = OpenProcess(PROCESS_ALL_ACCESS, true, PID_PROC);

    printf("[i] module loading... \n");

    HANDLE csgo_handle = get_csgo_handle();
    HMODULE client_module = GetModuleHandle(L"csgo.exe");
    HMODULE server_module = GetModuleHandle(L"module.dll");
    address_with_offset = ((int)server_module);
    int Address = (DWORD)address_with_offset + (DWORD)patched_address;

    csgo_handle = OpenProcess(PROCESS_ALL_ACCESS, true, PID_PROC);



        std::cout << "[i] base address 0x" << (DWORD*)address_with_offset << std::endl;
        std::cout << "[i] patch address 0x" << (DWORD*)patched_address << std::endl;
        std::cout << "[i] final address 0x" << (DWORD*)Address << std::endl;
        
        if (!WriteProcessMemory(hProcess, LPVOID(Address), &bt1, sizeof(bt1), 0))
        {
            std::cout << "[i] bad patch (0x" << (DWORD*)Address << ") " << std::endl;

            std::cout << "[i] error -> " << GetLastError() << std::endl;
        }
        else
        {
            std::cout << "[i] patched (0x" << (DWORD*)Address << ") " << std::endl;
        }

}
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
"патчинг из длл" - ты в процесс инжектишь эту длл и из нее пытаешься пропатчить процесс игры?
Или я не пойму что ты хочешь сделатьь.

C++:
Expand Collapse Copy
HMODULE client_module = GetModuleHandle(L"csgo.exe");
printf("client_module: %d \n",client_module);

HMODULE server_module = GetModuleHandle(L"module.dll");
printf("server_module: %d \n",server_module);
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
"патчинг из длл" - ты в процесс инжектишь эту длл и из нее пытаешься пропатчить процесс игры?
Или я не пойму что ты хочешь сделатьь.

C++:
Expand Collapse Copy
HMODULE client_module = GetModuleHandle(L"csgo.exe");
printf("client_module: %d \n",client_module);

HMODULE server_module = GetModuleHandle(L"module.dll");
printf("server_module: %d \n",server_module);
ну предположим у меня есть длл чита который под вмп и там проверка которая не даёт работать читу , я хочу сделать дллку которая будет перезаписывать байты на те которые мне нужны , делая это через консольное приложение все успешно получается , но делая это через длл выдает ошибку с доступом , вот как то так , искал инфу и нашёл только что надо поменять протект через VirtualProtect , но у меня это не сработало , возможно я что то неправильно сделал
 
Зачем..... Просто......
Зачем ты из под DLL пытаешься получить хендл к процессу и используешь WriteProcessMemory, КОГДА ТЫ И ЕСТЬ САМ ЭТОТ ПРОЦЕСС. Какой же кринж...

Один из вариантов как можно пропатчить (shitty метод не рекомендую):
Код:
Expand Collapse Copy
int *address = (int*)((byte*)GetModuleHandle(null) + 0xDEADBEEF);
*address = 45889; // это твои байты, но в инте

Другой вариант самый топчик (рекомендую к использованию)
Код:
Expand Collapse Copy
void WriteToMemory(DWORD addressToWrite, char* valueToWrite, int byteNum)
{
    unsigned long OldProtection;
    VirtualProtect((LPVOID)(addressToWrite), byteNum, PAGE_EXECUTE_READWRITE, &OldProtection);
    memcpy((LPVOID)addressToWrite, valueToWrite, byteNum);
    VirtualProtect((LPVOID)(addressToWrite), byteNum, OldProtection, NULL);
}

DWORD address = GetModuleHandle(null) + 0xDEADBEEF;
WriteToMemory(address, "\xEB\x17", 2);

писал по памяти поэтому мб будет ошибка приведения типов с гетмодульхендлом, но ты просто подставь в скобочках тип и все заработает ведь визуалка ровный типочек :fearscream: :fearscream: :fearscream:
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Зачем..... Просто......
Зачем ты из под DLL пытаешься получить хендл к процессу и используешь WriteProcessMemory, КОГДА ТЫ И ЕСТЬ САМ ЭТОТ ПРОЦЕСС. Какой же кринж...

Один из вариантов как можно пропатчить (shitty метод не рекомендую):
Код:
Expand Collapse Copy
int *address = (int*)((byte*)GetModuleHandle(null) + 0xDEADBEEF);
*address = 45889; // это твои байты, но в инте

Другой вариант самый топчик (рекомендую к использованию)
Код:
Expand Collapse Copy
void WriteToMemory(DWORD addressToWrite, char* valueToWrite, int byteNum)
{
    unsigned long OldProtection;
    VirtualProtect((LPVOID)(addressToWrite), byteNum, PAGE_EXECUTE_READWRITE, &OldProtection);
    memcpy((LPVOID)addressToWrite, valueToWrite, byteNum);
    VirtualProtect((LPVOID)(addressToWrite), byteNum, OldProtection, NULL);
}

DWORD address = GetModuleHandle(null) + 0xDEADBEEF;
WriteToMemory(address, "\xEB\x17", 2);

писал по памяти поэтому мб будет ошибка приведения типов с гетмодульхендлом, но ты просто подставь в скобочках тип и все заработает ведь визуалка ровный типочек :fearscream: :fearscream: :fearscream:
спасибо буду пробывать , а хендл я получал что бы кое что протестить и не убрал его , короче спасибо :3
 
Назад
Сверху Снизу