Нужна информация по автовходу в игру

Logan22

Гений мысли
Проверенный
Знаток Lineage2
Орден Почета
Мастер реакций
Любитель реакций
Знаток письма
Медаль Благодарности
Старожил I степени
Медаль за активность на Форуме
За заслуги перед форумом
Преподаватель
За веру и верность форуму
Сообщения
1 606
Розыгрыши
0
Решения
3
Репутация
1 724
Реакции
1 430
Баллы
1 808
Вызывает интерес к автовходу в игру.

В каких патчах, интерфейсах, etc... реализован вход на персонажа используя аргументы к l2.exe и какие сервера поддерживают такую фичу.

К примеру автовход: l2.exe account=logan22 password=123456 player=SuperKent server=1

Я знаю что HF и выше в клиенте поддерживается автовход в аккаунт (до выбора персонажа), но интересует информация по входу далее, на персонажа.
 
Я видел более интересную реализацию.

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

Хуком UNetworkHandler::Tick, он начинает вызываться как только клиент полностью готов к работе.

C++:
AddHook(new UNetworkHandler_Tick_Hook(reinterpret_cast<uint8_t*>(GetProcAddress(engine_module, "?Tick@UNetworkHandler@@UAEXM@Z"))));


static void (__fastcall* Tick_Original)(void* network_handler_ptr, void* function_ptr, float delta);

void __fastcall Tick_Hooked(void* network_handler_ptr, void* function_ptr, float delta)
{
    if (!is_first_tick_)
    {
        Application::getInstance()->OnEvent(EApplicationEvent::GameClientStarted);
        is_first_tick_ = true;
    }
    Tick_Original(network_handler_ptr, function_ptr, delta);
}
 

Кто сделает под interlude за $, пишите в лс
 
я себе на хф делал автовход простенький
Не плохо. Однако, тебя нет выбора сервера, это стоит учитывать, иногда в выборе сервера могут быть разные.
Сделай возможность указывать логин, пасс, сервер через аргументы к приложению и опубликуй в разделах загрузки, уверен многим пригодится и персонажа для входа.
К примеру l2.exe account=logan22 password=123456 player=SuperKent server=1
 
Не плохо. Однако, тебя нет выбора сервера, это стоит учитывать, иногда в выборе сервера могут быть разные.
Сделай возможность указывать логин, пасс, сервер через аргументы к приложению и опубликуй в разделах загрузки, уверен многим пригодится и персонажа для входа.
К примеру l2.exe account=logan22 password=123456 player=SuperKent server=1
Попробую)
 
после хука "?Tick@UNetworkHandler@@UAEXM@Z"
если окно клиента не в фокусе то получается так.
 

Вложения

  • 2024-10-15_22-00-25.png
    2024-10-15_22-00-25.png
    1,6 МБ · Просмотры: 60
  • 2024-10-15_22-10-38.png
    2024-10-15_22-10-38.png
    501,4 КБ · Просмотры: 26
  • 2024-10-15_22-11-13.png
    2024-10-15_22-11-13.png
    163,7 КБ · Просмотры: 56
В диспетчере задач можно посмотреть пароль?)
если про тот что передается через командную строку, то легко
как и забрать эти данные сторонними программами, если это понадобилось
eclipse_9f5AwFF8xT.png
 
Оффтоп:
иду пакостить на серверах представленого пользователя с админ аккаунта, ведь логин/пароль уже запалили, ухахахвавхвх
Оффтоп:
удачи достучаться на локальный сервер, запущенный у меня на компе, ага :)
 
Sarcasm:

Sarcasm:
БЫСТРЕЕ ПОКА НЕ УДАЛИЛИ - СКАЧАЛ ВЕСЬ ХЕНТАЙ С ПЛАНШЕТА ГАЙКОТСЫ, ЗАЛИЛ НА ЮТУБ - С ДОСТУПОМ ПО ССЫЛКЕ -

UPD
ГАЙКА РАБОТАЕТ БЫСТРЕЕ ЧЕМ Я МОГУ ЗАЛИВАТЬ!
Перезалив -
 
походу я делаю что то не так.

C++:
void _fastcall new_TickUNetworkHandler(unsigned int This, unsigned int EDX, float float_val)
{
    Logger("TickUNetworkHandler ok");
    true_TickUNetworkHandler(This, EDX, float_val);

    if (AuthLogin)
    {
        AuthLogin = false;

        std::wstring loginS(L"admin10");
        const wchar_t* loginC = loginS.c_str();
        wchar_t login[64] = {};
        wcscpy_s(login, loginC);

        std::wstring passwordS(L"admin10");
        const wchar_t* passwordC = passwordS.c_str();
        wchar_t password[64] = {};
        wcscpy_s(password, passwordC);

        new_RequestAuthLogin(This, EDX, login, password, 0);
    }
}
 

Вложения

  • 2024-10-15_22-17-16.png
    2024-10-15_22-17-16.png
    109,6 КБ · Просмотры: 15
походу я делаю что то не так.

C++:
void _fastcall new_TickUNetworkHandler(unsigned int This, unsigned int EDX, float float_val)
{
    Logger("TickUNetworkHandler ok");
    true_TickUNetworkHandler(This, EDX, float_val);

    if (AuthLogin)
    {
        AuthLogin = false;

        std::wstring loginS(L"admin10");
        const wchar_t* loginC = loginS.c_str();
        wchar_t login[64] = {};
        wcscpy_s(login, loginC);

        std::wstring passwordS(L"admin10");
        const wchar_t* passwordC = passwordS.c_str();
        wchar_t password[64] = {};
        wcscpy_s(password, passwordC);

        new_RequestAuthLogin(This, EDX, login, password, 0);
    }
}
Посмотрите пример реализации тут:
 
если про тот что передается через командную строку, то легко
как и забрать эти данные сторонними программами, если это понадобилось
Посмотреть вложение 78782
да я именно про его имплементацию спрашивал, у него же кастомный l2.exe ну или хукнутый) вот и не понятно, торчит или нет
 
Назад
Сверху Снизу