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

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

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

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

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

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

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

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

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

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

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

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

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

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

Репутация: 1085


По умолчанию

Надо будет auto dumper сделать по маске для получения оффсета от c1 до hf ?
 
Ответить с цитированием

  #15  
Старый 01.11.2024, 15:33
ANZO
Участник форума
Регистрация: 09.07.2015
Сообщений: 211
С нами: 5708007

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

Учтите что UNetworkHandler при аттаче библиотеки может не существовать вовсе. Запрашивать RequestAuthLogin нужно после того как клиент загрузился (окно логин-пароль): проще всего перехватывать первый вызов UNetworkHandler::Tick() (?Tick@UNetworkHandler@@UAEXM@Z)
 
Ответить с цитированием

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

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

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

Найти ссылку в функциях-членах класса. Например:
Попробовал на IT и HF не сработало хотя все функции отработали. UNetworkOffset = менял под каждый клиент

C++:


Код:
// dllmain.cpp : Определяет точку входа для приложения DLL.
#include "pch.h"
#include "string"
class
UNetworkHandler
{
}
;
typedef
int
(
__fastcall
*
RequestAuthLogin_fn
)
(
UNetworkHandler
*
,
int
,
const
wchar_t
*
,
const
wchar_t
*
,
int
)
;
// Объявление функции RequestLogin
void
RequestLogin
(
const
wchar_t
*
login
,
const
wchar_t
*
password
)
;
namespace
{
uintptr_t UNetworkOffset
=
0x3d5ac0
;
// для ИЛ клиента смещение будет другим
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
)
;
MessageBox
(
NULL
,
L
"Все данные собраны вход!!!!!"
,
L
""
,
MB_OK
)
;
fRequestAuthLogin
=
(
RequestAuthLogin_fn
)
GetProcAddress
(
hEngineModule
,
"?RequestAuthLogin@UNetworkHandler@@UAEHPAG0H@Z"
)
;
RequestLogin
(
L
"admin"
,
L
"admin"
)
;
}
}
void
RequestLogin
(
const
wchar_t
*
login
,
const
wchar_t
*
password
)
{
MessageBox
(
NULL
,
L
"Попытка входа в игру!"
,
L
""
,
MB_OK
)
;
if
(
UNetwork
!=
nullptr
&&
fRequestAuthLogin
!=
nullptr
)
{
fRequestAuthLogin
(
UNetwork
,
0
,
login
,
password
,
0
)
;
}
}
BOOL APIENTRY
DllMain
(
HMODULE hModule
,
DWORD  ul_reason_for_call
,
LPVOID lpReserved
)
{
switch
(
ul_reason_for_call
)
{
case
DLL_PROCESS_ATTACH
:
Init
(
)
;
break
;
}
return
TRUE
;
}
 
Ответить с цитированием

  #17  
Старый 01.11.2024, 15:37
ANZO
Участник форума
Регистрация: 09.07.2015
Сообщений: 211
С нами: 5708007

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

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

Надо будет auto dumper сделать по маске для получения оффсета от c1 до hf ?
Оффсет можно и не искать вовсе, достаточно найти в экспортах того же engine global структуру которая светит в экспорт и где есть ссылка на UNetworkHandler. Сходу не скажу где, но знаю что точно есть такие.
 
Ответить с цитированием

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

Репутация: 1085


По умолчанию

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

Оффсет можно и не искать вовсе, достаточно найти в экспортах того же engine global структуру которая светит в экспорт и где есть ссылка на UNetworkHandler. Сходу не скажу где, но знаю что точно есть такие.
Есть вроде такое:

Код:


Код:
?InternalConstructor@UNetworkHandler
Через это наверное можно сделать. ?
 
Ответить с цитированием

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

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

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

Попробовал на IT и HF не сработало хотя все функции отработали. UNetworkOffset = менял под каждый клиент

C++:


Код:
// dllmain.cpp : Определяет точку входа для приложения DLL.
#include "pch.h"
#include "string"
class
UNetworkHandler
{
}
;
typedef
int
(
__fastcall
*
RequestAuthLogin_fn
)
(
UNetworkHandler
*
,
int
,
const
wchar_t
*
,
const
wchar_t
*
,
int
)
;
// Объявление функции RequestLogin
void
RequestLogin
(
const
wchar_t
*
login
,
const
wchar_t
*
password
)
;
namespace
{
uintptr_t UNetworkOffset
=
0x3d5ac0
;
// для ИЛ клиента смещение будет другим
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
)
;
MessageBox
(
NULL
,
L
"Все данные собраны вход!!!!!"
,
L
""
,
MB_OK
)
;
fRequestAuthLogin
=
(
RequestAuthLogin_fn
)
GetProcAddress
(
hEngineModule
,
"?RequestAuthLogin@UNetworkHandler@@UAEHPAG0H@Z"
)
;
RequestLogin
(
L
"admin"
,
L
"admin"
)
;
}
}
void
RequestLogin
(
const
wchar_t
*
login
,
const
wchar_t
*
password
)
{
MessageBox
(
NULL
,
L
"Попытка входа в игру!"
,
L
""
,
MB_OK
)
;
if
(
UNetwork
!=
nullptr
&&
fRequestAuthLogin
!=
nullptr
)
{
fRequestAuthLogin
(
UNetwork
,
0
,
login
,
password
,
0
)
;
}
}
BOOL APIENTRY
DllMain
(
HMODULE hModule
,
DWORD  ul_reason_for_call
,
LPVOID lpReserved
)
{
switch
(
ul_reason_for_call
)
{
case
DLL_PROCESS_ATTACH
:
Init
(
)
;
break
;
}
return
TRUE
;
}
0x3d5ac0 как смещение UNH выглядит сомнительным. В клиенте ил 746, который скачан у меня, смещение = 0x81F538.

И в DllMain я бы не стал сразу вызывать логин, половина клиента еще не загружена.

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


C++:


Код:
#include "pch.h"
#include "string"
class
UNetworkHandler
{
}
;
typedef
int
(
__fastcall
*
RequestAuthLogin_fn
)
(
UNetworkHandler
*
,
int
,
const
wchar_t
*
,
const
wchar_t
*
,
int
)
;
// Объявление функции RequestLogin
void
RequestLogin
(
const
wchar_t
*
login
,
const
wchar_t
*
password
)
;
namespace
{
uintptr_t UNetworkOffset
=
0x81F538
;
// для ИЛ клиента смещение будет другим
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
)
;
MessageBox
(
NULL
,
L
"Все данные собраны вход!!!!!"
,
L
""
,
MB_OK
)
;
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
;
}
Цитата:
Сообщение от ANZO  

Оффсет можно и не искать вовсе, достаточно найти в экспортах того же engine global структуру которая светит в экспорт и где есть ссылка на UNetworkHandler. Сходу не скажу где, но знаю что точно есть такие.
Тоже верно. На самом деле есть несколько способов получить указатель. В моем случае мне было удобнее получать по конкретному смещению
 
Ответить с цитированием

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

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

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

0x3d5ac0 как смещение UNH выглядит сомнительным. В клиенте ил 746, который скачан у меня, смещение = 0x81F538.
И в DllMain я бы не стал сразу вызывать логин, половина клиента еще не загружена.
В первом случае как вы написали ничего не происходит во втором игра начинает тормозить.

Насчет dll я ее инжектю когда игра уже запущена.
 
Ответить с цитированием
Ответ





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


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




ANTICHAT ™ © 2001- Antichat Kft.

×

Создать сделку

Продавец: ник или ID

Название сделки:

Сумма USDT:

Срок сделки, дней:

Кто платит комиссию:

Условия сделки:

После создания сделки средства будут зарезервированы в холде до завершения сделки.

×

Мои сделки

Загрузка...
×

Сделка


Загрузка чата...