Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.117.183.150] |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Доброго времени суток. Существует необходимость отслеживать запуск определенного процесса. Программа, которая отслеживает запуск конкретного процесса написана и работает корректно. Возникает небольшая проблема. Если переименовать отслеживаемый файл процесса, то запустится процесс с другим именем и программа его не идентифицирует по имени и пропустит. Вопрос в следующем: я понимаю, что скорее всего решения этого вопроса нет, но возможно ли находить процесс не только по его имени? Каждый раз при запуске процесса ему задается разный ProcessID и поэтому по ProcessID идентифицировать процесс тоже не удастся. Есть у кого какие-нибудь идеи?
|
Сообщ.
#2
,
|
|
|
Если процесс - не ваша программа, то нельзя её переименовывать, и всё будет в порядке.
Если же это ваша программа, переименовывайте её, но, используйте какой нибудь IpC механизм, и будет счастье. |
Сообщ.
#3
,
|
|
|
Может по ресурсам узнать. Если система создает мьютекс, можно это понять. Можно у исполняемого файла просмотреть ресурсы, но это уже как-то чем дальше в лес...
|
Сообщ.
#4
,
|
|
|
Цитата VisualProg @ этот процесс, не моя программа. К примеру exe файл процесса обычно имеет имя Program.exe и если его запустить, то запустится процесс Program.exe. Моя программа найдет его по имени и сделает то, что нужно, но если, к примеру, переименовать этот файл в Program1.exe, то запустится уже процесс Program1.exe и тогда его идентифицировать не удастся. |
Сообщ.
#5
,
|
|
|
Цитата linuxoid @ этот процесс, не моя программа Тогда не понятно, зачем себя запутывать и переименовывать файл... Если без этого не обойтись, то нужно пробегаться по всем процессам, можете даже обратиться к пути, где эти процессы расположены и посчитать хеши ELF файлов. Найдёте нужный вам хеш - значит это ваш искомый процесс. Хотя, это решение, не смотря на то что предложил его я, мне самому не нравится |
Сообщ.
#6
,
|
|
|
Цитата linuxoid @ Доброго времени суток. Существует необходимость отслеживать запуск определенного процесса. Программа, которая отслеживает запуск конкретного процесса написана и работает корректно. Возникает небольшая проблема. Если переименовать отслеживаемый файл процесса, то запустится процесс с другим именем и программа его не идентифицирует по имени и пропустит. Вопрос в следующем: я понимаю, что скорее всего решения этого вопроса нет, но возможно ли находить процесс не только по его имени? Каждый раз при запуске процесса ему задается разный ProcessID и поэтому по ProcessID идентифицировать процесс тоже не удастся. Есть у кого какие-нибудь идеи? Привязка какая нибудь есть? Заголовок окна может быть? Или что то конкретное, которое идентифицирует эту программу? Сделать легко. Только нужно в первую очередь понять как идентифицировать наш процесс. Любая инфа поможет. А дальше все просто - сканируй процессы все которые запущены и ищи то, что нужно. |
Сообщ.
#7
,
|
|
|
Цитата linuxoid @ Вопрос в следующем: я понимаю, что скорее всего решения этого вопроса нет, но возможно ли находить процесс не только по его имени? Каждый раз при запуске процесса ему задается разный ProcessID и поэтому по ProcessID идентифицировать процесс тоже не удастся. Есть у кого какие-нибудь идеи? Возможно. Вообще по любой информации. Начиная заголовком окна и заканчивая его классом. По поводу идей - напиши по какой информации нужно ловить процесс и я дам тебе идею, вернее решение. В основном все можно подчерпнуть у того же Рихтера. |
Сообщ.
#8
,
|
|
|
Цитата linuxoid @ Есть у кого какие-нибудь идеи? Системный хук, идентификация по заголовку окна. SetWindowsHookEx |
Сообщ.
#9
,
|
|
|
Цитата linuxoid @ Есть у кого какие-нибудь идеи? Надо искать по какому-либо признаку. Тебе лучше знать, по какому. Например, можно сделать так: 1. Копируем и прячем у себя где-то исполнимый файл. 2. Перечисляем процессы, получаем имена файлов. 3. Сравниваем размер каждого файла с размером спасённого образца. 4. Если размер совпал, сравниваем по-байтно. |
Сообщ.
#10
,
|
|
|
Хорошо, я постараюсь Вам пояснить всю суть задачи. Я работаю в небольшой конторе сис. админом. В этой конторе работники довольно часто запускают сторонние развлекательные программы, допустим игры. Начальство попросило в этом разобраться. Я написал небольшое приложение, которое время от времени сканирует запущенные процессы и уничтожает те, которые находятся в списке запрещенных. Пока все работает довольно хорошо, но есть уязвимость в том, что если переименовать файл *.exe какого-то из этих запрещенных приложений, то моему приложению уже не удастся идентифицировать этот процесс. Пример, есть игра Game.exe и она находится в списке запрещенных. Мой процесс просыпается, находит процесс игры Game.exe, закрывает его и снова засыпает. И так он проверяет раз в 5 минут. Проблема в следующем, если пользователь догадается и переименует файл из Game.exe в Game1.exe, то мой процесс не сможет больше его идентифицировать как один из запрещенных. Поэтому я хочу найти решение, которое поможет мне отлавливать эти процессы не по имени, а по другому признаку.
|
Сообщ.
#11
,
|
|
|
Цитата linuxoid @ Начальство попросило в этом разобраться. Всех работников ознакомить с новым регламентом "Запущенные игрушки на рабочем месте = увольнение". И это должно инициировать руководство самостоятельно. А "отлавливать" бездельников нужно не по названиям программ, а по "стоп-словам" (регэкспам) из путей запуска. Типа ".+game.*", то же самое искать в заголовках окон. Скриншот снять. Но не в коем случае никому ничего не закрывать. Список на стол руководству, что когда и кем запускалось. Пускай устраивают публичные казни сами. Да, и желательно с коллективом объясниться заранее, предупредить о выполняемых тобой обязанностях. Чтобы не ныли потом. |
Сообщ.
#12
,
|
|
|
Цитата JoeUser @ Цитата linuxoid @ Начальство попросило в этом разобраться. Всех работников ознакомить с новым регламентом "Запущенные игрушки на рабочем месте = увольнение". И это должно инициировать руководство самостоятельно. А "отлавливать" бездельников нужно не по названиям программ, а по "стоп-словам" (регэкспам) из путей запуска. Типа ".+game.*", то же самое искать в заголовках окон. Скриншот снять. Но не в коем случае никому ничего не закрывать. Список на стол руководству, что когда и кем запускалось. Пускай устраивают публичные казни сами. Да, и желательно с коллективом объясниться заранее, предупредить о выполняемых тобой обязанностях. Чтобы не ныли потом. Я так и делаю. Существует лог-файл, в который и записывается вся информация о том: кто, когда и что запускал. Для того, чтобы предоставить это руководству, необходимо собрать сначала данные, чем я сейчас и занимаюсь |
Сообщ.
#13
,
|
|
|
Хорошо, игры будут побеждены, сотрудники уткнуться в телефоны.
|
Сообщ.
#14
,
|
|
|
Цитата ter_nk_ @ ... + в форумы, соц.сети, ютубы, lent'ы.ru, etc ... в телефоны. |
Сообщ.
#15
,
|
|
|
Цитата linuxoid @ Поэтому я хочу найти решение, которое поможет мне отлавливать эти процессы не по имени, а по другому признаку. Много чего может натворить сисадмин. Можно отредактировать импорт каждому запрещённому исполнимому файлу, в результате чего будет загружаться твоя dll в адресное пространство процесса. Которая будет формировать отчёт о происходящем.. и отсылать его на указанный компьютер. Хотя самое надёжное - по-байтное сравнение с запретным. Это как опознание преступника по фотографии. ----- Сотрудники могут уткнуться куда угодно. Об этом пусть стонет руководство. А техническое решение проблемы поднимет именно твой уровень знаний и навыков. Так можно сочетать приятное с полезным за счёт организации. |