Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как найти адрес нужный памяти в чужом приложении? [D6, WinXP]


Destroyer ©   (2004-09-11 00:45:00) 

Подскажите пожалуйста как найти адрес памяти в чужом приложении, например по какому-то значению. Например нужно найти адрес по которому находится значение '31 32 32 34h'


Digitman   (2004-09-14 11:23:00) [1]


> Yozh_Programmer ©   (14.09.04 10:45) [9]


ну и меняй на здоровье !
только перед этим выставь соотв.атрибуты страниц, образующих регион


Yozh_Programmer   (2004-09-14 10:45:00) [2]

Сорри, я спутал с другой проблемкой!!!
Когда адрес необходимо еше и менять!


Digitman   (2004-09-14 09:14:00) [3]


> yozh_programmer ©   (14.09.04 08:54) [7]


> учтите, что переберать надо не все адреса


чтой-то вдруг ?
ВАП Win32-процесса - это всегда диапазон адресов от 0 до 4Гб
ничто не мешает получить инф-цию о любом регионе в пределах всего ВАП

и то что тот или иной диапазон адресов ВАП в той или иной системе "зарезервирован для системных нужд", вовсе не означает, что инф-цию о регионах в этом диапазоне нельзя получить


yozh_programmer   (2004-09-14 08:54:00) [4]

Только учтите, что переберать надо не все адреса. Например в NT системах перебирать надо в интервале 64kb..(2GB-64kb) (кажись так было), а в Win9х надо с 2GB..4GB


Суслик   (2004-09-13 14:48:00) [5]


> [5] Суслик ©   (13.09.04 14:46)

я имел в виду вот эту книгу http://www.books.ru/shop/books/8283


Суслик   (2004-09-13 14:46:00) [6]


>  [3] Destroyer ©   (12.09.04 19:26)

В Рихтере (программирование для windows) хорошо описан пример перебора виртуального адресного пространства.

Рихтер есть в электронном виде. Ищи.


Digitman   (2004-09-13 09:09:00) [7]


> 1)Как узнать номер нужного мне процесса?


у процесса нет "номера" ... у процесса есть глобально уникальный идентификатор PID, который вовсе не требуется для работы ф-ции VirtualQueryEx  ... для работы ф-ции VirtualQueryEx требуется хэндлпросесса, который м.б. получен ф-цией OpenProcess() .. вот для OpenProcess и нужен PID ... а PID , в свою очередь, связан с именем исп.файла в отношении "многие-к-одному" (т.е. несколько различных PID могут быть ассоциированы с одним и тем же именем исп.файла в случае, например, работы более чем одного экз-ра процесса с заданным именем исп.файла) ... получить список соответствий PID и ExeName можно ф-циями перечисления процессов в составе модулей tlhelp32 (win9x/Me) и psapi (NT/2000/XP)


> 2)Как получить ' address of region ' с помощью ф-ции GetSystemInfo?


никак
ф-ции эти предназначены для возврата совершенно разной инф-ции

VirtualQueryEx следует вызывать в цикле, начиная с lpAddress = nil и при каждой след.итерации инкрементируя lpAddress на значение RegionSize, возвращенное при предыдущей итерации в структуре MEMORY_BASIC_INFORMATION .. перечисленные в цикле регионы, имеющие State = MEM_FREE и/или Type = MEM_PRIVATE, из рассмотрения на предмет сабжа следует исключать


> 3)Какой указывать адрес буфера 'address of information buffer
> 'и что это за буфер?


просто передать в кач-ве этого параметра имя переменной типа TMemoryBasicInformation, это и есть "буфер", подготовленный для возврата инф-ции об очередном регионе


Destroyer   (2004-09-12 19:26:00) [8]

Вопросы по ф-ии VirtualQueryEx :
1)Как узнать номер нужного мне процесса?
2)Как получить ' address of region ' с помощью ф-ии GetSystemInfo?
3)Какой указывать адрес буфера 'address of information buffer 'и что это за буфер?


Destroyer   (2004-09-12 01:20:00) [9]

Спасибо, посмотрю.


yozh_programmer   (2004-09-11 12:45:00) [10]

Только перебором адресного пространства! Только не все адреса надо перебирать. Посмотри функцию VirtualQueryEx, некоторые секции адресного пространства нет смысла просматривать.


Наверх

Титульная страница Поиск, карта сайта Написать письмо