<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=386735&amp;view=findpost&amp;p=3411730</guid>
        <pubDate>Fri, 07 Feb 2014 15:16:06 +0000</pubDate>
        <title>Hopper: pretty new disassembler</title>
        <link>https://forum.sources.ru/index.php?showtopic=386735&amp;view=findpost&amp;p=3411730</link>
        <description><![CDATA[reinterpret_alexey: Привет реверс-инженерам. Это не рекламный пост. Я просто нашел для себя одно довольно прикольное<br>
решение на замену дизассемблеру IDA с декомпилятором hex-rays (..., SmartDec, etc.) и теперь хочу<br>
поделиться, подкрепив салат порцией объективной инфы, кое-что сравнив.<br>
Думаю, есть много людей, которые это решение пока ещё не видели, потому что оно не особо<br>
популярно. Или по крайней мее, я не так часто встречаю упомянания об нем.<br>
Это дизассемблер-декомпилятор <strong class='tag-b'>Hopper</strong>. Впечатление от этого инструмента у меня осталось<br>
настолько хорошее, что мне захотелось поделиться с теми, кто про хоппер пока не слышал.<br>
<br>
Собсно, идея в том, что некто Vincent Bénony (имеющий по его словам Ph.D в США) замутил<br>
на Qt-гуе дизассемблер-декомпилятор-отладчик, который работает на Mac OS X, Linux и Windows (автор -<br>
любитель apple-девайсов и софта, что мне симпатизирует).<br>
<br>
<img class='tag-img' src='http://s21.postimg.org/nr7xg7l8n/hopper0.png' alt='user posted image'><br>
<br>
Вот workspace хоппера в работе.<br>
<br>
<img class='tag-img' src='http://s15.postimg.org/6djteuqiz/hopper1.png' alt='user posted image'><br>
<br>
Этот дизассемблер-блабла похож на IDA,<br>
очень обрезанную IDA, в которой, не смотря на это, все же остался самый нужный &quot;ядерный&quot; функционал.<br>
Даже большинство хот-кеев соответствует по смыслу. Хоппер использует и другие популярные<br>
бесплатные/условно-бесплатные компоненты, такие, как Graphviz (для рендеринга control-flow graph)<br>
и LLVM (видимо, для компиляции С-like выражений и других символьных заморочек).<br>
<br>
Дизассемблер у хоппера поддерживает множество нужных форматов бинарников (включая Win32, ELF, Mach-O), поддерживает, в частности, x86_64 и ARMv7. А самое главное - <strong class='tag-b'>декомпилятор у Hopper спокойно<br>
 декомпилирует x64- и ARM- код&#33;</strong>.<br>
<br>
Инструментам, предоставленным юзеру хоппером, конечно, не достает некоторой гибкости и детализированности.<br>
Например, окно control-flow graph (graphviz) имеет только zoom +/- и save pdf и выглядит так:<br>
<br>
<img class='tag-img' src='http://s1.postimg.org/gdfpxel8f/hopper_graph.png' alt='user posted image'><br>
<br>
Быстрой навигации нет ни по декомпилированному коду, ни по графу:<br>
<br>
<img class='tag-img' src='http://s11.postimg.org/5pu17qq37/hopper_dec.png' alt='user posted image'><br>
<br>
Но тем не менее, я уверен, что автор рано или поздно все это добавит (я ему даже написал всяких<br>
предложений на мыло, включая предложение бесплатно помочь в разработке), да и в большинстве задач без этой гибкости вполне можно жить и не обламываться.<br>
<br>
Раз уж пошел разговор о том, чего нет, но хотелось бы, тобишь, о минусах, то, пожалуй, дам себе волю<br>
высказаться. А потом я по-нормальному опишу IDA в сравнении с Hopper и покажу плюсы.<br>
<br>
<ul class="tag-list"><li>Отладка только через gdbserver для Hopper. Он есть только под Mac OS X и доступен на оффсайте. Хотя это инструмент для декомпиля и дизасма, с отладчиками всё и так в порядке, они есть.</li><li>Не хватает навигации в окне декомпилированного кода. Это просто текст в QEditBox-е. DClick/Enter, переводящего на идентификатор, как в IDA/hex-rays, нет. </li><li>Определение границ процедуры сделано не так дотошно, как в IDA. Тоесть, некоторые функции просто не декомпилируются, потому что hopper не может сам определить где конец. Есть проблема с множественными RET - один из них может стать концом там, где есть ещё продолжение (какой-то код).</li><li>Нет imports/exports viewer-ов. Но думаю, что advanced-исследователю, автоматически декомпилирующему код и ксорящему DWORD-ы в уме нужны только самые базовые функции работы с кодом, а перегруженный кнопочками интерфейс как у IDA не особо-то и нужен.</li></ul><br>
Теперь очень хочется поговорить о плюсах. О том, почему я вообще обратил внимание на это изделие<br>
и купил себе его. Конечно, кое-где я сравниваю его с пиратской IDA, это абсолютно не честно, но все же<br>
из-за того, что много ресирчеров используют именно пиратскую IDA (просто не говорят :)), такого<br>
рода сравнение будет все же актуально. Итак, IDA 6.1 не понимала у меня некоторые Mach-O бинарники<br>
от iOS: вместо нормальных ARMv6 - инструкций из instruction set-а отображались сплошные DB, т.е. байтовые<br>
значения в секции кода. Я уже собрался дописывать к IDA свой cpu-модуль или как-то фиксить существующий,<br>
но заметил, что у Hopper-а такой проблемы нет. Итого, он понимает самые последние бинарники, взятые<br>
с iPhone with ARMv7, из iOS7. Это было для меня первым преимуществом.<br>
<br>
Во-вторых, выяснилось, что в отличии от IDA, у которой есть только x86- и ARM-декомпиляторы (причем<br>
они оба стоят значительных денег ~ 2000&#036;, а в паблик утекает только x86-), Hopper нормально<br>
декомпилирует и ARM и x86 и x64 &#33; Поддерживается <strong class='tag-b'>Objective-C</strong>. Да, тут конечно нет кропотливой работы над Signature повадок компиляторов,<br>
т.е. то, что применяет IDA, чтобы понять, каким компилятором был сгенерирован код для более гладкой<br>
его декомпиляции. Тут бывает слишком много Label-ов. Не такой удобный GUI. Но в целом код понятен и никаких<br>
страшных глюков я не заметил. Работать можно, сомнений быть не может. Считаю, что это огромный плюс.<br>
Кстати, да, в отличии от SmartDec :)<br>
<br>
<img class='tag-img' src='http://s15.postimg.org/f22trwxqj/smartdec0.png' alt='user posted image'><br>
<br>
В-третьих, цена. Цена Hopper - самое приятное, смотрите сами.<br>
<br>
<table class='post_table tag-table'><tr><th></th><th>USD</th><th>EUR</th></tr><tr><td>Hopper for Mac</td><td>&#036;59</td><td>45€</td></tr><tr><td>Hopper for Windows</td><td>&#036;45</td><td>35€</td></tr><tr><td>Hopper for Linux</td><td>&#036;45</td><td>35€</td></tr></table><br>
<br>
Bundles:<br>
<br>
<table class='post_table tag-table'><tr><th></th><th>USD</th><th>EUR</th></tr><tr><td>Mac + Windows</td><td>&#036;83.2</td><td>64€</td></tr><tr><td>Mac + Linux</td><td>&#036;83.2</td><td>64€</td></tr><tr><td>Linux+Windows</td><td>&#036;72</td><td>56€</td></tr><tr><td>Mac + Windows + Linux</td><td>&#036;104.3</td><td>80.5€</td></tr></table><br>
<br>
Для сравнения, IDA Pro с декомпилятором hex-rays для ARM обойдется вам примерно в <strong class='tag-b'>3000&#036;</strong>.<br>
<br>
Ну и в четвертых, создается ощущение, что Hopper таки будет развиваться быстро и в нужную сторону,<br>
автор, надеюсь, открыт предложениям и пожеланиям. Хотя на почту он мне так и не ответил :)<br>
<br>
Вот FAQ на оффсайте<br>
<a class='tag-url' href='http://www.hopperapp.com/faq.html' target='_blank'>http://www.hopperapp.com/faq.html</a><br>
<br>
И ещё там у них есть туториал<br>
<a class='tag-url' href='http://www.hopperapp.com/tutorial.html' target='_blank'>http://www.hopperapp.com/tutorial.html</a><br>
<br>
А вот физиономия автора:)<br>
<br>
<img class='tag-img' src='http://www.hopperapp.com/Images/avatar.png' alt='user posted image'><br>
<br>
Всем технических успехов&#33;]]></description>
        <author>reinterpret_alexey</author>
        <category>Assembler</category>
      </item>
	
      </channel>
      </rss>
	