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

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

Процесс в памяти [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]


> адрес начала размещения процесса в памяти уже запущенной
> программы


это нонсенс


Наверх

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