Дизассемблер для Linux, способный разбирать старые файлы .COM / .EXE для DOS - PullRequest
3 голосов
/ 10 декабря 2010

Мой первый вопрос здесь, надеюсь, я не делаю это неправильно.

Моя проблема в том, что у меня есть некая старая DOS-программа, которая довольно сильно взломала формат файла до предела, чтобы сэкономить место.(Да, это демо-сцена для тех, кто знает.)

Objdump не хочет помогать мне с этим;Быстрый поиск в Google не дал никаких реальных результатов для этой проблемы, и справочная страница не кажется слишком щедрой в этом отношении.

Есть и другие, такие как Лида.Однако по какой-то причине я не смог заставить Лиду работать;Я считаю, что есть альтернативы.

У кого-нибудь есть опыт разборки исполняемых файлов DOS в Linux?Или мне просто попробовать какой-нибудь дизассемблер на DOS и запустить его на Dosemu?

Ответы [ 2 ]

6 голосов
/ 10 декабря 2010

IDA - лучший дизассемблер, также есть версия для Linux.Это лучше, чем простой дизассемблер, потому что он интерактивный.

Кроме того, если вы хотите увидеть красивую сборку, сделанную вручную, лучше всего искать старые вирусы.И не двоичные файлы, а исходники, потому что они комментируются.Вы можете попробовать Netlux для этого.

4 голосов
/ 10 декабря 2010

ndisasm поставляется с NASM , сетевым ассемблером. Он довольно универсален, включая возможность разбора необработанных потоков байтов (поскольку вы упомянули файлы COM), а также несколько форматов объектных файлов. Строго говоря, я думаю, что можно также разбирать необработанные потоки байтов с помощью некоторой опции objdump, но я не помню, как это происходит.

Однако самоизменяющийся код может сделать это довольно сложно. Глядя на поток байтов, трудно предсказать, какими могут быть окончательные выполняемые инструкции, если программа изменит себя, что является распространенным приемом экономии пространства в эпоху DOS. Вы упомянули загрузку в DOS, которая дает мне несколько интересных идей: возможно, вы могли бы пройти через нее с помощью отладчика DOS или запустить DOS под qemu и использовать его параметры отладки (некоторые из которых включают вывод вывода сборки и состояние регистра во время выполнения) .

...