Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
2 / 2 / 0
Регистрация: 14.12.2010
Сообщений: 37

Чтение памяти процесса

31.07.2012, 16:33. Показов 4425. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет мне нужно найти ячейку с нужным числом, делаю это так
Delphi
1
2
3
4
5
6
7
8
9
10
Sadr := $00000000; 
 
  for i := 1 to 1000000{2147483647} do
  begin
    Sadr := Sadr + 1;
    ReadProcessMemory(h2, pointer(Sadr), @adr, 4, Nat);
    If adr = StrToInt(Edit1.Text) then
      Memo1.Lines.Add(inttostr(Sadr) + ' ' + inttostr(adr));
 
  end;
Но получается СВЕРХ медленно (миллион примерно за 10-15 секунд). Возможно ли както прочитать всю память процесса меньше чем за секунду?
 Комментарий модератора 
Теги кода исправлены модератором. Для оформления кода Delphi следует выделить этот код и на панели редактирования сообщения нажать кнопку: "DELPHI".
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.07.2012, 16:33
Ответы с готовыми решениями:

чтение занчения переменной из процесса
Замучался уже. В инете одни багнутые скрипты. Мне нужно получить значение переменной в памяти процесса (строннего). Я знаю название окна, я...

Чтение памяти чужого процесса
Всех приветствую, нужна помощь, имеется задача прочесть значение (число, тип: с точкой 8 байт) из стороннего запущенного приложения (имя...

Чтение памяти процесса char
var h:hwnd; s:array of char; begin h:=pbyte($B797E0)^; // поинтер на места текста в памяти Edit1.Text:= IntToStr(h); ...

4
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
31.07.2012, 16:46
Теоретически - да, практически - нет.

Но цикл твой действительно бестолковый, потому и читает медленно и всё подряд с бесполезным мусором.
Его вполне можно ускорить на порядок-другой, хоть и не до "за секунду":

1. Читай только commited-регионы
2. И не побайтно их читай, а блоками размером минимум в страницу вирт.памяти (4К)
0
 Аватар для Alex_pac
1302 / 708 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
31.07.2012, 16:49
Цитата Сообщение от kaban4ig Посмотреть сообщение
Всем привет мне нужно найти ячейку с нужным числом
ArtMoney в помощь
0
210 / 169 / 24
Регистрация: 24.04.2012
Сообщений: 615
01.08.2012, 15:10
Убери из цикла StrToInt в разы будет быстрее.
0
1728 / 1020 / 181
Регистрация: 03.06.2012
Сообщений: 1,220
02.08.2012, 13:45
Цитата Сообщение от kaban4ig Посмотреть сообщение
Всем привет мне нужно найти ячейку с нужным числом, делаю это так
Delphi
1
2
3
      ...
      Memo1.Lines.Add(inttostr(Sadr) + ' ' + inttostr(adr));
      ...
Но получается СВЕРХ медленно (миллион примерно за 10-15 секунд). Возможно ли както прочитать всю память процесса меньше чем за секунду?
Эта строка (а не чтение памяти) будет работать медленнее, чем всё остальное, если перед началом цикла не вызвать метод
Delphi
1
      Memo1.Lines.BeginUpdate;
После всех добавлений нужно вызвать метод
Delphi
1
      Memo1.Lines.EndUpdate;
чтобы добавленные строки отобразились. Кроме того, желательно всё поместить в блок обработки исключений вида
Delphi
1
2
3
4
5
6
   Memo1.Lines.BeginUpdate;
   try
      // цикл добавления строк
   finally
      Memo1.Lines.EndUpdate;
   end;
Подробнее - в справке по классу TStrings (TStringList).
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.08.2012, 13:45
Помогаю со студенческими работами здесь

Чтение памяти процесса (поиск адресов)
Доброго времени суток, уважаемые программеры. Есть функция поиска адресов в процессе:procedure TForm1.N1Click(Sender: TObject); var ...

Чтение из стороннего процесса из dll
Есть ли другие способы читать память стороннего приложения, помимо readprocessmemory, через свою DLL?

Выделено памяти для процесса
Добрый день! Потребовалось узнать ПРИМЕРНО (ибо насколько понял это темный лес) сколько выделено ОЗУ под процесс. Вернее получить весь...

Поиск сигнатуры в памяти процесса
как искать сигнатуру в памяти процесса тип такой АА 00 АА 00 00 АА (найдет куча адресов) потом в игре бросит предмет и искать дале в...

Прочесть строку из памяти процесса
Здравствуйте, уважаемые! Есть адрес в памяти. По этому адресу располагается строка в кодировке Windows, пытаюсь прочесть ее таким...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru