hex.pp.ua

Native shell — командная строка в native режиме

Native shell — командная строка для экспериментов с native режимом Windows




English version

Native shell — программа, написанная мной для экспериментов в Native-режиме Windows семейства NT (NT/2000/XP/2003/Vista/7). Этот тот режим, в котором запускается утилита chkdsk, когда ей надо проверить и исправить ошибки в системном разделе. Сам режим (его ещё называют загрузочным режимом) представляет собой синий экран (в Windows XP синий, в других версиях другого цвета), который появляется до появления окна логина в систему. Выглядит этот режим так (нажмите картинку, чтобы увеличить):

Программа распространяется на условиях лицензии GNU General Public License, часть исходников по GNU Lesser General Public License. Упоминания о других авторах исходного кода смотрите в исходных текстах программы. Исходные коды доступны по адресу

https://github.com/amdf/NativeShell

Экран native режима Windows XP c запущенным приложением Native shell
Экран native режима Windows XP c запущенным приложением Native shell

Программа представляет собой шелл, то есть командную строку. В ней можно выполнять несколько базовых операций с файлами и каталогами Windows. Особенность режима заключается в том, что вход в систему ещё не произошёл, а у нас уже есть доступ ко всей файловой системе и реестру. Всё это реализуется посредством вызовов функций Native API из ntdll.dll. Многие ограничения Windows, таким образом, ещё не действуют, пока мы находимся в этом режиме. Кое-что о программировании native приложений я написал здесь.

Запуск программы протестирован в Windows XP и ReactOS.

Возможности программы

  • Запускать другие native процессы и передавать им параметры командной строки
  • Читать клавиатурный ввод и реагировать на команды. Список команд выводится по команде help.
  • Перемещаться по файловой системе с сохранением текущего каталога.
  • Копировать, удалять и перемещать файлы.
  • Создавать каталоги.
  • Выключать и перезагружать компьютер.
  • Выводить список запущенных процессов.
  • Выводить список запущенных исполняемых модулей в памяти.
  • Выводить список устройств в системе.
  • Выводить список файлов в каталоге на экран. При этом показываются имя файла, короткое имя (в формате 8.3), размер и признак каталога. Если в папке много файлов, то программа выводит список файлов страницами. Перейти к другой странице или отказаться от этого можно клавишами Y/N.
  • Выходить из native режима и переходить к нормальному запуску Windows.

Отсутствующие возможности

  • Работа с реестром
  • Автодополнение команд
  • История ввода команд

История версий

  • 0.12 — добавлена команда перемещения или переименования файла (move), исправлен малый размер буфера текущей строки символов на экране; переход с диска на диск вроде бы должен теперь работать.
  • 0.11 — программа переписана на основе исходников Native Command Line Interface (NCLI) из проекта TinyKRNL. За основу взята версия 2006 года. Изменения по сравнению с NCLI: обработка клавиатурного ввода заменена на вариант из библиотеки ZenWINX; добавлены все команды из предыдущих версий Native shell, формат времени при выводе содержимого каталога изменён с 12-часового на 24-часовой; добавлен постраничный вывод содержимого каталога (в NCLI был непрерывный вывод). Изменения по сравнению с Native shell: добавлены команды из NCLI; переписаны некоторые файловые операции, процессы могут запускаться с передачей параметров командной строки, изменены имена некоторых команд. Ограничения: пока не работает переход на другой диск (например с C:\ на D:\).
  • 0.02 — упрощена инициализация клавиатуры (убрана поддержка одновременной обработки нескольких клавиатур), добавлена возможность запускать другие native процессы (пока без передачи им командной строки).
  • 0.01 — начальная версия.

Список консольных команд

Постепенно будут добавляться команды, которые будут реализовывать те или иные функции, которые я хотел бы опробовать в Native-режиме. Если аргумент команды содержит пробел, его надо брать в кавычки (кроме команды cd, она понимает пути без кавычек).

  • если команда не совпадает с одной из описанных ниже, считается, что это имя исполняемого файла для запуска (чтобы программа запустилась, имя исполняемого файла нужно указывать обязательно вместе с расширением)
  • cd X - сменить каталог на X
  • md X - создать каталог X
  • copy X Y - копировать файл X в Y
  • move X Y - перенести или переименовать файл X в Y
  • poweroff - выключить ПК
  • shutdown - выключить ПК
  • dir - показать содержимое каталога
  • pwd - напечатать название текущего каталога
  • del X - удалить файл X
  • reboot - перезагрузить ПК
  • devtree - вывести дерево процессов
  • exit - выход в Windows
  • sysinfo - показать информацию о системе
  • lm - показать исполняемые модули в памяти
  • vid - проверка вывода символов на экран
  • lp - вывод запущенных процессов

Скачать исходный код и исполняемый файл программы Native shell

Исходный код на языке Си. Для сборки нужен WinDDK и заголовочные файлы NTNDK. Частично используется код из библиотеки ZenWINX. Архив также содержит исполняемый файл native.exe. Файлы install.cmd, uninstall.cmd, add.reg, remove.reg помогут установить и удалить приложение.

система комментирования CACKLE
Разделы сайта
Главная
Блог
Native API
NTFS и ReFS
Микроконтроллеры
Справочник NTDLL
Коды NTSTATUS
Разное

Избранное
NTFS Stream Explorer
Native Shell
Тенгвар

Остальное
nvpnhcknn (архив)
English pages
Контакты

Ленты atom
Лента Atom сайта Лента Atom блога



При копировании материалов хорошим тоном будет указание авторства и ссылка на сайт.