![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Процесс в памяти [D6, Win95/98, Win2k, WinXP]
Samowar © (2004-09-16 03:56:00)Доброго времени суток!!!
Как узнать адрес начала размещения процесса в памяти уже запущенной программы и заиметь доступ для её редактирования?
pasha_golub (2004-09-17 13:01:00) [1]Товрищ Samowar ©, раскрывайте карты. На кой оно нужно, ибо чует моя ..., что не туды подкоп ведете.
Digitman (2004-09-17 12:56:00) [2]
> Samowar © (17.09.04 11:36) [11]
> Если не знаете, лучше не пишите тут всякую фигню.
чудо, а вот ты не "фигню" тут пишешь-требуешь ?
оперативной памятью заведует ядро многозадачной ОС, под управлением которой работает твое приложение.. и ОС по своему усмотрению может в любой момент времени выгрузить любой фрагмент кода/данных твоей программы из опер.памяти и отдать "освобожденную" память другому приложению ... а в некий момент времени загрузить этот фрагмент кода/данных в совершенно иной участок опер.памяти с совершенно иным физ.диапазоном адресов ... приложение же знать ничего не знает об этом, оно как обращалось, например, по адресу $410000 ( виртуальномуадресу некоей переменной !), так и продолжает по нему обращаться, ВНЕ какой-либо зависимости от того, на какой участок физической памяти в каждый момент времени отображен соотв.участок вирт.памяти !
ты про страничную организацию вирт.памяти и механизм "подкачки" слышал хоть что-нибудь ?
VMcL (2004-09-17 11:52:00) [3]>> Samowar © (17.09.04 11:36) [11]
> Вы сначала на мой вопрос ответ дайте.
Не удержусь и напишу народную мудрость: "Жена будет давать".
Учить матчасть.
Игорь Шевченко (2004-09-17 11:45:00) [4]
> Может хватит надо мной издеваться. Если не знаете, лучше
> не пишите тут всякую фигню.
http://ln.com.ua/~openxs/articles/smart-questions-ru.html
Учить наизусть
Samowar (2004-09-17 11:36:00) [5]Может хватит надо мной издеваться. Если не знаете, лучше не пишите тут всякую фигню.
> А...нафига, можно узнать ?
Вы сначала на мой вопрос ответ дайте.
Игорь Шевченко (2004-09-17 09:59:00) [6]
> Вот именно адрес в физической памяти мне и надо, а не в
> виртуальной. Доступ к ячейкам оперативной памяти ПК, я об
> этом.
А...нафига, можно узнать ?
Digitman (2004-09-17 08:11:00) [7]
> именно адрес в физической памяти мне и надо, а не в виртуальной.
> Доступ к ячейкам оперативной памяти ПК
вот когда ты у себя в приложении пишешь
var
i: Integer;
..
i := 1;
какой памяти ты непосредственно обращаешься ?
Samowar (2004-09-17 03:43:00) [8]Вы опять меня недопоняли
> В распоряжении процесса всегда имеется 4гб виртуальной (а не
> физической) памяти, и речь надо вести именно о виртуальном
> адресном пространстве (ВАП) процесса
Вот именно адрес в физической памяти мне и надо, а не в виртуальной. Доступ к ячейкам оперативной памяти ПК, я об этом.
VMcL (2004-09-16 13:46:00) [9]>> Samowar © (16.09.04 11:13) [3]
> Давайте только не будем до слов придераться, вы всё прекрасно понимаете что мне надо.
Сайт называется, вроде, "Мастера Delphi", а не "Телепаты Delphi"...
Игорь Шевченко (2004-09-16 12:53:00) [10]
> Давайте только не будем до слов придераться, вы всё прекрасно
> понимаете что мне надо.
Не понимаем
Digitman (2004-09-16 12:08:00) [11]
> Samowar © (16.09.04 11:13) [3]
> Адрес байта в оперативной памяти персонального компьютера,
> с которого начинается запущенная ранее программа
Win32-процесс не взаимодействует напрямую с оперативной памятью
В распоряжении процесса всегда имеется 4гб виртуальной(а не физической) памяти, и речь надо вести именно о виртуальном адресном пространстве (ВАП) процесса
для работы с ВАП "чужого" процесса в Win32 имеются ф-ции
OpenProcess
VirtualQueryEx
VirtualAllocEx
ReadProcessMemory
WriteProcessMemory
и множество других
Суслик (2004-09-16 11:27:00) [12]Как узнать baseaddress я не знаю, а редактировать адресное пространство другого процесса можно используя функции
virtualallocex
openprocess
writeprocessmemory
Как этими функциями пользоваться хорошо описано в книге Рихтера "Windows для профессионалов".
Samowar (2004-09-16 11:13:00) [13]Адрес байта в оперативной памяти персонального компьютера, с которого начинается запущенная ранее программа (к примеру игрушка какаянибудь).
З.Ы.
Давайте только не будем до слов придераться, вы всё прекрасно понимаете что мне надо.
З.З.Ы
Заранее огромный сэнкс :)
Erik1 (2004-09-16 10:15:00) [14]Может базовый адрес по которому загружена программа?
Digitman (2004-09-16 08:10:00) [15]
> адрес начала размещения процесса в памяти уже запущенной
> программы
это нонсенс