Process monitor как отследить приложение
В данной статье описывается, как загрузить, установить и запустить Process Monitor. Можно запустить Process Monitor устранение системных ошибок, вызванных неполадок доступа к файлам Microsoft Dynamics SL и в Microsoft Business Solutions - Соломоновы.
Дополнительные сведения
Монитор процессов отслеживает и отображает в системе в режиме реального времени активности файловой системы. Возможности Process Monitor лучше мощным средством для идентификации источника неполадок в Microsoft Dynamics SL. Отметок функция Process Monitor показано, когда выполняются следующие действия:
В столбце состояние в Process Monitor сообщает результат действия. Процесс монитор начинает наблюдение за после запуска процесса монитора. В окне вывода в Process Monitor можно сохранить в файле и отправлен в службу технической поддержки для просмотра.
Монитор процессов работает с Windows Vista, Windows Server 2003, Windows XP и Microsoft Windows 2000.
Чтобы загрузить, установить и запустить Process Monitor, выполните следующие действия.
Чтобы загрузить Process Monitor, посетите следующий веб-узел корпорации Майкрософт:
Извлеките файл ProcessMonitor.zip на компьютере, который требуется наблюдать.
Выберите файл Processmon.exe . Начинается процесс записи событий.
Примечание. Необходимо иметь права локального администратора для запуска процесса монитора.
Чтобы приостановить запись событий, нажмите кнопку запись или нажмите сочетание клавиш CTRL + E.
Чтобы удалить записи, нажмите кнопку Очистить или нажмите клавиши CTRL + X.
Запустите Microsoft Dynamics SL, а затем Microsoft Dynamics SL к точке до возникновения ошибки.
Для запуска записи событий, нажмите кнопку запись или нажмите сочетание клавиш CTRL + E.
Запустите Microsoft Dynamics SL до возникновения ошибки.
После появления ошибки перейдите в Process Monitor.
Чтобы приостановить запись событий, нажмите кнопку запись или нажмите сочетание клавиш CTRL + E.
Примечание. Результатов захвата событий можно просмотреть на экране или сохранены в файл. Этот файл можно затем направляется технической поддержки для просмотра.
Непонятные файлы на диске мы обнаруживаем двумя путями. Либо они явно видны в проводнике или файловом менеджере, либо к ним приводят поиски причины исчезновения свободного места на диске. Хорошо, если после удаления файлов, они больше не появляются. Но так бывает не всегда, и в этом случае приходится определять приложение, которое их создает.
Однажды на форум обратился человек, у которого какое-то приложение записывало в корень системного диска файлы, в имени которых содержится tmp _out.
Конечно, не исключено, что эта система заражена, и требуется тщательная проверка всевозможными антивирусными средствами. Но далеко не всегда проблема связана с вредоносным кодом, и тогда понадобится другой подход. Проще всего вычислить виновника появления таких файлов с помощью утилиты Process Monitor. Из видео за четыре минуты вы узнаете, как это сделать.
Отслеживание активности
При запуске утилита отслеживает несколько типов системной активности:
- реестр
- файловую систему
- сеть
- процессы и потоки
Поскольку мы ищем причину записи файлов на диск, нужно сосредоточиться на активности в файловой системе. Для этого на панели инструментов оставьте включенной только одну кнопку, отвечающую за активность на диске.
Кроме того, убедитесь, что утилита отслеживает активность. Если у вас перечеркнута кнопка, которая на рисунке обведена красным, нажмите CTRL+E.
На рисунке выше активность отслеживается, причем только в файловой системе.
Основной фильтр
Теперь нужно применить фильтр, чтобы исключить не относящуюся к делу активность. Нажмите сочетание клавиш CTRL+L, и вы увидите возможности фильтрации. В Process Monitor сразу активны некоторые фильтры, исключающие отслеживание деятельности самой программы, а также некоторых системных компонентов (файла подкачки, таблицы MFT и т.д.). Это сделано для того, чтобы исключить мониторинг стандартной активности системы. В большинстве случаев удалять эти фильтры не нужно, и достаточно просто добавить свой.
На рисунке выше показан фильтр, который будет отслеживать создание и изменение всех файлов, в путях к которым содержится tmp _out. Давайте разберем фильтр подробнее слева направо:
- Path. Путь в файловой системе. Также можно указывать разделы реестра, когда отслеживается активность в нем.
- contains. Условие, по которому определяется поиск ключевого слова. В переводе с английского это слово означает «содержит». В зависимости от задачи можно конкретизировать условие, выбрав вариант begins with (начинается с) или ends with (заканчивается на).
- tmp _out. Ключевое слово, которое в данном случае должно содержаться в пути. Имя файла и его расширение являются частью полного пути к файлу.
- Include. Включение заданного условия в список отслеживаемых.
Не забудьте нажать кнопку Add, чтобы добавить фильтр в список. Впрочем, если вы забудете, Process Monitor напомнит об этом, прежде чем закрыть окно фильтров.
В данном случае я использовал часть имени файла в качестве ключевого слова, поскольку все непонятные файлы содержат в имени tmp_out. Если файлы создаются с разными именами, но зато в определенной папке, используйте путь к этой папке в качестве ключевого слова.
Поскольку задано жесткое условие фильтрации файловой активности, в окне программы, скорее всего, теперь не будет отображаться никаких процессов. Но Process Monitor уже начал их отслеживать.
Проверить работу фильтра очень просто. Достаточно создать в текстовом редакторе файл с искомым именем или в наблюдаемой папке, и Process Monitor моментально отреагирует на это.
Дополнительные фильтры
Запись и открытие лога
Учтите, что при длительном отслеживании размер лога может измеряться гигабайтами. По умолчанию Process Monitor записывает лог в файл подкачки. Если у вас маленький системный раздел, имеет смысл сохранять лог в файл на другом разделе диска.
Для сохранения лога в файл нажмите сочетание клавиш CTRL+B и укажите имя и желаемое расположение файла.
Изменения вступают в силу после перезапуска захвата активности. Теперь можно смело оставить Process Monitor включенным на длительное время, не опасаясь за лимит дискового пространства.
Остановить отслеживание активности можно сочетанием клавиш CTRL+E.
Впоследствии вы всегда сможете загрузить в утилиту лог из сохраненного файла. Закройте Process Monitor и дважды щелкните файл лога с расширением PML. Содержимое лога отобразится в окне Process Explorer.
Человек, обратившийся на форум с проблемой, так и не вернулся сообщить, помог ли ему мой совет. Но он был с таким вопросом не первый и, наверняка, не последний. Если вопрос возникнет у вас, вы сможете ответить на него с помощью Process Monitor.
О видео
Если честно, создание такого видео занимает намного больше времени, чем написание статьи. Поэтому я в любом случае не готов заменять печатный текст видеоматериалами. Но мне кажется, что в данном случае видео интереснее и понятнее. А что вы думаете по этому поводу?
Видео длится около четырех минут, и я старался сделать его быстрым и емким. Ведь в реальности подготовка к поимке приложения занимает буквально одну минуту. Вас устраивает скорость изложения?
Более подробный рассказ о Process Monitor и другие примеры его практического использования вы можете посмотреть в видео моего коллеги Василия Гусева, если у вас есть свободные 40 минут :)
Вадим - владелец этого блога, и почти все записи здесь вышли из-под его пера. Подробности о блоге и авторе здесь. Поддержать автора вы можете тут.
Вас также может заинтересовать:
Подпишитесь на канал и читайте интересные записи чаще! Есть вопросы? Задайте их в чате.
комментариев 19
Вадим.
Может стоит упомянуть еще и Filemon он тоже позволит решить задачу.
sergm, не вижу смысла, т.к. Process Monitor объединяет функционал Regmon и Filemon. Эти две утилиты больше не распространяются автором.
Годится! Согласны? +4PS надо будет обновиться.
Ваша оценка: 0 Ваша оценка: 0sergm, понятно, что у каждого свой привычный набор утилит (и о моем я планирую рассказать в скором времени :) Но Process Monitor уже достаточно давно заменил две отдельные утилиты и расширил их функционал. Так что да, обновляться надо :)
Morpheus, я рад, что ты нашел мое видео полезным, ибо твое скептическое отношение к ним мне известно :) В этом и есть главное преимущество коротких видео. Статью мы часто читаем по диагонали, цепляясь глазом за якоря (заголовки, жирный шрифт, картинки, код). А видео удерживает внимание непрерывно, когда автору это удается, конечно :)
Ваша оценка: 0 Ваша оценка: +1Morpheus: Это может быть полезно, если сделано со вкусом. Тебе удаётся делать интересно. Спасибо! »
Ваша оценка: 0Morpheus: А почему нет ссылки «цитировать» для самого материала, как для комментов? »
Спасибо Вадим! Очень интересно, но я с таким не сталкивался пока.
Видео суперски, кратко и ясно, такое редкость. Но и описание с нормальным количеством скринов, даже лучше.
Спасибо за Ваш блог. Читаю с удовольствием :Beer:
А я Вадим сразу вам и написал- очень будет полезно если будут хоть коротелькие ролики!! Как писал выше- нажал на паузу и разобрался)..Да и мне как то зрительно более понятно(имхо).
Ваша оценка: 0 Ваша оценка: 0Хорошая статья и самое главное (я преподаватель информатики) с хорошими примерами.
Ваша оценка: 0Вадим понятно! но в любом случае будем надеяться хоть на редкие небольшие ролики:).
Ваша оценка: 0 Ваша оценка: 0 Ваша оценка: 0Yuri, диагностику нужно проводить в два этапа:
1. Выявление папок, в которых записываются файлы.
2. Определение приложения, записывающего их.
Для первого этапа используйте специализированные утилиты. См. номер 5 в списке 10 лучших бесплатных программ для быстрой диагностики Windows. В комментариях упоминались и другие программы этого типа.
Ваша оценка: 0Просто спасибо. Такой труд дорогого стоит.
Ваша оценка: 0Дмитрий, спасибо на добром слове.
Ваша оценка: 0Сергей Валерьевич
Ваша оценка: 0Сразу хочу сказать, что это только демонстрация возможностей procmon для определения проблемных мест в программном обеспечении. 1С83 была выбрана для опытов из-за неочевидности способа поиска точки входа в процедуру проверки наличия установленных эмуляторов ключа. Она выполняется через различное время после старта порядка 3
10 мин, и вызывает появление окна «нарушение целостности системы» с последующим закрытием приложения. Я призываю всех использовать только лицензионное программное обеспечение. Рассматривать эту статью, как описание возможности взлома, нет смысла. Хотя бы потому, что 1С83 давно взломана и без меня. Любой 1с-ник за секунду вам скажет, как ее запустить без ключа.
Если кто не в курсе procmon от sysinternals умеет ставить перехватчик на системные события работы процессов с файлами и регистром виндуза. И хотя любой процесс плодит гигантское количество обращений к файлам и регистру при старте, да и в процессе работы тоже, использование фильтров и поиска по событиям упрощает нахождение нужного. Интересной особенностью procmon является сохранение стека вызовов у каждого события. Таким образом можно проследить какие модули и в каком месте породили то или иное событие.
Итак, ставим фильтр по имени процесса 1с.
Останавливаем захват событий и начинаем просмотр с конца в поисках чего-то подозрительного. Практически сразу наталкиваемся на что-то интересное.
Щелкаем на любое событие и идем на вкладку Стек.
Все что выше горизонтальной черты очевидно уже принадлежит модулям ядра виндуза, а вот три адреса ниже представляют интерес. Какой-то из них наверняка есть адрес возврата в тело процедуры проверки. Запустим же 1с заново и приатачимся отладчиком из Visual Studio, для простоты, т.к. оно уже у нас есть под рукой.
Остановим процесс и введем искомый адрес в окно дизассемблера, например, самый первый в порядке вызовов.
Ведущие нули в таком количестве оно нам дописало, т.к. это 64-бит процесс. Вот он и вызов из которого предполагается возврат на искомый адрес. Поставим точку останова, запустим остановленный процесс, и будем ждать.
Через какое-то время точка останова действительно срабатывает. Проходим вызов одним шагом вперед по F10 и смотрим содержимое регистра AX, все знают, что вызовы функций чаще всего возвращают результат именно в нем. Видим какую-то подозрительную константу, которая совпадает с далее следующей командой сравнения CMP.
Запускаем выполнение дальше и убеждаемся, что ничего не поменялось, программа ругается как обычно и вылетает. Что ж, а что будет при отсутствии эмулятора? Запускаем 1с заново, останавливаем, переходим по нашему адресу, ставим точку останова. Все, как и раньше. Заходим в менеджер устройств виндуза и выключаем устройство эмулятора, переименовываем раздел регистра с дампами и файл драйвера в System32, так как в списке захваченных событий выше мы видели обращения к соответствующим именам. Запускаем процесс из Visual Studio и ждем.
Видим, что в данном случае возвращается другая константа, которая тоже рядом проверяется. Запускаем выполнение дальше и убеждаемся, что прога работает без проблем. Предположим, что 0xa19d это проверка пройдена нормально, а 0x91cb это нарушение целостности. Двумя строчками выше видим безусловный переход JMP и понимаем, что предыдущий перед точкой останова вызов call, это точка входа в процедуру проверки и, видимо, предыдущий вызов проверяет регистр виндуза, а вызов в точке останова - файлы, что вполне согласуется с порядком захваченных событий. Проходя отладчиком путь от точки входа до выхода из процедуры в режиме с включенным эмулятором, убеждаемся, что переход на адрес 0x10e67dfb1 приводит к аварийному завершению. Таким образом, если попробовать перескочить сразу из точки входа на адрес 0x10e67df99, то, возможно, проверка будет пройдена.
Лезть в справочники за кодами инструкций не придется, т.к., к счастью, сразу выше точки входа мы видим двухбайтовую инструкцию безусловного относительного перехода JMP. Понятно, что код инструкции это EB, а второй байт означает смещение. Т.к. все знают, что регистр адреса текущей инструкции всегда содержит адрес следующей за исполняемой в данный момент, то к адресу точки входа нам надо прибавить 2 и от этого места посчитать количество байтов до целевого адреса, так у нас получится нужное смещение (второй байт инструкции) 2E. Открываем окно дампа памяти и по адресу входа в процедуру проверки меняем два байта на нашу инструкцию.
Запускаем программу выполняться дальше. И что мы видим? Нам повезло и это работает :)
Здесь можно было бы сказать, что теоретически можно использовать функцию виндуз API WriteProcessMemory, и автоматизировать внесение изменений в оперативную память процесса после его старта, но исследования в этом направлении я не продолжал, так как не было такой цели.
Многих интересует вопрос «Как узнать, что делает программа при установке, запуске, закрытии, работе? Как следить за программой?» Ответ: с помощью другой программы, которая называется Process Monitor.
Process Monitor – программа для Windows, которая в режиме реального времени показывает куда записываются или откуда удаляются файлы, какие файлы читаются той или иной программой, какие действия программа делает с реестром, как и когда отслеживаемая программа использует сеть (интернет), а также следит за процессами и потоками. Программа оснащена мощным фильтром для отслеживания нужных процессов или событий. Process Monitor является главным инструментом для устранения неисправностей системы и избавления от вредоносных программ (вирусов).
А теперь рассмотрим подробнее как работать с программой, и разберем ее ключевые функции. Для более подробного ознакомления с программой смотри колонку «видео» справа, так как для полного описание программы потребуется написать книгу ).
Так выглядит главное окно программы при запуске Process Monitor. Сразу после запуска начинается запись процессов Windows это обращение и создание файлов, обращение к реестру, сети и т.д.
Разумеется, сразу записывается очень большое количество информации, и найти в ней нужное не очень легко, но здесь на помощь к нам прейдут фильтры, но о них чуть позже сначала разберемся с интерфейсом программы.
На основной панели программы :
Размещены ее основные функции. Самая правая группа значков
Это значки предварительной (грубой) фильтрации. Слева направо: показывать обращения к реестру, к файловой системе, к сети (интернету), показывать процессы и потоки, профилирование для каждого процесса. Соответственно если выбрать одну иконку, например, обращение к реестру, то и будет показываться только обращение к реестру, если две, то две и т.д. Замечу что даже если вы какие то иконки не выбираете, то запись ее все равно продолжается и если вы ее включите, то будут показаны события до ее включения.
Следующие два пункта это поиск и переход:
Соответственно если нажать поиск то высветится окно где надо будет ввести фразу или параметры, а если нажать переход то откроется проводник, если вы смотрите допустим что за файл создается или редактор реестра, если смотреть какие параметры реестра меняются или читаются.
Следующая группа меню фильтры
Первый пункт это непосредственно сам фильтр при нажатии откроется окно где надо будет выбрать параметры фильтрации.
Второй пункт это выделение определенных строчек, т.е. тоже фильтр, но нужные данные он просто выделяет.
Третий пункт «прицел» он нужен для быстрого добавления процесса, если вы не знаете, как он называется. Например, открылось какое-то окно, но вы не знаете что это за окно, нажимаете на прицел и держите его, перетаскивая на появившееся окно, автоматически создастся фильтр, который будет следить за этим процессом.
Следующая группа меню отвечает за отображение событий в главном окне
Увеличительное стекло это остановка и запуск слежения. Список со стрелочкой это автоматическая прокрутка, когда появляется новая запись. А список с ластиком это очистка списка событий, которые отображаются на кране.
Последние два меню, думаю сильно объяснять не надо это сохранение или загрузка прослеженных процессов
Сохранить можно, например, если хотите разобрать данные на другом компьютере.
А теперь разберем работу программы на примере. Допустим, мы хотим узнать, что делает какое-то приложение у нас в компьютере. Пусть это приложение у нас будет блокнот. В процессах мы заранее знаем, что он называется как notepad.exe. Запускаем Process Monitor, нажимаем кнопку «Filter» (Ctrl+L) и видим следующее окно:
По умолчанию в нем уже включены несколько фильтров, которые исключают из списка разного рода системные процессы, процессы самой программы Process Monitor и другие, которые обычно не нужны для анализа.
Читайте также: