Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с памятью своего процесса 
:(
    Опции темы
lollollollol
Дата 1.7.2013, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 12.3.2013

Репутация: нет
Всего: нет



Здравствуйте. Есть желание поработать с памятью своего процесса.
В приведённом ниже коде я хочу получить блок памяти в переменную array of byte, но получаю run time error

Код

var
  SysInfo:TSystemInfo;
  lpBuffer:TMemoryBasicInformation;
  dwLength:DWORD;
  readResult:boolean;
  Buf:array[0..99999] of byte;
begin
  GetSystemInfo(SysInfo);
  dwLength:=1;
  while (dwLength<>0) do begin
    dwLength:=VirtualQuery(SysInfo.lpMaximumApplicationAddress,lpBuffer,SizeOf(lpBuffer));
    SysInfo.lpMinimumApplicationAddress:=Pointer(longint(SysInfo.lpMinimumApplicationAddress)+lpBuffer.RegionSize);
    if (lpBuffer.State = MEM_COMMIT) and (lpBuffer.Protect = PAGE_READWRITE) then begin
      try
        ZeroMemory(@Buf, sizeof(Buf));
        move(lpBuffer.BaseAddress,Buf,lpBuffer.RegionSize); //Вот тут Run time error
      except
      end;
    end;
  end;
end;


Что я делаю не правильно?

Заранее благодарен
PM MAIL   Вверх
northener
Дата 1.7.2013, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: нет
Всего: 20



Цитата(lollollollol @  1.7.2013,  11:32 Найти цитируемый пост)
ZeroMemory(@Buf, sizeof(Buf));

А зачем тут собака порылась?

Это сообщение отредактировал(а) northener - 1.7.2013, 12:47


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
lollollollol
Дата 1.7.2013, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 12.3.2013

Репутация: нет
Всего: нет



Без собаки
[Error].dpr(47): Incompatible types: 'Array' and 'Pointer'

Buf это массив, а функции нужен указательна начало массива, по этому собака

Это сообщение отредактировал(а) lollollollol - 1.7.2013, 14:31
PM MAIL   Вверх
Чучмек
Дата 23.7.2013, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 7
Всего: 41



lollollollol, с ходу,не вдаваясь в "код"
Цитата(lollollollol @  1.7.2013,  11:32 Найти цитируемый пост)
        move(lpBuffer.BaseAddress,Buf,lpBuffer.RegionSize); //Вот тут Run time error

1.RegionSize может быть больше 1МБ
2.move ждет переменную, а не указатель. lpBuffer.BaseAddress^ вместо lpBuffer.BaseAddress

Цитата(lollollollol @  1.7.2013,  11:32 Найти цитируемый пост)
    dwLength:=VirtualQuery(SysInfo.lpMaximumApplicationAddress,lpBuffer,SizeOf(lpBuffer));
    SysInfo.lpMinimumApplicationAddress:=Pointer(longint(SysInfo.lpMinimumApplicationAddress)+lpBuffer.RegionSize);

3. Почему запрашиваешь информацию о последнем доступном адресе?
4. И почему, тогда, после запроса корректируешь pMinimumApplicationAddress? 


Это сообщение отредактировал(а) Чучмек - 23.7.2013, 09:37


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0608 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.