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

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

Read/WriteProcessMemory


Страницы:   1 2

Tonich ©   (2005-08-24 16:42:00) 

начить делаю так...



 HRProcess := OpenProcess(
                           PROCESS_CREATE_THREAD or
                           PROCESS_VM_OPERATION or
                           PROCESS_VM_WRITE,
                           false,
                           PID
                           );

 if HRProcess = 0 then
    begin
     MessageBox();
     Exit;
    end;

   p_mem :=  VirtualAllocEx(HRProcess,nil,sizeof(str_proba),MEM_COMMIT,PAGE_READWRITE);

 if p_mem = nil then
    begin
     MessageBox();
     Exit;
    end;

  if not WriteProcessMemory(HRProcess,p_mem,@str_proba, sizeof(str_proba),writebytes) then
    begin
     MessageBox();
     Exit;
    end;

  if not ReadProcessMemory(HRProcess,p_mem,@BufferS,SIZEOF(BufferS),readbytes) then
    begin
     MessageBox();
     Exit;
    end;


чего это гад не хочет читать то что я туда записал в частности str_proba ???


Tonich   (2005-08-24 17:22:00) [21]


> alpet ©   (24.08.05 17:19) [16]
ну эт я как-то понял)


Tonich   (2005-08-24 17:21:00) [22]

хм странно я когда резервирую грю ему PAGE_READWRITE


alpet   (2005-08-24 17:20:00) [23]

Попробуй на время отладки присвоить HRProcess результат GetCurrentProcess.


alpet   (2005-08-24 17:19:00) [24]

Tonich ©   (24.08.05 17:16) [13]

ERROR_ACCESS_DENIED - наводит на размышления, что нельзя прочитать/записать с адрес p_mem в АП несчастного процесса.


begin...end   (2005-08-24 17:18:00) [25]

> Tonich ©   (24.08.05 17:16) [13]

SysErrorMessage(5) или [8]


BiN   (2005-08-24 17:18:00) [26]

Access denied


Tonich   (2005-08-24 17:16:00) [27]

всеравно нихрена не читает
GetLastError() = 5


Digitman   (2005-08-24 17:12:00) [28]


> хмм, а что есть принципиальная разница в том как объявить
> эту строку


представь себе - есть !


alpet   (2005-08-24 17:11:00) [29]

Tonich ©   (24.08.05 17:05) [9]

Взялся за API, учись работать с ASCIIZ строками. С ними порой удобнее обращаться бывает. В данном случае это определение строки из 256 байт.
var s: string
   str_proba: array [0..40] of char;
....
s := 'Window Text';
StrPCopy (@str_proba, s);
WriteProcessMemory (..., @str_proba)


Digitman   (2005-08-24 17:08:00) [30]


> Tonich ©   (24.08.05 16:59) [6]
> ReadProcessMemory(...)
> функция возвращает false


если функция - это "гад", возвративший вместо вожделенного True "гадское" False, то чуть ли не на каждую "гадскую" ф-цию (ДАННАЯ - в т.ч.) существует "гадское противоядие" - ф-ция GetLastError()


Tonich   (2005-08-24 17:05:00) [31]


> alpet ©   (24.08.05 17:02) [7]
хмм, а что есть принципиальная разница в том как объявить эту строку


begin...end   (2005-08-24 17:03:00) [32]

> Tonich ©   (24.08.05 16:59) [6]

> и функция возвращает false

Win32Check(ReadProcessMemory(...))


alpet   (2005-08-24 17:02:00) [33]

var str_proba: array [BYTE] of char;
...
ReadProcessMemory (hProcess, p_mem, @str_proba, 256, writed);
WriteProcessMemory (hProcess, p_mem, @str_proba, 256, writed);


Tonich   (2005-08-24 16:59:00) [34]

блин всеравно
в

ReadProcessMemory(...)

ReadBytes = 0
и функция возвращает false


Tonich   (2005-08-24 16:53:00) [35]


> Digitman ©   (24.08.05 16:51) [3]
хмм) гад сейчас отсуцтвует, поэтому пришлось спрашивать тута)))


begin...end   (2005-08-24 16:53:00) [36]

> Tonich ©   (24.08.05 16:49) [2]

Неправильно записываете, неправильно читаете.

Адрес тела строки: @S[1] или Pointer(S), а не @S.
Размер тела строки: Length(S), а не sizeof(S).
Перед чтением в строку не забываем установить нужную длину с помощью SetLength.


Digitman   (2005-08-24 16:51:00) [37]


> чего это гад не хочет


а ты у "гада" спросил, почему он "не хочет" ?

нет, не спросил.
не сподобился.
лень тебе.

тогда "чего ж тебе надобно, старче ?" (с)


Tonich   (2005-08-24 16:49:00) [38]

str_proba:string


begin...end   (2005-08-24 16:48:00) [39]

Что такое str_proba?


Страницы:   1 2

Наверх

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