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

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

Репутация: 1085


По умолчанию

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

Charmant
Только что заметил отличие у тебя 8 а у меня b 0x81F538 - 0xb1f538
И самое странное, что твой hex работает а мой нет хотя в клиенте у мен b вместо 8)
Может dll накрыта темидой и по этому такая разница.

Попробуй через ghidra сделать декомпил и посмотреть там. ?
 
Ответить с цитированием

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

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

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

Мне кажется я неправильно высчитываю (опыта мало в этом деле)
Вот я нашел офсет EAX,[DAT_10b1f538] он будет равен 0xb1f538

Самое интересное что твой 0x81F538 работает а мой нет)
У длл есть базовый адрес. 10b1f538 это база + смещение. В ИЛ енжине базовый адрес 10300000, т.е: 0x10b1f538 - 0x10300000 = 0x81F538

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

У длл есть базовый адрес. 10b1f538 это база + смещение. В ИЛ енжине базовый адрес 10300000, т.е: 0x10b1f538 - 0x10300000 = 0x81F538
Почитайте про виртуальные адреса (VA) и относительные виртуальные адреса (RVA). Станет понятнее
 
Ответить с цитированием

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

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

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

Почитайте про виртуальные адреса (VA) и относительные виртуальные адреса (RVA). Станет понятнее
Я раньше этим занимался забыл обязательно почитаю спасибо!
 
Ответить с цитированием

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

Репутация: 1085


По умолчанию

Надо будет в ресурсы добавить хотя бы для it с инструкцией поиска offset наглядно в картинке и тексте с исходниками.

Заодно краткую инструкцию по вычислению offset от базового адреса.

Хорошее дело делаем ?
 
Ответить с цитированием

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

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

У меня возник вопрос, связанный с этой же темой.

Есть ли какой-то флаг в L2, который позволяет определить, что окно с интерфейсом полностью загружено и готово к использованию?
 
Ответить с цитированием

  #46  
Старый 02.11.2024, 12:59
òbiòbi верифицированный пользователь.
Новичок
Регистрация: 09.03.2017
Сообщений: 0
С нами: 4831039

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

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

У меня возник вопрос, связанный с этой же темой.
Есть ли какой-то флаг в L2, который позволяет определить, что окно с интерфейсом полностью загружено и готово к использованию?
Про сам интерфейс не знаю, но дождаться создания основного нативного окна (пропустив при этом сплэшскрин окно) я выкладывал на шарпе. Думаю стоит попробовать такой вариант, то есть через do-while ждать указатель на окно

C#:


Код:
var
splashWindowHandler
=
IntPtr
.
Zero
;
// Waiting for splash window handler
do
{
process
.
Refresh
(
)
;
splashWindowHandler
=
process
.
MainWindowHandle
;
}
while
(
splashWindowHandler
==
IntPtr
.
Zero
)
;
var
mainWindowHandler
=
IntPtr
.
Zero
;
// Waiting for main window handler
do
{
process
.
Refresh
(
)
;
if
(
splashWindowHandler
!=
process
.
MainWindowHandle
)
{
mainWindowHandler
=
process
.
MainWindowHandle
;
}
}
while
(
mainWindowHandler
==
IntPtr
.
Zero
)
;
да и все что делается через событие DLL_PROCESS_ATTACH, стоит (по мимо проверок на nullptr) проверять и что вернула функция GetProcAddress. Возможно функция вернула также nullptr, по сколько dll engine по какой-то причине еще не прогрузилась, и адрес на процедуру RequestAuthLogin@UNetworkHandler@@UAEHPAG0H@Z был не доступен.

C++:


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

  #47  
Старый 02.11.2024, 13:08
òbiòbi верифицированный пользователь.
Новичок
Регистрация: 09.03.2017
Сообщений: 0
С нами: 4831039

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

Ну то есть стоит всегда проверять, что возвращают нативные функции апи винды, дабы понимать что пошло не так и на каком этапе

C++:


Код:
{
HMODULE hEngineModule
=
GetModuleHandleW
(
L
"engine.dll"
)
;
if
(
hEngineModule
==
nullptr
)
{
return
MessageBox
(
NULL
,
L
"hEngineModule is null"
,
L
""
,
MB_OK
)
;
}
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"
)
;
if
(
fRequestAuthLogin
==
nullptr
)
{
return
MessageBox
(
NULL
,
L
"fRequestAuthLogin is null"
,
L
""
,
MB_OK
)
;
}
RequestLogin
(
L
"admin"
,
L
"admin"
)
;
}
 
Ответить с цитированием

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

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

Цитата:
Сообщение от òbi  

Ну то есть стоит всегда проверять, что возвращают нативные функции апи винды, дабы понимать что пошло не так и на каком этапе
Обработку ошибок я сразу сделал.

Ваш варант проверю, только так и получится я думаю но надо еще знать что ожидать while
 
Ответить с цитированием

  #49  
Старый 02.11.2024, 13:20
òbiòbi верифицированный пользователь.
Новичок
Регистрация: 09.03.2017
Сообщений: 0
С нами: 4831039

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

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

знать что ожидать while
смотреть в документации на сайте майков по определенной функции, к примеру GetProcAddress возвращает null в случаи неудачи

стало быть во while цикле продолжаем итерации пока значение будет не null/nullptr
 
Ответить с цитированием

  #50  
Старый 02.11.2024, 13:24
BIT_hack
Постоянный
Регистрация: 12.08.2021
Сообщений: 355
С нами: 2502597

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

Цитата:
Сообщение от òbi  

смотреть в документации на сайте майков по определенной функции, к примеру GetProcAddress возвращает null в случаи неудачи
Я не про функции которые я вызываю для них я сделал проверку - Я про процесс и думал может можно перехватить функцию которая сообщает о том что окно готово к работе

òbiòbi верифицированный пользователь.

В данный момент я использую Sleep(3000), а затем вызываем функцию входа в игру.

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





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


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




ANTICHAT ™ © 2001- Antichat Kft.