![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как прочитать память у 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() никаких дел дел с окнами неимеет.