Справочник хакера по Mac OS - Часть 1

Charles Miller, Dino Dai Zovi, “The Mac Hacker's Handbook - Part 1”, public translation into Russian from English More about this translation.

Translate into another language.

Я хотел бы посвятить эту книгу сообществу исследователей в области компьютерной безопасности и всем, кто увлечен улучшением уровня знаний об хакерских атаках и защите информации.

— Дино А. Даи Зови (Dino A. Dai Zovi)

Об авторах

Чарли Миллер (Charlie Miller) - главный аналитик компании Independent Security Evaluators(securityevaluators.com). Он был первым, кто публично создал удаленный эксплоит на iPhone и телефон G1 от компании Google на платформе Android. Он обнаружил уязвимости в многочисленных приложениях на различных операционных системах. Был победителем в конкурсе PwnToOwn 2008 года по взлому MacBook Air, пропатченного последними апдейтами. Он выступал на многочисленных информационных конференциях по безопасности и является автором книги "Fuzzing for Software Security Testing and Quality Assurance" ( издательство Artech House, 2008). Он был в списке 10 популярнейших хакеров 2008 года по версии журнала "Popular Mechanics", а также имеет докторскую степень Университета Нотр-Дам.

Дино Даи Зови (Dino Dai Zovi) - ведущий специалист в частной компании по информационной безопасности. Мистер Даи Зови, пожалуй, самый известный в области безопасности и Mac-сообщества, победивший на конкурсе Pwn2Own на CanSecWest 2007 года, где нашел и использовал новую уязвимость в Apple QuickTime для взлома за одну ночь MacBook Pro с полностью пропатченной системой. Ранее он специализировался на тестах проникновения в системы в компании Matasano Security, @stake и Sandia National Laboratories. Его приглашают с докладами на различные конференции по информационной безопасности во всем мире, он также соавтор книги "The Art of Software Security Testing: Identifying Software Security Flaws" (издательство Addison-Wesley, 2006 год) и назван одним 15-и наиболее влиятельных людей

в сфере информационной безопасности журналом eWEEK в 2007 году.

Благодарности

Я хотел бы поблагодарить свою жену Андреа (Andrea) за понимание, когда работал до поздней ночи, после того, как дети ложились спать. Я также хотел бы поблагодарить своих двух сыновей, Тео (Theo) и Леви (Levi), за то, что они есть и продолжают радовать меня. Наконец, я хотел бы поблагодарить Independent Security Evaluators за предоставление мне времени на исследование для этой книги. Спасибо Дэйву Айтелу (Dave Aitel), Томасу Птачеку (Thomas Ptacek), Томасу Дуллиену (Thomas Dullien) и Нейту МакФетерсу (Nate McFeters) - людям, которые потратили свое время на просмотр черновиков.

— Чарли Миллер (Charlie Miller)

Я хочу поблагодарить моих друзей за их поддержку и терпение пока я работал над этой книгой, отсутствуя в нормальной общественной жизни теплую половину года. Я также хочу поблагодарить сотрудников команды Apple Product Security за их внимание в отношении проблем безопасности, о которых я им сообщал в течении лет, так же как Apple за создание операционной системы и компьютеров, от работы за которыми получаешь удовольствие. Наконец, хочу поблагодарить помогавших нам обозревателей, Дэйва Айтела (Dave Aitel), Халвара Флэйка (Halvar Flake) и Томаса Птачека (Thomas Ptacek), за их советы и комментарии.

— Дино А. Даи Зови (Dino A. Dai Zovi)

Предисловие

Хорошо или плохо, но есть моменты в нашей жизни, которые мы можем представлять с поразительной ясностью. Иногда важные, а иногда банальные, мы способны полностью вспомнить эти фрагменты нашего прошлого, даже если мы не можем вспомнить день или обстоятельства. В моей жизни есть один момент, который я бы хотел назвать банальным, но правда в том, он был, наверное, более важным в становлении моей технической карьеры.

Припоминаю, что это было в ранних 1980-х годах, хотя по большому счёту не относится к делу. Родители моего лучшего друга на днях приобрели Apple II, и мой друг стал первым человеком, которого я знал, с компьютером в его доме. Однажды мы обратили внимание на стык на верху пластикового корпуса; мы сдвинули в сторону объёмный зелёный монитор и сняли верхнюю панель. Впервые мы всматривались во внутренности работающего компьютера. Это было определенно до выпуска WarGames, вероятно, прежде, чем я услышал о хакерстве, и задолго до того, когда слово "хакер" стало синонимом слова "преступник" в СМИ. Мы сняли ту верхнюю крышку и уставились на медные и черные детали на поверхности зелёной интегральной платы перед нами. Мы боялись коснуться чего-либо, но впервые, стены между аппаратной и программной частями пошатнулись из-за наших молодых умов, открывая новый мир возможностей. Это было то, что мы могли трогать, управлять и, конечно, ломать.

Моя юная компьютерная карьера начиналась с тех ранних компьютеров Apple (и Commodore). Мы тратили бесчисленные часы, изучая их внутреннюю работу; от Бейсика до бинарной математики и большинство из нас значительную часть играм (к слову, джойстик Apple был ужасен). Я рано понял, что ломать вещи приносит не меньшее удовольствие, чем их создание. Выявляя слабые места програмных продуктов и систем, изучая возможности их "согнуть, взломать или поломать", можно освоить их гораздо лучше, чем работая в заданных рамках.

Самый первый Mac, который я смог купить, был Mac Mini, приобретенный в основном для исследовательских целей. Я быстро понял, что Mac OS X является хакерским предметом восхищения среди операционных систем. Красота и опрятность сравнительная с моими многими годами в Windows, вместе с терминалом Unix нравилась. Эта коробка, на которой я мог запускать Microsoft Office, идущая с Apache по умолчанию и все еще содержащая все страницы man. Пока я копался в Applescript, plist'ах, DMG файлах и других деталях OS X я был поражен способностям операционной системы и огромным количеством доступных инструментов.

Я продолжал все больше использовать Mac, особенно после выхода Мас на Intel, начал "прощупывать их изнутри" от края до края. Я не волновался о вирусах, но как профессионал в области безопасности, я начал размышлять, было ли это просто удачей или было задумано изначально. Я прочел документацию Apple и сразу объективно осознал что не было достаточно хороших сведений о том как OS X работает с позиции безопасности, кроме некоторых руководств по настройке и маркетинговых материалов.

Позиция безопасности Mac изменилась совсем немного с тех пор как я приобрел тот первый Mac Mini. Чем Mac популярнее, тем внимательнее их изучают. Свичеры (пользователи переходящие с Windows на Mac OS X - прим. переводчика) приходят с вопросами и привычками, все больше исследователей по безопасности используют Mac в повседневной работе. Но несмотря на рост внимания, существует немного тематических ресурсов для тех, кто хочет повысить свой уровень и лучше понимать внутренние механизмы операционной системы, которой они доверяют.

Поэтому я был так взволнован, когда Дино, ранее упомянутый, и Чарли работали над этой книгой. Разрывая на куски внутренности Mac OS X и пробивая границы, чтобы разломать на части они только находят пути повышения безопасность платформы. Обычно книги по программированию и системные обзоры не рассматривают любую операционную систему в правильном ракурсе; нам нужно знать как что-то разрушить, чтобы впоследствии сделать это сильнее. И как любой ребенок (или хакер) скажу Вам, разломать что-нибудь это самый веселый способ изучить.

Если Вы профессионал в области безопасности, то эта книга один из лучших способов понять сильные и слабые стороны Mac OS X. Если Вы программист, эта книга не только поможет Вам писать более безопасный код, но и также поможет Вам в Вашей основной программной деятельности. Если Вы всего лишь энтузиаст Mac, Вы узнаете, как хакеры рассматривают выбранную нами операционную систему, и это улучшит понимание её внутренней работы. Надеюсь, разработчики в Apple будут использовать её, чтобы сделать Mac OS X еще более безопасной ОС; с каждой версией делая книгу устаревшей. Да, может быть некоторые плохие парни будут использовать книгу, чтобы написать некоторые эксплоиты, но преимущества от этих знаний намного превышают риски.

Для нас, хакеров, каждый из которых ограничен навыками, эта книга обеспечит ориентирами для исследования границ, нахождения недостатков и раскрытия новых возможностей. Для меня, это литературный эквивалент снятия той бежевой пластиковой крышки первого компьютера Apple моего друга детства и пристальный взгляд в его внутреннее устройство.

— Рич Могулл (Rich Mogull)

Редактор раздела Безопасности в TidBITS и Аналитик в Securosis

Введение

Пока Mac OS X продолжают выбирать все больше и больше пользователей, важно учитывать безопасность (или ненадежность) оборудования на котором она работает. С точки зрения безопасности, Apple показывает пример сравнительно привлекательного существования пока что. Компьютеры Mac OS X не подвергаются каким-либо значимым вспышкам вирусов или червей, делающих их сравнительно безопасной компьютерной платформой. Поэтому большинство людей ощущают себя более защищенными чем конкурирующие настольные операционные системы, такие как Windows XP или Vista.

Обзор книги и технологий

Эти ощущения безопасности подтверждены, или Mac OS X просто извлек пользу из его низкой распространенности до текущего момента? Эта книга даёт Вам возможность ответить на этот вопрос самостоятельно. Она предлагает инструменты и технологии, требуемые для тщательного анализа безопасности компьютеров, работающих под операционной системой Mac OS X. Она аккуратно и подробно описывает, что Apple сделала правильно в модели и исполнении своих программ, а заодно указывает на недостатки и слабости. Она учит, как атакующие рассматривают технологии Mac OS X, прощупывают слабые места, и успешно подвергают опасности систему. Эта книга не планировалась как проект для злобных атак, а скорее как инструмент для хороших парней, могущих изучить то, что плохие парни уже знают. Сообразительные испытатели и другие аналитики по безопасности могут и должны использовать информацию, чтобы определять риски и обезопасить Mac в его окружении.

Хранение в тайне недостатков системы безопасности не помогает никому. Важно понимать их и обращать внимание, и тогда будущие версии Mac OS X будут более безопасными. Также жизненно важно понимать сильные и слабые стороны безопасности операционной системы, если мы хотим защититься должным образом от атак, как сейчас, так и в будущем. Информация - это сила, и эта книга посвящает своих читателей в самый современные и актуальные исследования безопасности Mac OS X.

Как устроена эта книга

Эта книга разделена на 4 части, которые грубо разделены по действиям которые должен предпринять атакующий чтобы взломать компьютер: Фоновый режим, Уязвимость, Взлом и После взлома. Первая часть включает 1-3 глав, которые содержат вводный материал касающийся Mac OS X. Здесь же автор подчеркивает что отличает Mac OS X от других ОС, таких как: Linux и Windows и показывает инструменты которые будут нужны в последующих главах книги. Следующая часть книги состоит из 4-6 глав, которые описывают инструменты и технику необходимые для того чтобы определить уязвимость безопасности в ОС и программах запущенных на ней. 7-10 главы включают следующую часть книги. Эти главы иллюстрируют как атакующий может воспользоваться уязвимостями описанных в предыдущих главах и повернуть их в функционирущий эксплойт (вредоносный код, эксплуатирующий уязвимости программных компонентов компьютера), дающий им возможность нарушить нормальное функционирование системы безопасности уязвимых компьютеров. Главы 11 и 12 включают последнюю часть книги, которая описывает что может сделать атакующий после взлома системы безопасности компьютера и способы которые он может использовать для того чтобы установить длительный доступ к компьютеру со взломанной системой безопасности.

Глава 1 начинает книгу с основ архитектуры Мас OS X. В ней рассказывается как она появилась из BSD и о изменениях, которые были сделаны с того времени. Глава 1 дает первичное представление о многих инструментах, которые будут нужны в последующих главах книги. Она подчеркивает различия между Mac OS X и другими операционными системами, заботясь о демонстрации выполнения стандартной задачи, которая отличается между операционными системами. В конце-концов, она выделяет и анализирует некоторые улучшения безопасности реализованные в Leopard, текущей версии Mac OS X.

Глава 2 раскрывает несколько нестандартных протоколов и форматов файлов, которые используются в Mac OS X. Она описывает, как работает Bonjour, также просто как и взгляд изнутри на реализацию в Mac OS X mDNSResponder. Также в этой главе проводится анализ формат QuickTime-файлов и протокола RTSP, который используется QuickTime Player.

Глава 3 рассматривает какая часть процессов ОС подвергается атакам, известным как поверхность атаки. Атака начинается с детального изучения процессов которые запущенны по умолчанию в типичном компьютере под управлением Mac OS X и изучает трудности при атаке этих типичных служб. Далее рассматриваются атаки, выполняемые на стороне пользователя, код, который может быть запущен, если атакующий сможет заставить клиент-программу, такую как Safari, посетить сервер контролируемый атакующим.

Глава 4 погружает в мир отладки в среде Mac OS X. Она описывает, как проследить, что делает приложение внутри системы. Она освещает некоторые детали мощного механизма DTrace, который был представлен в Leopard. Описываются необходимые шаги для понимания информации показываемой code-coverage(есть такие программы - прим. переводчика) используя фреймфорк для реверсинга от Pai Mei.

Глава 5 демонстрирует, как обнаружить слабые места системы безопасности в программных продуктах для Mac OS X. Она рассказывает, как вы можете отыскать ошибки в исходном коде, который доступный от Apple или используя технику "черный ящик" fuzzing. Она содержит детальные инструкции для осуществления любого из этих методов. В довершении всего эта глава рассказывает о некоторых хитростях которыми воспользовалась Apple разрабатывая свои программные продукты, которые могут помочь в поисках ошибок о которых они даже не догадывались или возможность получить своевременное предупреждение о возможности таковых.

Глава 6 рассказывает о реверсинге в Mac OS X. Принимая во внимание то, что большинство кода в Mac OS X закрыто, в этой главе обсуждается как работает это программное обеспечение изнутри. Также она выделяет некоторые различия в реверсинге коде написанном на Objective-C, который является по умолчанию стандартным в Leopard

Глава 7 начинает рассказ о взломе систем безопасности компьютера. Она рассказывает о простейшей атаке переполнением буфера - переполнение стека. Она раскрывает как стек выводит из строя обе платформы- PowerPC и x86, и как с помощью переполнение буфера стека, атакующий может получить контроль над уязвимыми процессами

Глава 8 посвящена переполнению хипа (динамической памяти - прим. переводчика) другому типу эксплоитов (вредоносный код, эксплуатирующий уязвимости программных компонентов компьютера - прим. переводчика). Показываются способы, в которых перезапись хипа метаданными позволяет атакующему взять полный контроль над приложением. Заканчивается глава описанием того, как подготовить хип для перезаписи других важных данных приложения, чтобы взломать его.

Глава 9 посвящена шелкодам для эксплоитов. Что Вы сделаете теперь, когда Вы знаете, как получить контроль над процессом? Эта глава демонстрирует множество разнообразных шелкодов для обоих платформ, как PowerPC, так и x86, упорядоченных от самого простого к сложному уровню.

Глава 10 раскрывает реальный мир взлома, демонстрируя большое количество сложных статей о взлома, включая многие углубленные обзоры взломов для Tiger и Leopard для обоих платформ PowerPC и x86. Если Главы 7-9 были теорией атак, то эта глава - практическая сторона атак.

Глава 11 о том, как внедрить код в запущенный процесс, используя специфические для Mac OS X способы перехвата. Это приводит к тому, что весь код записывается и запускается как полезное приложение. Также в этой главе содержатся интересные примеры кода, показывающие, что атакующий может сделать, включая подглядывание во время сессий iChat и чтение расшифрованного сетевого трафика.

Глава 12 посвящена руткитам или, другими словами, коду, который позволяет хакеру закрепиться во взломанной системе и скрыть следы своей деятельности. Глава описывает, как написать базовый драйвер на уровне ядра, и переходит к примерам, которые помогут скрыть файлы от доверчивых пользователей на уровне ядра. Заканчивается эта глава обсуждением специфических для Mac OS X способов внедрения руткитов, включая скрытие в ядре Mach RPC-сервера, сетевых расширений ядра для удаленного доступа и руткитов, работающих в режиме гипервизора на основе технологии VT-x, для лучшего скрытия взлома.

Для кого эта книга

Эта книга была написана для широкого круга читателей, от Mac-поклонников до заядлых исследователей систем безопасности. Те читатели, которые хорошо ознакомленны с работой в Mac OS X, но при этом хотят больше узнать о системной безопасности, могут перейти сразу к Главе 4. С другой стороны, исследователи систем безопасности могут найти для себя много полезного в первых нескольких главах, в которых рассказывается как использовать навыки работы в OS X, которыми они уже обладают.

Книга может быть проще для понимания, если вы имеете некоторый опыт в программировании или администратировании компьютеров с Mac OS X, но имение этого опыта не является обязательным. Книга начинается с самих основ и медленно подводит к более сложным темам. В ней хорошо проиллюстрированы пункты, которые приведены со множеством примеров, и чётко описано, как выполнить требуемые шаги. Книга уникальна в том, что любой человек с энтузиазмом по данной теме может взять и начать читать её, и к концу читатель будет иметь знания мирового класса по безопасности Mac OS X.

Инструменты, которые вам понадобятся

По большому счёту, всё, что вам нужно для работы по этой книге, - это компьютер с установленной Mac OS X Leopard. Несмотря на то, что большинство методов и примеров будут работать в более ранних версиях Mac OS X, они разработаны преимущественно для Leopard. Чтобы выполнять методы, иллюстрированные в Главе 6, вам потребуется последняя версия IDA Pro. Это платный инструмент, который работает в Windows(на VMware Fusion тоже всё замечательно работает - прим. переводчика) и может быть куплен по адресу http://www.hex-rays.com. Остающиеся инструменты вы можете найти на дополнительных дисках, как например Xcode.

Что можно найти на странице издателя?

Эта книга включает множество примеров кода. Маленькие и умеренного размера примеры включены прямо в книгу. Но чтобы избавить Вас от набора их самостоятельно, все примеры кода также доступны для загрузки по адресу www.wiiey.com/go/machackershandbook. Дополнительно, некоторые длинные примеры кода, которые не включены в книгу также доступны на этом сайте, как любые другие инструменты разработанные для этой книги.

Финальные заметки

Мы приглашаем Вас углубиться и начать читать. Мы думаем, в этой книге есть что-нибудь для каждого, кто любит Mac OS X. Я знаю, мы изучили многое в исследовании и написании этой книги. Если у Вас будут комментарии, вопросы, гневные письма, или что-нибудь еще, пожалуйста черканите нам строчку и мы будем рады обсудить нашу любимую операционную систему с Вами.

Основы Mac OS X

Архитектура Mac OS X

Эта глава начинается с рассмотрения основ системы Mac OS X. Это включает в себя общую архитектура ситемы и инструменты, необходимые для работы с ней. Затем в нем рассматриваются некоторые усовершенствования безопасности, которые были включены в версию 10.5 "Leopard", самой последней версии Mac OS X. Многие из этих тем будут обсуждаться в деталях на протяжении всей книги.

Основы

Перед тем, как перейти к инструментам, методам и безопасности Mac OS X, нам нужно обсудить, как всё это работает. Чтобы понимать детали Leopard, Вам нужно сначала разобраться, как это устроено. Как показано на рисунке 1-1, Mac OS X устроена как серии слоев, включающих ядро XNU и ОС Darwin, находящиеся на нижнем уровне и интерфейс Aqua с графическими приложениями на верху. Важные компоненты будут обсуждаться в дальнейшем.

Графический элемент

Ядро XNU

Сердце Mac OS X это ядро XNU. XNU в основном составлен из микроядра Mach (обсуждается в следующем разделе) с некоторыми дополнительными возможностями из систем BSD. XNU отвечает за "драйверную" среду выполнения, называемую I/O Kit. Мы поговорим о ней более детально в следующих разделах. XNU входит в состав пакета Darwin, поэтому весь исходный код свободно доступен. Следовательно, возможно установить ядро, используемое в Mac OS X, на любой машине с поддерживаемым "железом".

С точки зрения исследователей по безопасности Mac OS X больше похож на FreeBSD с красивыми окнами и большим количеством разнообразных приложений. В особенности, приложения, написанные для систем BSD, могут быть выполнены и под Mac OS X без каких либо модификаций. Все привычные инструменты, используемые в BSD, доступны в Mac OS X. Однако, тот факт, что ядро XNU содержит весь код Mach означает, что когда-нибудь, когда вы копнете очень глубоко, вы найдете много отличий, которые, возможно, вызовут некоторые проблемы и вы сможете использовать в ваших собственных целях. Мы еще обсудим некоторые важные отличия вкратце. За более детальной информацией обратитесь к книге "Mac OS X Internals: A Systems Approach" (издательство Addison-Wesley, 2006 год).

Микроядро Mach

Ядро Mach было разработано в университете Карнеги-Меллона Риком Рашидом(Rick Rashid) и Аве Теванианом(Avie Tevanian), разработано для UNIX-совместимых операционных систем еще в 1984 году. Одной из своих основных целей разработки заключалась в том, чтобы быть микроядром, то есть, чтобы свести к минимуму объем кода выполняется в ядре, выполнять многие типичные функции ядра, как например, управление файловой системой, сетевым стеком и системой ввода-вывода (I/O), выполнять задачи на уровне пользователя. Ранее UNIX системы построенные на ядре Mach выполняли отдельные серверные задачи. Однако в Mac OS X, Mach и BSD код работает в одном адресном пространстве.

В XNU Mach выполняет многие низкоуровневые операции, за которые отвечает ядро, как например распределение времени процессора, многозадачность, управление виртуальной памятью.

Подсистема BSD

Ядро также включает в себя большой кусок кода, доставшийся от FreeBSD. Как было упомянуто ранее, этот код работает как часть ядра наряду с Mach и использует такое же адресное пространство. Код FreeBSD в пределах XNU может значительно отличаться от оригинального, так как пришлось сделать изменения для совместной работы с микроядром Mach. Код от FreeBSD обеспечивает широкий спектр системных потребностей, таких как:

■ Процессы

■ Сигналы

■ Базовую безопасность, такую как пользователи и группы

■ Инфраструктура системных вызовов

■ Стек TCP/IP и сокеты

■ Файрвол и пакетную фильтрацию

Чтобы осознать, насколько сложно взаимодействие между двумя "наборами" (ядром Mach и кодом BSD - прим. переводчика), рассмотрим, что такое фундаментальная единица выполнения. В BSD фундаментальная единица - это процесс. В Mach - это Mach-поток. Данное несоответствие решено связыванием каждого процесса BSD с Mach-заданием (набором ресурсов, которые позволяют Mach-потокам исполняться - прим. переводчика), состоящим только из одного Mach-потока. Когда системная функция BSD fork() вызвана, код BSD в ядре использует вызовы микроядра Mach, чтобы создать структуру из задачи и потока. Заметим, что Mach и BSD имеют различные модели безопасности. Модель безопасности Mach основана на "портовых" правах, а модель BSD основана на собственности процесса. Несоответствия между этими двумя моделями возникли в некоторых локальных уязвимостях, называемых "эскалация привилегий". Кроме того, у микроядра Mach есть "ловушки", позволяющие программам уровня пользователя обращаться к ядру.

Фреймворк I/O Kit

I/O Kit - свободный, объектно-ориентированный, драйверный фреймворк в ядре XNU, который отвечает за добавление и управление динамически загруженными кекстами (драйверов в Mac OS X - прим. переводчика) устройств. Эти кексты позволяют построить модульную модель, динамически добавляемую в ядро для использования, например, разного аппаратного обеспечения. Доступные кексты обычно находятся в директории /System/Library/Extensions/ или подкаталоге. Команда kextstat покажет нам все загруженные на данный момент кексты,

$ kextstat

Здесь перечисляются кексты системы, неважно что они в нечитабельном виде, в переводе будет все читабельно. Это для примера было добавлено, ориентируемся по своей системе или pdf файлу))

Against>

1 1 0x0 0x0 0x0 com.apple.kernel (9.3.0)

2 55 0x0 0x0 0x0 com.apple.kpi.bsd (9.3.0)

3 3 0x0 0x0 0x0 com.apple.kpi.dsep (9.3.0)

4 74 0x0 0x0 0x0 com.apple.kpi.iokit (9.3.0)

5 79 0x0 0x0 0x0 com.apple.kpi.libkern

(9.3.0)

Многие из записей в листинге загружены по адресу ноль. Это значит что, они - часть ядра и не яляются настоящими кекстами, то есть, они не могут быть выгружены из системы. Первый "настоящий" драйвер нод номером 17 (смотрим pdf файл-прим. переводчика).

Кроме команды kextstat есть другие функции, которые Вам нужно будет знать для загрузки и выгрузки этих кекстов. Предположим, Вы хотите найти и загрузить кекст, связанный с файловой системой MS-DOS. Первое, Вы можете использовать команду kextfind для нахождения корректного кекста.

$ kextfind -bundle-id -substring 'msdos' /System/Library/Extensions/msdosfs.kext

Теперь, когда Вы знаете полное имя кекста, Вы можете загрузить его в пространство ядра.

$ sudo kextload /System/Library/Extensions/msdosfs.kext

kextload: /System/Library/Extensions/msdosfs.kext loaded successfully

Кажется, всё загрузилось успешно. Вы можете проверить, куда он загружен.

$ kextstat | grep msdos

126 0 0x346d5000 0xc000 0xb000

com.apple.filesystems.msdosfs (1.5.2) <7 6 5 2>

Под номером 126 наш загруженный кекст. Есть нулевые ссылки на него (не удивляйтесь, так должно быть). Кекст был загружен по адресу 0x346d5000 и имеет размер 0xc000. Этот кекст занимает 0xb000 байт ядерной памяти. Следующее поле в списке - это имя и версия кекста. Также показывается список индексов других ядерных дополнений, на какие ссылается этот кекст, в данном случае, при просмотре полного листинга команды kextstat мы видим, что он ссылается на "неподдерживаемые" mach, libkern и драйвера bsd. Наконец, мы можем выгрузить кекст.

$ sudo kextunload com.apple.filesystems.msdosfs

kextunload: unload kext /System/Library/Extensions/msdosfs.kext succeeded

Darwin и друзья

Одно ядро без приложений не очень удобно для пользования. Вот тогда приходит на помощь Darwin. Darwin - это открытая базовая часть Mac OS X без интерфейса Aqua. В основном, это все те части Mac OS X, исходный код которых доступен. Код упакован в виде пакета, который легко установить. Есть сотни доступных пакетов Darwin, такие как X11, GCC и другие инструменты GNU. Darwin предоставляет много приложений для Mac OS X, которые Вы, возможно, уже использовали в системах BSD или Linux. Apple потратила много времени на объединение всех этих компонентов в своей операционной системе, чтобы каждый хорошо без сбоев работал и, если возможно, имел внешний вид, стандартный для всей системы.

С другой стороны, многие части системы Mac OS X не являются открытыми. Для человека, только что запустившего Darwin, главной отсутствующей частью станет Aqua, графический интерфейс Mac OS X. Кроме того, большинство из высокоуровневых приложений, таких как Safari, Mail, QuickTime, iChat, и т.д., не являются открытыми (несмотря на то, что некоторые из их компонентов - открыты). Интересно, что эти "закрытые" приложения часто зависят от компонентов с открытым исходным кодом, например, Safari зависит от WebKit, компонента для рендеринга HTML и JavaScript. Возможно, по этой причине, Вы обычно имеете больше символов в этих приложениях при отладке, чем в окружении Windows.

Pages: ← previous Ctrl next
1 2 3 4 5 6 7

© Copyright 2009 by Wiley Publishing, Inc., Indianapolis, Indiana

Original (English): The Mac Hacker's Handbook - Part 1

Translation: © r00t, don_vl, iVic4u, MSVG, firefly, Rasseyanin, HeDD, geniy111, Roskov, tdr, Turbo-Roman, isoy, skazkin, crombellgerr, 21usekir .

translated.by crowd

Like this translation? Share it or bookmark!