Турбо-перенос драйверов из Windows в LINUX-BSD

       

Готовый пример реализации или спроектировать— означает украсть


Конкретные переносы драйверов из мира Windows в LINUX/BSD мне неизвестны, однако, под MS-DOS кажется есть что-то похожее. Речь идет о проекте Марка Руссиновича "NTFS for MS-DOS" — известного хакера и исследования недр NT. Бесплатная версия (http://www.sysinternals.com/Utilities/NtfsDosProfessional.html) может только читать, а платную легко найти в Осле. Специальный мастер установки просит указать путь к системному каталогу Windows и создает две дискеты, на которые ожесточенно записывает что-то тяжелое. Давайте посмотрим, что именно:

30.10.2005  19:01              904 414 NTOSKRNL.gz

11.02.2002  09:39               89 472 ntfspro.exe

30.10.2005  19:00              314 665 NTFS.gz

30.10.2005  19:01                1 403 C_866.gz

               4 файлов      1 309 954 байт

               0 папок         146 944 байт свободно

Рисунок 6 содержимое первой дискеты NTFS for MS-DOS

30.10.2005  19:03              212 681 AUTOCHK.gz

30.10.2005  19:04              219 099 NTDLL.gz

30.10.2005  19:04                1 633 C_437.gz

30.10.2005  19:04                1 467 C_1252.gz

30.10.2005  19:04                  746 L_INTL.gz

08.02.2002  10:45               56 748 ntfschk.exe

               6 файлов        492 374 байт

               0 папок         964 096 байт свободно

Рисунок 7 содержимое второй дискеты NTFS for MS-DOS

Начнем с первой дискеты (которая, кстати говоря, обычно бывает системной, поскольку NTFS for MS-DOS работает только из-под белого листа, то есть я хотел сказать "черного экрана", однако, для наглядности все системные файлы удаленны). Здесь находится только один исполняемый файл "ntfspro.exe", представляющий собой транслятор запросов слинкованный с расширением защищенного режима "WDOSX 0.96 DOS extender" от Michael Tippach (wuschel@geocities.com).

"NTFS.gz" – это "родной" NTFS.SYS драйвер, вытащенный из системного каталога Windows и для экономии места упакованный архиватором gzip. Для распаковки нам потребуется либо LINUX, либо pkzip для Windows/MS-DOS. Сравнив его с оригинальным файлом драйвера, мы не найдем никаких изменений! "NTOSKRNL.gz" – это ядро системы (NTOSKRNL.EXE), точно так же вытащенное и упакованное. Никаких изменений в нем нет.


На другой дискете находится "NTDLL.gz" ( о происхождении которого догадаться нетрудно) и ntfschk.exe. Последний представляет собой полностью переписанный вариант штатной утили "chkdsk.exe", поскольку чтобы заставить консольное приложение заработать в MS-DOS пришлось бы эмулировать еще множество функций, что в планы Руссиновича очевидно не входило (тем не менее, легендарный хакер Юрий Харон все-таки создал расширитель, способный запускать Windows-приложения из под голого ДОС'а, без обращения к Windows вообще! Все умещается на одну дискетку, — красота! Сам расширитель можно скачать с http://www.doswin32.com. Для некоммерческого применения он бесплатен).

Еще на дискетах содержатся файлы C_866.gz, AUTOCHK.gz, C_437.gz, C_1252.gz, L_INTL.gz содержащие языковые страницы и прочую служебную мишуру, без которой можно в принципе и обойтись.

Суть в том, что ядро проекта "NTFS for MS-DOS" составляют три файла: NTOSKRNL.EXE, NTDLL.DLL и NTFS.SYS, которые помещаются в своеобразную скорлупу файла NTFSPRO.EXE, переводящего процессор в защищенный режим и транслирующего MS-DOS-запросы в "язык", понятный NTFS.SYS и наоборот. Как видите, это работает. Конечно, LINUX/BSD это совсем не чистая MS-DOS. Ядро по своему распределят прерывания и другие системные ресурсы, поэтому при написании "скорлупы-оболочки" возникает множество технических проблем, но все они решаемы. Пример аналогичного решения можно найти в другом проекте Марка Руссиновича "NTFS for Windows 9x". Здесь так же используется "скорлупа", создающая адекватное окружения для NTOSKRNL.EXE и транслятор запросов, но она уже работает совсем не в голой MS-DOS, с которой все и так ясно, а в агрессивной Windows 9x, которая отличается от NT ничуть не меньше, чем LINIX/BSD.


Содержание раздела