JustPaste.it

Хакер - Страдания с ReactOS. Почему в заменителе Windows работают трояны, но не работает Word

nopaywall

https://t.me/nopaywall

Сегодня в нашей кунсткамере демонстрируется необычайный организм — двадцатилетний зародыш операционки, который учится делать первые шаги. Пока у него получается только стоять и осторожно шевелиться, но он уже пробует общаться с внешним миром. С виду он похож на Windows Server 2003, просто пока умеет не так много. Знакомься: ReactOS v. 0.4.6, глубокая альфа-версия.
 

Стоять нельзя падать!

Наверняка ты многое слышал об этой опенсорсной разработке. Все-таки ее делают с девяностых годов и активно пиарят, особенно в последнее время. Доклады про нее можно было услышать на Google Summer of Code, немецких хакатонах и российских презентациях правительственного уровня. ReactOS создается по лицензиям GPL/BSD/X11 и доступна на разных языках, среди которых есть русский.

Проект ReactOS удачно вписался в отечественную программу импортозамещения. 1 апреля 2015 года Минкомсвязи России присудило заявке «Создание операционной системы с открытым исходным кодом на базе ReactOS для ПК, ноутбуков и других мобильных устройств» второе место в номинации «Клиентские и серверные операционные системы». Почему же мы до сих пор не перешли поголовно на этот свободный аналог Windows?

 

Для ответа на этот вопрос мы провели собственное тестирование ReactOS. Попробовали поставить ее на два ноутбука: очень и не очень старый. С ходу не получилось… да и потом — тоже. В обоих случаях инсталлятор глючил уже в самом начале, и мы созерцали черный (точнее, темно-серый) экран. При этом на тех же ноутбуках в свое время без проблем устанавливались самые разные операционки, включая FreeDOS, Windows XP/7, Knoppix и Kali Linux. Загрузка с DVD-R и флешки работает на них без проблем — там олдскульный BIOS (не UEFI).

Наверняка и ReactOS удалось бы как-то установить на наши бывалые лэптопы, но шаманский бубен вскоре лопнул, как и наше терпение. Рядовой пользователь точно не станет мучиться так долго.

На YouTube ты можешь найти ролики с демонстрацией запуска ReactOS на относительно новых ноутбуках Dell. Однако сама идея записать такое видео уже говорит о нетривиальности задачи. Если автор снимает ролик, значит, этому предшествовал напилинг и ритуальные пляски. «Из коробки» ReactOS мало на что ставится, да и нет у нее никакой коробки — только ночные сборки на сайте проекта.

Поэтому дальнейшие тесты проводились в виртуалке. Именно так годами запускает ReactOS большинство ее поклонников: свободный клон Windows работает в несвободной настоящей «Винде».

ReactOS поддерживает русский язык ReactOS поддерживает русский язык

Заявлено, что ReactOS поддерживает множество файловых систем. Ext2/3/4, Btrfs, ReiserFS, UFS, NTFS. Казалось бы, выбор огромный! На практике же системный раздел может быть отформатирован только в FAT, и это еще цветочки!

Только FAT! Только FAT!

А ягодки в том, что ReactOS не имеет средств для проверки и исправления логических ошибок в файловой системе. Короче, нет в нем чекдиска. Поэтому пофиксить FAT просто нечем.

Кнопка есть, а программы нет Кнопка есть, а программы нет

Поэтому меню аварийного восстановления, по сути, оказывается бесполезным. Что дебаг, что EMS — при слетевшей ReactOS ты просто увидишь синий или черный экран — как повезет. Нам повезло уже через полчаса.

 

Перезагрузка реактора

Аварийное восстановление реактора Аварийное восстановление реактора

Другая серьезная проблема ReactOS — менеджер памяти. Его постоянно пробивает на ностальгию. Он пытается обратиться по адресам из старой таблицы и навевает воспоминания о раннем знакомстве с XP. Помнишь бесконечно сыплющиеся сообщения «The memory could not be „read“»? В ReactOS они появляются регулярно, как и всевозможные software exception.

Ошибки управления памятью Ошибки управления памятью

В итоге после очередной ошибки система зависает наглухо, а при перезагрузке становится синей, как утопленник.

Белый, синий… не хватает красного! Белый, синий… не хватает красного!

Единственный способ снова поднять ReactOS — это восстановить предыдущее состояние из образа. Благо VirtualBox быстро делает снапшоты.

Следующая проблема (если ты сумеешь до нее дойти) — это драйверы.

Оборудование установить, не? Оборудование установить, не?

Черт бы с ней, со звуковухой! Без веб-камеры, тачпада и расширенных функций клавиатуры тоже можно обойтись. Интернет-то где? Нам пришлось перепробовать разные сетевые адаптеры (реальные и эмулируемые), прежде чем ReactOS смогла заработать хоть с каким-то. Им оказался древнейший адаптер на 10 Мбит/с.

10 Мбит/с хватит всем! 10 Мбит/с хватит всем!

Беспроводные модули ReactOS не видела в упор. Когда мы подключали диск с драйверами, на нем были все пункты, кроме «установить». Он просто исчезал из меню, так как мастер установки не мог выполнить проверку соответствия ОС. Да, есть проктологические способы сделать это. Выдрать файлы драйверов, руками распихать их в нужные каталоги… даже реестр можно править руками. Вот только для чего тогда еще в прошлом веке создавали plug-n-play?

 

Матрешки и балалайки

Одно из любимых развлечений поклонников ReactOS — «матрешки», или вложенная виртуализация. Очень популярна связка Windows 7 SP1 — VirtualBox — ReactOS — DOSBox — Windows 3.11. Правда, непонятно, зачем здесь ReactOS. Цепочку можно сократить.

Другой пользователь демонстрирует работу приложений для старой macOS, запущенной в ReactOS через эмулятор Mini vMac. Это забавно, хоть и не имеет практической ценности. Напоминает фильм Inception и вложенные сновидения.

 

Софт и игры

Если ты каким-то чудом установил ReactOS и даже драйверы для сетевухи, то при подключении к интернету станет доступным довольно приятный менеджер установки программ. Начинать, впрочем, стоит не с программ, а с библиотек.

ReactOS App Manager ReactOS App Manager

Поначалу каталог кажется объемным и удобным, но только пока не поймешь, что это полный список официально поддерживаемых в ReactOS программ и что даже не все из этого списка устанавливается. Некоторые ссылки ведут по старым веб-адресам, и загрузка не происходит.

Известный вредитель нотфаунд в реакторе Известный вредитель нотфаунд в реакторе

Возможно, ты помнишь, как тщетно мы пытались открыть сайт Xakep.ru в ОС «Колибри». Она не поддерживала HTTPS, и все наши старания были напрасны. ReactOS лишен таких проблем. В нем можно поставить Firefox и серфить веб практически полноценно.

Если в ОС можно открыть Xakep.ru, она не так уж бесполезна Если в ОС можно открыть Xakep.ru, она не так уж бесполезна

Разработчики и энтузиасты ReactOS предлагают использовать ее как замену Windows XP на тех компьютерах, которые служат печатной машинкой. В принципе, рядовая секретарша вряд ли заметит подмену. У нее и так вечно не работает Word, зато пасьянс «Косынка» в ReactOS портирован удачно.

Косынка! Косынка!

В менеджере пакетов есть даже шареварная версия Diablo II, и она запускается, но лучше бы она этого не делала. С восьмибитной графикой и софтверным рендерингом играть теоретически можно, как, например, можно пить сок, прыгая на резинке вниз головой с моста, но практически — кто захочет это делать?

Дьявольские развлечения в ReactOS Дьявольские развлечения в ReactOSЗапустить Diablo II можно, играть — вряд ли Запустить Diablo II можно, играть — вряд ли

Конечно, это еще ограничение виртуалки. На реальном железе ReactOS опознает видеокарту (иногда). У нее даже есть драйверы на RIVA TNT2 и четвертый GeForce. Помнишь такой?

GeForce 4 — old school hardcore! GeForce 4 — old school hardcore!

Есть отдельные методы «пробросить» видеокарту в виртуалку, но они экспериментальные и годятся больше для тестировщиков, чем для геймеров. Впрочем, можешь попробовать.

 

Mission Impossible: ставим Word на ReactOS

Если ReactOS хорош на компьютерах, которые используются в качестве пишущей машинки, значит, нужна хотя бы одна программа, в которой можно было бы набирать тексты. И, желательно, не «Блокнот», а полноценный текстовый процессор. Мы поочередно попробовали установить разные офисные пакеты, начиная с Office 97, который работает даже в Windows 95 и NT 4.0.

Увы, Microsoft Office 97 не устанавливается, поскольку в ReactOS отсутствует NTVDM — виртуальная машина DOS для системы NT.

Microsoft Office 2000 не устанавливается, поскольку ему требуется подсистема Windows Installer.

Microsoft Office 2003 зависает во время установки, поскольку не может выполнить регистрацию библиотек.

Microsoft Office 2010 не устанавливается, поскольку в ReactOS отсутствует SQL Setup Enumeration APIs.

WPS Office 10 установился, запустился, но не смог отобразить приложения. При ручном запуске текстовый редактор Writer не может создать новый документ — ни пустой, ни из шаблона. Просто зависает.

В менеджере приложений ReactOS ссылка на установку LibreOffice не работает. Пришлось скачать LibreOffice 4.3 с официального сайта. Установился! Запускается очень долго (с минуту на Core i7-4770K). Но при наборе текста не видно курсора, а строчки налезают друг на друга (кривой рендеринг).

OpenOffice тоже установился, но страдает той же болезнью.

Что ж, остается, кажется, только поставить DOSBox и Word 5.5.

 

(Без)опасность реактора

Поклонники ReactOS часто называют ее более безопасной вариацией Windows, аргументируя это открытым исходным кодом и отсутствием вирусов. Однако открытость — это лишь необходимое, но не достаточное условие безопасности, а отсутствие вирусов — временное явление.

Сегодня ReactOS уже содержит более 9 миллионов строк кода, прибавляя почти по миллиону в год. Сколько времени потребуется, чтобы просто прочитать их, не говоря уже об анализе? Аудит простейших программ (до пяти тысяч строк кода) занимает месяцы и обходится в чувствительную сумму. Здесь же перед аудиторами встанет невыполнимая задача. Анализ кода займет годы и окажется бесполезным, поскольку все это время разработчики продолжат вносить изменения. Иначе проект снова заглохнет.

Что касается вирусов, то с переменным успехом виндовая малварь запускается в ReactOS уже сейчас. Мы попробовали заразить ReactOS разными штаммами, и она оказалась довольно восприимчивой. Часть инфекций и вовсе стала для нее смертельной.

WannaCry в ReactOS WannaCry в ReactOS

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

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

Реквизиты для выкупа в реестре Реквизиты для выкупа в реестре

Другие разновидности малвари часто завершают работу с ошибкой.

Троян поймал иксепшен Троян поймал иксепшенТабуны троянов затоптали менеджер памяти в ReactOS Табуны троянов затоптали менеджер памяти в ReactOS

После серии таких ошибок ReactOS выпадает в синий экран.

Современные антивирусы в ReactOS не запускаются. Kaspersky Free просто зависает на первом же этапе инсталляции. Dr.Web мгновенно сваливает ReactOS в BSoD — быстрее любого трояна. Конечно, вирусы ей в таком состоянии не страшны, вот только работать с ней тоже не получится. Даже после перезагрузки (см. FAT и отсутствие chkdsk).

 

Собираем на стероиды для альфа-операционки

Развитие любого проекта требует денег. На голом энтузиазме участники будут постоянно сменяться. Один студент напишет несколько строк, а потом другой будет пытаться вникнуть в чужой код, пока не бросит эту затею сам. По большому счету, так и происходит с ReactOS. Сейчас ее сырость видна даже невооруженным глазом. Часть кнопок нарисована на будущее, и никаких функций на них не назначено.

Разработчики многократно запускали инициативы по сбору средств, но особого успеха они не имели. Например, в 2014 году была запущена краудфандинговая кампания на Indiegogo, которая провалилась. При требуемой сумме в 50 тысяч долларов собрали только половину. Сейчас на сайте проекта предлагается указать объем ежемесячного (или хотя бы разового) пожертвования в евро. На эту просьбу откликается так мало людей, что от намеченной суммы пока собрано всего 5% (и месяц назад было столько же).

Помогите раскочегарить реактор! Помогите раскочегарить реактор!

Все это свидетельствует о слабом интересе к операционной системе, несмотря на миллионы скачиваний каждой новой версии. Лично мне причины сложившейся ситуации кажутся следующими.

  • ReactOS превратилась в долгострой. Вечную «альфу», которая вот уже более двадцати лет не может дорасти до «беты». Это сильно портит репутацию проекту.
  • ReactOS имеет невнятное позиционирование. Для кого создается эта операционка?
  • Есть юридические сложности с использованием ключевых компонентов в ReactOS.
  • Темпы разработки ReactOS не просто слишком медленные, они непредсказуемые. Можно подождать, когда знаешь, сколько именно. Неопределенность убивает.
  • Выпуск релиза и его дальнейшая поддержка требуют привлечения квалифицированных разработчиков на постоянной основе. На это нужна не просто прорва денег, а стабильная финансовая поддержка, которую ReactOS так и не получила.

Немецкий ReactOS Deutschland и российский «РеактОС-Фонд» были закрыты. Недавно был создан новый «Фонд ReactOS», который ведет блог на Хабре.

 

Догонит ли Ахиллес черепаху?

Позиционирование — основа любой бизнес-стратегии, а тут никакого позиционирования нет. Наиболее внятно на вопрос «Зачем и для кого создается ReactOS?» отвечает Алекс Ионеску (Alex Ionescu), один из ключевых разработчиков ядра этой операционки.

В своем выступлении он поясняет, что ReactOS вряд ли будет интересна массовому потребителю (сюрприз!), но вполне может заинтересовать определенные группы людей:
— студентов, желающих получить навык разработки системных компонентов. Сам он пришел в ReactOS по этой причине. Нужно было сделать студенческую работу в опенсорсном проекте, а все линуксовые оказались слишком тяжелы для изучения наскоком;
— владельцев PoS-терминалов и малых предприятий, использующих в работе очень ограниченный набор старых приложений. Им нет смысла переходить на Windows 10 или оплачивать лицензии Windows Embedded, если появится более дешевый аналог.

Да, никто и не говорит, что ReactOS всегда будет только бесплатной. Платные версии Linux давно существуют, и авторы ReactOS тоже хотят в итоге окупить разработки по схожей системе монетизации — с бесплатной домашней и платной коммерческой версиями. Вот только за платными пингвинами стоит мощный саппорт, а в реакторной такую поддержку вот уже третий десяток лет предложить не в силах.

Почему я пишу про двадцать с лишним лет, если официально ReactOS существует с 1998 года, а в нынешнем варианте — только с 2004 года? Дело в том, что ранее проект назывался FreeWin. Он был запущен в 1996 году как попытка сделать «свою Windows 95» с опенсорсом и гиковатыми девелоперами. Два года ушло только на выяснение базовой стратегии, а затем проект заглох, так толком и не начавшись. Весь пар ушел в гудок.

Лишь в июле 1998 года Джефф Нокс (Jeff Knox) предложил вместо девяносто пятых окон взять за основу NT 4.0 и дать проекту новое название — ReactOS. К 2004 году стало ясно, что идея снова протухла и копировать надо уже Windows Server 2003 или Windows XP 64 bit (словом, NT 5.2). Именно эту задачу и пытаются решить в ReactOS до сих пор.

Операционные системы от Microsoft устаревают быстрее, чем команде ReactOS удается сделать их частичную реплику в рамках свободного проекта. Говорить в конце 2017 года о попытке воссоздать функциональность Windows Server 2003 и XP 64-bit по меньшей мере странно.

Как сказал Алекс Ионеску на выступлении в 2013 году: «Сейчас бы я выбрал в качестве основы Windows 7». Разговоры об этом идут до сих пор, но пока эту тему обсуждают, Microsoft уже похоронила свое детище.

Уже сейчас есть масса искусственных проблем с использованием Windows до версии 10 на современном железе. Наборы системной логики Intel двухсотой серии, процессоры AMD Ryzen и все интеловские камни новее Skylake не получат полнофункциональных драйверов для Windows прежних версий. Официально их можно использовать только в «десятке», а неофициально — хоть с XP, но только на уровне базовых инструкций. Встроенное видео и другие полезные вещи на старой Windows будут недоступны.

Таким образом, многие задачи, которые сейчас только обсуждаются в сообществе ReactOS как перспективные, уже утратили актуальность. Более того, базовые задачи так и не были решены. Например, остается проблема подключения устройств по USB 2.0. Флешка, принтер, сканер, веб-камера, 3G-модем — все это подключается к ReactOS на уровне подвига, и каждый раз по такому случаю записывается деморолик.

 

Акулы и пираньи в морях юриспруденции

Юридические сложности всегда стоит принимать во внимание, когда пытаешься скопировать чужой продукт. Даже если ты утверждаешь, что сходство будет лишь внешним, а весь код написан с нуля, — это слабая аргументация в суде. У Microsoft есть огромный юридический отдел, который постоянно ищет «правонарушителей» и строчит иски быстрее, чем программисты пишут свой код. Он приносит компании прибыль, сопоставимую с прибылью от продаж Windows. Наивно предполагать, что в случае хотя бы минимального коммерческого успеха ReactOS юристы Microsoft пришлют вместо исков открытки с поздравлениями.

Разработчики утверждают, что ReactOS создается по информации «из открытых источников». Увы, но детальное представление о работе ядра NT 5.2 не составить по открытым сведениям. Сначала их нужно сделать открытыми. Например, с помощью IDA Pro и SoftICE или утекших в Сеть исходников. О том, что при написании ReactOS «с нуля», скорее всего, практиковалась обратная разработка, еще в 2006 году сообщил бывший разработчик ReactOS Хартмут Бирр (Hartmut Birr). После этого была долгая процедура «очистки от несвободного кода» с приостановкой доступа к файлам, но кто контролировал результативность этой охоты на ведьм?

Согласно официальному списку People of ReactOS в настоящее время над проектом трудятся 25 человек, включая координатора проекта Алексея Брагина (aka Fireball). В создании ReactOS за все время проекта участвовало более 200 человек. При этом в каждый момент времени над ним работали от двух до 35 человек самого разного уровня. Основную массу составляют студенты. Только они готовы вкалывать даром или почти даром.

Причина проста: попытка написать аналог Windows с нуля помогает студентам лучше разобраться в оригинале. В частности, Алекс Ионеску после нескольких лет работы на ReactOS написал серию книг Windows Internals, ставших бестселлерами. Он даже проводил обучающие занятия в кампусе Microsoft… при этом работая в Apple и продолжая заниматься ReactOS как давним хобби.

Вот так с помощью нехитрых приспособлений буханка белого хлеба превратилась в клон Windows Вот так с помощью нехитрых приспособлений буханка белого хлеба превратилась в клон Windows

Возможно, ReactOS со временем станет альтернативой для производителей PoS-терминалов. Сегодня они вынуждены покупать лицензионную Windows для каждого устройства, а обычно такой терминал выполняет простейшие задачи (вроде продажи билетов), и львиная доля оплаченных функций Windows в нем просто не используется. Другое дело, что лицензию на XP сейчас можно купить буквально за пару баксов на eBay (их полулегально продают OEM-щики и ремонтники), а оригинальная ОС гарантирует известный уровень стабильности. Пускай невысокий, но у ReactOS он все равно ниже.

 

Итого

Пожалуйста, не принимайте мое брюзжание близко к мозгу. Я понимаю, насколько сложно создать бинарно совместимый клон закрытой ОС. Просто не понимаю — зачем. Мне странно видеть, как две сотни талантливых людей пытаются это сделать вот уже двадцать лет и отстают от современных реалий с каждым годом все больше.

Если бы ReactOS сразу называли исследовательским проектом для студентов или тренировочной площадкой для разработчиков, большая часть вопросов отпала бы сама собой. Однако ее преподносят как бесплатный аналог Windows, собирают на ее развитие деньги и пытаются внедрить как отечественный продукт в рамках импортозамещения.

Хочется верить, что критика хоть немного пойдет на пользу и те силы, которые сейчас уходят у команды ReactOS на пиар, перенаправятся на собственно разработку. Возможно, еще при моей жизни доведут до логического конца менеджер управления памятью Monstera, сделают удобный загрузчик, добавят драйверы и возможность установить ReactOS на журналируемую файловую систему. Сейчас ReactOS пытается играть мышцами, а надо бы сформировать скелет.

Читайте ещё больше платных статей бесплатно: https://t.me/nopaywall