Пользователь
0,0
рейтинг
23 марта 2010 в 01:58

Исходники Windows Research Kernel в свободном доступе

Что же такое Windows Research Kernel?


Windows Research Kernel содержит исходные коды основной части ядра Windows (NTOS).
NTOS реализует базовые функции операционной системы для:
  • процессов;
  • потоков;
  • виртуальной памяти и менеджеров кэшей;
  • управления вводом/выводом;
  • реестра;
  • исполнительных функций, таких как куча (heap) ядра и синхронизация;
  • менеджера объектов;
  • механизма локального вызова процедур;
  • низкоуровневого управления CPU (планирование потоков, асинхронные и отложенные вызовы процедур, обработка прерываний/ловушек, исключения).


Слой аппаратной абстракции (HAL) NT, файловые системы, сетевые стеки и драйверы устройств реализованы отдельно от NTOS и загружаются в режиме ядра как динамические библиотеки. Исходные коды для этих динамических компонентов не включены в WRK. Однако, некоторые из них доступны в различных пакетах разработчиков, опубликованных Microsoft, таких как набор устанавливаемых файловых систем (IFS) и набор для разработки драйверов (DDK) Windows.
WRK включает большую часть исходных кодов NTOS ядра из последней выпущенной версии Windows, поддерживающей архитектуру x64 для настольных систем. Исходные коды ядра, исключённые из набора, в основном относятся к Plug-and-Play, управлению энергопотреблением, верификатору устройств, интерфейсу отладки ядра и виртуальной машине DOS. Основные модификации выпущенного ядра для WRK касаются вычистки и исключению поддержки серверов, как, например, кода, относящегося к Intel IA64.
WRK в основном предназначается для факультетов и преподавателей, работающих в области операционных систем, кто разрабатывает курсы, пишет учебники и хочет включить информацию о ядре Windows, основанную на действующем исходном коде.
WRK включает среду для сборки/тестирования и бинарные файлы для исключённых компонентов исходного кода, которые могут быть использованы, чтобы собрать полнофункциональные NTOS ядра для последующей установки на Windows Server 2003 для x86/x64 и Windows XP x64.

Об ограничениях на распространение данного продукта, имеющего непосредственное отношение к инициативе Microsoft Shared Source, лучше прочитать на сайте Microsoft. (Но вы же сейчас читаете данный пост не ради них?)

Некоторую дополнительную информацию о WRK можно подчерпнуть из презентации “Windows Research Kernel: Source overview & project” одного из архитекторов ядра Windows, датированной аж 2006 годом.


Скачать архив с WRK можно по одной из следующих ссылок:
http://stream.ifolder.ru/16935960
http://rapidshare.com/files/366899572/Windows_Research_Kernel_sources_.rar.html
http://depositfiles.com/files/176ifc7ua
http://www.sendspace.com/file/lozxju
http://hotfile.com/dl/34096487/8c972ed/Windows_Research_Kernel(sources).rar.html
Lux In Tenebris @Lux_In_Tenebris
карма
38,5
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое

Комментарии (111)

  • 0
    Круто на самом деле.
    Это событие говорит о том, что работы над MinWin не просто продолжаются полным ходом, а уже однозначно достигли стабильных результатов следующих этапа по сравнению с тем, что был показан на момент релиза Win7; ну а причесанные исходники подготовительных этапов теперь не стыдно и продемонстрировать :)
    • –6
      Это тут причем? Обычное привлечение сторонних разработчиков. Я бы не стал делать выводы только из того, что эти сырцы осмелились выложить.
      А вообще такие штуки несолидно на быдлофайлопомойках раздавать.
      • НЛО прилетело и опубликовало эту надпись здесь
    • +4
      Там есть код синего экрана смерти? Я хочу видеть это
      • +16
        base\ntos\ke\bugcheck.c:
        VOID
        KiDisplayBlueScreen (
            IN ULONG PssMessage,
            IN BOOLEAN HardErrorCalled,
            IN PCHAR HardErrorCaption,
            IN PCHAR HardErrorMessage,
            IN PCHAR StateString
            );
        

        Правда, она является external, и код самой функции находится в каком-то уже собранном объектнике (да, эти исходники не поные).

        В Windows 2000 именно этой функции нет, и BSoD выводится непосредственно в коде KeBugCheckEx:
                 if (!hardErrorCalled) {
                    sprintf((char *)Buffer,
                            "\n*** STOP: 0x%08lX (0x%p,0x%p,0x%p,0x%p)\n",
                            BugCheckCode,
                            BugCheckParameter1,
                            BugCheckParameter2,
                            BugCheckParameter3,
                            BugCheckParameter4
                    );
                    InbvDisplayString((char *)Buffer);
        
                    KeGetBugMessageText(BugCheckCode, NULL);
                    InbvDisplayString("\n");
        
                    if (KiBugCheckDriver != NULL) {
        
                        //
                        // Output the driver name.
                        //
        
                        KeGetBugMessageText(BUGCODE_ID_DRIVER, NULL);
                        InbvDisplayString(AnsiBuffer);
                        InbvDisplayString("\n");
                    }
        
                } else {
                    if (HardErrorCaption) {
                        InbvDisplayString(HardErrorCaption);
                    }
                    if (HardErrorMessage) {
                        InbvDisplayString(HardErrorMessage);
                    }
                }
        
        

  • НЛО прилетело и опубликовало эту надпись здесь
  • –4
    Залейте на Letitbit, будьте добры.
    • 0
      Что не так? Можете себе представить, на Хабр всё ещё заходят люди у которых NAT, которым слова рапида/депозит внушают тоску.
      • +1
        Чем плохи iFolder и SendSpace в таком случае?
        • 0
          Ничем, но кому-то может привычней Letitbit.

          Просто до сегодня о SendSpace не слышал, а iFolder не люблю из-за рекламы.
          • 0
            из наиболее беспроблемных файлообменников можно назвать ещё MediaFire, но честно говоря как-то забыл на него залить
            • 0
              Вообще надо-бы перебрать все современные файлообменники на предмет ам/кг, пригодится.
  • –5
    это чё, исходники NT 5.2?! O_o
    • –7
      4.0
      • 0
        «The WRK packages core Windows XP x64 and Windows Server 2003 SP1 kernel source code...»
        XP x64 как раз 5.2. или я что-то путаю?
        • 0
          да, не прошло и шести лет. Видно этот код вообще уже не используют раз выложили.
        • –4
          это была ирония
        • –1
          Да, вы что-то путаете, у XP версия 5.1, 5.2 — это 2003.
          • +3
            а у XP x64 — 5.2
            • 0
              А ведь точно, пардон)
  • +8
    и под какой лицензией они выложены?
    а то может на них и смотреть нельзя
    • –3
      было бы действительно нельзя — не утекло бы ;-)
      • –2
        оно никуда и не утекало.
        В принципе код к устаревшим виндам всегда можно было получить через образовательные программы Майкрасофта под этими исследовательскими лицензиями.
        кто хотел, давно ознакомился.
        • 0
          код к устаревшим виндам всегда можно было получить

          Покажите, что можно получить, кроме огрызков ядра?

          Под «утекло» я подразумевал «попало в свободный доступ». Далеко не каждому захочется косить под учебное заведение, чтобы покопаться в исходниках.
          Для Microsoft, видимо, идеологически неприемлемо сделать просто open source для всех без ограничений, поэтому выдумывают всякую сдерживающую хрень.
          • 0
            ну навеное это и есть эти огрызки. ну теперь легче достать.
            ну просто open source они сделать врятли смогут, даже если захотят. Да идеология мешает.
            • –5
              Какая к чертям идеология! Там стопудово не только наработки Microsoft, но и третьих фирм. А это лицензии, патенты и прочая, прочая. От всего этого обычно страдают даже изначально открытые ОС, чего уж говорить о коммерческой Windows! Даже если ВНЕЗАПНО главой Microsoft станет RMS, Windows скорее погибнет, чем станет открытой.
              • –4
                а зачем ее делать открытой?

                чтобы вирусы стало писать проще?

                чтобы в суд подавали из за каждого куска кода, который был повзаимствован у кого то?

                чтобы появилось кучу клонов-конкурентов?
                • +3
                  Надеюсь вы это написали от добросовестного заблуждения, а не от желания потроллить.
                  > а зачем ее делать открытой?
                  Этот вопрос в компетенции Microsoft, а не моей. Они и так открывают что могут. Единственное что мне лично могут не нравится открытые лицензии MS, но это уже мои проблемы.
                  > чтобы вирусы стало писать проще?
                  Хорошего-же вы мнения о коде Microsoft. Даже сейчас, злоумышленнику не составит труда найти исходники Windows. Однако в случае открытия кода под подходящей лицензией, скорее всего будут появляться не только вирусы, но и третьесторонние заплатки от них.
                  > чтобы в суд подавали из за каждого куска кода, который был повзаимствован у кого то?
                  Фактически вы обвиняете Microsoft в воровстве? Если это так, то суд — это справидливо. Но скорее всего чужой код там лицензирован, что препятствует полному открытию кода, однако в случае решения этой проблемы, иски подавать будет не за что.
                  > чтобы появилось кучу клонов-конкурентов?
                  Кому от этого будет плохо, интересно знать? Дистрибутивов Linux дофига и больше, и ничего — живет и развивается.

                  Но вообще-то, открытие кода Windows — это фантастика. Я говорю о нем только с позиции «что было-бы если...». Думаю, что переоформить такую прорву соглашений не реально. Может лет через 20.
                  • 0
                    А вы думали о том, что вместе с третьесторонними заплатками для одних дыр очень соблазнительно запихнуть собственный бекдор/руткит?
                    • 0
                      Ну вообще-то, open source — это не анархия. Софт устанавливается как правило с сайта производителя ПО, или из репозитория дистрибутива. Производитель не станет портить себе репутацию, а в репозитории дистрибутива — довольно жесткая модерация. Что касается совсем уж левых приложений, то дисочки типа «Zver», разумными людьми не используются и в нашей реальности.
                    • +1
                      Что-то не наблюдаю вала вирусов ни под Макось (ядро открытое), ни под Линукс, ни под Фряху.
                      • +1
                        доля рынка сказывается
                        • –1
                          Компов с макосью счас больше, чем десять лет назад было с виндой, ничего такого я не замечаю.
                          • +1
                            Почитайте как-нибудь какие ошибки чинятся обновлениями безопасности для макоси. Там 70% это уязвимости типа «arbitrary code execution». Просто макось — она как неуловимый Джо, зачем писать под неё, когда под Винду уже всё наработано и пользователей на порядок больше.
                            • 0
                              До 10 процентов в некоторых странах это уже далеко не неуловимый Джо.
                  • 0
                    >Кому от этого будет плохо, интересно знать? Дистрибутивов Linux дофига и больше, и ничего — живет и развивается.

                    самой же microsoft и будет плохо

                    зачем создавать конкурировать со своими же продуктами?

                    >Дистрибутивов Linux дофига и больше, и ничего — живет и развивается.

                    так Linux же бесплатный.
                    • 0
                      *создавать конкуренцию
                    • 0
                      >так Linux же бесплатный.

                      RedHat, SLED, SLES? Стоят не меньше Винды
                    • 0
                      > зачем создавать конкурировать со своими же продуктами?
                      О, во-первых это хороший посыл к повышению качества ОС. Во вторых, что-бы сделать вывод, достаточно посмотреть как обстоят дела у других: Так RedHat Enterprise Linux отлично продается, не смотря на открытые исходники из которых создается полный клон — CentOS
                      > так Linux же бесплатный.
                      Однако основными поставщиками кода служат производители коммерческих дистрибутивов.
                      Думаю что в НФ про Open Windows, версия Home без поддержки будет бесплатной, Ultimate и Server, вероятно, будут приносить даже большую прибыль.
                      • 0
                        ок. посмотрим что будет

                        • 0
                          Боюсь, ничего не будет. Как я уже говорил, это только фантазия на тему «что было-бы если...». Когда-нибудь, когда линейка Windows NT станет историей, истекут патенты, может исходники Winows и станут общественным достоянием. Но мне тогда будет наверно уже за 80, да и толку от них будет как от эмулятора Spectrum'а :)
        • 0
          Да и не только к устаревшим. Исходники винды были доступны и актуальные. Вон, знакомые рассказывали, как организована работа с ними в одном израильском вузе — страшное дело. Все изолировано, никакие гаджеты в комнату проносить с собой нельзя, компы опечатаны, без портов, отдельная сетка и т.п.
    • +1
      Смотреть можно. Но судя по тому, что написано в 1п лицензии, после этого ты не имеешь права создавать конкурирующие продукты. Ну, вобщем «открытый» код так, как его понимают в MS.
  • +1
    Еще вроде как утечка была и в сети выложили файлы windows_nt_4_source_code.zip (229 Мб) и windows_2000_source_code.zip (203 Мб). Не знаю насколько законно публиковать магнет-ссылки, но думаю в инете найти эти файлы не проблема. Баян, но может кому интересно будет.
    • +1
      Например: thepiratebay.org/torrent/3497574/Windows_2000_source_code

      Очевидцы сетуют, что полных исходников ни одной версии Windows ещё ни разу не утекло. Только всякие обрезки.
    • 0
      И ещё NT4 до кучи.
      thepiratebay.org/torrent/4149808/Windows_NT4_source_code

      Не знаю, насколько законно публиковать http-ссылки.
      • +2
        это же просто ссылки, док! :)
        так же как и торренты сами по себе не содержат ничего конкретного
        • 0
          Привет из 2016 года!
  • +2
    А не реакция ли это на то, что на данный момент все те, кто хотят понять, как работает ядро NT, лезут смотреть коды ReactOS, [вместо того|вместе с тем], чтобы читать MSDN?
    • 0
      Что в ReactOS есть такого, о чём ещё не писали в книжках по внутреннему устройству Windows?
      • +3
        Работающая модель ядра.
      • +4
        Все кто действительно хотят понять как работает ядро, копаются в нем.

        В Windows куча недокументированных функций ядра, которые не пишут в книжках. Их нужно находить дебаггером ring0 либо читать мануалы в интернете, благо умных людей много.
        • 0
          Да, как раз хотел упомянуть про дебаггеры и дизассемблеры. Привет реверсерам! :)
          Уверен, кто очень хотел — давно разобрал ядро по косточкам.
          • +2
            В таком случае ReactOS давно бы уже вышел из альфы.
            • +2
              ReactOS это не только ядро.
              • 0
                Да, но, почитывая NewsLetters, складывалось впечатление, что основные проблемы у них в ядерной и околоядерных областях. Хотя, в их новостях не подкованному в этой теме человеку не так легко всё понять =).
                • +1
                  Ядро как раз сейчас более-менее стабилизировалось. Множество проблем до сих пор присутствует в подсистеме win32, но и для этого нашли workaround.
          • +9
            Уверен, кто очень хотел — давно разобрал ядро по косточкам.
            Как бы вам сказать помягче… дебажить «Hello Wold» и ковырять ядро ОС, это не одно и тоже.
  • 0
    Автор, нельзя ли написать, по какой причине исходники Windows Research Kerne оказалисьl в свободном доступе? Что это, утечка или добрая воля майкрософта? До хабраката нифига не понятно, а дальше уж слишком техническое описание.
    • +3
      ReactOS уже почти дописали, в MS поняли, что пролетают, вот и зашевелились. ;-)
    • +1
      Это добрая воля MS. Не смотря на обилие ссылок на рапидшары, архив можно скачать с сайта MS, залогинившись под LiveID и приняв соглашение.
  • 0
    Microsoft активно использует goto в этом продукте. Хоть ни разу не писал дрова на си, только на асме, подозреваю, что в низкоуровневом коде писанном на ЯВУ без него тоже сложно обойтись. Я прав?
    • +3
      Я ни разу еще в системном коде, тем более в своих дровах не применял goto. Собственно и не в системном коде применял только, когда осваивал qbasic
      • 0
        Ух ты! А как насчёт алгоритмов которые невозможно реализовать эффективно без goto? Прежде всего это конечно же выходы из вложенных циклов. Плюс, разбор протоколов и всякого рода структур, где можно конечно применить и массу функций, но сильно потеряете в производительности на передаче параметров.
        • +1
          Я не помню, чтобы в последнее время писал циклы с вложенностью больше двух. Goto иногда бывает оправдан, но у меня пока таких случаев не возникало.
          • +1
            Если код с goto будет проще, короче, понятнее, то стоит его применять! Тем более, что он ещё и быстрее будет
    • +2
      В C и C++ есть некая недоработка — невозможность выхода / continue из вложенного цикла. Для этого применяется goto.
      • –7
        А флаги уже не модно?
        • 0
          И проверки на каждом уровне цикла, да ещё и в каждой итерации? :) смешно. Особенно для ядра, где производительность наиболее видна.
          • –6
            Ну ядро, это конечно особый случай, а так, с флагами все по крайней мере ясно видно, где вход, а где выход. А я всегда предпочитаю ясность кода скорости.
            • +5
              чукча не читатель, чукча писатель
          • 0
            Кстати, потери не такие уж большие, т.к. во внутреннем, самом часто повторяющемся цикле цикле проверка есть всегда, а внешние по определению повторяются реже. Зато в любом цикле видно, как происходит выход из цикла.
            • 0
              Во внтуреннем (каждом внутреннем) добавляется как минимум одна дополнительная проверка. Т.е. кол-во проверок как минимум удваивается. Если же учесть, что простые циклы (со счётчиком или одной проверкой) очень эффективно оптимизируется компилятором, а две проверки оптимизируются намного хуже (ничего тут не поделаешь — одна проверка — это одна или две команды ассемблера, а две проверки могут вылиться в десяток), то потеря на проверках больше чем в два раза. Плюс добавьте дополнительную нагрузку на блоки предсказаний процессора — эта дополнительная проверка может стать той самой каплей, которая переполнит память переходов/возвратов, то потеря производительность может стать совсем заметной.
              Короче говоря, порочная это логика, особенно для ядра.
              • 0
                > Во внтуреннем (каждом внутреннем) добавляется как минимум одна дополнительная проверка.

                Вот в этом месте я не понял, почему дополнительная проверка? На мой взгляд, нет ее. Пусть нужно выйти из внутреннего цикла.
                Вот кусочки псевдокода, как я понимаю:

                1) C GOTO:
                if(condition) {
                goto label;
                }


                2) С флагом:
                if(condition) {
                exit_flag = True;
                break;
                }


                Во внутреннем цикле добавляется ровно одна инструкция. Причем лишней проверки в условии внутреннего цикла тоже нет, из внутреннего выходим по команде break;
                • 0
                  Проверка exit_flag на каждой итерации.
                  • 0
                    Из самого внутреннего цикла выходим по брейку. Т.е. во внутреннем (самом критичном!) проверять exit_flag не нужно.
        • 0
          Флаги — это паттерн. А конструкции языка вроде labeled break и labeled continue — нету. Использование флага для выхода из сложенного цикла по многих случаях — много лишнего кода. Поэтому используют goto. BTW, это тот самый единственный случай, когда goto использовать можно и нужно. Об этом сам Дейкстра в своем «goto label considered harmfull» писал :).
          • +1
            Чем labeled break принципиально отличается от goto?
            • 0
              При умелом использовании goto, с его помощью можно прострелить себе ногу, руку, голову… Labeled break и nested break лишины такой… э… гибкости использования ^_^
              • 0
                Во-первых, не фиг лезть в ядро с такими умениями.
                Во-вторых, не фиг применять то, что применять не умеешь — прострелить себе голову можно массой других не менее болезненных способов — начиная от неверного приведения типов. Рассчитывать системный язык программирования на идиотов довольно странно — идиоты могут пользоваться специальными языками для идиотов.
                И вообще странный подход — «Кто-то по слабоумию может это применить не правильно, так давайте, нахрен, запретим такую возможность и пусть все мучаются, зато идиотам легче будет»
                • 0
                  Не совсем понимаю о чем Вы. Вопрос был про принципиальную разницу между goto и labeled break / nested break. Goto — решение конкретной задачи универсальной конструкцией языка, labeled break и nested break — решение конкретной задачи специализированной конструкцией языка. На кого рассчитан системный язык программирования, дизайн языков, паттерны проектирования — это как бы не в этой ветке наверное?
    • +2
      kerneltrap.org/node/553/2131 (ссылка про использование goto в ядре Linux, но в данном контексте неважно).
    • +5
      читайте Linux Kernel Coding Style там ясно рекомендуют использовать goto в некоторых случаях
  • –6
    Это в хоть каком-то виде работает?
  • –1
    скажите мне, аццкие прогеры, кто-нибудь из присутствующих смотрел профессиональным взглядом на этот код? Как он? Не позорный?
    • –1
      так а разница.

      главное чтобы программисты microsoft в нем могли разобраться.

      а если и позорный. то что? лишний повод постебаться над microsoft?
      • +2
        ну например скажут гуру-сишники, что код MS гениален и всякие линукс кернелы рядом не валялись, будет очередной повод для аццкого холивара. )
  • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      Всем только лучше будет — расширение рынка несистемных приложений от MS, расширение возможностей для пользователей, ну и техноологии продвинутся сколько-то :)
    • 0
      А зачем вайновцам ведро? Это скорее для всяких ndiswrapper'ов будет полезно
  • 0
    в коде не используется их 'любимая' венгерская нотация. или это слишком старый код?
    • 0
      С чего вы взяли, что она их 'любимая'? Coding guidelines на msdn советуют не использовать венгерскую нотацию.
      msdn.microsoft.com/ru-ru/library/ms229045.aspx
      Четвертым пунктом, если быть точным
      • 0
        На дату документа поглядите :) Это гаэдлайн за 2007, и он касается .net-технологий. MFC и ATL, например, как и WTL, и ядро Win, полон венгерской нотации
    • +3
      Венгерская нотация кстати бывает разная, даже в MS, об этом когда-то хорошо написал Joel Spolsky в статье Making Wrong Code Look Wrong (доступна также на русском).
  • НЛО прилетело и опубликовало эту надпись здесь
    • +1
      А смысл? Проще заразить бинарник активного ядра, которое уже есть в системе (что, кстати, неоднократно встречалось в malware, имевшей распространение in the wild).
      Кроме того, с собранным из этих исходников ядром можно загрузить ОС в виртуальной машине, и дебажить/трейсить внутренности ядра по С-шным исходным текстам в удалённом отладчике. Вобщем, весьма полезная штука не только для bad guys, но и обычных разработчиков драйверов режима ядра.
  • 0
    Хитрый ход
  • –2
    Why so slow?
    С помощью google все, кому это было нужно, находили линки на эти исходники ещё года этак с три назад.
    • –1
      Три года назад, как можно догадаться, исходники были соответствующей свежести. Да и многие ли вообще тогда знали об их существовании?
      • 0
        Все, кто читал новости.
        Изначально Microsoft открыла исходные тексты Windows Research Kernel (о чём, собственно, и писали) для представителей различных образовательных учреждений. И где-то в конце 06-го — начале 07-го года, представители одного из таких учреждений по-ошибке выложили данный архив на публичный FTP-сервер, с которого он и пошел по рукам.
        • 0
          В датах могу путаться, но осенью 2007-го эти исходники уже точно лежали на внутреннем файловом сервере небольшой компании, в которой я работал разработчиком драйверов.
          • 0
            это вы тоже «свободным доступом» назовёте? ;)
            • 0
              Так ссылка исходники, как я уже писал выше, была найденна с помощью google в каком-то блоге или форуме.
  • –1
    А при чем здесь реестр, кто-то может сказать?
    А всегда думал, что это ring3, и вообще, что это удел то ли user32.dll, то ли advapi32.dll.
    • +3
      advapi32.dll@RegOpenKey -> ntdll.dll@NtOpenKey -> syscalls -> ntoskrnl.exe@NtOpenKey
  • –4
    Ждем выхода огромного количества эксплойтов
  • 0
    не будет их, потому-что что хотели уже давно нашли и изучили ;)
  • 0
    Похоже они решили показать Линусу свои исходники и всё-таки засудить его до смерти. Это я о давнем обвинении в том, что в Линуксе используется ворованный код. Линус на это ответил что-то типа покажите исходники.
    • 0
      Обвинения не по коду, а по патентам. И конкретный список патентов со ссылками на нарушающии их участки кода Linux они так и не спешат предьявлять, несмотря на то, что сами по себе патенты являются открытой информацией.
      • 0
        Ну так правильно, предъяви они реально претензии, патенты сразу же в унитаз отправятся, ибо дутые

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