Порт Lotus 1-2-3 под Linux

good-penguin.png

Тэвис Орманди (Tavis Ormandy) выпустил бинарный патч, который модифицирует Lotus 1–2–3 для ОС UNIX System V 386, обеспечивая его работу под современным линуксом.

Началось всё с того, что Орманди из любопытства изучал дистрибутив Lotus 1–2–3 (предположительно 1990 года) под коммерческий юникс и обнаружил, необычный способ линковки исполняемого файла в формате COFF — partial linking. Как ему объяснили, такой способ позволял при желании слинковать исполняемый файл с плагинами, которые нельзя было подключить иначе, если в ОС не было dlopen ().

В итоге Орманди смог написать утилиты для правки системных вызовов Unix и обёртку для их замены на вызовы Linux и слинковать всё в 32-битный ELF. Одной из крупных проблем оказалась адаптация termios. Интересно, что на старых версиях Линукса, с поддержкой callgate и lcall7/lcall27 такая адаптация прошла бы легче.

Ещё одной из проблем оказалась защита от копирования. Орманди считает себя вправе изготовить файл-ключ, обеспечивающий работу программы, так как он владеет легальной копией Lotus 1–2–3 под MS-DOS. Для остальных он приводит скриншот дизассемблера IDA и расплывчатые рекомендации, как делать такой файл. Программа не продаётся уже почти 20 лет. Да и легальных владельцев Lotus 1–2–3 в мире немало.

Тэвис Орманди — специалист по безопасности («white hat») из Гугла и энтузиаст Lotus 1–2–3. Ранее написал драйвер для MS-DOS версии Lotus, обеспечивающий её работу в окне терминала DOSEMU2 произвольного размера.

Lotus 1–2–3 — одна из первых программ электронных таблиц, отличавшаяся от конкурентов скоростью, надёжностью и удобством. Её нередко называют одной из причин коммерческого успеха платформы IBM PC в 1980-х. Поддержка Lotus долго была критерием совместимости для клонов. В 1990-х Lotus проиграла MS Excel-ю, так как GUI-версия появилась слишком поздно, и в 1995 году программу купила IBM.

Новость на Opennet

Исходные тексты патча и утилит с инструкцией

>>> Подробное объяснение

©  Linux.org.ru