Показать сообщение отдельно

  #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
)
;
}
}
 
Ответить с цитированием