![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ReadProcessMemory.... Помогите разобраться!!! [D5, Win2k]
Alex_mai © (2002-12-05 13:34:00)Уважаемые мастера!!! У меня возникла проблема - Запускаю программу с помощью CreateProcess. Подскажите, пожалуйста, как по хендлу процесса или по его ID узнать начальный адрес памяти, где находится его код и данные... Сразу оговорюсь, что это производственная необходимость, а не вирусописание
Ketmar (2002-12-05 19:18:00) [21]код в судию.
Satanas Nobiscum! 05-Dec-XXXVII A.S.
Cobalt (2002-12-05 18:58:00) [22]попробуйте внедриться в АП
Alex_mai (2002-12-05 18:32:00) [23]Игорь, совсем не трудно. Шеф принёс программу для редактирования бинарных файлов (прошивок), но беда в том, что в ней отсутствует функция сохранения. Попросил меня разобраться... Сами понимаете, что исходников под неё у меня нет, но я заметил, используя программу ART_MONEY, что загружаемый бинарник хранится в одном месте целиком. Программа даже адрес выдаёт - 00485058!
Пытаюсь читать из памяти:
ReadProcessMemory(hdl,pointer($485058),@buf,1,i)
-значения совершенно другие.
paul_shmakov, спасибо за ответ, но поскольку я не мастер в программировании, а дремучий новичок, то кроме "MZ" я ничего не понял. Извини.
paul_shmakov (2002-12-05 14:00:00) [24]только нужно в следующей последовательности считывать:
1) IMAGE_DOS_HEADER, проверить, что поле e_magic равно $4D5A (MZ)
2) по смещению IMAGE_DOS_HEADER.e_lfanew считать IMAGE_NT_HEADER, проверить, что поле Signature равно $50450000 (PE).
а дальше уже из IMAGE_NT_HEADER взять OptionalHeader.ImageBase - вот и результат. т.е. виртуальный адрес, по которому будет загружаться модуль (exe! dll может и по другому адресу загрузиться).
но это именно базовый виртуальный адрес загрузки модуля! а местоположение именно "кода и данных" не всегда возможно получить.
как правило, pe-модуль разделен на секции (секция кода, секция данных, секция импорта и т.п.). по флагам секций можно примерно определить, что в секции содержится.
но набор секций - произволен. может быть всего одна секция и в ней все-все-все, а может быть много секций с кодом, много с данными и т.д.
поэтому изложите проблему более конкретно.
Игорь Шевченко (2002-12-05 13:56:00) [25]А можно вопрос, что за производственная необходимость ? Очень мне интересно, ответьте, если не трудно...
paul_shmakov (2002-12-05 13:41:00) [26]все достаточно просто - все данные, которые вам нужны, находятся в PE-заголовке, которые можно считать из exe-файла.
смотрите структуру IMAGE_OPTIONAL_HEADER и поле в ней ImageBase.