Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 296

/ вопрос открыт /

Всем привет!!!
Мой вопрос заключается в следующем:
Я пытаюсь слить из памяти в файл содержимое главного процесса чужого приложения. С доступом к памяти разобрался, но возникла проблема: я не знаю как определить размер памяти, которую занимет процесс.
Возможно ктото чемто подобным занимался и знает как можно получить количество байт, которые занимает процес в виртуальной памяти.

Приложение:
  1. var
  2. Form1: TForm1;
  3. OperaHandl:hwnd;
  4. ProcessHandle:THANDLE;
  5. ProcessID:DWORD;
  6. BytsR: Cardinal;
  7.  
  8. MyFile: File of byte;
  9. NumWritten:Integer;
  10.  
  11. procedure TForm1.Button1Click(Sender: TObject);
  12. var
  13. Buf:byte;
  14. begin
  15. Smeshenie:=0;
  16. OperaHandl:=FindWindow(nil,'Opera');
  17. if OperaHandl<>0 Then
  18.  
  19.  
  20. GetWindowThreadProcessId(OperaHandl,@ProcessId);
  21. if ProcessId<>0 Then
  22.  
  23. ProcessHandle:=OpenProcess(PROCESS_ALL_ACCESS,TRUE,ProcessId);
  24. if ProcessHandle<>null Then
  25.  
  26. AssignFile(MyFile,'Slitok.mydat');
  27. Rewrite(MyFile);
  28.  
  29.  
  30. ReadProcessMemory(ProcessHandle,Pointer(Smeshenie),@Buf,Cardinal(1),BytsR);
  31. BlockWrite(MyFile,Buf,BytsR,NumWritten);
  32.  
  33. End;
  34. End;
  35. End;
  36. end;


SOA Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: SOA (статус: Посетитель)
Вопрос отправлен: 7 июня 2010, 14:55
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: min@y™

Короче, вот тебе исходники двух программ: первая - программа-цель (Target.dpr), её препарирует втора прога (MainApp.dpr), т.е. дампит в стрим, а затем ищет в нём ячейку памяти с заданным значением.
К ответу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки ответа)

Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 7 июня 2010, 16:11
Оценка за ответ: 5

Комментарий к оценке: За проги конечно спасибо, но мне бы помогла и одна функция VirtualQueryEx, собственно то что и явилось решением.

Мини-форум вопроса

Всего сообщений: 21; последнее сообщение — 7 июня 2010, 16:58; участников в обсуждении: 4.

Страницы: [« Предыдущая] [1] [2]

SOA

SOA (статус: Посетитель), 7 июня 2010, 16:58 [#21]:

Еще кажется можно использовать функцию LocalSize для определения размера процесса в памяти.

Страницы: [« Предыдущая] [1] [2]

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 25 апреля 2026, 20:36
Выполнено за 0.02 сек.