На главную Наши проекты:
Журнал   ·   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.
  
> Process Explorer от Sources.ru
    Скриншоты Process Explorer от Sources.ru
    user posted image
    user posted image
    user posted image
    user posted image
    user posted image
    user posted image
    user posted image
    user posted image
    user posted image
    user posted image


    Итак, в проект ищутся желающие поковыряться в недрах win, и создать проект, позволяющий изучать процессы от А до Я.

    Цель проекта
    - Отобразить максимально возможную информацию о процессах и потоках:
    -- Структура процесса: Потоки, модули, объекты ядра, объекты GUI, принадлежащие ему;
    -- Потребление памяти, CPU и прочих ресурсов;
    -- Управление процессом: запуск, остановка, управление потоками, модулями, объектами ядра и GUI.

    Структура
    Проект состоит из трех составляющих:
    - GUI-приложение, с которым работает пользователь;
    - Прослойка между GUI-приложением и драйвером ядра: библиотека DLL, имеющая абстрактный от ядра интерфейс, с которым работает GUI-приложение;
    - Драйвер ядра, собирающий и управляющий объектами, недоступными из режима USER (3 кольцо).

    GUI-приложение
    Его проект непосредственно представлен на скриншотах выше (т.е. на скриншотах только проект, который в конечном варианте скорее всего будет сильно отличаться от представленного).
    - Главное окно отображает совокупную информацию по процессам и ресурсам системы;
    - Диалоговое окно процесса содержит в себе несколько категорий:
    -# Системная информация:
    -- Совокупные данные по процессу (время запуска, потребление физической и виртуальной памяти, данные исполняемого модуля и т.д.);
    -- Модули, загруженные процессом;
    -- Потоки;
    -- Привилегии;
    -- Использование сети;
    -- Службы, содержащиеся в процессе;
    -- Прочие данные.
    -# Объекты ядра:
    -- Полный список объектов ядра, принадлежащих процессу;
    -- Объекты реестра (ключи);
    -- Объекты ФС (файлы, директории);
    -- Объекты синхронизации;
    -- Прочие объекты.
    -# Объекты GUI:
    -- Окна;
    -- Таймеры;
    -- Контекстные устройства, кисти, шрифты и т.п.
    -- Хуки;
    -- Прочие данные (полный список приведен в структурах ядра).

    !!! Примечание: в GUI-приложении НЕ используются ресурсы типа RT_DIALOG. Все диалоги создаются посредством класса CDialog (на базе DialogBoxIndirectParam), весь текст на которых берется уже из ресурсов.

    Библиотека абстракции от ядра
    Содержит интерфейс обмена данными между GUI-приложением и ядром. Т.е. предоставляет API для извлечения и изменения данных объектов ядра и GUI. Т.е. системное API будет все тут, все данные по системе, процессам, потокам, объектам ядра и GUI будет предоставлять именно эта библиотека, GUI-приложение будет использовать системное API лишь для отображения собственного оконного интерфейса.

    Драйвер режима ядра
    Содержит в себе API для работы с ядром: извлечение и управление данными ядра. Изначально общение с DLL планировалось сделать через SSDT, но не срослось, и поэтому используются CTL-коды.

    Текущее положение проекта
    Находится в стадии "набросков". Т.е. общая картина представленного предложения прослеживается, но весьма и весьма размыта.
    Если найдутся желающие, то подниму SVN и даю исходники (далекие, кстати, от идеала) и их описание.

    Добавление идей и/или поправка имеющихся приветствуются. Т.е. это мое предложение заключается в наборе команды, готовой заняться таким довольно весомым, но бесплатным и открытым проектом, который в теории переплюнет PE от Руссиновича. :) Достаточно иметь желание и уметь разбираться во всяких "системных штучках". Соответственно, все комментарии приветствуются.

    Пока все. :)
      скриншоты есть, а прога хде ???
        ALXR, судя по скриншотам, непростая и трудоемкая работа.
        (Весьма полезный инструмент. Особенно, когда есть код и в любую секунду можешь добавить любой функционал)
        Мне понравилась. Молодец ! :)
          А где сама программа то? :wacko:
            Исходники жесточайшим образом грохнул (вместе с бинарниками). По оставшимся кускам допилил заново с совместимостью под Win7 и... терпение кончилось. :) Выложил скриншоты, еще планировал добавить описание и предложение совместно заняться проектом, но это было еще до того, как первый вариант ушел в небытие. Сейчас руки не дойдут и поэтому здесь висит такой загадочный топик. :)
            Сообщение отредактировано: ALXR -
              А красиво... :rolleyes:
                ALXR, вот тебе и дополнительная мотивация довести руки до этого топика :)
                  Готов выложить описание проекта:
                  - Что требуется от проекта;
                  - Что сделано;
                  - Структура проекта;

                  Если найдется хотя бы 1-2 человека, готовых принять в нем участие и тогда дадим свой ответ Руссиновичу. :)
                  Задачи будут примерно такие:
                  - Ковыряние недр виндовс;
                  - Ковыряние в pdb различных версий виндовса;
                  - Применение полученных знаний в проекте.

                  Часть оной документации уже имеется в виде исходных текстов с хоть и скудными, но комментариями.
                  Сообщение отредактировано: ALXR -
                    Ты сначала выложи, а потом, думаю, желающие оценят имеющийся материал и план, и примут решение, будут участвовать или нет.

                    Отличный шанс для керо, лео и Рипли проявить лучшие свои качества :)
                      Проекту не помешает штатная русификация.
                        B.V., дал описание. :)
                          Цитата ALXR @
                          Т.е. это мое предложение заключается в наборе команды, готовой заняться таким довольно весомым проектом, который в теории переплюнет PE от Руссиновича.

                          Что ж ты сразу пугаешь. Уточнил бы, что проект планируется бесплатный и открытый, без жесткого отбора по уровню знаний и т.д.
                          Со своей стороны, я даже могу пообещать рассмотреть какие-то поощрения, а возможно, и призы за активное участие в этом проекте. Все-таки, проект от Sources.ru, и ресурс не должен оставаться безучастным :)
                            Цитата ALXR @
                            Т.е. это мое предложение заключается в наборе команды, готовой заняться таким довольно весомым, но бесплатным и открытым проектом, который в теории переплюнет PE от Руссиновича.


                            Цитата B.V. @
                            Что ж ты сразу пугаешь.


                            Не. Он не пугает - он очень коварно и грамотно заманивает ! :)
                            Я серьезно :)

                            У меня сейчас загрузка жуткая (ни в сказке сказать, ни пером описать) :(
                            И это будет продолжаться еще, как минимум, полтора месяца.
                            А поучаствовать в попытке "переплюнуть Руссиновича" ну очень хочеться O:-)
                            Плюс к этому, это шикарная возможность получить хорошие "скилы" в С, С++
                            P.S.
                            Ну и, как я писала выше, это весьма полезный инструмент в домашнем хозяйстве :)

                            P.P.S.
                            Меня, пока со счетов не сбрасывайте, может сумею придумать, как выкроить время.
                              Да тут и так никто никуда не торопится. Так что не факт, что еще будем плеваться, чтобы переплюнуть.
                                ALXR
                                Как процесс? Чем можно помочь?

                                пс. картинки понравились:)
                                  Urich, если есть интерес заняться, то можем обсудить в ПМ или icq, что есть и что нужно. :)
                                    ALXR, а не удобнее создать группу в Скайпе? И инвайтить туда желающих по мере появления..
                                      Цитата
                                      Исходники жесточайшим образом грохнул (вместе с бинарниками).

                                      Привлечь бы тебя за порчу имущества.
                                        Цитата B.V. @
                                        ALXR, а не удобнее создать группу в Скайпе? И инвайтить туда желающих по мере появления..

                                        Не умею пользоваться. Да и пока не досуг изучать.
                                          Проект заглох?
                                            Цитата ALXR @
                                            Не умею пользоваться

                                            Там нечего особо уметь, интерфейс достаточно простой. А плюс в том, что в Скайпе очень многие наши тематики
                                              B.V., а поподробнее об ентом где узнать? (а то я как всегда не вкурсах..)
                                                Цитата Krid @
                                                а поподробнее об ентом где узнать?

                                                Здесь, например: Чат игроманов (и не только) Исходников в Скайпе. (сообщение #2593349)
                                                  Потихоньку впиливаем под Win7.
                                                  user posted image
                                                    Можно глупый вопрос? Я понимаю мол хардкорить в коде. Но с формами то зачем хардкорить? )) заняться нечем?))
                                                      Тут подумалось - а зачем вообще изобретать лисопед??

                                                      ИМХО, лучше уж сделать что-нибудь типа Task Manager Extension

                                                      Помнится, когда-то я его юзал (+ ещё кое-чего туда добавил) - довольно удобная чтука была.

                                                      Да и намного меньше кода нужно писАть, поскольку это как-бы "плагин" к стандартному TaskManager'у. Ну а в последнем основная функциональность уже реализована. И задача сводится к тому, чтобы просто добавить что-то своё, не переписывая по-новой нормально работающий, отлаженный код.
                                                        Killbrum, где хардкод? Какой хардкод? Никакого хардкода и костылей там нет.

                                                        Krid, TME это как раз хардкод. Выглядит прилично, но удачной реализации быть не может.
                                                          Цитата ALXR @
                                                          TME это как раз хардкод.

                                                          Интересно, где это ты хардкод увидел? (или ты имеешь ввиду, что TME в систему встраивается?)

                                                          Цитата ALXR @
                                                          удачной реализации быть не может

                                                          Интересная мысль. И главное, полностью расходится с реальностью :)

                                                          ЗЫ Вообще не понятно - зачем плодить клоны Process Explorer'а (которых и так немеряно)?? Вот ты можешь объяснить мне внятно, зачем нужен этот твой очередной клон PE?

                                                          Не лучше ли будет сделать что-нибудь по-оригинальнее?
                                                            Цитата Krid @
                                                            Интересная мысль. И главное, полностью расходится с реальностью

                                                            ЗЫ Вообще не понятно - зачем плодить клоны Process Explorer'а (которых и так немеряно)?? Вот ты можешь объяснить мне внятно, зачем нужен этот твой очередной клон PE?

                                                            Зачем?

                                                            Цитата Krid @

                                                            Не лучше ли будет сделать что-нибудь по-оригинальнее?

                                                            Мне (ну и, похоже, не только мне) хочется покопаться во всех этих делах. Кроме того, наличие исходных текстов будет существенным плюсом ко всему этому делу.
                                                              Цитата ALXR @
                                                              Мне (ну и, похоже, не только мне) хочется покопаться во всех этих делах. Кроме того, наличие исходных текстов будет существенным плюсом ко всему этому делу.


                                                              Не, ну с этим, конечно не поспоришь. Вещь, конечно же, очень полезная в плане обучения, изучения механизмов работы системы, ядра, etc. Наверное, нет такого программера, который бы не делал какой-нибудь свой taskman или PE (или хотя бы не думал об этом)..

                                                              Просто сначала не очень понял - какова практическая цель всего этого.

                                                              ЗЫ но всё-таки обрати внимание на TME. Он же с исходниками и содержит массу полезного кода..
                                                                Цитата Krid @

                                                                ЗЫ но всё-таки обрати внимание на TME. Он же с исходниками и содержит массу полезного кода..

                                                                Видел я его. Все, что он использует давно известно и расписано. К примеру, чтение списка открытых дескрипторов через всем известное отверстие.
                                                                  Цитата ALXR @
                                                                  Видел я его. Все, что он использует давно известно и расписано. К примеру, чтение списка открытых дескрипторов через всем известное отверстие.

                                                                  А чем тебя это не устраевает?
                                                                    Ну а зачем делать криво, если можно сделать прямо? На самом деле, вопрос холиварный, поэтому спорить смысла нет. Мне (лично мне), кажется неправильным килять тред, если он виснет на пайпе. Это во-первых. Во-вторых, из-за этого информация о дескрипторах процесса будет неполной. Но это лишь верхушка айсберга. Некоторую информацию, которую хочется подсмотреть, на уровне UM получить не выйдет (UI-таймеры, хуки итд), уже надо что-то глобальнее делать. Ну а раз хочется, то почему это нельзя реализовать, попутно почесать руки и набить скиллы?
                                                                      Цитата ALXR @
                                                                      На самом деле, вопрос холиварный, поэтому спорить смысла нет.

                                                                      Ну тут ты не прав. Дело вовсе не в каких-то предпочтениях. И никаких холиваров тут и близко нет :no: Просто, ИМХО, это удобнее, и для юзеров привычнее (имеется ввиду - вызывать Task Manager).

                                                                      Видимо, я изначально не очень внятно пояснил свою мысль. Попробую ещё раз :)

                                                                      В общем, плагин (назовём его так) к стандартному виндовому Диспетчеру Задач не накладывает совершенно никаких ограничений на код. Т.е., сам интерфейс расширений Taskman'а не накладывает ограничений на код этих самых расширений. Ты просто пишешь DLL'ку, в которой реализуешь всё, что ты хочешь, и так, как ты хочешь. Суёшь в неё любую функциональность (и реализуешь её так, как нужно тебе). А потом просто подключаешь её к Taskman'у. Всё.

                                                                      А всё это: "килять тред, если он виснет на пайпе" или "посмотреть инфу в UM" - ты можешь сам запросто изменить.
                                                                      Кста, тут ты прав: "килять тред, если он виснет на пайпе" - это полная чушь. Для перечисления и киляния таких пайпов (находящихся в состоянии ожидания) и получения инфы о них, пишется простой драйвер. И никаких тредов (и тем более убивания их) вообще не нужно.

                                                                      Ты смотрел на исходники TME? Да, там есть не мало "кривого" кода. Но почему ты решил, что это руководство к действию? Это же просто демка, и не более того. Что тебе мешает написать нормальный код? Смысл тот же - написал DLL'ку, подключил к TM и пользуешься.
                                                                      Повторюсь - я считаю, что это удобно, практично, памяти жрёт мало и работает быстрее. (последние два этих своих утверждений я сам проверял, так что можешь мне на слово поверить :))

                                                                      Вот, собс-но и все мои аргументы в пользу расширения Диспетчера Задач, относительно создания отдельной проги :)
                                                                        готов присоединиться к проекту !
                                                                          Цитата ALXR @
                                                                          Killbrum, где хардкод? Какой хардкод? Никакого хардкода и костылей там нет.

                                                                          Я писал штук так 10 гуев на чистом вин апи. Это же долго :whistle: да оно чуточку быстрее. Но не знаю стоит ли тех свеч. Чисто о гуе. Не лучше сделать как в скайпе? (тут могу ошибаться но когда то да где то о таком читал) мол гуй на делфях\билдере а ядришко в дллках? Гуй будет очень красив + создавать очень просто. А уже всё остальное в дллках.
                                                                            Killbrum, в таком случае разумнее взять на вооружение Qt, но это уже будет не
                                                                            Цитата
                                                                            Системное программирование и WinAPI
                                                                              Цитата Killbrum @
                                                                              Я писал штук так 10 гуев на чистом вин апи. Это же долго :whistle: да оно чуточку быстрее. Но не знаю стоит ли тех свеч.


                                                                              А на чём писАть системные проги? На C#? :) А дрова - туда же? :)

                                                                              [Win]API и asm - те кирпичики, из которых и состоит OS. По этому, системщик просто обязан знать всё это и уметь и программить на этом. Иначе - это простой кодер, никакого отношения к системному программированию не имеющий..
                                                                                мой ICQ 6 49084021 добавь меня пожалуйста!
                                                                                  По существу могу сказать, фейс убогий. Были бы иконки, еще куда не шло, а вообще надо сделать настраиваемые колонки.
                                                                                  Было бы древо, тогда было можно окончательно подсесть на проект Допиливания !!
                                                                                    Цитата SOLON7 @
                                                                                    По существу могу сказать, фейс убогий. Были бы иконки, еще куда не шло, а вообще надо сделать настраиваемые колонки.
                                                                                    Было бы древо, тогда было можно окончательно подсесть на проект Допиливания !!

                                                                                    Заинтриговал!!!1
                                                                                      некоторых данных не нашел помогите найти плис
                                                                                      o Имя MODULEENTRY32.szModule
                                                                                      o Директория запуска MODULEENTRY32.szExePath
                                                                                      o Занимаемая память MODULEENTRY32.modBaseSize
                                                                                      o Количество потоков - ?
                                                                                      • Общая информация выводимая программой:
                                                                                      o Объем оперативной памяти -?
                                                                                      o Занятый объем памяти -?
                                                                                      o Свободный объем памяти -?
                                                                                      o Общее количество процессов -?
                                                                                      o Общее количество потоков -?

                                                                                      юзаю библиотеку Tool Help (MODULEENTRY32,HEAPENTRY32,PROCESSENTRY32,THREADENTRY32)
                                                                                      http://msdn.microsoft.com/en-us/library/windows/desktop/ms683443(v=vs.85).aspx
                                                                                        Айдар, с такими вопросами в отдельный топик
                                                                                        Эта тема для обсуждения совместной разработки сабжевого проекта
                                                                                          Ну вы все даёте, в этой теме! :)

                                                                                          Когда мне понадобились исходники и/или больше инфо по PE (Process Explorer от, теперь уже Microsoft TechInfo)
                                                                                          то я быстро нашел Process hacker:
                                                                                          http://processhacker.sourceforge.net/
                                                                                          от wj32

                                                                                          Единственные минусы его:
                                                                                          1) он написан на С# - думаю вам ребята есть смысл его переписать на С++ (кстати, мог бы помочь, если реально возьмется кто)
                                                                                          2) отстаёт по функционалу от майкрософтовского

                                                                                          3) минус того что, бывает, потребляет много памяти - следстсиве зависимости от C#, и исчезнет при C++

                                                                                          Хотя, с другой стороны формы делать на С# легче... Но кажется новые библиотеки С++ може многое позволяют. Так что, всё возможно.
                                                                                            Цитата Mna @
                                                                                            Ну вы все даёте, в этой теме! :)

                                                                                            Когда мне понадобились исходники и/или больше инфо по PE (Process Explorer от, теперь уже Microsoft TechInfo)
                                                                                            то я быстро нашел Process hacker:
                                                                                            http://processhacker.sourceforge.net/
                                                                                            от wj32

                                                                                            Единственные минусы его:
                                                                                            1) он написан на С# - думаю вам ребята есть смысл его переписать на С++ (кстати, мог бы помочь, если реально возьмется кто)
                                                                                            2) отстаёт по функционалу от майкрософтовского

                                                                                            3) минус того что, бывает, потребляет много памяти - следстсиве зависимости от C#, и исчезнет при C++

                                                                                            Хотя, с другой стороны формы делать на С# легче... Но кажется новые библиотеки С++ може многое позволяют. Так что, всё возможно.

                                                                                            Ну ты даешь!
                                                                                            Где там список открытых файлов? Где там управление тредами? Где там управление привилегиями? Где там... Что-то долго перечисляю. :ph34r:
                                                                                              Цитата Mna @
                                                                                              Ну вы все даёте, в этой теме! :)
                                                                                              .....
                                                                                              Единственные минусы его:
                                                                                              1) он написан на С# - думаю ....
                                                                                              3) минус того что, бывает, потребляет много памяти - следстсиве зависимости от C#, ...
                                                                                              Хотя, с другой стороны формы делать на С# легче...

                                                                                              Сорри! Вы какую версию исходников смотрели??!!
                                                                                              Там вообще-то чистый WinAPI на C! По-крайней мере в версии 2.27!
                                                                                                Цитата ALXR @
                                                                                                Цитата Mna @
                                                                                                Ну вы все даёте, в этой теме! :)

                                                                                                Когда мне понадобились исходники и/или больше инфо по PE (Process Explorer от, теперь уже Microsoft TechInfo)
                                                                                                то я быстро нашел Process hacker:
                                                                                                http://processhacker.sourceforge.net/
                                                                                                Так что, всё возможно.


                                                                                                Ну ты даешь!
                                                                                                Где там список открытых файлов? Где там управление тредами? Где там управление привилегиями? Где там... Что-то долго перечисляю. :ph34r:

                                                                                                1 Properties (мышкой или Enter)-> Handles -> Тype=File в левой колонке
                                                                                                2 Properties -> Threads
                                                                                                3 Properties -> Token и в нижней панели Popup menu: Enable|Disable|Remove|Copy

                                                                                                Цитата ALXR @

                                                                                                Где там... Что-то долго перечисляю. :ph34r:


                                                                                                А это проявляется твое предубеждение?

                                                                                                Хотя, с другой стороны, я сам тоже, не ожидал что его перепишут с С# на C, а вот сделано же! совсем круто.

                                                                                                И вообще. Если даже какой-то функции и не хватает - так и добавить можно, не?
                                                                                                всё возможно.

                                                                                                Добавлено
                                                                                                Цитата Dagdbog @
                                                                                                Цитата Mna @
                                                                                                1) он написан на С# - думаю ... 3) минус того что, бывает, потребляет много памяти

                                                                                                Сорри! Вы какую версию исходников смотрели??!!
                                                                                                Там вообще-то чистый WinAPI на C! По-крайней мере в версии 2.27!

                                                                                                Я как-то пропустил что его переписали на С, сорри. давно смотрел, наверное с версии в 2009 примерно v1.3.хх. и тогда переписывания на С/С++ совсем не ожидалось, или в очень дальних планах... -и несмотря на жадное потребление памяти

                                                                                                а теперь, о чудо, он на С, и так даже еще лучше. и потребление памяти снизилось.

                                                                                                можно уже использовать думаю


                                                                                                ....
                                                                                                Может теперь уже UI подправить?? чтоб была копия ProcessExplorer? :))
                                                                                                  На хабрахабре вчера появился довольно большой обзор-сравнение Process Explorer против Process Hacker,

                                                                                                  Вот тут: Process Explorer vs Process Hacker
                                                                                                    Интересная штука этот Process Hacker. Только сабж о другом Process Explorer'е
                                                                                                      Диалоговое окно процесса содержит в себе несколько категорий:
                                                                                                      Системная информация:
                                                                                                      -- Совокупные данные по процессу (время запуска, потребление физической и виртуальной памяти, данные исполняемого модуля и т.д.);
                                                                                                      -- Модули, загруженные процессом;
                                                                                                      -- Потоки;
                                                                                                      -- Привилегииuser posted image
                                                                                                      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                                                                                      0 пользователей:


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