Как из Windows сделать UNIXИсточник: rusdoc Крис Касперски
"Настоящий мужчина должен поставить 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 (в которой он работает) пробовала наложить на это дело лапу, но Дэвид, как настоящий программист, отстоял за собой право распространять продукт бесплатно. Зайдем на его домашнюю страничку (http://www.research.att.com/sw/tools/uwin), кликнем по ссылке download - и, ответив на множество пикантных вопросов (о поле, возрасте и месте проживания), попадем, наконец, на список предлагаемых файлов, которых так много, что немудрено и растеряться. Если вы не разработчик и не собираетесь программировать под unix (а если вы программируете под unix, с чего бы это windows оказалась на вашем компьютере?), то вам достаточно скачать лишь один из них: "uwin_base.win32.i386.exe" - восемь с хвостиком мегабайт, и заплатку, исправляющую многие ошибки, "uwin_base_update2_1. win32.i386.exe" - чуть больше двух мегабайт. Также нелишне разжиться хотя бы одной интерактивной оболочкой. Недурно зарекомендовал себя midnight commander - клон norton commander, написанный специально для unix. Без него пришлось бы общаться одной командной строкой и постоянно помнить множество мудреных команд. Скачать его можно со следующего ftp сервера - ftp://ftp.xraylith.wisc. edu/pub/khan/gnu-win32/uwin/ ports/mc-4.1.35-uwin2.0.tar.gz. Несмотря на "закрученное" расширение, с архивом вполне успешно справляется обыкновенный 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 (http:// sources.redhat.com/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 на свой компьютер или нет. |