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

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

Как прочитать память у DLL (ReadProcessMemory):DllName.dll+offset [D7, WinXP]


Vincent ©   (2010-02-02 22:25:00) 

Как читать и изменять память у процесса я знаю:

var
 h,HandleWindow,ThreadId,ProcessId : Cardinal;
 buf:dword;
 read:Cardinal;
const
 Address = $.........;
begin
 h := FindWindow(nil,'Заголовок окна');
 if h = 0 then Exit;
 ThreadId := GetWindowThreadProcessId(h,@ProcessId);
 HandleWindow := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
 ReadProcessMemory(HandleWindow,ptr(Address),@result,4,read);
 CloseHandle(HandleWindow);


Вот только интересующее значение находится в области загруженной DLL которую юзает программа. Как прочитать значение в этом случае?

То есть нужно прочитать данные по адресу DllName.dll+offset


Vincent   (2010-02-02 23:00:00) [1]

Странно... Недавно не заботала. Уже заработала... Чудеса...))
Ладно всеравно спасибо)


Vincent   (2010-02-02 22:54:00) [2]


> Какой еще к лешему Window ?
> Ф-ция OpenProcess() никаких дел дел с окнами не имеет.

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


> Да по барабану где оно находится)
> Выше штанов под названием "виртуальное адресное пространство
> процесса" все равно не прыгнуть.

??? Т.е. открыв идентификатор процесса с полными правами я могу обращаться к адресам и в загруженной ею длл?
Если я попытаюсь открыть интересующий адрес (dll+offset) напрямую я получаю неверное число.


Сергей М.   (2010-02-02 22:36:00) [3]


> интересующее значение находится в области загруженной DLL
> которую юзает программа


Да по барабану где оно находится)
Выше штанов под названием "виртуальное адресное пространство процесса" все равно не прыгнуть.


> Handle Window:= OpenProcess(


Какой еще к лешему Window?

Ф-ция OpenProcess() никаких дел дел с окнами неимеет.


Наверх

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