На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются.
4. Используйте теги [ code=cpp ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Старайтесь формулировать свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной и более давности без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта (C++) user posted image FAQ Форума user posted image Наши Исходники user posted image Поиск по Разделу user posted image MSDN Library Online (Windows Driver Kit) user posted image Google

Ваше мнение о модераторах: user posted image B.V.
Модераторы: B.V.
  
> Поиск процесса
    Доброго времени суток. Существует необходимость отслеживать запуск определенного процесса. Программа, которая отслеживает запуск конкретного процесса написана и работает корректно. Возникает небольшая проблема. Если переименовать отслеживаемый файл процесса, то запустится процесс с другим именем и программа его не идентифицирует по имени и пропустит. Вопрос в следующем: я понимаю, что скорее всего решения этого вопроса нет, но возможно ли находить процесс не только по его имени? Каждый раз при запуске процесса ему задается разный ProcessID и поэтому по ProcessID идентифицировать процесс тоже не удастся. Есть у кого какие-нибудь идеи?
      Если процесс - не ваша программа, то нельзя её переименовывать, и всё будет в порядке.

      Если же это ваша программа, переименовывайте её, но, используйте какой нибудь IpC механизм, и будет счастье.
      Сообщение отредактировано: VisualProg -
        Может по ресурсам узнать. Если система создает мьютекс, можно это понять. Можно у исполняемого файла просмотреть ресурсы, но это уже как-то чем дальше в лес...
          Цитата VisualProg @

          этот процесс, не моя программа. К примеру exe файл процесса обычно имеет имя Program.exe и если его запустить, то запустится процесс Program.exe. Моя программа найдет его по имени и сделает то, что нужно, но если, к примеру, переименовать этот файл в Program1.exe, то запустится уже процесс Program1.exe и тогда его идентифицировать не удастся.
            Цитата linuxoid @
            этот процесс, не моя программа

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

            Хотя, это решение, не смотря на то что предложил его я, мне самому не нравится :D
              Цитата linuxoid @
              Доброго времени суток. Существует необходимость отслеживать запуск определенного процесса. Программа, которая отслеживает запуск конкретного процесса написана и работает корректно. Возникает небольшая проблема. Если переименовать отслеживаемый файл процесса, то запустится процесс с другим именем и программа его не идентифицирует по имени и пропустит. Вопрос в следующем: я понимаю, что скорее всего решения этого вопроса нет, но возможно ли находить процесс не только по его имени? Каждый раз при запуске процесса ему задается разный ProcessID и поэтому по ProcessID идентифицировать процесс тоже не удастся. Есть у кого какие-нибудь идеи?

              Привязка какая нибудь есть? Заголовок окна может быть? Или что то конкретное, которое идентифицирует эту программу? Сделать легко. Только нужно в первую очередь понять как идентифицировать наш процесс. Любая инфа поможет. А дальше все просто - сканируй процессы все которые запущены и ищи то, что нужно.
              Сообщение отредактировано: KILLER -
                Цитата linuxoid @
                Вопрос в следующем: я понимаю, что скорее всего решения этого вопроса нет, но возможно ли находить процесс не только по его имени? Каждый раз при запуске процесса ему задается разный ProcessID и поэтому по ProcessID идентифицировать процесс тоже не удастся. Есть у кого какие-нибудь идеи?

                Возможно. Вообще по любой информации. Начиная заголовком окна и заканчивая его классом.
                По поводу идей - напиши по какой информации нужно ловить процесс и я дам тебе идею, вернее решение. В основном все можно подчерпнуть у того же Рихтера.
                Сообщение отредактировано: KILLER -
                  Цитата linuxoid @
                  Есть у кого какие-нибудь идеи?

                  Системный хук, идентификация по заголовку окна. SetWindowsHookEx
                    Цитата linuxoid @
                    Есть у кого какие-нибудь идеи?

                    Надо искать по какому-либо признаку.
                    Тебе лучше знать, по какому.
                    Например, можно сделать так:
                    1. Копируем и прячем у себя где-то исполнимый файл.
                    2. Перечисляем процессы, получаем имена файлов.
                    3. Сравниваем размер каждого файла с размером спасённого образца.
                    4. Если размер совпал, сравниваем по-байтно.
                      Хорошо, я постараюсь Вам пояснить всю суть задачи. Я работаю в небольшой конторе сис. админом. В этой конторе работники довольно часто запускают сторонние развлекательные программы, допустим игры. Начальство попросило в этом разобраться. Я написал небольшое приложение, которое время от времени сканирует запущенные процессы и уничтожает те, которые находятся в списке запрещенных. Пока все работает довольно хорошо, но есть уязвимость в том, что если переименовать файл *.exe какого-то из этих запрещенных приложений, то моему приложению уже не удастся идентифицировать этот процесс. Пример, есть игра Game.exe и она находится в списке запрещенных. Мой процесс просыпается, находит процесс игры Game.exe, закрывает его и снова засыпает. И так он проверяет раз в 5 минут. Проблема в следующем, если пользователь догадается и переименует файл из Game.exe в Game1.exe, то мой процесс не сможет больше его идентифицировать как один из запрещенных. Поэтому я хочу найти решение, которое поможет мне отлавливать эти процессы не по имени, а по другому признаку.
                        Цитата linuxoid @
                        Начальство попросило в этом разобраться.

                        Всех работников ознакомить с новым регламентом "Запущенные игрушки на рабочем месте = увольнение". И это должно инициировать руководство самостоятельно. А "отлавливать" бездельников нужно не по названиям программ, а по "стоп-словам" (регэкспам) из путей запуска. Типа ".+game.*", то же самое искать в заголовках окон. Скриншот снять. Но не в коем случае никому ничего не закрывать. Список на стол руководству, что когда и кем запускалось. Пускай устраивают публичные казни сами. Да, и желательно с коллективом объясниться заранее, предупредить о выполняемых тобой обязанностях. Чтобы не ныли потом.
                          Цитата JoeUser @
                          Цитата linuxoid @
                          Начальство попросило в этом разобраться.

                          Всех работников ознакомить с новым регламентом "Запущенные игрушки на рабочем месте = увольнение". И это должно инициировать руководство самостоятельно. А "отлавливать" бездельников нужно не по названиям программ, а по "стоп-словам" (регэкспам) из путей запуска. Типа ".+game.*", то же самое искать в заголовках окон. Скриншот снять. Но не в коем случае никому ничего не закрывать. Список на стол руководству, что когда и кем запускалось. Пускай устраивают публичные казни сами. Да, и желательно с коллективом объясниться заранее, предупредить о выполняемых тобой обязанностях. Чтобы не ныли потом.

                          Я так и делаю. Существует лог-файл, в который и записывается вся информация о том: кто, когда и что запускал. Для того, чтобы предоставить это руководству, необходимо собрать сначала данные, чем я сейчас и занимаюсь
                            Хорошо, игры будут побеждены, сотрудники уткнуться в телефоны.
                              Цитата ter_nk_ @
                              в телефоны.
                              ... + в форумы, соц.сети, ютубы, lent'ы.ru, etc ...
                                Цитата linuxoid @
                                Поэтому я хочу найти решение, которое поможет мне отлавливать эти процессы не по имени, а по другому признаку.

                                Много чего может натворить сисадмин.
                                Можно отредактировать импорт каждому запрещённому исполнимому файлу, в результате
                                чего будет загружаться твоя dll в адресное пространство процесса.
                                Которая будет формировать отчёт о происходящем.. и отсылать его на указанный
                                компьютер.
                                Хотя самое надёжное - по-байтное сравнение с запретным.
                                Это как опознание преступника по фотографии.
                                -----
                                Сотрудники могут уткнуться куда угодно. Об этом пусть стонет руководство.
                                А техническое решение проблемы поднимет именно твой уровень знаний
                                и навыков. Так можно сочетать приятное с полезным за счёт организации.
                                Сообщение отредактировано: ЫукпШ -
                                  Цитата ЫукпШ @
                                  Много чего может натворить сисадмин.


                                  Может жестко ограничить права пользователей - только так.
                                  Сообщение отредактировано: ter_nk_ -
                                    Цитата linuxoid @
                                    Проблема в следующем, если пользователь догадается и переименует файл из Game.exe в Game1.exe, то мой процесс не сможет больше его идентифицировать как один из запрещенных. Поэтому я хочу найти решение, которое поможет мне отлавливать эти процессы не по имени, а по другому признаку.

                                    Я тебе предложил рабочее решение выше Поиск процесса (сообщение #3749272)
                                    Есть ещё множество решений, но этого должно быть достаточно.

                                    Цитата JoeUser @
                                    Всех работников ознакомить с новым регламентом "Запущенные игрушки на рабочем месте = увольнение".

                                    Зря ты так. Игры, в числе прочего, служат неплохой разрядкой для ума. Что виртуальные, что реальные. Хорошие компании сами забоятся о наличии подобных развлечений в офисе для сотрудников, потому что человеку для эффективной работы время от времени нужно отвлекаться от деятельности. Совсем другое дело, если сотрудники злоупотребляют этими играми, но это уже совсем другая история и решение должно быть другим, уж точно не таким, как ты предложил.
                                      Цитата linuxoid @
                                      Я работаю в небольшой конторе сис. админом.
                                      В таком случае имеет смысл вспомнить об аудите в правах доступа на элементы файловой системы.
                                        Цитата B.V. @
                                        Зря ты так. Игры, в числе прочего, служат неплохой разрядкой для ума. Что виртуальные, что реальные.

                                        Реальные да, виртуальные - ни в коем случае. Человек и не работает и не отдыхает. Пустая трата времени, лучше бы просто прогулялся.
                                          Хорошая игра - это настольный теннис, а на компьютере на работе быть не должно.
                                            Чем что-то запрещать (это можно ловить бесконечно - сегодня одна игра, завтра другая), лучше сделать список разрешенных программ.
                                            Когда-то давно в 2000 году решал задачу: студент заходит с любого компьютера класса в свою папку, других видеть не должен, программы можно запускать только учебные. Делал домен в локальной сети.

                                            Смотрите в сторону Windows Server + Active Directory.

                                            Описанная мной задача там решается, правда настройка всех прав и ограничений - дело ТРУДОЕМКОЕ, вернее сказать очень много нужно всего предусмотреть.
                                            Сообщение отредактировано: Mr.Brooks -
                                              Всем спасибо за участие. Почерпнул несколько ваших идей. Попробую разобраться с хуками, о которых писал B.V. и с запретом на запуск определенных программ в файловой системе. Дело в том, что я хотел по-быстрому накатать небольшое приложение за 2 часа. Не хотел париться с правами на файловую систему и хуки. Никогда не пользовался хуками. Программа пока работает как нужно, сохраняя все результаты отслеживания в лог файл. Попробую её усовершенствовать с помощью ваших советов. А что касается самой идеи о запрете игр на работе: я её полностью поддерживаю. Если работник устал, то у него есть масса других возможностей снять напряжение. Игры на работе (виртуальные) недопустимы, на мой взгляд.
                                              Сообщение отредактировано: linuxoid -
                                                Цитата Олег М @
                                                Реальные да, виртуальные - ни в коем случае

                                                Ещё как в коем. Ибо игры есть разные. То, что ты себе сразу представляешь что-то требующее умственной концентрации, не значит, что "ни в коем случае". В мире компьютерных игр полно таких, которые практически не требуют умственной деятельности и служат как раз одной цели -- быстро отвлечься без напряга.
                                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                                0 пользователей:


                                                Рейтинг@Mail.ru
                                                [ Script execution time: 0,0516 ]   [ 17 queries used ]   [ Generated: 28.03.24, 20:04 GMT ]