|
2 / 2 / 0
Регистрация: 31.10.2013
Сообщений: 17
|
||||||
Оперативная память и WinAPI (поиск строки в памяти процесса)22.04.2015, 09:53. Показов 15750. Ответов 37
Метки нет (Все метки)
Здравстуйте.
Работаю с оперативной памятью и WinApi. Пытаюсь найти строчку в памяти запущенного процесса. Естественно не получается. Код скинул ниже.
1
|
||||||
| 22.04.2015, 09:53 | |
|
Ответы с готовыми решениями:
37
Поиск Строки в памяти процесса Поиск строки в памяти другого процесса Поиск строки в памяти запущенного процесса и её изменение |
|
Ушел с форума
|
|||
| 29.01.2016, 14:04 | |||
![]()
0
|
|||
|
-1 / 8 / 6
Регистрация: 31.10.2015
Сообщений: 151
|
||||||
| 29.01.2016, 19:05 | ||||||
|
Убежденный, просто без слипа, он за секунду жрал всю оперативку)) А ищу я правильно?
Добавлено через 4 часа 14 минут Убежденный,
0
|
||||||
|
Ушел с форума
|
|
| 30.01.2016, 07:04 | |
|
Убери работу с регионами, они для поиска в памяти не нужны и только запутывают код.
У тебя есть адресное пространство диапазоном примерно 0-0x7FFFFFFF, поделенное на страницы размером в 4К, отсюда и нужно "плясать": берешь по порядку каждую страницу, смотришь ее атрибуты (VirtualQueryEx), если подходит - выполняешь в ней поиск, потом переходишь к следующей странице. Все. Дополнительно можно учесть ситуацию, когда искомая строка попадает на границу двух страниц, но это детали. P.S. В любом случае такой поиск не будет быстрым, а в 64-битных процессах может вообще занимать часы.
0
|
|
|
232 / 135 / 19
Регистрация: 10.11.2015
Сообщений: 305
|
||||||||
| 30.01.2016, 10:44 | ||||||||
0
|
||||||||
|
Ушел с форума
|
|
| 30.01.2016, 15:31 | |
|
0
|
|
|
232 / 135 / 19
Регистрация: 10.11.2015
Сообщений: 305
|
|||||||||||||||
| 30.01.2016, 19:35 | |||||||||||||||
|
Убежденный, хмм, я видимо чтото не догоняю, смотрите вот набросал код:
Вот описание MBI из MSDN: MEMORY_BASIC_INFORMATION. Цитаты:
Вот более наглядный пример:
1
|
|||||||||||||||
|
Ушел с форума
|
||
| 30.01.2016, 20:16 | ||
|
jupman, да, ты совершенно прав!
А у меня, оказывается, серьезный пробел в понимании регионов виртуальной памяти: я-то думал, что они описывают блок, выделенный ранее с помощью VirtualAlloc(Ex), но атрибуты страниц внутри блока при этом якобы могут различаться, обычно в результате VirtualProtect(Ex) или page fault на guard page. Был не прав, снимаю шляпу. ![]() Подтверждение из MSDN: VirtualQuery function https://msdn.microsoft.com/en-... s.85).aspx
0
|
||
|
232 / 135 / 19
Регистрация: 10.11.2015
Сообщений: 305
|
||
| 30.01.2016, 21:19 | ||
|
Убежденный, я как вот это увидел:
Т.к. сам не так давно делал ту же задачу что и ТС и у меня сканер за несколько минут успевал закончить на X64 ОС (сканил все процессы).DaVillka, дам вам такие советы: 1) Не нужно в цикле каждый раз выделять освобождать и память. Выделите память перед циклом, чем больше тем меньше ReadProcessMemory вызывать придется а след-но выиграйте по скорости. Если MBI.RegionSize больше чем ваш буфер читаете один кусок, затем следующий. Ну вы поняли. 2) Проверка атрибутов. Да конечно например если встретите PAGE_NOACCESS ничего страшного, ReadProcessMemory просто сфэйлит, но зачем её вызывать если можно отсеить проверкой флагов. PAGE_GUARD думаю тоже стоит проверять, иначе вы получается сбрасывать будете данный флаг в чужом процессе, что не есть хорошо. Ну и то что MBI.State == MEM_COMMIT должно быть это понятно. 3) Ну и если не хотите проц грузить слип все таки нужен. Только не нужно его при каждой интеграции цикла вызывать. Я например делал Sleep(1) через каждые 30 просканеных страниц страниц. Ну или приоритет процессу вашему меняйте. PS: Ну и добавлю, может пригодится. Если вдруг потребуется сканить X64 процессы из X32 процесса, то для этого есть функции NtWow64QueryVirtualMemory64/NtWow64ReadVirtualMemory64. Они работают от XP до 8, выше не проверял.
2
|
||
| 30.01.2016, 21:27 | |
|
0
|
|
| 30.01.2016, 21:41 | |
|
0
|
|
|
232 / 135 / 19
Регистрация: 10.11.2015
Сообщений: 305
|
||
| 11.02.2016, 17:16 | ||
Приходится Heaven's Gate использовать.
0
|
||
|
Ушел с форума
|
|
| 11.02.2016, 18:39 | |
|
Про Heaven's Gate можно забыть из-за Control Flow Guard.
1
|
|
|
232 / 135 / 19
Регистрация: 10.11.2015
Сообщений: 305
|
|
| 12.02.2016, 00:42 | |
|
Убежденный, Спасибо. Вообще тестил уже на Win 10 все работает. Скачал доку по CFG, буду разбираться что за зверь.
Добавлено через 2 часа 47 минут Убежденный. Ну у меня норм работает т.к. я без опции /guard:cf компилирую, у меня данный механизм отключен. Да и если уж нужен этот CFG можно ведь отдельно Heaven's Gate откомпилировать (без /guard:cf). Или я что-то не догоняю? Добавлено через 6 минут Т.е. получается для той части кода которая компилируется без CFG, компилятор ненавтыкает LdrpValidateUserCallTarget'тов. Верно? Ведь именно данная функция как я понял возбуждает исключения если адрес не описан в cfg bitmap.
0
|
|
|
Ушел с форума
|
||
| 12.02.2016, 08:37 | ||
|
где включен CFG.
0
|
||
|
232 / 135 / 19
Регистрация: 10.11.2015
Сообщений: 305
|
|
| 12.02.2016, 13:50 | |
|
Убежденный, а, понял. Т.е. получается если я сделаю инжект в процесс с включенным CFG я не смогу использовать Heaven's Gate. Но ведь в моем внедренном коде не будет проверок (LdrpValidateUserCallTarget), почему должны быть проблемы? И не подскажете есть ли в Windows 10 какой-нибудь процесс с включенным CFG (но выключенным "Disable Dynamic Code"). Хочу потестить, а то у меня старая студия (нет поддержки /guard:cf) и я не могу подходящий exe собрать.
0
|
|
|
Ушел с форума
|
|||
| 12.02.2016, 13:54 | |||
|
А вот Disable Dynamic Code включен только для services.exe, csrss.exe и smss.exe, если не ошибаюсь. Да это все легко самому сварганить, см. функции Get/SetProcessMitigationPolicy, UpdateProcThreadAttribute и т.п. Все нужные структуры есть в последних версиях WDK/SDK. -------- Если будут какие-нибудь любопытные результаты скрещивания CFG с Heaven's Gate - напиши, пожалуйста, а то я эту тему особо не ковырял еще, так, знаю понаслышке...
1
|
|||
|
232 / 135 / 19
Регистрация: 10.11.2015
Сообщений: 305
|
|
| 12.02.2016, 20:41 | |
|
0
|
|
|
232 / 135 / 19
Регистрация: 10.11.2015
Сообщений: 305
|
|
| 14.02.2016, 03:09 | |
|
Убежденный, native-api в Heaven's Gate по прежнему можно вызывать. Тестил в контексте cmd.exe (у него в DLL characteristics установлен IMAGE_DLLCHARACTERISTICS_GUARD_CF (0x4000) а значит есть CFG). Нельзя юзать APC, исключения, грузить либы. Что особо и нужно на мой взгляд, nt вполне должно хватать. Ну если уж нужно либу там прогрузить, то может стоит попробовать LoadConfig->GuardCFCheckFunctionPointer перехватить у ntdll (туда система адрес LdrpValidateUserCallTarget кладет). Не знаю поможет или нет, не стал пробовать.
Неплохая статья : “Closing Heaven’s Gate”
2
|
|
| 14.02.2016, 03:09 | |
|
Виртуальная память процесса, функции WinAPI Совместимость оперативной памяти - Оперативная память После замены оперативной памяти компьютер перезагружается / Оперативная память Оперативная память для RYZEN, тест памяти DDR4. Одноканальность/двухканальность Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла:
Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
|
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет
Новости компьютерного мира и их обсуждение (4)
Салют, шампанское, овации!
:drink:
|
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр.
Дословно, отклонённая. . .
|
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы
Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
|
|
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
|
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2.
Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
|
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
|
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
|