hex.pp.ua

Новые функции в Native Shell

Обновление функций Native Shell, команды if, load, expand, mount.




На китайском форуме wuyou.com обнаружил тему, в которой китайские программисты модифицировали код моей программы Native Shell.

Почему-то программист не стал присылать мне патчи на GitHub моего проекта, вместо этого завёл свой репозиторий на Google Code: http://code.google.com/p/nativeshell/.

Изменения

Вот какие изменения были внесены ими в программу:

main.c:

#include "mspack.h"
#include "laotou.h"

        L"if       - Condition                load X   - Load a batch file\n"
        L"expand   - expand a .cab file\n"

О том, что такое mspack и laotou написано ниже. Добавленные строки говорят о том, что добавились три новых команды: if, load и expand. Кроме того, добавилась ещё и команда mount.

Программист вволю поглумился над RtlClipProcessMessage(PCHAR Command) заменил все безопасные _strnicmp на _stricmp, заменил обращение к переменной CommandBuf на обращение напрямую к глобальной переменной xargv. Зачем надо было это делать?

Исправил сообщение not recognized на unkonwn command (sic!).

В начале функции main — код, позволяющий шеллу выполнять команды, прописанные ему в командной строке при вызове, или прописанные в ключе реестра BootExecute. Выделяется память в буфер Command, и туда в цикле копируется всё, что у функции находится в argv, с помощью strcat. Буфер Command затем отдаётся функции RtlClipProcessMessage(), всё просто.

Новые функции, добавленные почему-то в main.c, а не вынесенные в отдельный модуль:

  • IfCondition()
  • LoadBatch()
  • CabinetExpand()

ntfile.c:
Незначительные изменения в NtFileOpenFile(). Открытие файла с доступом на запись происходит только тогда, когда действительно нужна запись.

laotou.h:
Относится к команде mount. Эта команда позволяет монтировать образы в формате *.wim, а отвечает за реализацию этой команды функция LaotouMountImage(), файлы laotou.lib/laotou.h.

mspack.h:

За команду expand отвечает заголовочный mspack.h и несколько других файлов. Это libmspack — библиотека для работы с форматами сжатия Майкрософт.

Она поддерживает следующие форматы:

  • SZDD файлы со сжатием LZSS
  • KWAJ файлы со сжатием LZSS, LZSS+Huffman или deflate
  • .HLP (MS Help) файлы со сжатием LZSS
  • .CAB (MS Cabinet) файлы со сжатием deflate, LZX или Quantum
  • .CHM (HTML Help) файлы со сжатием LZX
  • .LIT (MS EBook) файлы со сжатием LZX и шифрованием DES

Скачать программу

Скачать программу можно по ссылкам в теме на форуме wuyou.com.

система комментирования CACKLE

Автор: амдф
Дата: 28 апреля 2012


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

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

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

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



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