LINUX.ORG.RU

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

 , ,


3

2

Тэвис Орманди (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

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

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

★★★★★

Проверено: hobbit ()

Мне понравилось оформление сайта по ссылке «Подробное объяснение». Чёткий винтажный минимализм (сам текст 2022 года), при этом читаемость на современном уровне.

hobbit ★★★★★ ()
Ответ на: комментарий от hobbit

понравилось оформление сайта

Фломастеры.

Я вот, как вижу пунктирные линии, так подозреваю, что или школьник нашел, как пунктирные линии сделать, или бабушка дорвалась. Если пунктирные линии вокруг текста - совсем кровавые слёзы. Это даже хуже, чем четыре раза «пунктирные линии» в одном абзаце.:)) И даже чем такой смайлик.

Dementy ★★ ()

ради интереса портировал для работы в Linux табличный процессор Lotus 1-2-3, выпущенный в 1988 году, за три года до появления самого Linux

Это, безусловно, круто, конечно, но неужели сейчас кто-то ещё пользуется программой более чем тридцатилетней давности и соответствующими форматами?

sT331h0rs3 ★★★★★ ()
Ответ на: комментарий от sT331h0rs3

неужели сейчас кто-то ещё пользуется программой более чем тридцатилетней давности и соответствующими форматами?

Формат до сих пор поддерживается LibreOffice-ом. Наверняка, и Excel-ем тоже. И остальными электронными таблицами старше 20 лет.

Для простых вычислений, вроде подсчёта суммы, среднего и МНК, электронных таблиц 1990 года вполне достаточно. Особенно, если есть длинные имена файлов и русский язык.

question4 ★★★★★ ()
Ответ на: комментарий от xor2003

Имея такие данные можно и декомпиляцию сделать

Не уверен. Как я понял, большая часть программы — нормально слинкованный блоб (в несколько мегабайт) без намёков на предназначение тех или иных частей. Символы остались только для обращений к функциям ОС и подключаемым библиотекам.

А с символами, по сути, и декомпиляция не нужна — всё видно из названий.

Дистрибутив пока не скачивал, могу ошибаться.

question4 ★★★★★ ()
Ответ на: комментарий от Dementy

он просто слишком жирную строчку залудил, 1px хватило бы вполне, даже для dashed. выглядит в этом случае не так вырвиглазно.

real_kas ()

Я так понимаю что в свое время оно требовало минимум i386 процессор?

А аналогичный Lotus под DOS тоже требовал i386 или мог работать и на i286 процессорах?

Интересно какие это были коммерческие UNIX под i386 в 1990 году?

ex-kiev ()

расплывчатые рекомендации, как делать такой файл.

Да ну! Куда конкретнее, ничего не нарушая:

lic_init()

It is simply looking for a file called LICENSE.000, which contains an expiry date, username and systemname. If that all matches what the system reports, the check passes!

А уже по коду в IDA (с декомпилером в псевдокод ещё проще будет), не так сложно понять в каком виде эти параметры должны там быть.

hatred ★★ ()
Последнее исправление: hatred (всего исправлений: 1)
Ответ на: комментарий от ex-kiev

оно требовало минимум i386 процессор?

Данная версия — да.

аналогичный Lotus под DOS тоже требовал i386 или мог работать и на i286 процессорах?

https://en.wikipedia.org/wiki/Lotus_1-2-3#Protected_Mode_(80286+)

Если это — порт Release 3, то DOS-версия компилировалась под защищённый режим 286-го.

Интересно какие это были коммерческие UNIX под i386 в 1990 году?

В новости же написано — System V. А вообще их была куча частично совместимых, включая SCO, Solaris, AIX, Xenix… https://en.wikipedia.org/wiki/Unix_wars

question4 ★★★★★ ()
Ответ на: комментарий от ex-kiev

Запускал Lotus 1-2-3 под ДОС на 286.
Жуткая гадость,

bigbit ★★★★★ ()
Ответ на: комментарий от question4

Если это — порт Release 3, то DOS-версия компилировалась под защищённый режим 286-го.

Спасибо, очень интересовала эта подробность.

В новости же написано — System V.

Я как-то думал что это целое семейство OS а не какая-то конкретная OS.

А вообще их была куча частично совместимых, включая SCO, Solaris, AIX, Xenix…

MS Xenix был вроде 16-битным, я его сразу откинул, все остальные у меня ассоциируются с майнфреймами или миникомпьтерами(это вроде те которые представляли из себя один шкаф или даже несколько). Ничего кроме 386BSD под i386 на 1990-1991 годы я не вспомнил, но он скорее всего не коммерческий. А SCO у меня ассоциируется только с патентным троллингом.

ex-kiev ()
Ответ на: комментарий от ex-kiev

Ничего кроме 386BSD под i386 на 1990-1991 годы я не вспомнил

Там были и бесплатная, и коммерческая, отличавшиеся на 6 файлов. https://en.wikipedia.org/wiki/UNIX_System_Laboratories,_Inc._v._Berkeley_Software_Design,_Inc

MS Xenix был вроде 16-битным, я его сразу откинул, все остальные у меня ассоциируются с майнфреймами или миникомпьтерами

Для того, что я перечислил, я видел в журнале 1991 года рекламу версий для IBM PC-совместимых машин. Не уверен, все ли были под 386.

миникомпьтерами(это вроде те которые представляли из себя один шкаф или даже несколько).

В своё время для меня стала откровением статья в «Науке и жизни», где упомянули, что персональные компьютеры — это «микро-», а между ними и «супер-» имеются ещё и «мини-». Та статья анализировала темпы роста производительности (логарифмы памяти и производительности линейно растут со временем, но с разной скоростью в разных классах) и предсказывала, что микро догонят мини в конце 1990х, а окончательно перегонят к 2004 году. В общем, так и получилось — миникомпьютеры стали серверами и «рабочими станциями». По тем же графикам ПК догонят суперкомпьютеры в 2040-х.

question4 ★★★★★ ()
Последнее исправление: question4 (всего исправлений: 1)
Ответ на: комментарий от ex-kiev

System V.

Я как-то думал что это целое семейство OS а не какая-то конкретная OS.

В Википедии упоминается как конкретная ОС. Скорее, одна из важнейших, задававшая стандарты, которым следовала половина вендоров. Поэтому как бы семейство.

question4 ★★★★★ ()
Ответ на: комментарий от alegz

Ну не знаю, мне обычно пофиг. Но я и книжки читал в notepad.exe и даже в разрешении 176х220.

Также такое сочетание более читаемо на хреновом экране в солнечном свете.

token_polyak ★★ ()
Ответ на: комментарий от Evenik

Номер журнала не вспомните?

Самому стало интересно, ищу. Где-то в 1987-91 годах, скорее позже, чем раньше. График был на цветной вкладке.

Помню, что на графиках производительности были отмечены диапазоны, требуемые для различных применений компьютеров. Но навскидку помню только «перчатка для телеуправления роботами», как раз в районе пересечения графиков мини-ЭВМ и ПК.

question4 ★★★★★ ()

ОС UNIX System V 386, обеспечивая его работу под современным

*BSD? 30 лет запускаем бинари конкурирующих систем.

Shadow ★★★★★ ()
Ответ на: комментарий от question4

Для того, что я перечислил, я видел в журнале 1991 года рекламу версий для IBM PC-совместимых машин. Не уверен, все ли были под 386.

Я про это не знал и не догадывался, для меня не DOS подобные OS были большим белым пятном.

Полез я по вашей ссылке в Wikipedia и пройдя чуть дальше по гиперссылкам и вдруг выясняется что:

In 1987, SCO ported XENIX to the 386 processor, a 32-bit chip, after securing knowledge from Microsoft insiders that Microsoft was no longer developing XENIX.[40] XENIX System V Release 2.3.1 introduced support for i386, SCSI and TCP/IP. SCO’s XENIX System V/386 was the first 32-bit operating system available on the market for the x86 CPU architecture.

SCO released its SCO UNIX as a higher-end product, based on System V R3 and offering a number of technical advances over XENIX; XENIX remained in the product line. In the meantime, AT&T and Sun Microsystems completed the merge of XENIX, BSD, SunOS and System V R3 into System V R4. The last version of SCO XENIX/386 itself was System V R2.3.4, released in 1991.

Была не только разрабатываемая Microsoft совместно с SCO операционная система MS Xenix которая была 16 битной, был оказывается еще 32-битный SCO Xenix который разработали SCO портировав Xenix под i386 и получив первый UNIX под i386 процессоры.

В своё время для меня стала откровением статья в «Науке и жизни», где упомянули, что персональные компьютеры — это «микро-», а между ними и «супер-» имеются ещё и «мини-».

Я про это читал еще в популярных книжках конца 1980-х или самого начала 90-х. Но вот «уложилось» оно у меня в голове не так давно рассматривая линейку начинающуюся с советских бытовых компьютеров «БК-0010» и через LSI-11, PDP-11 оканчивающуюся на VAX-11.

ex-kiev ()
Ответ на: комментарий от psion

Так переделай фломастеры, чтобы было не по-школьниковски и не по-бабски. А мы заценим.

border: 2px dashed #333; => border: 1px solid #333;

EXL ★★★★★ ()
Ответ на: комментарий от Evenik

Нашёл. Февраль 1989, http://publ.lib.ru/ARCHIVES/N/%27%27Nauka_i_jizn%27%27%27/‘‘Nauka_i_jizn’’’,1989,N02.[djv-fax].zip Сама диаграмма на странице 35 (вклейка I), статья на страницах 30-34 (28-32 по внутренней нумерации).

Но, очевидно, мои воспоминания несколько приукрасили картину :) В статье — никакой конкретики, а графики хорошо иллюстрируют известную всем экспериментаторам идею, что логарифм линеаризует что угодно :)

Тем не менее, из графиков и их экстраполяции можно сделать вывод, что лучшие ПК начали перехватывать задачи мини-ЭВМ в 1988 году (на момент написания), а окончательно обгонят мини-ЭВМ, делая их ненужными, в районе 2008 года, что тоже близко к истине — примерно тогда SGI перешли на Intel, а чуть позже закрылось производство SparcStation.

Аналогично, ПК должны нагнать суперкомпьютеры в 2002 году, а перегнать в 2033-м. В реальности, согласно Википедии, ПК смогли тягаться с суперкомпьютерами по гигафлопсам с появлением видеоускорителя Radeon HD 5970 в 2009 году. Его пиковая производительность втрое выше, чем у Intel_ASCI_Red, победившего всех в TOP-500 в 2000 году и демонтированного в 2006-м, но втрое ниже рекордсмена 2001 года и в 5 раз ниже 500-го места в TOP500 2009 года. Думаю, если долго искать, должны найтись и действовавшие в 2009 году кластеры слабее Radeon HD 5970.

question4 ★★★★★ ()
Ответ на: комментарий от ex-kiev

Я про это читал еще в популярных книжках конца 1980-х или самого начала 90-х. Но вот «уложилось» оно у меня в голове не так давно рассматривая линейку начинающуюся с советских бытовых компьютеров «БК-0010» и через LSI-11, PDP-11 оканчивающуюся на VAX-11.

А я идеей, что есть мини-компьютеры, время которых ушло, проникся в конце 1990-х — начале 2000-х, когда видел, как эти мощнейшие VAX-ы, SPARC-и и Indigo понемногу уступают ширпотребным компьютерам на Пентиумах, а их программы портируются под Виндоуз и Линукс.

question4 ★★★★★ ()
Ответ на: комментарий от ex-kiev

Интересно какие это были коммерческие UNIX под i386 в 1990 году?

Interactive Unix. Я её даже тыкал году в 93-м. Почтовый сервер, емнип, разворачивали.

beck ★★★ ()
Последнее исправление: beck (всего исправлений: 1)
Ответ на: комментарий от alegz

Детективный сериал такой был.

И во времена Lotus 1-2-3 была по ней игра под несколько платформ. Я думал, речь про неё.

Но я ссылался на это.

https://www.youtube.com/watch?v=EtuDS0ntaJY&t=12s

Что Балмер имеет в виду под «интегрированием»? Копипастить фотографию машины из сериала в таблицу 123?

olegd ★★★ ()

Сеанс некромантии... Откопали 1-2-3 стюардессу. Копайте глубже. Если повезёт, наткнётесь на мумию Quattro Pro :)

Attila ★★ ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.