Попробовал интерактивный дизассемблер Hopper

19 декабря 2016

Не то, чтобы мне часто приходилось что-то там дизассемблировать. Но время от времени возникает желание посмотреть, в какой ассемблерный код превратился твой код на C. Для решения этой задачи зачастую хватает objdump, но только если ты заранее знаешь, где и что именно ищешь. Для более сложных случаев возникает потребность в чем-то вроде IDA Pro, да вот только стоит эта IDA Pro как вне себя (минимум 589$). К счастью, есть не менее функциональная альтернатива с вменяемой стоимостью (99$) в лице дизассемблера Hopper.

Примечание: Hopper работает под Linux (есть даже AUR) и MacOS. Версии для Windows, насколько я понимаю, не предусмотрено.

Так в Hopper выглядит дизассемблерный код:

Дизассемблерный код в Hopper

С помощью клавиши N можно переименовывать процедуры и метки. Нажатием на ; и / можно вставлять в код комментарии. Кроме того, нажатие D говорит интерпретировать участок, как бинарные данные, а C говорит интерпретировать данные, как код. Есть множество других полезных клавиш, но вы без труда узнаете о них самостоятельно. Они все подписаны в меню.

Также код можно представлять в виде control flow graph:

Отображение control flow graph в Hopper

… или псевдокода:

Отображение псевдокода в Hopper

Еще Hopper умеет модифицировать исполняемые файлы во встроенном hex-редакторе, исполнять скрипты на Python (здесь есть примеры), и имеет встроенный GUI-отладчик. В общем, очень крутая и полезная штука. Подумал, может кто-нибудь про нее не знает :)

А чем вы нынче дизассемблируете?

Метки: , , .

Подпишись через RSS, E-Mail, Google+, Facebook, Vk или Twitter!

Понравился пост? Поделись с другими: