На главную Наши проекты:
Журнал   ·   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.
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> Поиск процесса
    Доброго времени суток. Существует необходимость отслеживать запуск определенного процесса. Программа, которая отслеживает запуск конкретного процесса написана и работает корректно. Возникает небольшая проблема. Если переименовать отслеживаемый файл процесса, то запустится процесс с другим именем и программа его не идентифицирует по имени и пропустит. Вопрос в следующем: я понимаю, что скорее всего решения этого вопроса нет, но возможно ли находить процесс не только по его имени? Каждый раз при запуске процесса ему задается разный 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 в адресное пространство процесса.
                                Которая будет формировать отчёт о происходящем.. и отсылать его на указанный
                                компьютер.
                                Хотя самое надёжное - по-байтное сравнение с запретным.
                                Это как опознание преступника по фотографии.
                                -----
                                Сотрудники могут уткнуться куда угодно. Об этом пусть стонет руководство.
                                А техническое решение проблемы поднимет именно твой уровень знаний
                                и навыков. Так можно сочетать приятное с полезным за счёт организации.
                                Сообщение отредактировано: ЫукпШ -
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0434 ]   [ 17 queries used ]   [ Generated: 18.04.24, 11:46 GMT ]