Как сделать Автологин Интерлюдия?

Charmant

Ваш кодс работал для IT
 

В первом случае как вы написали ничего не происходит во втором игра начинает тормозить.
Насчет dll я ее инжектю когда игра уже запущена.
Посмотреть вложение 79168
Ну вот судя по этому скрину, если базовый адрес енжины 20000000, то смещение UNH для этой енжины равно 0x77ed80
1730463833688.png
 
Я правильно понял, можно сделать так без привязки к оффсету?
C++:
#include "pch.h"
#include "string"

class UNetworkHandler {};

// Объявление типа для функции RequestAuthLogin
typedef int(__fastcall* RequestAuthLogin_fn)(UNetworkHandler*, int, const wchar_t*, const wchar_t*, int);

// Объявление типа для функции InternalConstructor
typedef void(__stdcall* InternalConstructor_fn)(void*);

// Объявление функции RequestLogin
void RequestLogin(const wchar_t* login, const wchar_t* password);

namespace {
    uintptr_t UNetworkOffset = 0; // Смещение не используется
    UNetworkHandler* UNetwork = nullptr;
    RequestAuthLogin_fn fRequestAuthLogin = nullptr;
    InternalConstructor_fn fInternalConstructor = nullptr;
}

void Init()
{
    HMODULE hEngineModule = GetModuleHandleW(L"engine.dll");
    if (hEngineModule != nullptr)
    {
        // Получаем адрес функции InternalConstructor
        fInternalConstructor = (InternalConstructor_fn)GetProcAddress(hEngineModule, "?InternalConstructor@UNetworkHandler@@SAXPAX@Z");

        if (fInternalConstructor != nullptr) {
            // Вызов функции InternalConstructor для инициализации UNetwork, если нужно
            fInternalConstructor(&UNetwork);

            // Проверка на успешное извлечение UNetwork
            if (UNetwork != nullptr) {
                MessageBox(NULL, L"Все данные собраны вход!!!!!", L"", MB_OK);

                // Получаем адрес функции RequestAuthLogin
                fRequestAuthLogin = (RequestAuthLogin_fn)GetProcAddress(hEngineModule, "?RequestAuthLogin@UNetworkHandler@@UAEHPAG0H@Z");

                // Попытка авторизации
                RequestLogin(L"admin", L"admin");
            }
        }
    }
}

void RequestLogin(const wchar_t* login, const wchar_t* password)
{
    if (UNetwork != nullptr && fRequestAuthLogin != nullptr)
    {
        MessageBox(NULL, L"Попытка входа в игру!", L"", MB_OK);
        fRequestAuthLogin(UNetwork, 0, login, password, 0);
    }
}

DWORD WINAPI test(LPVOID lpParameter)
{
    Sleep(7000);
    Init();
    return 0;
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved) {
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
        DisableThreadLibraryCalls(hModule);
        {
            HANDLE hThread = CreateThread(NULL, 0, test, NULL, 0, NULL);
            if (hThread != NULL)
            {
                CloseHandle(hThread);
            }
        }
        break;
    }
    return TRUE;
}
 
Я правильно понял, можно сделать так без привязки к оффсету?
C++:
#include "pch.h"
#include "string"

class UNetworkHandler {};

// Объявление типа для функции RequestAuthLogin
typedef int(__fastcall* RequestAuthLogin_fn)(UNetworkHandler*, int, const wchar_t*, const wchar_t*, int);

// Объявление типа для функции InternalConstructor
typedef void(__stdcall* InternalConstructor_fn)(void*);

// Объявление функции RequestLogin
void RequestLogin(const wchar_t* login, const wchar_t* password);

namespace {
    uintptr_t UNetworkOffset = 0; // Смещение не используется
    UNetworkHandler* UNetwork = nullptr;
    RequestAuthLogin_fn fRequestAuthLogin = nullptr;
    InternalConstructor_fn fInternalConstructor = nullptr;
}

void Init()
{
    HMODULE hEngineModule = GetModuleHandleW(L"engine.dll");
    if (hEngineModule != nullptr)
    {
        // Получаем адрес функции InternalConstructor
        fInternalConstructor = (InternalConstructor_fn)GetProcAddress(hEngineModule, "?InternalConstructor@UNetworkHandler@@SAXPAX@Z");

        if (fInternalConstructor != nullptr) {
            // Вызов функции InternalConstructor для инициализации UNetwork, если нужно
            fInternalConstructor(&UNetwork);

            // Проверка на успешное извлечение UNetwork
            if (UNetwork != nullptr) {
                MessageBox(NULL, L"Все данные собраны вход!!!!!", L"", MB_OK);

                // Получаем адрес функции RequestAuthLogin
                fRequestAuthLogin = (RequestAuthLogin_fn)GetProcAddress(hEngineModule, "?RequestAuthLogin@UNetworkHandler@@UAEHPAG0H@Z");

                // Попытка авторизации
                RequestLogin(L"admin", L"admin");
            }
        }
    }
}

void RequestLogin(const wchar_t* login, const wchar_t* password)
{
    if (UNetwork != nullptr && fRequestAuthLogin != nullptr)
    {
        MessageBox(NULL, L"Попытка входа в игру!", L"", MB_OK);
        fRequestAuthLogin(UNetwork, 0, login, password, 0);
    }
}

DWORD WINAPI test(LPVOID lpParameter)
{
    Sleep(7000);
    Init();
    return 0;
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved) {
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
        DisableThreadLibraryCalls(hModule);
        {
            HANDLE hThread = CreateThread(NULL, 0, test, NULL, 0, NULL);
            if (hThread != NULL)
            {
                CloseHandle(hThread);
            }
        }
        break;
    }
    return TRUE;
}
Не думаю что так сработает. Вроде смысл в том чтобы перехватывать вызов InternalConstructor и забирать значение UNH, а не самостоятельный вызов этой фунции.
 
Не думаю что так сработает. Вроде смысл в том чтобы перехватывать вызов InternalConstructor и забирать значение UNH, а не самостоятельный вызов этой фунции.
Было бы универсальное решение без поиска оффсета, но вроде в верном направлении.
Где-то упускаю 🤔
 
Если сделаете для ИТ готов приобрести.
 
В интерлюдия не нашел такой функции ?InternalConstructor@UNetworkHandler@@SAXPAX@Z
Это было взято с публичного поста, на работе не могу посмотреть и проверить.

Если поискать только так должно найти:
Код:
InternalConstructor@UNetworkHandler
 
Если готовы сделать под ключ, пишите цену в ТГ.
Вам в раздел поиска исполнителя, не здесь.
 
Готов купить данную функцию под ит (пишите в лс цену)
 
Ну вот судя по этому скрину, если базовый адрес енжины 20000000, то смещение UNH для этой енжины равно 0x77ed80
Мне кажется я неправильно высчитываю (опыта мало в этом деле)
Вот я нашел офсет EAX,[DAT_10b1f538] он будет равен 0xb1f538

Самое интересное что твой 0x81F538 работает а мой нет)
 
Для локалки пойдет, а как только возьмёте стрикс/смарт/аа пойдет ваша реализация в лес на долго и безвозвратно)
 

Charmant


Только что заметил отличие у тебя 8 а у меня b 0x81F538 - 0xb1f538
И самое странное, что твой hex работает а мой нет хотя в клиенте у мен b вместо 8)

1730479064572.png
 
Назад
Сверху Снизу