Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Разное
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.06.2012, 17:24
mixtape774 mixtape774 вне форума
Прохожий
 
Регистрация: 29.06.2012
Сообщения: 2
Репутация: 10
По умолчанию Помогите написать процедуру сканирования памяти

Решено <<<<<<<

Последний раз редактировалось mixtape774, 03.07.2012 в 04:01.
Ответить с цитированием
  #2  
Старый 29.06.2012, 17:39
Аватар для ined
ined ined вне форума
Начинающий
 
Регистрация: 16.11.2008
Адрес: Российская Федерация!! :)
Сообщения: 165
Версия Delphi: Delphi 2010
Репутация: 1272
По умолчанию

А у тебя самого есть какие наработки?
__________________
11011111 INED Home code
VK
Ответить с цитированием
  #3  
Старый 29.06.2012, 18:33
mixtape774 mixtape774 вне форума
Прохожий
 
Регистрация: 29.06.2012
Сообщения: 2
Репутация: 10
По умолчанию

Код:
var
  ProcessID, Addr, Value, BytesRead: DWord;
  ProcessHandle: THandle;
  Mbi: TMemoryBasicInformation;
  i: Cardinal;
  Buf: PChar;
begin
  ProcessHandle := FindWindow(nil, PChar('Заголовок окна процесса'));
  GetWindowThreadProcessId(ProcessHandle, @ProcessID);
  Value := 12321;
  ProcessHandle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_ALL_ACCESS or PROCESS_VM_OPERATION, false, ProcessID);
    if ProcessHandle <> 0 then
      try
        Addr := 0;
          while VirtualQueryEx(ProcessHandle, Pointer(Addr), Mbi, SizeOf(Mbi)) <> 0 do
            begin
              if (Mbi.State = MEM_COMMIT) and not ((Mbi.Protect and PAGE_GUARD) = PAGE_GUARD) then
                begin
                  GetMem(Buf, Mbi.RegionSize);
                    try
                      if ReadProcessMemory(ProcessHandle, Mbi.BaseAddress, Buf, Mbi.RegionSize, BytesRead) then
                        begin
                          for i := 0 to BytesRead - SizeOf(Value) do
                            begin
                              if PDWord(@Buf[i])^ = Value then Memo1.Lines.Add('$' + IntToHex(Integer(Cardinal(Mbi.BaseAddress) + i), 8));
                            end;
                        end
                      else
                    finally
                      FreeMem(Buf);
                    end;
                end;
              Addr := Addr + Mbi.RegionSize;
            end;
      finally
        CloseHandle(ProcessHandle);
      end;
end;
Админ: Пользуемся тегами для оформления кода!

Но это не то, что нужно

Последний раз редактировалось Admin, 30.06.2012 в 11:14.
Ответить с цитированием
  #4  
Старый 30.06.2012, 08:40
Аватар для ined
ined ined вне форума
Начинающий
 
Регистрация: 16.11.2008
Адрес: Российская Федерация!! :)
Сообщения: 165
Версия Delphi: Delphi 2010
Репутация: 1272
По умолчанию

Здесь
Может что то почерпнёшь для себя.
__________________
11011111 INED Home code
VK

Последний раз редактировалось ined, 30.06.2012 в 20:42.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:14.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025