|
|
|
KernelExplorer without driver25.10.2020, 03:26. Показов 11194. Ответов 74
Метки нет (Все метки)
Как-то давно поставил себе цель сделать некий инструмент на подобии WinDbg и Process Hacker но без использования драйвера.
Посмотреть как далеко может пустить ОС код, запущенный из-под обычного юзера, путем повышения прав, привилегий и т.д. Но на какое-то время забросил этот проект. И вот сейчас решил восстановить, добавил функционала, поправил ошибки. Из возможностей на данный момент: 1. открытие дескриптора любого процесса (Protected и ProtectedLite процессы открываются только для чтения) 2. вывод информации о DACL, SACL, таблиц доступа и аудита (в планах добавление функционала для изменения этих данных) 3. полный контроль над токеном процесса (включение, отключение и удаление привилегий) 4. завершение процесса (кроме Protected и ProtectedLite процессов) Всё что я сейчас перечислил, Process Hacker делает только с включенным драйвером. 5. создание процесса с учетной записью SYSTEM Здесь немного подробнее расскажу. Перед созданием процесса нужно открыть процесс, на основе которого будет создан новый. Если открывается процесс, запущенный в SessionId 0, то и новый процесс будет запущен в нулевой сессии. Это означает, что оконную процедуру вы не увидите, т.к. у каждой сессии свая станция (Windows Station) и у каждой станции свой рабочий стол. Если открывается процесс, запущенный в SessionId 1, то и новый процесс будет запущен в этой же сессии с оконными процедурами, но как NT_AUTHORITY\SYSTEM (будь то блокнот или ещё что), при условии если parentprocess тоже был SYSTEM. В следующем обновлении будет реализован механизм выбора рабочего стола (с Winlogon уже экспериментировал и запускал программы на экране блокировки, т.е. чтобы что запустить программу не нужно знать логин и пароль от ОС). На данный момент никакой нумерации билдов не виду, т.к. попутно проектирую GUI версию (на ней планирую делать нумерацию). Немного скринов) Собственно приглашение пользователя ввести команду (всегда начинайте с op - открытие процесса, т.к. данная команда собирает всю необходимую информацию для последующих действий) Пример вывода информации Манипуляции с токеном В общем если у кого-то есть предложения по расширению функционала, буду рад выслушать. PS: для запуска необходимы права администратора (в дальнейшем эту проблему решу так же, как и у Process Hacker), и набор библиотек VC++ runtime (проект собран на VS2019).
1
|
|
| 25.10.2020, 03:26 | |
|
Ответы с готовыми решениями:
74
MS SQL driver type 4 ошибка: [Microsoft][SQLServer JDBC Driver]No ResultSet set was produced.
wpd file system volume driver has a driver problem |
| 25.10.2020, 13:16 | |
|
0
|
|
|
|
||
| 25.10.2020, 15:01 [ТС] | ||
|
или тебе просто лень установить то, что по дефолту должно стоять в любом ПК. для особо одаренных объясню: если код пишется на C++ с использованием IDE Visual Studio, неизбежно будет использоваться CRT среда. а переписывать всю эту кашу с CRT себе в хидеры нормальный кодер в жизни не будет. жду адекватных коментов, а не этот вброс..
0
|
||
|
Всегда онлайн
1084 / 788 / 295
Регистрация: 07.04.2013
Сообщений: 2,703
|
|
| 25.10.2020, 15:37 | |
|
_lunar_, интересный эксперимент, однако я бы запустил если бы вы опен сорснули эту штуку, а то куда она там лезет и что делает - неизвестно.
0
|
|
|
Всегда онлайн
1084 / 788 / 295
Регистрация: 07.04.2013
Сообщений: 2,703
|
|
| 25.10.2020, 17:14 | |
|
_lunar_, вот такую ошибку получил. Это связано с VS runtime? Я думаю что он у меня установлен.
1
|
|
|
|
||
| 25.10.2020, 19:03 [ТС] | ||
|
извиняюсь, забыл сразу указать: на данный момент программа собрана только для Windows 10 (возможно будет работать и на Windows 8/8.1). некоторые функции, которые я применяю, появились в более поздних SDK (я работаю с последней версией), а следовательно в более старых ядрах этих функций просто нет. в дальнейшем буду переводить некоторые функции на Nt-заглушки (NativeAPI), которые есть и в Windows 7 и в Windows 10.
0
|
||
|
|
|||||
| 25.10.2020, 21:46 | |||||
|
Не по теме:
Вам как разработчику плевать на пользователей? Вот так появляются необоснованные требования к железу и современные программы по всем параметрам уступающие тем что выпущены 20 лет назад, требуют не ниже Windows 10, 8-ми ядреный проц и 128 ГБ ОЗУ и несколько десятков гигов на диске, потому что прога тянет многогиговый рантайм.
1
|
|||||
|
|
||
| 25.10.2020, 23:15 [ТС] | ||
|
locm, подфорум называется "Бета-тест", и на данном этапе я не особо уделяю внимание совместимости со старыми ОС, наличию или отсутствию sdk'шных библиотек и прочему.
ок, я вас услышал, но тестирование поддержки ХР и всего того, что вы тут описываете, если и будет, то гораздо позже. сейчас я занимаюсь логикой программы, а не адаптированием, т.к. разработка находится на самых ранних стадиях. 1. больше не нужно сперва открывать процесс (op), а уже потом создавать новый (cp), можно сразу создавать новый. 2. благодаря новой логике подбора процесса реализован механизм выбора сессии. немного FAQ: перед тем как пользователь увидит рабочий стол и всё остальное на экране монитора, происходит загрузка основных модулей ОС и ядра. начиная с Vista реализован механизм работы ОС в сессиях. загрузка ядра и модулей (до рабочего стола) происходит в нулевой сессии - SessionId 0. в сессии создаётся рабочая станция, а уже в рабочей станции создаются рабочие столы. после загрузки ядра и модулей создаётся новая сессия SessionId 1 (отсчитывается по порядку). если вы сделаете "Выход из системы", то после захода из Winlogon сессия увеличится на единицу - SessionId 2. если вы сделаете "Смену пользователя", то после захода из Winlogon сессия продолжится в SessionId 1. увидеть рабочие столы нулевой сессия невозможно (оконные процедуры не взаимодействуют между сессиями), но к ним можно обращаться через пайпы, события и другие каналы. рабочих станций в Windows 10 несколько: WinSta0 - основная рабочая станция (она является интерактивной (interactive window station)) Service-0x0-3e4$ - рабочая станция служб с правами NT AUTHORITY\NETWORK SERVICE: 0x3e4 (не интерактивная рабочая станция (non-interactive window station)) Service-0x0-3e5$ - рабочая станция служб с правами NT AUTHORITY\LOCAL SERVICE: 0x3e5 (не интерактивная рабочая станция (non-interactive window station)) Service-0x0-3e7$ - рабочая станция служб с правами NT AUTHORITY\SYSTEM: 0x3e7 (не интерактивная рабочая станция (non-interactive window station)) и несколько рабочих станций вида Service-0x0-67c25$ - рабочая станция пользователя user\USER: 0x67c25 касаемо рабочих столов: в Windows 10 я насчитал их три - Default, Winlogon и Disconnect. Default - основной рабочий стол (то, что видит пользователь) Winlogon - рабочий стол окна запроса логина и пароля при входе в систему Disconnect - пока не разобрался что это за рабочий стол, но подозреваю связан он с "Смена пользователя" или "Выйти" в общем можете сами поэкспериментировать: я создал новый процесс блокнота (notepad.exe) в сессии пользователя (USER_SESSION_ID) и на рабочем столе Winlogon заблокировал компьютер, попал на окно запроса входа в систему, нажал alt+tab и увидел созданный мною блокнот
0
|
||
|
14138 / 9367 / 1350
Регистрация: 21.01.2016
Сообщений: 35,243
|
|
| 26.10.2020, 09:27 | |
|
0
|
|
|
|
|
| 26.10.2020, 10:03 [ТС] | |
|
перекомпилировал с многопоточной линковкой статичных либ.
проверил на ПК без установленных библиотек vc++ runtime. теперь должно работать без установки дополнительных sdk пакетов, но и размер соответственно увеличился в разы.
0
|
|
|
14138 / 9367 / 1350
Регистрация: 21.01.2016
Сообщений: 35,243
|
|
| 26.10.2020, 10:08 | |
|
В 2020-м году о размере дистрибутива переживать не надо)
1
|
|
| 26.10.2020, 10:27 | |
|
Не по теме: Интересно, но поздно - я снова на линуксах. :yahoo:
0
|
|
|
|
||||
| 26.10.2020, 12:56 [ТС] | ||||
|
суть в том, что WaitForDebugEventEx правильно отрабатывает строки юникода и доступна эта функция начиная с Windows 10 все остальные функции в программе требуют
0
|
||||
|
14138 / 9367 / 1350
Регистрация: 21.01.2016
Сообщений: 35,243
|
|
| 26.10.2020, 12:58 | |
|
0
|
|
|
|
||
| 26.10.2020, 13:14 [ТС] | ||
![]() даже по той причине, что пол функционала программы просто не заработает на XP (та же тема с сессиями). поэтому компилятор не настраиваю с "Поддержка Windows XP", смысла нет..
0
|
||
|
|
|
| 26.10.2020, 20:06 [ТС] | |
|
забыл ещё про одну функцию, не поддерживаемую Windows 7 - GetProcessInformation
у неё минимум Windows 8, поэтому для тех кто всё же хочет попробовать, в этом аттаче будет лежать LdrModuleEx.dll с отключенным функционалом по открытию процесса (позже перепишу её на Nt) но я всё таки добрался до ПК с Windows 7 и вот что обнаружил ![]() при создании процесса в сессии ОС (нулевая сессия) на рабочем столе Default система делает запрос на переключение к тому рабочему столу и вот что мы наблюдаем при соглашении на переход поздравляю товарищи! мы находимся на рабочем столе ядра операционной системы (SessionId 0 -> WinSta0 -> Default) переключится на рабочие столы Winlogon и Disconnect не удалось (с Winlogon ещё поэкспериментирую, есть задумка как его отобразить)
0
|
|
|
|
|
| 27.10.2020, 00:14 [ТС] | |
|
служба "Обнаружение интерактивных служб" (UI0Detect.exe) начала свое существование с Windows Vista.
продолжила свой путь в Windows 7, Windows 8, Windows 8.1 а убрали её из Windows 10 начиная с версии 1803 и более поздних (в 1709 и более ранних она присутствует). эта служба как раз и переключает рабочие столы между сессиями. решил продолжить играть с семеркой и посмотреть что она позволит с собой сделать, оказывается много чего. первым делом создал процесс explorer.exe в нулевой сессии на рабочем столе Default перешёл и посмотрел как ОС настраивает мне рабочий стол ![]() вернулся в пользовательскую сессию по ctrl+alt+del и создал процесс ProcessHacker.exe, снова перешёл в нулевую сессию убедился что процессы, созданные через мою программу принадлежат нулевой сессии ProcessHacker запущен без драйвера, и имеет только токен, который я ему предоставил заходим в ядро (процесс System) и манипулируем токеном (и другими ресурсами процесса), который в обычном режиме доступен через драйвер (в данном случае просто повключал привилегии) вот такой у меня вечерок экспериментов с Win7 получился)
0
|
|
|
|
||||||
| 27.10.2020, 00:25 [ТС] | ||||||
|
PS: GetProcessInformation переписал на NtQueryInformationProcess(..., ProcessProtectionInformation, ...) и перебрал биты
что-то не хочет семерка отображать инфу и крашит прогу где-то вначале. поэтому выкладывать версию с переделанной GetProcessInformation смысла нет, буду тестировать и выявлять ошибку, и уже потом выложу. в любом случае, для завода процесса в любой сессии, на любом рабочем столе и на любой ОС я уже всё выложил ранее так что кому интересно исследуйте возможности программы и операционной системы)
0
|
||||||
| 27.10.2020, 00:25 | |
|
Помогаю со студенческими работами здесь
20
QODBC (MS SQL SERVER) . Driver not loaded Driver not loaded
Ошибка - Driver not loaded Driver not loaded Wi-FI driver Wi-Fi driver Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|