дизассемблер linux - PullRequest
       16

дизассемблер linux

1 голос
/ 09 июля 2009

как мне написать простой дизассемблер для линукса с нуля? Есть ли какие-нибудь библиотеки для использования? Мне нужно что-то, что "просто работает".

Ответы [ 4 ]

8 голосов
/ 09 июля 2009

Вместо того, чтобы писать один, попробуйте Objdump .

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

5 голосов
/ 09 июля 2009

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

1 голос
/ 05 октября 2013

Вы можете использовать libbfd и libopcodes, которые являются библиотеками, распространяемыми как часть binutils.

http://www.gnu.org/software/binutils/

В качестве примера возможностей этих библиотек, посмотрите Online Disassembler (ODA).

http://www.onlinedisassembler.com

ODA поддерживает множество архитектур и предоставляет базовый набор функций. Вы можете ввести двоичные данные в режиме Live View и наблюдать, как дизассемблируется, когда вы печатаете, или вы можете загрузить файл для дизассемблирования. Приятной особенностью этого сайта является то, что вы можете поделиться ссылкой на разборку с другими.

0 голосов
/ 12 июля 2009

Вы можете взглянуть на код ERESI

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

...