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


         

дизассемблерный листинг функции READ_PORT_UCHAR, выдернутой


.text:80015A2C

.text:80015A2C                 public READ_PORT_UCHAR

.text:80015A2C READ_PORT_UCHAR proc near   ; CODE XREF: HalGetEnvironmentVariable+2C^p

.text:80015A2C                                        ; HalSetEnvironmentVariable+3D^p

.text:80015A2C

.text:80015A2C arg_0           = dword ptr  4

.text:80015A2C

.text:80015A2C                 xor     eax, eax

.text:80015A2E                 mov     edx, [esp+arg_0]

.text:80015A32                 in      al, dx

.text:80015A33                 retn    4

.text:80015A33 READ_PORT_UCHAR endp

Листинг 1  дизассемблерный листинг функции READ_PORT_UCHAR, выдернутой из HAL'a

Таким образом, если заставить NTOSKRNL.EXE работать в среде чужеродного ему LINUX'а (или BSD), мы получим возможность запускать любые NT-драйвера без какой-либо доработки их двоичного кода. Это не только упрощает задачу переноса, но и снимает проблему так называемых "авторских прав", от которых меня уже блевать тянет. У нас на них можно в принципе и забить, послав Била к черту, но не известно сработает ли это заклинание лет эдак через пять. Интеграция с Европой идет полным ходом, Третий Рим (известный под логотипом U.S.A) рвется в заснеженные леса России, всюду устанавливая свои порядки и законы... Любой обладатель лицензионной копии Windows (или другой программы) вправе вызывать готовый драйвер откуда угодно без каких бы то ни было разрешений и без выплаты дополнительного вознаграждения, но модифицировать двоичный код ему позволят едва ли.

Но мы ведь и не собираемся ничего модифицировать! Мы берем готовый NTOSKRNL.EXE и... Собственно, это все. Работы предстоит не так уж и много. Достаточно просто спроецировать его по адресам, указанным в заголовке PE-файла (а NTOSKRNL.EXE это обычный PE-Файл) и разобраться с таблицей экспорта, используемой драйверами. Короче говоря, мы должны реализовать свой собственный PE-загрузчик и заснуть его в загружаемый модуль ядра или в само ядро. Чтобы не мучаться, можно хлебнуть вина и содрать готовый загрузчик оттуда. Нет, это не спиртной напиток (хакеры предпочитают пиво), это эмулятор Windows'а такой. Он так и называется Wine (Windows Emulator).


Содержание  Назад  Вперед