https://www.quora.com/How-can-I-view-the-Windows-10-source-code?share=1
https://www.quora.com/How-do-I-see-the-source-code-of-Windows-11
https://www.quora.com/Why-has-no-one-leaked-the-source-code-for-Microsoft-Windows-yet?share=1
https://boards.4channel.org/g/
https://rentry.co/build-win2k3
https://rentry.co/wine-on-windows
https://rentry.co/win2k3-extra-patches
https://anonfiles.com/9cu9A6d8pe/toolset_v4-nocom_zip
toolset_v4-com.zip
toolset_v4-nocom.zip
https://forum.videolan.org/viewtopic.php?t=12462
Неправильный форум, и не будите темы старше 6 лет.
Я буду говорить конкретно из своего опыта работы с ядром Windows.
Он не запутан намеренно — его достаточно сложно понять самому. Даже если перед вами лежит исходный код, потребуется значительное время, чтобы понять, что происходит.
В прошлом я вел занятия по различным темам ядра Windows, включая отладку ядра и разработку драйверов. Я потратил много времени, объясняя, как части соединяются друг с другом — общая картина — а также рассматривая гораздо более мелкие детали. Даже если у вас есть исходный код Windows, вы мало что сможете с ним сделать, если у вас нет хорошей концептуальной модели того, как эти части сочетаются друг с другом. Что такое уровень аппаратной абстракции ? Чем он отличается от ядра , диспетчера ввода/вывода или диспетчера памяти ? Как эти компоненты взаимодействуют друг с другом?
С другой стороны, если у вас есть хорошая концептуальная основа, я могу показать вам, как читать код. Поначалу это пугает, но со временем вы сможете посмотреть на код в отладчике и понять, что он делает. Компилятор делает это намного проще, потому что он имеет тенденцию генерировать высокоструктурированный код. Есть вещи, которые усложняют задачу, например логика оптимизации, которую Microsoft использует для перемещения блоков кода в разные места в памяти. Это сделано из-за малого количества TLBзаписи для кода, поэтому мы хотим, чтобы код, который выполняется все время, выполнялся из небольшого набора общих страниц. Когда я преподавал отладку, это было важно понимать, потому что те пути ошибок, которые приводят к сбою, не являются нормально выполняемым путем кода, и поэтому они появляются во многих сценариях сбоя, которые могут потребоваться для отладки.
Итак, допустим, вы хотите знать, как работает механизм системных вызовов. Можно просто дизассемблировать один из системных вызовов, скажем ZwCreateFile . На самом деле это имеет одинаковую реализацию как для режима ядра, так и для пользовательского режима, поскольку он вызывается через вектор системного вызова. Другая версия этого же вызова, NtCreateFile , идентична в пользовательском режиме и отличается в режиме ядра.
Так вы разбираете системный вызов. Вы можете видеть, как он сохраняет значения в энергозависимых регистрах, а затем вызывает быстрый обработчик системных вызовов. Это заставляет ЦП передать управление коду операционной системы для обработки системных вызовов. Затем ОС сохраняет информацию (в кадре ловушки ), использует информацию, переданную в энергозависимых регистрах, и копирует параметры из пользовательского стека в стек ядра. Затем он загружает правильную функцию для вызова из таблицы и вызывает системный вызов.
Таким образом, приложение пользовательского режима, которое вызывает NtCreateFile , в конечном итоге вызывает NtCreateFile в ядре. Мы можем повторить этот процесс — я могу показать вам, как NtCreateFile просто вызывает IoCreateFileEx . Угадай, что? Это задокументированный вызов в ядре . Вы можете найти его описание прямо здесь: Процедура IoCreateFileEx
https://msdn.microsoft.com/en-us/library/windows/hardware/ff548283(v=vs.85).aspx
Microsoft делает это на удивление легко. Они размещают свои символы на общедоступном сервере символов, к которому могут получить доступ инструменты. Существуют библиотеки для того, чтобы сделать все это доступным. Ничто из этого не требует доступа к исходному коду.
Итак, я бы предположил, что, хотя это можно было бы сделать, это было бы довольно бессмысленно. У вас есть доступ ко всему коду. Они предоставляют вам инструменты и документацию. Ядро Windows теперь доступно для тех, кто хочет изучить его язык.
Комментариев нет:
Отправить комментарий