Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #84, ДЕКАБРЬ 2005 г.

Боевое искусство портирования

Крис Касперски ака мыщъх

Хакер, номер #084, стр. 084-108-4


Дело в том, что интерфейс ntdll.dll худо-бедно документирован и остается практически неизменным уже на протяжении многих лет, поэтому его смело можно брать за основу. После этого остается всего лишь связать ntdll.dll с миром Linux/BSD, то есть написать транслятор запросов к драйверам. Это не так-то просто сделать, поскольку писать придется достаточно много, и работа отнимет не один день и даже не одну неделю, а с учетом отладки потребуется, как минимум, месяц. Но работа стоит того!

По крайней мере, в Linux/BSD наладится нормальная работа с NTFS и некоторыми другими драйверами ввода-вывода. С видеокартами, правда, все значительно сложнее, поскольку они взаимодействуют отнюдь не с Диспетчером ввода-вывода (который находится внутри ntoskrnl.exe), а с подсистемой win32. В Windows 2000 она реализована в файле win2k.sys. Как обстоят дела в других системах - не знаю, да это и не важно. Драйвер win2k.sys - лишь малая часть того, что ему нужно для работы, и просто так перетащить в Linux/BSD его не получится. За ним неизбежно потянется все его окружение, и написать столько «оберток» будет практически нереально. Реально, конечно, но сколько это потребует времени и сил? Переписать видеодрайвер гораздо проще, не говоря уже о том, что в этом случае он будет более производителен. Кстати говоря, компании NVIDIA и ATI в последнее время наладили выпуск Linux/BSD драйверов под наиболее популярные чипсеты, так что проблема снимается сама собой.

[готовый пример реализации]

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

Начнем с первой дискеты (которая, кстати говоря, обычно бывает системной). Здесь находится только один исполняемый файл ntfspro.exe, представляющий собой транслятор запросов, слинкованный с расширением защищенного режима WDOSX 0.96 DOS extender от Michael Tippach.

Файл ntfs.gz - это «родной» ntfs.sys драйвер, вытащенный из системного каталога Windows и для экономии места упакованный архиватором gzip. Для распаковки нам потребуется либо Linux, либо pkzip для Windows/MS-DOS. Сравнив его с оригинальным файлом драйвера, мы не найдем никаких изменений! А ntoskrnl.gz - это ядро системы (ntoskrnl.exe), точно так же вытащенное и упакованное. Никаких изменений в нем нет.

Назад на стр. 084-108-3  Содержание  Вперед на стр. 084-108-5