Windows в UNIX
Крис Касперски
🕛 18.07.2006, 16:23
"Настоящий мужчина должен поставить UNIX!" - правда, не совсем понятно зачем, но должен. А покажите мне человека, у которого не установлен UNIX? Любопытно, но Windows NT поддерживает стандарт UNIX - POSIX и формально могла бы быть отнесена в разряд многочисленных клонов UNIX, если бы дядя-Билл стремился получить этот гордый титул. Ежу понятно, сколько Windows 9x ни корми, а у Windows NT все равно толще, но что-то от UNIX и в девяносто пятых определенно есть. Понятное дело, в любом из нас больше крови сэра Баскервиля, чем в Windows оригинального кода UNIX, и любой фанатик этой самой UNIX презрительно спросит, а можно ли на Windows запускать UNIX-приложения? Нет? Нет, вот и славненько! Кто UNIX не поставил, тот не мужчина, а, с позволения сказать, ламер позорный.
Легко сказать "поставь UNIX". То есть, поставить-то его, конечно, дело не хитрое, много по этому делу бумаги исписано, и с помощью пива и чьей-то мамы погрузить UNIX на свой компьютер дело одного часа.
Но что потом с этим зверем делать? Антрацитово-черный экран и мерцающий курсор, очевидно ждущий команды. Но какой команды? Тут бы не дурно в Интернет зайти, туторал почитать, ан-нет - треска хвостом вперед, это только в Must Die все делается шелчком мыши, а в UNIX без гуру и ящика пива с этой проблемой не справиться.
Вот было бы хорошо запустить UNIX в окне Windows! А почему бы и нет? Забавно, но это действительно можно, причем не какой-нибудь эмулятор UNIX типа тренажера для начинающих, а самый что ни на есть полноценный UNIX, на котором хоть Apache сервер гоняй!
Вообще-то, если честно, Windows очень трудно научить правильно обращаться с исполняемыми файлами UNIX - ну анатомия у нее не та (имеется в виду формат исполняемых файлов и системные вызовы, хотя это не относится к POSIX-вызовам). Если кому такой фокус и удастся, все будет жутко тормозить и часто падать. Но не беда - ведь UNIX-программисты никогда не зажимают исходники, остается только перекомпилировать и все. Ха, тоже мне сказали - "и все". Да любой Windows компилятор скорее подавится, чем проглотит такой исходник. А если и проглотит, работать все равно ничего не будет.
Разработать такой компилятор, который бы работал в Windows и пережевывал бы исходные тексты от UNIX, впервые решился Дэвид Корн - и, представьте себе, разработал! Компания AT&T (в которой он работает) пробовала наложить на это дело лапу, но Дэвид, как настоящий программист, отстоял за собой право распространять продукт бесплатно.
Зайдем на его домашнюю страничку, кликнем по ссылке Down Load - и, ответив на множество пикантных вопросов (о поле, возрасте и месте проживания), попадем, наконец, на список предлагаемых файлов, которых так много, что немудрено и растеряться. Если вы не разработчик и не собираетесь программировать под UNIX (а если вы программируете под UNIX, с чего бы это Windows оказалась на вашем компьютере?), то вам достаточно скачать лишь один из них: "uwin_base.win32.i386.exe" - восемь с хвостиком мегабайт, и заплатку, исправляющую многие ошибки, "uwin_base_update2_1. win32.i386.exe" - чуть больше двух мегабайт. Также нелишне разжиться хотя бы одной интерактивной оболочкой. Недурно зарекомендовал себя Midnight Commander - клон Norton Commander, написанный специально для UNIX. Без него пришлось бы общаться одной командной строкой и постоянно помнить множество мудреных команд. Скачать его можно со следующего здесь. Несмотря на "закрученное" расширение, с архивом вполне успешно справляется обыкновенный WinZip32.
Установка UWIN, а именно так называется творение Дэвида Корна, никаких проблем не вызывает. Не нужно специальным образом конфигурировать соединение с Internet или возиться с драйверами принтера или монитора - UWIN с умом использует ресурсы Windows и не потребует дополнительной настройки. Можно даже поставить X-Windows - и тогда редкий поклонник UNIX разберется, в какой операционке вы работаете (это относится и к нижеописаному CYGWIN).
Разве это не круто? Попробуйте-ка, предложите лучший способ обучиться работать с UNIX! А какой простор открывается для всевозможных атак! Ведь большинство эксплоитов, то есть, говоря научным языком, программных реализаций атак, а по-простому всяких там нюков, работают исключительно в среде UNIX и наотрез отказываются дружить с Windows. Так вот, UWIN - лучший способ это сделать!
Правда, вот в чем незадача - все новые нюки лежат на rootshell в виде файлов с расширением 'c', то есть, пока их не откомпилируешь, о запуске нечего и думать! А компилятор где? Вновь лезем на сайт Дэвида Корна и скачиваем файлик "uwin_development.win32.i386.exe" - чуть меньше четырех мегабайт. Правда, это не весь компилятор, а только набор заготовок, помогающий Windows-компиляторам преодолеть паралогическую невосприимчивость к UNIX. Выходит, надо вставать, надевать сапоги и чесать на Митино (или как там у вас это называется?) и докупать диск с любым Windows-компилятором. Можно, например, Visual Studio от Microsoft или Turbo C от Borland, а можно и то и другое сразу - на всякий случай, как говорят.
Хорошо, а как компилировать-то? Дэвид не очень-то подробно это описывает, да вдобавок на английском языке, попробуй тут, разберись после пятого пива! Тээкс, сперва надо запустить 'cc' (для Microsoft Visual Studio) или 'bc' (для Borland Turbo C), следом за ним, указав имя файла, например, так: "cc land.c", где land.c - имя файла, который надо откомпилировать. Если все пройдет успешно и не будет никаких ругательств на недостающие включаемые файлы, образуется "land.o", то есть объективный файл. Он еще не готов для запуска - прежде его необходимо слинковать. А для этого существует утилита 'ncc'. Запускаем ее 'ncc land.o' и... получаем ругательство, дескать, того тут нет, этого тут нет, и вообще error такой-то и ничего линковать не буду. Значит, линкер не может найти библиотеки, - открываем каталог "lib" и попробуем подключить их самостоятельно, указав после имени файла - 'ncc land.c ast.lib posix.lib'. Сработало? Неужели и на этот раз нет? Тогда, вместе с нюком должен поставляться make-файл, так и называющийся 'make' или 'makefile' - обработаем его утилитой 'nmake', ("nmake makefle") и уж на этот раз наверняка все получится - но, к сожалению, не все нюки распространяются с make-файлом.
Полученный файл не обязательно запускать из среды UWIN, ничуть не хуже он будет работать, запущенный из "проводника" Windows или, скажем, FAR-навигатора. Но если попытаться одолжить его приятелю, то у него ничего не получится, программа поругается и потребует наличия двух файлов - astxx.dll (где xx - номер версии UWIN) и posix.dll - оба они находятся в каталоге "WINDOWS\SYSTEM".
Разумеется, UWIN не единственное творение в своем роде. В сети можно найти просто прорву аналогичных примочек. Ну, например, большую популярность завоевал известный CYGWIN, разработанный Cygnus Solutions. Он полностью бесплатен, распространяется вкупе с исходниками, но... требует глубоких знаний UNIX и умения программировать.
В предыдущих версиях, конечно, были трудности с установкой данного продукта, но на данный момент имеется инсталлятор, который позволяет выкачивать и/или инсталлировать данный программный продукт, используя возможность работы как с прямым соединением, так и с соединением через прокси-сервер. Единственная проблема возникает при выборе необходимых компонентов, потому что CYGWIN - это не только обертка UNIX, а еще и UNIX-like компилятор с/с++, что отличается от UWIN, который позволяет работать только с POSIX-вызовами и не имеет собственного компилятора. Выкачиваем все необходимое, инсталлятор устанавливает данное творение.
Единственная проблема заключается в том, что CYGWIN'ом можно портировать множество вещей. Недавно из-за своей лени я не хотел перегружаться под Linux и решил скомпилировать самопальный прокси-сервер CYGWIN'ом. Хочу отметить, что данный проксик писался с расчетом на то, что он будет работать под Linux и будет висеть демоном. Скомпилировал, все без ошибок. Запустил - работает. Единственная проблема возникает при компиляции приложений, сильно завязанных на использовании функций ядра различных операционных систем, но большая часть приложений компилируется без особых проблем, чего нельзя сказать о MS Visual C++, т.к. в его include-файлах отсутствуют или не совпадают процедуры и функции с аналогичными в UNIX. Все портированные программы можно запускать и не из среды CYGWIN, достаточно скопировать cygwin1.dll в каталог WINDOWS\SYSTEM, и запускать их, хоть из эксплорера, хоть из FAR-менеджера.
А, кстати, вместе с UWIN распространяется и компактный DNS сервер. Зачем он нам? Конечно, если подключиться к дорогому, шустрому провайдеру - то незачем. А вот вся халява связана с большими тормозами. Как повысить скорость соединения, не платя лишнего? Очень просто - обзавестить собственным DNS. Порой это увеличивает скорость лазанья по WEB-страничкам на 20%-50% - и главное, совершенно бесплатно. Правда, комфортная работа потребует, по крайней мере, тридцати двух метром мозгов на вашей машине, но если у вас меньше - как вы вообще умудряетесь существовать в таких условиях? Есть еще Telnet и Ftp сервера, которые позволяют вам на 100% ощущать себя как бы под UNIX системой.
Итак, UWIN и CYGWIN дает возможность изучать UNIX, не отказываясь от мира WINDOWS, запускать многочисленные атакующие программы, не работающие с обычной Windows, установить собственный DNS сервер, повысив скорость соединения с Internet, наконец, просто ощутить себя настоящим мужчиной, не понаслышке знакомым с UNIX, хотя CYGWIN является просто сеансом работы в UNIX-шелле и не предоставляет возможность использовать DNS, Telnet, Ftp, что возможно в UWIN. Но все равно истинного UNIX'а или UNIX-клона (Linux, BSD, Sco Unix, Solaris, Irix, Aix, HP-UX) вам никто ни при каких условиях не заменит, т.к. очень много различий в структуре ядер Windows и UNIX.
А теперь выбирайте, устанавливать UWIN или CYGWIN на свой компьютер или нет.