AARD-код
AARD-код — это фрагмент исполняемого кода, встроенный в установочные файлы операционной системы MS-DOS версий 5.0 и 6.0, выпущенных корпорацией Microsoft. Основной функцией AARD-кода было обнаружение нелицензионных копий операционной системы, а также идентификация версий MS-DOS, работающих на компьютерах, не произведённых компанией IBM. Код был назван по строке «AARD», которая использовалась в качестве маркера для поиска в двоичных файлах.
История появления
В начале 1990-х годов на рынке персональных компьютеров доминировали IBM-совместимые машины, однако Microsoft активно продвигала собственную операционную систему MS-DOS, которая устанавливалась на большинство ПК. В то же время существовали альтернативные реализации DOS, такие как DR DOS от компании Digital Research, а также клоны, созданные сторонними производителями. Microsoft стремилась ограничить распространение конкурирующих продуктов и защитить свои лицензионные соглашения.
AARD-код был впервые обнаружен в 1992 году программистом Эндрю Шульманом (Andrew Schulman) и другими исследователями, которые анализировали установочные файлы MS-DOS 5.0 и 6.0. В ходе анализа выяснилось, что код выполнял проверку на наличие определённых признаков, характерных для нелицензионных копий или для систем, отличных от IBM PC. При обнаружении таких признаков код мог выдавать предупреждение или блокировать установку.
Механизм работы
AARD-код представлял собой набор инструкций на языке ассемблера, встроенных в файлы установки MS-DOS, такие как SETUP.EXE и IO.SYS. Код выполнял следующие действия:
- Проверка версии BIOS: код анализировал строки в BIOS, характерные для IBM-совместимых машин. Если BIOS не содержал определённых маркеров (например, строки «IBM»), код мог интерпретировать это как признак нелицензионной системы.
- Проверка файлов DOS: код искал строки, связанные с DR DOS или другими альтернативными реализациями. Например, он мог проверять наличие файла
DRDOS.SYSили определённых системных вызовов. - Вывод сообщения: при обнаружении подозрительных признаков код мог выводить на экран сообщение об ошибке, например: «Non-IBM DOS detected. This version of MS-DOS is for IBM computers only. Please contact your dealer for a replacement» (Обнаружена не-IBM DOS. Эта версия MS-DOS предназначена только для компьютеров IBM. Обратитесь к дилеру для замены).
Сообщение могло быть как предупреждением, так и блокировкой установки. В некоторых случаях код просто завершал работу установщика.
Обнаружение и реакция
Обнаружение AARD-кода вызвало широкий резонанс в компьютерном сообществе. Исследователи, включая Эндрю Шульмана, опубликовали результаты анализа в книге «Undocumented DOS» (1993) и в статьях в журналах, таких как «Dr. Dobb’s Journal». Код был назван «AARD» по строке, которая использовалась в качестве маркера для поиска в двоичных файлах.
Microsoft первоначально отрицала наличие подобного кода, утверждая, что он был предназначен для защиты от пиратства. Однако под давлением общественности и юридических угроз со стороны Digital Research, которая обвинила Microsoft в недобросовестной конкуренции, компания признала существование AARD-кода. В 1994 году Microsoft выпустила обновлённые версии MS-DOS 6.0 и 6.2, в которых AARD-код был удалён.
Юридические последствия
Инцидент с AARD-кодом привёл к судебному разбирательству между Microsoft и Digital Research. Digital Research утверждала, что Microsoft использовала код для намеренного блокирования работы DR DOS, что нарушало антимонопольное законодательство США. В 1994 году Microsoft согласилась урегулировать иск во внесудебном порядке, выплатив Digital Research компенсацию в размере 150 миллионов долларов. Однако точные условия соглашения остались конфиденциальными.
Критика и влияние
AARD-код стал одним из первых громких примеров использования производителем программного обеспечения скрытых механизмов для ограничения конкуренции. Критики утверждали, что Microsoft злоупотребляла своим доминирующим положением на рынке операционных систем, пытаясь подавить альтернативные продукты. Сторонники Microsoft, напротив, указывали, что код был направлен исключительно на защиту от пиратства и не нарушал законов.
Инцидент также способствовал росту интереса к обратной разработке (reverse engineering) и анализу программного обеспечения. После обнаружения AARD-кода многие разработчики и исследователи стали более внимательно изучать установочные файлы популярных программ, что привело к обнаружению других скрытых функций и уязвимостей.
Технические детали
AARD-код был реализован в виде подпрограммы, встроенной в установочные файлы. Код использовал следующие методы:
- Проверка строки «IBM»: код искал в BIOS строку «IBM» или «COMPAQ» (для совместимых машин). Если строка отсутствовала, код мог выдать предупреждение.
- Проверка системных вызовов: код вызывал определённые прерывания DOS (например,
INT 21h) и анализировал возвращаемые значения. Если поведение отличалось от ожидаемого для MS-DOS, код мог интерпретировать это как признак альтернативной системы. - Проверка файлов: код искал файлы, характерные для DR DOS, такие как
DRDOS.SYSилиDRV.SYS.
Код был написан на ассемблере и занимал несколько десятков байт. Он был встроен в несколько файлов установки, что затрудняло его удаление без повреждения всей системы.
Источники
- Schulman, Andrew; et al. «Undocumented DOS: A Programmer’s Guide to Reserved MS-DOS Functions and Data Structures». Addison-Wesley, 1993.
- «Microsoft’s AARD Code: A Case Study in Anti-Competitive Behavior». Dr. Dobb’s Journal, 1993.
- «Digital Research Sues Microsoft Over AARD Code». The New York Times, 1994.
- «Microsoft Settles DR DOS Lawsuit». InfoWorld, 1994.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →