Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.137.176.238] |
|
Страницы: (4) 1 2 [3] 4 все ( Перейти к последнему сообщению ) |
Прикр. сообщ.
#1
,
|
|
|
Скриншоты Process Explorer от Sources.ru Итак, в проект ищутся желающие поковыряться в недрах 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 от Руссиновича. Достаточно иметь желание и уметь разбираться во всяких "системных штучках". Соответственно, все комментарии приветствуются. Пока все. |
Сообщ.
#31
,
|
|
|
Цитата Krid @ ЗЫ но всё-таки обрати внимание на TME. Он же с исходниками и содержит массу полезного кода.. Видел я его. Все, что он использует давно известно и расписано. К примеру, чтение списка открытых дескрипторов через всем известное отверстие. |
Сообщ.
#32
,
|
|
|
Цитата ALXR @ Видел я его. Все, что он использует давно известно и расписано. К примеру, чтение списка открытых дескрипторов через всем известное отверстие. А чем тебя это не устраевает? |
Сообщ.
#33
,
|
|
|
Ну а зачем делать криво, если можно сделать прямо? На самом деле, вопрос холиварный, поэтому спорить смысла нет. Мне (лично мне), кажется неправильным килять тред, если он виснет на пайпе. Это во-первых. Во-вторых, из-за этого информация о дескрипторах процесса будет неполной. Но это лишь верхушка айсберга. Некоторую информацию, которую хочется подсмотреть, на уровне UM получить не выйдет (UI-таймеры, хуки итд), уже надо что-то глобальнее делать. Ну а раз хочется, то почему это нельзя реализовать, попутно почесать руки и набить скиллы?
|
Сообщ.
#34
,
|
|
|
Цитата ALXR @ На самом деле, вопрос холиварный, поэтому спорить смысла нет. Ну тут ты не прав. Дело вовсе не в каких-то предпочтениях. И никаких холиваров тут и близко нет Просто, ИМХО, это удобнее, и для юзеров привычнее (имеется ввиду - вызывать Task Manager). Видимо, я изначально не очень внятно пояснил свою мысль. Попробую ещё раз В общем, плагин (назовём его так) к стандартному виндовому Диспетчеру Задач не накладывает совершенно никаких ограничений на код. Т.е., сам интерфейс расширений Taskman'а не накладывает ограничений на код этих самых расширений. Ты просто пишешь DLL'ку, в которой реализуешь всё, что ты хочешь, и так, как ты хочешь. Суёшь в неё любую функциональность (и реализуешь её так, как нужно тебе). А потом просто подключаешь её к Taskman'у. Всё. А всё это: "килять тред, если он виснет на пайпе" или "посмотреть инфу в UM" - ты можешь сам запросто изменить. Кста, тут ты прав: "килять тред, если он виснет на пайпе" - это полная чушь. Для перечисления и киляния таких пайпов (находящихся в состоянии ожидания) и получения инфы о них, пишется простой драйвер. И никаких тредов (и тем более убивания их) вообще не нужно. Ты смотрел на исходники TME? Да, там есть не мало "кривого" кода. Но почему ты решил, что это руководство к действию? Это же просто демка, и не более того. Что тебе мешает написать нормальный код? Смысл тот же - написал DLL'ку, подключил к TM и пользуешься. Повторюсь - я считаю, что это удобно, практично, памяти жрёт мало и работает быстрее. (последние два этих своих утверждений я сам проверял, так что можешь мне на слово поверить ) Вот, собс-но и все мои аргументы в пользу расширения Диспетчера Задач, относительно создания отдельной проги |
Сообщ.
#35
,
|
|
|
готов присоединиться к проекту !
|
Сообщ.
#36
,
|
|
|
Я писал штук так 10 гуев на чистом вин апи. Это же долго да оно чуточку быстрее. Но не знаю стоит ли тех свеч. Чисто о гуе. Не лучше сделать как в скайпе? (тут могу ошибаться но когда то да где то о таком читал) мол гуй на делфях\билдере а ядришко в дллках? Гуй будет очень красив + создавать очень просто. А уже всё остальное в дллках. |
Сообщ.
#37
,
|
|
|
Killbrum, в таком случае разумнее взять на вооружение Qt, но это уже будет не
Цитата Системное программирование и WinAPI |
Сообщ.
#38
,
|
|
|
Цитата Killbrum @ Я писал штук так 10 гуев на чистом вин апи. Это же долго да оно чуточку быстрее. Но не знаю стоит ли тех свеч. А на чём писАть системные проги? На C#? А дрова - туда же? [Win]API и asm - те кирпичики, из которых и состоит OS. По этому, системщик просто обязан знать всё это и уметь и программить на этом. Иначе - это простой кодер, никакого отношения к системному программированию не имеющий.. |
Сообщ.
#39
,
|
|
|
мой ICQ 6 49084021 добавь меня пожалуйста!
|
Сообщ.
#40
,
|
|
|
По существу могу сказать, фейс убогий. Были бы иконки, еще куда не шло, а вообще надо сделать настраиваемые колонки.
Было бы древо, тогда было можно окончательно подсесть на проект Допиливания !! |
Сообщ.
#41
,
|
|
|
Цитата SOLON7 @ По существу могу сказать, фейс убогий. Были бы иконки, еще куда не шло, а вообще надо сделать настраиваемые колонки. Было бы древо, тогда было можно окончательно подсесть на проект Допиливания !! Заинтриговал!!!1 |
Сообщ.
#42
,
|
|
|
некоторых данных не нашел помогите найти плис
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 |
Сообщ.
#43
,
|
|
|
Айдар, с такими вопросами в отдельный топик
Эта тема для обсуждения совместной разработки сабжевого проекта |
Сообщ.
#44
,
|
|
|
Ну вы все даёте, в этой теме!
Когда мне понадобились исходники и/или больше инфо по PE (Process Explorer от, теперь уже Microsoft TechInfo) то я быстро нашел Process hacker: http://processhacker.sourceforge.net/ от wj32 Единственные минусы его: 1) он написан на С# - думаю вам ребята есть смысл его переписать на С++ (кстати, мог бы помочь, если реально возьмется кто) 2) отстаёт по функционалу от майкрософтовского 3) минус того что, бывает, потребляет много памяти - следстсиве зависимости от C#, и исчезнет при C++ Хотя, с другой стороны формы делать на С# легче... Но кажется новые библиотеки С++ може многое позволяют. Так что, всё возможно. |
Сообщ.
#45
,
|
|
|
Цитата Mna @ Ну вы все даёте, в этой теме! Когда мне понадобились исходники и/или больше инфо по PE (Process Explorer от, теперь уже Microsoft TechInfo) то я быстро нашел Process hacker: http://processhacker.sourceforge.net/ от wj32 Единственные минусы его: 1) он написан на С# - думаю вам ребята есть смысл его переписать на С++ (кстати, мог бы помочь, если реально возьмется кто) 2) отстаёт по функционалу от майкрософтовского 3) минус того что, бывает, потребляет много памяти - следстсиве зависимости от C#, и исчезнет при C++ Хотя, с другой стороны формы делать на С# легче... Но кажется новые библиотеки С++ може многое позволяют. Так что, всё возможно. Ну ты даешь! Где там список открытых файлов? Где там управление тредами? Где там управление привилегиями? Где там... Что-то долго перечисляю. |