Подтвердить что ты не робот

Получение полной разборки исполняемого двоичного кода

Можно ли получить полную разборку (которая может действовать как вход для ассемблера) исполняемого файла?

Когда я использую otool -tV a.out, я вижу только текстовый раздел. Другие разделы, такие как данные, не отображаются.

Когда я использую gdb, для команды дизассемблирования требуется начальный и конечный адрес. Однако я не знаю, как узнать начальный и конечный адрес двоичного файла (скажем, a.out).

Я пытаюсь разобрать исполняемый файл, возиться с кодом сборки, а затем собрать его. Возможно ли это?

Это также поможет, если можно узнать имена всех разделов в двоичном формате.

4b9b3361

Ответ 1

Попробуйте использовать эту команду, я помню ее когда-нибудь использовать:

otool -tvV a.out

Ответ 2

На Mac вы можете установить (возможно, доморощенным) binutils, который включает gobjdump. Вы можете разобрать любую двоичную программу после ее установки. Он открыт и свободен.

Ответ 3

Вы можете использовать Диспетчер хоппера

цитата:

Hopper - это обратное инженерное средство для Mac, которое позволяет дизассемблировать, декомпилировать и отлаживать исполняемые файлы Intel Mac на 32/64 бит.

Это стоит 59 долларов США, но вы можете скачать демоверсию, чтобы проверить, выполнит ли она работу в первую очередь.

ИЗМЕНИТЬ

Кажется, вы можете достичь этого с помощью otool, в соответствии с руководство.

.B -d Отобразите содержимое раздела (_\^ _ DATA, _\^ _ данных).

Также посмотрите этот короткий пост в блоге, в котором описано упомянутое использование otool, и как вы можете использовать objdump как упомянутый @Sjlver.

Ответ 4

В linux вы можете попробовать использовать objdump -D myprog

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

Если вы ориентируетесь на такие программы, я слышал, что один из лучших продуктов для использования - IDA pro.