Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.217.84.171] |
|
Сообщ.
#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 в адресное пространство процесса. Которая будет формировать отчёт о происходящем.. и отсылать его на указанный компьютер. Хотя самое надёжное - по-байтное сравнение с запретным. Это как опознание преступника по фотографии. ----- Сотрудники могут уткнуться куда угодно. Об этом пусть стонет руководство. А техническое решение проблемы поднимет именно твой уровень знаний и навыков. Так можно сочетать приятное с полезным за счёт организации. |
Сообщ.
#16
,
|
|
|
Цитата ЫукпШ @ Много чего может натворить сисадмин. Может жестко ограничить права пользователей - только так. |
Сообщ.
#17
,
|
|
|
Цитата linuxoid @ Проблема в следующем, если пользователь догадается и переименует файл из Game.exe в Game1.exe, то мой процесс не сможет больше его идентифицировать как один из запрещенных. Поэтому я хочу найти решение, которое поможет мне отлавливать эти процессы не по имени, а по другому признаку. Я тебе предложил рабочее решение выше Поиск процесса (сообщение #3749272) Есть ещё множество решений, но этого должно быть достаточно. Цитата JoeUser @ Всех работников ознакомить с новым регламентом "Запущенные игрушки на рабочем месте = увольнение". Зря ты так. Игры, в числе прочего, служат неплохой разрядкой для ума. Что виртуальные, что реальные. Хорошие компании сами забоятся о наличии подобных развлечений в офисе для сотрудников, потому что человеку для эффективной работы время от времени нужно отвлекаться от деятельности. Совсем другое дело, если сотрудники злоупотребляют этими играми, но это уже совсем другая история и решение должно быть другим, уж точно не таким, как ты предложил. |
Сообщ.
#18
,
|
|
|
Цитата linuxoid @ В таком случае имеет смысл вспомнить об аудите в правах доступа на элементы файловой системы. Я работаю в небольшой конторе сис. админом. |
Сообщ.
#19
,
|
|
|
Цитата B.V. @ Зря ты так. Игры, в числе прочего, служат неплохой разрядкой для ума. Что виртуальные, что реальные. Реальные да, виртуальные - ни в коем случае. Человек и не работает и не отдыхает. Пустая трата времени, лучше бы просто прогулялся. |
Сообщ.
#20
,
|
|
|
Хорошая игра - это настольный теннис, а на компьютере на работе быть не должно.
|
Сообщ.
#21
,
|
|
|
Чем что-то запрещать (это можно ловить бесконечно - сегодня одна игра, завтра другая), лучше сделать список разрешенных программ.
Когда-то давно в 2000 году решал задачу: студент заходит с любого компьютера класса в свою папку, других видеть не должен, программы можно запускать только учебные. Делал домен в локальной сети. Смотрите в сторону Windows Server + Active Directory. Описанная мной задача там решается, правда настройка всех прав и ограничений - дело ТРУДОЕМКОЕ, вернее сказать очень много нужно всего предусмотреть. |
Сообщ.
#22
,
|
|
|
Всем спасибо за участие. Почерпнул несколько ваших идей. Попробую разобраться с хуками, о которых писал B.V. и с запретом на запуск определенных программ в файловой системе. Дело в том, что я хотел по-быстрому накатать небольшое приложение за 2 часа. Не хотел париться с правами на файловую систему и хуки. Никогда не пользовался хуками. Программа пока работает как нужно, сохраняя все результаты отслеживания в лог файл. Попробую её усовершенствовать с помощью ваших советов. А что касается самой идеи о запрете игр на работе: я её полностью поддерживаю. Если работник устал, то у него есть масса других возможностей снять напряжение. Игры на работе (виртуальные) недопустимы, на мой взгляд.
|
Сообщ.
#23
,
|
|
|
Цитата Олег М @ Реальные да, виртуальные - ни в коем случае Ещё как в коем. Ибо игры есть разные. То, что ты себе сразу представляешь что-то требующее умственной концентрации, не значит, что "ни в коем случае". В мире компьютерных игр полно таких, которые практически не требуют умственной деятельности и служат как раз одной цели -- быстро отвлечься без напряга. |