Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2011, 18:36   #1
niki2012
Пользователь
 
Аватар для niki2012
 
Регистрация: 03.01.2011
Сообщений: 64
Вопрос Считывание из оперативной памяти

Необходимо считать код другой программы из оперативной памяти (например по идентификатору процесса)
Программист - это не тот, кто пишет программы, а тот, чьи программы работают.
niki2012 вне форума Ответить с цитированием
Старый 04.01.2011, 19:13   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

ReadProcessMemory()
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 04.01.2011, 19:16   #3
Don Karleone
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 410
По умолчанию

Цитата:
Сообщение от veniside Посмотреть сообщение
а по подробнее можете объяснить
ICQ: 593-013-807
Don Karleone вне форума Ответить с цитированием
Старый 04.01.2011, 19:33   #4
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

ну типа такого (TlHelp32 добавляем в uses).

Код:
// --  --
procedure Tc_form_main.Button1Click(Sender: TObject);
var
  shot: tHandle;
  procEntryW: PROCESSENTRY32W;
  ok: bool;
  h: tHandle;
  buf: array[byte] of byte;
  sz: unsigned;
begin
  shot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  if (0 <> shot) then begin
    //
    procEntryW.dwSize := sizeOf(procEntryW);
    try
      ok := Process32FirstW(shot, procEntryW);
      while (ok) do begin
	//
	if (1 <= pos('explorer.exe', lowerCase(procEntryW.szExeFile))) then begin
	  //
	  h := OpenProcess(PROCESS_VM_READ, false, procEntryW.th32ProcessID);
	  if (0 <> h) then begin
            //
	    ReadProcessMemory(h, pointer($410000), @buf, sizeof(buf), sz);
            break;
          end; 
	end;
	//
	ok := Process32NextW(shot, procEntryW);
      end;
      //
    finally
      CloseHandle(shot);
    end;
  end;
end;
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."

Последний раз редактировалось veniside; 04.01.2011 в 19:36. Причина: красоту навёл )
veniside вне форума Ответить с цитированием
Старый 05.01.2011, 17:46   #5
niki2012
Пользователь
 
Аватар для niki2012
 
Регистрация: 03.01.2011
Сообщений: 64
По умолчанию

Что за тип unsigned у переменной sz? Такого типа вроде нет...
Программист - это не тот, кто пишет программы, а тот, чьи программы работают.
niki2012 вне форума Ответить с цитированием
Старый 05.01.2011, 18:13   #6
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Cardinal, LongWord для 32 битной среды, UInt64 для 64 битной
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 05.01.2011, 18:24   #7
niki2012
Пользователь
 
Аватар для niki2012
 
Регистрация: 03.01.2011
Сообщений: 64
По умолчанию

Не совсем понял как это работает... Куда записывается результат?
Программист - это не тот, кто пишет программы, а тот, чьи программы работают.
niki2012 вне форума Ответить с цитированием
Старый 05.01.2011, 18:32   #8
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

в локальный массив байт buf. Т.к. это просто пример, то результат никуда не передаётся. В реальной программе работа с массивом будет продолжена.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объём оперативной памяти _-Re@l-_ Общие вопросы Delphi 2 16.06.2010 12:58
Ремонт оперативной памяти. С.М.С Компьютерное железо 6 06.06.2009 17:20
Восстановить из оперативной памяти Problemaumenya Помощь студентам 1 08.05.2008 23:01
Текстирование оперативной памяти arxipmen Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 23.11.2007 14:30
выделение оперативной памяти Alar Общие вопросы Delphi 0 29.10.2006 21:56