powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Поиск текста в памяти процесса
16 сообщений из 16, страница 1 из 1
Поиск текста в памяти процесса
    #37708182
Sanya111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет.
Ищу строку в памяти процесса.
Подскажите, пожалуйста, что не так в строке if PDWord(@Buf[I])^ = Value then begin. При работе выскакивает ошибка.
Не пинайте сильно только начал изучать работу с памятью. Код не мой, пытаюсь разобраться.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
procedure TForm11.Button1Click(Sender: TObject);
var
ProcessID: DWord;
  ProcessHandle: THandle;
  Mbi: TMemoryBasicInformation;
  Addr: DWord;
  Value: DWord;
  I: Cardinal;
  Buf: PChar;
  BytesRead: DWord;
  wHandle, ttHandle: integer;
  Value: integer; 

begin
wHandle := FindWindow(nil, 'Form1'); // Буду искать значения в другом приложении Form1
if wHandle <> 0 then  begin
Value:=123; // будем искать
ttHandle := GetWindowThreadProcessId(wHandle, @ProcessID);
ProcessHandle  := OpenProcess(PROCESS_ALL_ACCESS, FALSE, ProcessID);
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, size_t(BytesRead)) then
     begin
      //
      // Ищем значение типа DWORD в буфере
      //
      for I := 0 to BytesRead - SizeOf(Value) do  begin

        if PDWord(@Buf[I])^ = Value then  begin // ВОТ ЗДЕСЬ ОШИБКА
                // Найдено, выводим
memo2.lines.add('Value ' + IntToStr(Value) + ' found at ' +
         IntToHex(Integer(Cardinal(Mbi.BaseAddress) + I), 8));
      end;
      end;
     end;

    finally
     FreeMem(Buf);
    end;
   end;

   // Вычисляем адрес следуюшего региона
   Addr := Addr + Mbi.RegionSize;
  end;

 finally
  CloseHandle(ProcessHandle);
 end;
end;
...
Рейтинг: 0 / 0
Поиск текста в памяти процесса
    #37708193
Фотография Anatoly Podgoretsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так и пишет " я выскакиваю" лови меня.
...
Рейтинг: 0 / 0
Поиск текста в памяти процесса
    #37708207
Sanya111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Project Project2.exe raised exception class $C0000005 with massage 'access violation at 0x00514d97: read of address 0x7ffd3000'
...
Рейтинг: 0 / 0
Поиск текста в памяти процесса
    #37708292
Фотография Anatoly Podgoretsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неверное обращение к бибилиотеки, прямо или косвенно. В этой области находится одна из системных библиотек. В общем тяжело тебе будет.
...
Рейтинг: 0 / 0
Поиск текста в памяти процесса
    #37708372
Sanya111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Anatoly Podgoretsky, спасибо
а как-то можно ограничить это обращение?
Например
if BytesRead=4096 , то работаем дальше.
С этим условием все получается.
Это вообще правильно так сделать или я несу чушь?
И надежен ли будет поиск?
...
Рейтинг: 0 / 0
Поиск текста в памяти процесса
    #37708406
Sanya111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пока решил поставить
try
except
end

Подскажите, пожалуйста, как-то можно узнать с какого адреса искать чтобы не обращаться к системным библиотекам?
...
Рейтинг: 0 / 0
Поиск текста в памяти процесса
    #37708483
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sanya111, зачем тебе адрес? Есть точки останова (breakpoints) и волшебные кнопки F8, F7
...
Рейтинг: 0 / 0
Поиск текста в памяти процесса
    #37708509
Sanya111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
скачал исходник MemorySeeker с http://www.delphisources.ru
наверное лучшее что можно найти чтобы разобраться начинающим

спасибо всем за помощь
...
Рейтинг: 0 / 0
Поиск текста в памяти процесса
    #37708537
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sanya111, artmoney изобретаешь? ))
...
Рейтинг: 0 / 0
Поиск текста в памяти процесса
    #37708567
Sanya111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Barmaley57,
нет, третий год пишу программу для покера :)
...
Рейтинг: 0 / 0
Поиск текста в памяти процесса
    #37709363
Фотография S.PR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и что там в PDWord(@Buf[I])^?
...
Рейтинг: 0 / 0
Поиск текста в памяти процесса
    #37709399
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Sanya111Barmaley57,
нет, третий год пишу программу для покера :)

Настоящие деньги можно или украсть, или заработать.
А вот выиграть - шансов очень мало.
...
Рейтинг: 0 / 0
Поиск текста в памяти процесса
    #37709416
ДжекНепотрошитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecatorНастоящие деньги можно или украсть, или заработать.
А вот выиграть - шансов очень мало.

Никто и не предполагает, что программа для покера деньги будет выигрывать ...
...
Рейтинг: 0 / 0
Поиск текста в памяти процесса
    #37709420
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
ДжекНепотрошительdefecatorНастоящие деньги можно или украсть, или заработать.
А вот выиграть - шансов очень мало.

Никто и не предполагает, что программа для покера деньги будет выигрывать ...

А для чего её тогда писать целых три года ?
...
Рейтинг: 0 / 0
Поиск текста в памяти процесса
    #37711310
Sanya111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Конечно программа деньги выигрывать не сможет, но очень сильно будет помогать в игре.
Договорился с разработчиками artmoney на счет dll, который будет искать текст в памяти.
Потом хочу купить и исходник.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Поиск текста в памяти процесса
    #39861941
Mr Robot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Компоненты XeonCOM "TRWProcessMemory" #Delphi XE
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Поиск текста в памяти процесса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]