Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
Ну вот судя по этому скрину, если базовый адрес енжины 20000000, то смещение UNH для этой енжины равно 0x77ed80В первом случае как вы написали ничего не происходит во втором игра начинает тормозить.
Насчет dll я ее инжектю когда игра уже запущена.
Посмотреть вложение 79168
Спасибо чуть позже отпишу нужно ехать срочно!Ну вот судя по этому скрину, если базовый адрес енжины 20000000, то смещение UNH для этой енжины равно 0x77ed80
Посмотреть вложение 79169
#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, а не самостоятельный вызов этой фунции.Я правильно понял, можно сделать так без привязки к оффсету?
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@UNetworkHandler@@SAXPAX@ZТак уже, тут вопрос в другом
Это было взято с публичного поста, на работе не могу посмотреть и проверить.В интерлюдия не нашел такой функции ?InternalConstructor@UNetworkHandler@@SAXPAX@Z
InternalConstructor@UNetworkHandler
Если готовы сделать под ключ, пишите цену в ТГ.Если сделаете для ИТ готов приобрести.
Вам в раздел поиска исполнителя, не здесь.Если готовы сделать под ключ, пишите цену в ТГ.Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками Вход или Регистрация
Нет в интерлюдии нет такого в HF уже есть я проверилInternalConstructor@UNetworkHandler
Может можно другую функцию из it которая есть и в hf, не хотелось бы каждый раз подбирать под патч свой offset.Нет в интерлюдии нет такого в HF уже есть я проверил
Мне кажется я неправильно высчитываю (опыта мало в этом деле)Ну вот судя по этому скрину, если базовый адрес енжины 20000000, то смещение UNH для этой енжины равно 0x77ed80
Надо с чего то начинать)Для локалки пойдет, а как только возьмёте стрикс/смарт/аа пойдет ваша реализация в лес на долго и безвозвратно)
100% согласен, это больше было адресовано тем кто желает это купить) что бы не тешили себя надеждами)Надо с чего то начинать)