HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 01.11.2024, 10:48
BIT_hack
Постоянный
Регистрация: 12.08.2021
Сообщений: 355
С нами: 2502597

Репутация: 223
По умолчанию

  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
    ;
    }
Возможно, я не совсем верно подхожу к реализации этой идеи?
 
Ответить с цитированием

  #2  
Старый 01.11.2024, 10:50
root@localhost:~#
Познавший АНТИЧАТ
Регистрация: 13.07.2016
Сообщений: 1,418
С нами: 5175542

Репутация: 548


По умолчанию

 
Ответить с цитированием

  #3  
Старый 01.11.2024, 11:21
Maksim
Познавший АНТИЧАТ
Регистрация: 31.01.2017
Сообщений: 1,604
С нами: 4885523

Репутация: 1085


По умолчанию

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

  #4  
Старый 01.11.2024, 11:25
BIT_hack
Постоянный
Регистрация: 12.08.2021
Сообщений: 355
С нами: 2502597

Репутация: 223
По умолчанию

Цитата:
Сообщение от Maksim  

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



C++:


Код:
MessageBox
(
NULL
,
L
"Попытка входа в игру!"
,
L
""
,
MB_OK
)
;
Это значит что dll нашлась и функция тоже



C++:


Код:
RequestAuthLogin
(
Login
,
Password
,
authType
)
;
Но при выполнение ее ничего не происходит
 
Ответить с цитированием

  #5  
Старый 01.11.2024, 11:28
Maksim
Познавший АНТИЧАТ
Регистрация: 31.01.2017
Сообщений: 1,604
С нами: 4885523

Репутация: 1085


По умолчанию

Цитата:
Сообщение от BIT_hack  

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



C++:


Код:
MessageBox
(
NULL
,
L
"Попытка входа в игру!"
,
L
""
,
MB_OK
)
;
Это значит что dll нашлась и функция тоже



C++:


Код:
RequestAuthLogin
(
Login
,
Password
,
authType
)
;
Но при выполнение ее ничего не происходит
Может authtype нужен другой? По идее клиент бы написал сообщение, пароль не правильный как минимум или зашел на сервер. ?
 
Ответить с цитированием

  #6  
Старый 01.11.2024, 11:29
BIT_hack
Постоянный
Регистрация: 12.08.2021
Сообщений: 355
С нами: 2502597

Репутация: 223
По умолчанию

Цитата:
Сообщение от Maksim  

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

  #7  
Старый 01.11.2024, 11:31
Maksim
Познавший АНТИЧАТ
Регистрация: 31.01.2017
Сообщений: 1,604
С нами: 4885523

Репутация: 1085


По умолчанию

Цитата:
Сообщение от BIT_hack  

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

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

Код:


Код:
proc RequestAuthLogin uses esi, pLogin:DWORD,pPassword:DWORD,Param:DWORD
 
Ответить с цитированием

  #8  
Старый 01.11.2024, 14:30
Charmant
Познающий
Регистрация: 08.03.2024
Сообщений: 89
С нами: 1150633

Репутация: 231
По умолчанию

Цитата:
Сообщение от BIT_hack  

Но при выполнение ее ничего не происходит
Потому что указатель на UNetworkHandler не передается. Я начинал делать свою реализацию автологина на эпилоге, но пока забросил т.к. лень редактировать интерфейс и окна. Вот простенький пример как можно инициализировать и вызвать RequestAuthLogin:

C++:


Код:
class
UNetworkHandler
{
}
;
typedef
int
(
__fastcall
*
RequestAuthLogin_fn
)
(
UNetworkHandler
*
,
int
,
const
wchar_t
*
,
const
wchar_t
*
,
int
)
;
namespace
{
uintptr_t UNetworkOffset
=
0x71d274
;
// для ИЛ клиента смещение будет другим
UNetworkHandler
*
UNetwork
=
nullptr
;
RequestAuthLogin_fn fRequestAuthLogin
=
nullptr
;
}
void
Init
(
)
{
HMODULE hEngineModule
=
GetModuleHandleW
(
L
"engine.dll"
)
;
if
(
hEngineModule
!=
nullptr
)
{
uintptr_t UNetworkAddress
=
(
reinterpret_cast

(
hEngineModule
)
)
+
UNetworkOffset
;
UNetwork
=
*
reinterpret_cast

(
UNetworkAddress
)
;
fRequestAuthLogin
=
(
RequestAuthLogin_fn
)
GetProcAddress
(
hEngineModule
,
"?RequestAuthLogin@UNetworkHandler@@UAEHPAG0H@Z"
)
;
}
}
void
RequestLogin
(
const
wchar_t
*
login
,
const
wchar_t
*
password
)
{
if
(
UNetwork
!=
nullptr
&&
fRequestAuthLogin
!=
nullptr
)
{
fRequestAuthLogin
(
UNetwork
,
0
,
login
,
password
,
0
)
;
}
}
 
Ответить с цитированием

  #9  
Старый 01.11.2024, 14:33
BIT_hack
Постоянный
Регистрация: 12.08.2021
Сообщений: 355
С нами: 2502597

Репутация: 223
По умолчанию

Спасибо но откуда вытащить

Цитата:
Сообщение от Charmant  

Потому что указатель на UNetworkHandler не передается. Я начинал делать свою реализацию автологина на эпилоге, но пока забросил т.к. лень редактировать интерфейс и окна. Вот простенький пример как можно инициализировать и вызвать RequestAuthLogin:
Спасибо но откуда взять?

uintptr_t UNetworkOffset = 0x71d274; // для ИЛ клиента смещение будет другим
 
Ответить с цитированием

  #10  
Старый 01.11.2024, 14:36
Charmant
Познающий
Регистрация: 08.03.2024
Сообщений: 89
С нами: 1150633

Репутация: 231
По умолчанию

Цитата:
Сообщение от BIT_hack  

Спасибо но откуда вытащить

Спасибо но откуда взять?
uintptr_t UNetworkOffset = 0x71d274; // для ИЛ клиента смещение будет другим
Найти ссылку в функциях-членах класса. Например:
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.