Ответ 1
Попробуйте использовать эту команду, я помню ее когда-нибудь использовать:
otool -tvV a.out
Можно ли получить полную разборку (которая может действовать как вход для ассемблера) исполняемого файла?
Когда я использую otool -tV a.out
, я вижу только текстовый раздел. Другие разделы, такие как данные, не отображаются.
Когда я использую gdb
, для команды дизассемблирования требуется начальный и конечный адрес. Однако я не знаю, как узнать начальный и конечный адрес двоичного файла (скажем, a.out).
Я пытаюсь разобрать исполняемый файл, возиться с кодом сборки, а затем собрать его. Возможно ли это?
Это также поможет, если можно узнать имена всех разделов в двоичном формате.
Попробуйте использовать эту команду, я помню ее когда-нибудь использовать:
otool -tvV a.out
На Mac вы можете установить (возможно, доморощенным) binutils, который включает gobjdump. Вы можете разобрать любую двоичную программу после ее установки. Он открыт и свободен.
Вы можете использовать Диспетчер хоппера
цитата:
Hopper - это обратное инженерное средство для Mac, которое позволяет дизассемблировать, декомпилировать и отлаживать исполняемые файлы Intel Mac на 32/64 бит.
Это стоит 59 долларов США, но вы можете скачать демоверсию, чтобы проверить, выполнит ли она работу в первую очередь.
ИЗМЕНИТЬ
Кажется, вы можете достичь этого с помощью otool
, в соответствии с руководство.
.B -d Отобразите содержимое раздела (_\^ _ DATA, _\^ _ данных).
Также посмотрите этот короткий пост в блоге, в котором описано упомянутое использование otool
, и как вы можете использовать objdump
как упомянутый @Sjlver.
В linux вы можете попробовать использовать objdump -D myprog
Обратите внимание, что это будет работать только в том случае, если программа не содержит нерегулярный поток управления. Особенно вредоносные программы часто запутываются, например. путем вставки ложных байтов, которые затем перепрыгиваются.
Если вы ориентируетесь на такие программы, я слышал, что один из лучших продуктов для использования - IDA pro.