ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Как сделать Автологин Интерлюдия? (https://forum.antichat.xyz/showthread.php?t=793142)

BIT_hack 01.11.2024 10:48

  1. В интернете я нашёл информацию о том, что нужно использовать функцию для автологина из Engine.dll. Вот как она выглядит в интерлюдии.

    C++:


    Код:

    public
    :
    virtual
    int
    __thiscall UNetworkHandler
    ::
    RequestAuthLogin
    (
    unsigned
    short
    *
    ,
    unsigned
    short
    *
    ,
    int
    )
    ;

  2. Этот код на c++я инжектю в игру

    C++:


    Код:

    void
    Start
    (
    )
    {
    HMODULE hModule
    =
    GetModuleHandleA
    (
    "engine.dll"
    )
    ;
    // Получаем дескриптор загруженной DLL
    if
    (
    hModule
    !=
    NULL
    )
    {
    FARPROC requestAuthLoginAddr
    =
    GetProcAddress
    (
    hModule
    ,
    "?RequestAuthLogin@UNetworkHandler@@UAEHPAG0H@Z"
    )
    ;
    if
    (
    requestAuthLoginAddr
    !=
    NULL
    )
    {
    MessageBox
    (
    NULL
    ,
    L
    "Попытка входа в игру!"
    ,
    L
    ""
    ,
    MB_OK
    )
    ;
    typedef
    int
    (
    __thiscall
    *
    RequestAuthLoginFunc
    )
    (
    unsigned
    short
    *
    ,
    unsigned
    short
    *
    ,
    int
    )
    ;
    RequestAuthLoginFunc RequestAuthLogin
    =
    (
    RequestAuthLoginFunc
    )
    requestAuthLoginAddr
    ;
    unsigned
    short
    Login
    [
    ]
    =
    {
    'a'
    ,
    'd'
    ,
    'm'
    ,
    'i'
    ,
    'n'
    ,
    0
    }
    ;
    unsigned
    short
    Password
    [
    ]
    =
    {
    'a'
    ,
    'd'
    ,
    'm'
    ,
    'i'
    ,
    'n'
    ,
    0
    }
    ;
    int
    authType
    =
    7
    ;
    RequestAuthLogin
    (
    Login
    ,
    Password
    ,
    authType
    )
    ;
    }
    }
    }
    BOOL APIENTRY
    DllMain
    (
    HMODULE hModule
    ,
    DWORD  ul_reason_for_call
    ,
    LPVOID lpReserved
    )
    {
    switch
    (
    ul_reason_for_call
    )
    {
    case
    DLL_PROCESS_ATTACH
    :
    Start
    (
    )
    ;
    break
    ;
    }
    return
    TRUE
    ;
    }

Возможно, я не совсем верно подхожу к реализации этой идеи?

root@localhost:~# 01.11.2024 10:50

@Rolo

Maksim 01.11.2024 11:21

По идее все правильно, можно еще с тех полей сохранить данные и потом в списке выбирать на какой аккаунт заходить в окошке html например или рядом раскрывающийся список с кнопкой. ?

BIT_hack 01.11.2024 11:25

Цитата:

Сообщение от Maksim

По идее все правильно, можно еще с тех полей сохранить данные и потом в списке выбирать на какой аккаунт заходить в окошке html например или рядом раскрывающийся список с кнопкой. ?

Забыл написать в шапке темы - При инжекте выводится сообщение



C++:


Код:

MessageBox
(
NULL
,
L
"Попытка входа в игру!"
,
L
""
,
MB_OK
)
;

Это значит что dll нашлась и функция тоже



C++:


Код:

RequestAuthLogin
(
Login
,
Password
,
authType
)
;

Но при выполнение ее ничего не происходит

Maksim 01.11.2024 11:28

Цитата:

Сообщение от BIT_hack

Забыл написать в шапке темы - При инжекте выводится сообщение



C++:


Код:

MessageBox
(
NULL
,
L
"Попытка входа в игру!"
,
L
""
,
MB_OK
)
;

Это значит что dll нашлась и функция тоже



C++:


Код:

RequestAuthLogin
(
Login
,
Password
,
authType
)
;

Но при выполнение ее ничего не происходит

Может authtype нужен другой? По идее клиент бы написал сообщение, пароль не правильный как минимум или зашел на сервер. ?

BIT_hack 01.11.2024 11:29

Цитата:

Сообщение от Maksim

Может authtype нужен другой? По идее он бы написал сообщение, пароль не правильный как минимум или зашел на сервер. ?

Проверял вообще тишина никакой реакции(

Maksim 01.11.2024 11:31

Цитата:

Сообщение от BIT_hack

Проверял вообще тишина никакой реакции(

Хорошо бы в ida посмотреть, что это и какие данные нужны. Может нативная форма подставляет данные с чем то еще, не просто текст.

Вот например с одного форума, может как подсказка из fasm:

Код:


Код:

proc RequestAuthLogin uses esi, pLogin:DWORD,pPassword:DWORD,Param:DWORD

Maksim 01.11.2024 11:48

Наверное так может:

Код:


Код:

wchar_t Login[] = L"admin"; // Логин в формате UTF-16
wchar_t Password[] = L"admin"; // Пароль в формате UTF-16
int authType = 7;

int result = RequestAuthLogin((unsigned short*)Login, (unsigned short*)Password, authType);
if (result != 0) {
  MessageBoxA(NULL, L"Ошибка входа!", L"", MB_OK);
}


Maksim 01.11.2024 12:55

Вот еще дополню для it:

Цитата:

Сообщение от Спойлер

Вызываем api функцию клиента.

Код:


Код:

int (__fastcall

*UNetworkHandler_RequestAuthLogin)(UNetworkHandler*, int, wchar_t const

* login, wchar_t const * password,int param) = 0;

Код:


Код:

(FARPROC&) UNetworkHandler_RequestAuthLogin = GetProcAddress(hEngine, "?RequestAuthLogin@UNetworkHandler@@UAEHPB_W0H@Z");
Код:


Код:

(*UNetworkHandler_RequestAuthLogin)(UNH, 0/*что угодно*/, login, password, 0);
Надо изначально получить UNH, это указатель на объект UNetworkHandler в памяти.

Для этого есть конструктор UNH и вызывает на старте клиента.


Код:


Код:

?InternalConstructor@UNetworkHandler@@SAXPAX@Z


BIT_hack 01.11.2024 13:40

Цитата:

Сообщение от Maksim

Вот еще дополню для it:

Эти обрывки кода не помогут(


Время: 13:22