Статья Как создать точку входа для DLL

Darwin

Команда форума
Администратор
Сообщения
815
Реакции
389

В этом гайде я вам покажу как создать точку входа для DLL​

Что мы сделаем? - Все очень просто мы создадим dll файл который будем инжектить в какой то процесс и выведим например слово "Success" в MessageBox
Для примера я взял игру Phasmophobia

Какой наш план по созаднию точки входа?​

1) Мы создадим новый пустой проект
2) Настроем проект
3) Создадим точку входа
4) Скомпилируем и произведем инжект в процесс игры
Использую наш инжектор, ссылка:

Для просмотра скрытого содержимого вы должны авторизироваться или зарегистрироваться


Давайте начнем создавать точку входа для ДЛЛ​

Первым делом я создам пустой проект
После добавлю в папку "Source Files" новый файл main.cpp

Заходим в свойства проекта и ставим вместо Application (.exe) на Dynamic Library (.dll)
Заходим в дополнительное и ставим Многобайтовую кодировку
Компилируем в Release x64

Давайте подключим include и функцию которую позже создадим
C++:
#include <Windows.h>
void sendMessage();

Теперь создаем точку входа
C++:
BOOL WINAPI DllMain(HMODULE hModule, DWORD AttachReason, LPVOID lpReserved) {

    if (AttachReason == DLL_PROCESS_ATTACH) {
        DisableThreadLibraryCalls(hModule); // Отключаем Attach и Detach оповещение
        CreateThread(0, 0, (LPTHREAD_START_ROUTINE)sendMessage, 0, 0, 0); // Создаем поток sendMessage
    }
    else if (AttachReason == DLL_PROCESS_DETACH) {
        // в случае неудачи
    }
    return true; // Всее отлично возвращаем 1
}

И саму нашу функцию sendMessage которая выведит наш MessageBox
C++:
void sendMessage() {
    MessageBoxA(0, "Success", "DLLMessageAttach", MB_OK); // Выводим сообщение что все успешно DLL в игре
}

Весь код программы получается такой:
C++:
#include <Windows.h>
void sendMessage();

BOOL WINAPI DllMain(HMODULE hModule, DWORD AttachReason, LPVOID lpReserved) {

    if (AttachReason == DLL_PROCESS_ATTACH) {
        DisableThreadLibraryCalls(hModule); // Отключаем Attach и Detach оповещение
        CreateThread(0, 0, (LPTHREAD_START_ROUTINE)sendMessage, 0, 0, 0); // Создаем поток sendMessage
    }
    else if (AttachReason == DLL_PROCESS_DETACH) {
        // в случае неудачи
    }
    return true; // Всее отлично возвращаем 1
}

void sendMessage() {
    MessageBoxA(0, "Success", "DLLMessageAttach", MB_OK); // Выводим сообщение что все успешно DLL в игре
}

Давайте скомпилируем и используем инжектор "AnonymCheatsInjector" в игре Phashmophobia
и как мы видем наша DLL в игре и мы можем творить в ней что угодно и изменять память как нам нужно

 

Darwin

Команда форума
Администратор
Сообщения
815
Реакции
389
Для новичков статья будет очень полезна как работать с DLL файлами
это все взято с официальной документаций Microsoft (WinAPI)
 

Ronny

Следопыт
Сообщения
84
Реакции
7


В этом гайде я вам покажу как создать точку входа для DLL​

Что мы сделаем? - Все очень просто мы создадим dll файл который будем инжектить в какой то процесс и выведим например слово "Success" в MessageBox
Для примера я взял игру Phasmophobia


Какой наш план по созаднию точки входа?​

1) Мы создадим новый пустой проект
2) Настроем проект
3) Создадим точку входа
4) Скомпилируем и произведем инжект в процесс игры
Использую наш инжектор, ссылка:

Для просмотра скрытого содержимого вы должны авторизироваться или зарегистрироваться



Давайте начнем создавать точку входа для ДЛЛ​

Первым делом я создам пустой проект
После добавлю в папку "Source Files" новый файл main.cpp

Заходим в свойства проекта и ставим вместо Application (.exe) на Dynamic Library (.dll)
Заходим в дополнительное и ставим Многобайтовую кодировку
Компилируем в Release x64

Давайте подключим include и функцию которую позже создадим
C++:
#include <Windows.h>
void sendMessage();

Теперь создаем точку входа
C++:
BOOL WINAPI DllMain(HMODULE hModule, DWORD AttachReason, LPVOID lpReserved) {

    if (AttachReason == DLL_PROCESS_ATTACH) {
        DisableThreadLibraryCalls(hModule); // Отключаем Attach и Detach оповещение
        CreateThread(0, 0, (LPTHREAD_START_ROUTINE)sendMessage, 0, 0, 0); // Создаем поток sendMessage
    }
    else if (AttachReason == DLL_PROCESS_DETACH) {
        // в случае неудачи
    }
    return true; // Всее отлично возвращаем 1
}

И саму нашу функцию sendMessage которая выведит наш MessageBox
C++:
void sendMessage() {
    MessageBoxA(0, "Success", "DLLMessageAttach", MB_OK); // Выводим сообщение что все успешно DLL в игре
}

Весь код программы получается такой:
C++:
#include <Windows.h>
void sendMessage();

BOOL WINAPI DllMain(HMODULE hModule, DWORD AttachReason, LPVOID lpReserved) {

    if (AttachReason == DLL_PROCESS_ATTACH) {
        DisableThreadLibraryCalls(hModule); // Отключаем Attach и Detach оповещение
        CreateThread(0, 0, (LPTHREAD_START_ROUTINE)sendMessage, 0, 0, 0); // Создаем поток sendMessage
    }
    else if (AttachReason == DLL_PROCESS_DETACH) {
        // в случае неудачи
    }
    return true; // Всее отлично возвращаем 1
}

void sendMessage() {
    MessageBoxA(0, "Success", "DLLMessageAttach", MB_OK); // Выводим сообщение что все успешно DLL в игре
}

Давайте скомпилируем и используем инжектор "AnonymCheatsInjector" в игре Phashmophobia
и как мы видем наша DLL в игре и мы можем творить в ней что угодно и изменять память как нам нужно

Thank you:3
 
Верх Низ