На главную Наши проекты:
Журнал   ·   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.
Страницы: (4) 1 2 [3] 4  все  ( Перейти к последнему сообщению )  
> 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 от Руссиновича. :) Достаточно иметь желание и уметь разбираться во всяких "системных штучках". Соответственно, все комментарии приветствуются.

    Пока все. :)
      Цитата 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:
                                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                  0 пользователей:
                                  Страницы: (4) 1 2 [3] 4  все


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