|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
25.12.2017, 11:22 | #1 | |
Пользователь
Регистрация: 01.08.2010
Сообщений: 51
|
Найти все команды в памяти процесса, с определенной сигнатурой
Известен адрес, он записан в переменную ассемблера, пример,
Код:
Как сформировать опкоды для такой команды Цитата:
|
|
25.12.2017, 11:30 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
Посмотреть в мануал процессора на предмет кодов инструкций и их параметров.
RCX предполагает х64 процесс, где может использоваться относительная адресация. Это означает, что реальный параметр инструкции будет зависеть от того, где эта инструкция находится. |
25.12.2017, 11:40 | #3 |
Пользователь
Регистрация: 01.08.2010
Сообщений: 51
|
Ах вот оно в чем дело! Потому что смотрю опкод, пример,
Код:
|
25.12.2017, 12:04 | #4 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
Прибавить смещение к регистру EIP, правда я не помню EIP должен указывать на текущую инструкцию или уже на следующую.
Если хотите дельный совет тогда озвучивайте проблему, а не ваш способ ее решения. |
25.12.2017, 12:07 | #5 |
Пользователь
Регистрация: 01.08.2010
Сообщений: 51
|
Хм, получается в памяти не получится найти все такие команды, раз нужно значение регистра знать?
|
25.12.2017, 12:11 | #6 |
Пользователь
Регистрация: 01.08.2010
Сообщений: 51
|
Проблема проста, есть игра, в ней я нахожу в памяти процесса адрес структуры, я знаю, что этот адрес статичен на протяжении всей работы процесса. Мне нужно найти адрес одной функции, которая использует эту структуру, потом вычислить ее сигнатуру, чтобы иметь возможность при каждом запуске ставить hook с помощью DetourAttach.
Ну и я знаю, что в этой функции используется один из вариантов с lea |
25.12.2017, 12:42 | #7 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
Надо ручками, отладчиком найти хоть одно такое место и посмотреть смещение.
В дальнейшем всегда находить именно эту инструкцию и брать ее за основу а дальше, когда будем искать, вычислять нужное смещение на каждый адрес. Например если инструкция по адресу 123 имеет смещение 123 то значит данные лежат по абсолютному адресу ABS, который равен 123 + 123. Далее, инструкция по адресу 0, будем иметь смещение ABS, по адресу 1 - смещение ABS - 1, и т.д. |
25.12.2017, 15:14 | #8 |
Пользователь
Регистрация: 01.08.2010
Сообщений: 51
|
А секция .data одна может быть только? Т.е. для любой переменной один базовый адрес будет?
|
25.12.2017, 21:45 | #9 | ||
(aka Jin X) !RTFM!
Форумчанин
Регистрация: 14.12.2014
Сообщений: 295
|
Цитата:
Цитата:
Что подразумевается под базовый адресом? Секций данных может быть несколько, как и секций кода. У одной переменной может быть только один адрес
Делаю лабы на Asm/Delphi/C++/Python/VBA(Excel): asmlabs.ru
|
||
25.12.2017, 21:49 | #10 |
(aka Jin X) !RTFM!
Форумчанин
Регистрация: 14.12.2014
Сообщений: 295
|
Всё-таки смещением принято называть "offset" (собственно, абсолютный адрес как раз), а это корректнее называть относительный адрес (не знаю, какое слово подобрать для используемого в мануалах "displacement", т.к. среди переводов имеется и "смещение", но во избежание путаницы я бы не стал применять этот термин).
Делаю лабы на Asm/Delphi/C++/Python/VBA(Excel): asmlabs.ru
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Все данные от определенной даты | Veryky | C# (си шарп) | 1 | 12.03.2016 23:06 |
Ожидание процесса, команды batch | OmegaBerkut | Windows | 11 | 19.04.2015 10:18 |
Поиск в памяти процесса | Mr_ViK | Общие вопросы Delphi | 5 | 27.08.2012 21:38 |
Чтение памяти процесса | Maincore | Win Api | 12 | 14.08.2012 22:34 |
Редактирование памяти процесса | Dima DDM | Общие вопросы Delphi | 0 | 25.12.2010 16:54 |