Перейти к содержанию

Определить адрес подгружаемого модуля.


nRaiver

Рекомендуемые сообщения

Как отследить адрес "client.dll" ?
Я так понимаю в игре используется ASLR и если получить адреса всех подключенных модулей к игре, то "client.dll" находится в адресном пространстве самой игры, а судя по скрину из CE, то "client.dll" находится далеко за адресным пространством игры. 

CE ведь после перезагрузки берет откуда-то корректный адрес и выдаёт правильное игровое значение.
Возможно можно создать костыль, путём создания тренера и потом из своего софта доставать их него этот адрес?

 

zRL6OSn_vQI.jpg

Ссылка на комментарий
Поделиться на другие сайты

2 часа назад, Xipho сказал:

Это с чего ты взял?

Ну потому что  можно узнать начало адресов самой игры, далее взглянуть на адрес  "client.dll". 

Адрес "client.dll" из CE и  "client.dll" полученный из процесса игры абсолютно разные.

 

1 час назад, roma912 сказал:

Ну если на плюсах, то gemodulehandlea("client.dll");

В СЕ есть отдельный пункт для регионов в контекстном меню 

Совсем другой адрес получаем.

 

Вот наглядный пример

 

Game address:                           7FF6BC7A0000
Address client.dll from game: 7FFDEFAD0000
Address client.dll from CE:      19B1D61308

 

2 часа назад, Xipho сказал:

Это с чего ты взял? 

 

Она за адресным пространством, но она подключается к игре.

Посмотрев адреса всех модулей я нашёл ещё 4 модуля, которые очень рядом с искомым модулем, но искомый по адресу далёкому от этих 4х.

Ссылка на комментарий
Поделиться на другие сайты

7FF6BC7A0000 - адрес игры

7FFDEFAD0000 - адрес, по которому библиотека была загружена в игру (в пределах адресного пространства игры)

19B1D61308 - базовый адрес самой длл

Или я чего-то не понимаю.

Ссылка на комментарий
Поделиться на другие сайты

3 часа назад, Xipho сказал:

7FF6BC7A0000 - адрес игры

7FFDEFAD0000 - адрес, по которому библиотека была загружена в игру (в пределах адресного пространства игры)

19B1D61308 - базовый адрес самой длл

Или я чего-то не понимаю.

 

Ну если под понятием "базовый адрес" подразумевается адрес, который выдаёт CE, то да

5 часов назад, krocki сказал:

Не проще написать скрипт со своим статическим смещением для динамического адреса.

 

Если имеется ввиду смещение от адреса игры до dll, то даже смещение всегда разное.

Даже модули, которые подключаются к игре и находятся почти рядом с искомым модулем, то даже от них смешение всегда разное. 

Изменено пользователем nRaiver
Ссылка на комментарий
Поделиться на другие сайты

Если это что-то даст, то какая-то закономерность адреса имеется.

Вот последние 5 адресов:

 

28D64F25890
28D64F25890
213ECECD890
14DF8495890
23E68485890

 

Ну и следовательно от игры смещение тоже постоянно с одинаковыми последними 3 символами.

Изменено пользователем nRaiver
Ссылка на комментарий
Поделиться на другие сайты

В 18.08.2019 в 16:27, nRaiver сказал:

а судя по скрину из CE, то "client.dll" находится далеко за адресным пространством игры. 

 

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

  1. Функция просматривает список занятых/свободных областей памяти, размещённых в куче, в поисках свободной области подходящего размера;
  2. В случае нехватки свободной памяти может запросить дополнительную память у ОС;
  3. Добавляет найденную область в список занятых областей (или помечает область как занятую);
  4. Возвращает указатель на начало области памяти;
  5. Записывает данные по этому указателю.
Ссылка на комментарий
Поделиться на другие сайты

15 часов назад, partoftheworlD сказал:

 

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

  1. Функция просматривает список занятых/свободных областей памяти, размещённых в куче, в поисках свободной области подходящего размера;
  2. В случае нехватки свободной памяти может запросить дополнительную память у ОС;
  3. Добавляет найденную область в список занятых областей (или помечает область как занятую);
  4. Возвращает указатель на начало области памяти;
  5. Записывает данные по этому указателю.

 

Я видимо слишком туп что бы понять, почему из CE модуль по одному адресу, а этот же модуль, адрес которого получен из списка модулей игры разнятся ?

Или в значении по адресу модуля из игры хранится адрес модуля из CE ?

Изменено пользователем nRaiver
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.