LINUX.ORG.RU

Релиз открытого дизассемблера Cutter 1.7.4

 , ,


11

2

Cutter — графическая оболочка для radare2, написанная на Qt/C++. Cutter, как и сам radare2, нацелен на процесс обратной разработки программ в машинном коде, или байткоде (например JVM). Предоставляет собой наиболее активно развивающийся дизассемблер с открытым кодом.

Список поддерживаемых архитектур:

i386, x86-64, ARM, MIPS, PowerPC, SPARC, RISC-V, SH, m68k, AVR, XAP, System Z, XCore, CR16, HPPA, ARC, Blackfin, Z80, H8/300, V810, V850, CRIS, XAP, PIC, LM32, 8051, 6502, i4004, i8080, Propeller, Tricore, Chip8 LH5801, T8200, GameBoy, SNES, MSP430, Xtensa, NIOS II, Dalvik, WebAssembly, MSIL, EBC, TMS320 (c54x, c55x, c55+, c66), Hexagon, Brainfuck, Malbolge, DCPU16.

Список поддерживаемых форматов файлов:

ELF, Mach-O, Fatmach-O, PE, PE+, MZ, COFF, OMF, TE, XBE, BIOS/UEFI, Dyldcache, DEX, ART, CGC, Java class, Android boot image, Plan9 executable, ZIMG, MBN/SBL bootloader, ELF coredump, MDMP (Windows minidump), WASM (WebAssembly binary), Commodore VICE emulator, Game Boy (Advance), Nintendo DS ROMs and Nintendo 3DS FIRMs, various filesystems.

Помимо дизассемблера, планируется поддержка отладки и декомпиляции.

В этом релизе:

  • обновлена используемая версия radare2;
  • ускорена отрисовка перекрестных ссылок в коде;
  • добавлен Python API;
  • исправлено множество ошибок.

Проект также ведет список багов для начинающих контрибьюторов.

>>> Подробности

★★★★

Проверено: Shaman007 ()

Помимо дизассемблера, планируется поддержка отладки и декомпиляции.

Что изменилось за последние 5 лет?

olegd ★★ ()
Ответ на: комментарий от olegd

В смысле? Cutter молодой еще, нет ему 5. А в радаре очень многое поменялось - улучшилась стабильность (покрытие тестами, фаззингом и статическими анализаторами), улучшился анализ, увеличилось количество поддерживаемых архитектур, платформ и форматов файлов. Очень много всего.

Появилась книга.

XVilka ★★★★ ()
Ответ на: комментарий от XVilka

В смысле? ... А в радаре очень многое поменялось

5 лет назад декомпиляция была в ближайших планах, судя по сайту (с авторами не общался). Сейчас декомпиляция по-прежнему в ближайших планах. Что поменялось с нею?

olegd ★★ ()

Вот почему программы на Qt всегда красивые, стильные и удобные, а на GTK вечно какие-то говноподелия, сделанные первокурсником на коленке? За последние 10 лет это впечатление не изменилось от слова никак, только подтверждается все новыми выходящими программами.

anonymous ()

Я правильно понимаю, что в этой штуке можно писать свои комментарии к дизассемблированному листингу?

annulen ★★★★★ ()

А у radare2 имеется аналог Hex-Rays Decompiler, чтобы генерить C-псевдокод для тех архитектур Assembler которых ты не знаешь?

EXL ★★★★★ ()

Чёрт побери, уменя аж на душе потеплело, objdump конечно прикольный, но не настолько. Щас на радостях, что-нибудь реверс-нижерну.

kostyarin_ ()
Ответ на: комментарий от anonymous

Ты всё правильно понял. Внутри примерно то же самое что и снаружи. При этом за гтк стоят корпорации типа редхат и микрософт, а за куте только немного автопрома. И сразу видно, кто жопу отъедает, а кто работает. Ну впрочем видно, что и бизнес логично выбирает кути, поскольку те зарекомендовали себя как надёжное долгосрочное решение. Зачем только нужны отъедатели жопы, вот в чём вопрос. Особенно когда те насильно сажают на свою иглу поставщика (см. редхат).

anonymous ()
Ответ на: комментарий от anonymous

Вот почему программы на Qt всегда красивые, стильные и удобные, а на GTK вечно какие-то говноподелия, сделанные первокурсником на коленке?

Формочки на Qt красивые из коробки, а вот на GTK ещё постараться надо, хотя можно

Gargamel ()
Ответ на: комментарий от anonymous

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

За Qt стоит одна корпорация, которая берёт денюжку за коммерческое использование (хотя можно тупо выложить obj файлы отдельно или импортировать Qt динамически, и LGPL не будет нарушен) и техподдержку. GTK же пилилась как альтернатива Qt, чтобы пилить коммерческий софт без покупки лицензии. Поэтому GTK без поддержки сторонних корпораций не может. Да и должна же существовать какая-та альтернатива Qt!

Gargamel ()
Ответ на: комментарий от xpahos

Аргументируй. Посмотрел исходники – не похоже.

EXL ★★★★★ ()
Ответ на: комментарий от annulen

Конечно! Комментарии это одна из самых важных вещей при реверс-инжиниринге.

XVilka ★★★★ ()
Ответ на: комментарий от xpahos

Нет, была редакция с WebKit, но он только использовался для отображения Jupyter.

XVilka ★★★★ ()
Ответ на: комментарий от EXL

> 5 лет назад декомпиляция была в ближайших планах, судя по сайту (с авторами не общался). Сейчас декомпиляция по-прежнему в ближайших планах. Что поменялось с нею?

А у radare2 имеется аналог Hex-Rays Decompiler, чтобы генерить C-псевдокод для тех архитектур Assembler которых ты не знаешь?

Да, на данный момент наиболее поддерживаемы два декомпилятора - radeco и r2dec. Оба активно разрабатываются и могут быть использованы прямо сейчас, но пока не всегда дают читаемый код. Поэтому мы особо их пока не рекламируем. Декомпиляция - крайне сложный процесс, поэтому разработка так медленно и идет. Но большая часть пути уже пройдена. Вот что осталось до выпуска первой версии radeco.

По поводу поддержки отладки - она отсутствует только в Cutter (но присутсвует приблизительная эмуляция на основе ESIL),в radare2 же она присутствует много лет, при этом есть как нативный отладчик, так и поддержка протоколов GDB/LLDB, WinDbg/KD, Winedbg, возможность открытия файлов PDB в Linux, без использования сторонних библиотек.

XVilka ★★★★ ()
Последнее исправление: XVilka (всего исправлений: 1)
Ответ на: комментарий от XVilka

С помощью этой штуки можно дизассемблировать бинарник, изменить несколько команд и собрать обратно?

anonymous ()
Ответ на: комментарий от anonymous

Если это не потребует изменения размера или смещений внутри (так как придется переделывать смещения, релокации и т.д.) - то конечно. Смотри «wa» и «wx» команды в radare2:

XVilka ★★★★ ()
Последнее исправление: XVilka (всего исправлений: 2)

вот бы матрицу фич по сравнению с IDA

anonymous ()
Ответ на: комментарий от EXL

Да, похоже они перешли на использование библиотеки. Не помню как проект назывался до Cutter, но раньше он использовал веб гуй от r2.

xpahos ★★★★★ ()

Релиз открытого дизассемблера Cutter 1.7.4

Cutter — графическая оболочка для radare2

Т.е. релиз не открытого дизассемблера, коим является radare2, а релиз графической оболочки Cutter для дизассемблера radare2. Тут подавляющее большинство новостей об открытом ПО, и поэтому «открытый» можно спокойно опустить. Надо бы заголовок поправить?

gag ★★★★★ ()

Ох, читаю новость ради сообщений XVilka, на русском)

Судя по наличию AppImage это месиво из qt nodejs по прежнему самостоятельно очень сложно собрать, ну спасибо хоть не докер.

Вопрос к топикстартеру, насколько стабильно API r2 в плане команд, а то судя по твиттеру который читаю фоном ,там все растет и меняется, что каждый год если не изучал, надо переучиваться?

DR_SL ★★★★ ()
Ответ на: комментарий от DR_SL

Судя по наличию AppImage это месиво из qt nodejs по прежнему самостоятельно очень сложно собрать, ну спасибо хоть не докер.

Так внутри образов докера уже всё собрано, что там собирать?

Gargamel ()
Ответ на: комментарий от Gargamel

Ну бывает иногда берешь код с гитхаба и начинаешь его собирать по инструкции... иногда такое бывает.

DR_SL ★★★★ ()
Ответ на: комментарий от DR_SL

NodeJS там нет. Это только для WebUI нужен, который с Cutter никак не связан.

API нестабильно в некоторых вопросах, так как именно сейчас мы проводим большой рефакторинг и оптимизацию. К моменту издания radare2book в конце года, должно более-менее стабилизироваться.

XVilka ★★★★ ()
Ответ на: комментарий от xor2003

Radare2 поддерживает интеграцию с retdec, но он не интерактивный, что снижает его полезность очень сильно (да и возможности интеграции тоже). Спасибо, посмотрел reko,тесты хорошие, только программа не популярная в нашей отрасли.

XVilka ★★★★ ()
Ответ на: комментарий от XVilka

К концу 2019?, тогда имеет переписывать статью видимо.

Да что кстати посоветуете почитать из статей с примерами работ с r2?

DR_SL ★★★★ ()

IDApro уже можно выкидывать?

anonymous ()
Ответ на: комментарий от XVilka

Проект крутой и меня очень радует, что кто-то противостоит монополистам вроде IDA Pro.

Как-то свои говнокоды под embeded хотел поглядеть в cutter. Там и arm и thumb одновременно. А radare не смог:

1. Анализатор сам не находит thumb код

2. Нельзя как-то адекватно пометить часть кода как arm, а часть как thumb. Наверное только сегментами костылить.

3. elf с thumb+arm понимает, но там отдельные сегменты + всё есть в заголовках elf. У меня же флат бинарь.

В IDA Pro с этим нет проблем. Помечай хоть одну инструкцию как thumb.

Ещё из неприятного, но жить можно:

1. IDA Pro сама находит ASCII printable байты и выводит напротив символ, типа:

db 0x10 ; '0'

Это чертовски удобно. Сразу видно, где строки. Не нужно развивать косоглазие смотря параллельно в дисассемблер.

Но справедливости ради, запилить самому такое легко.

2. Анализатор иды умеет находить данные и линковать их к асм коду. Строки всякие. И выдаёт им человекопонятные метки.

Куда приятнее смотреть «LDR R3, =aOlolo»

3. Гуй Cutter'а жутко тормозит. Сижу не с калькулятора. IDA Pro летает. Он точно на Qt написан? Тормозит именно скроллиг. Переключение между строками - вообще ад. Помогает только отключение всех опций отображения.

4. Если задать базовый оффсет, то Cutter всё равно после открытия файла сикает в 0x0, а не в нужный 0x10000000 (как пример). Приходится вручную переходит к этому адресу.

5. IDA pro подсвечивает адреса, для которых нет загруженных сегментов, красным. Это удобно.

6. «unknown» вместо данных, которые вроде как и не код, но и не помечены как «data» - совсем грустно. Но обходится выводом байтов слева.

anonymous ()
Ответ на: комментарий от anonymous

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

anonymous ()
Ответ на: комментарий от anonymous

кто-то противостоит монополистам вроде IDA Pro.

Там ещё агентство национальной безопасности США пообещало опубликовать свой инструмент «GHIDRA» для всех желающих. В начале марта будет конференция RSA в Сан-Франциско, где продемонстрируют данный тул.

Вот только х.з, будет ли оно просто Free или же OpenSource.

EXL ★★★★★ ()
Ответ на: комментарий от anonymous

2.`afB` команда

2. Это тоже есть, если в каком-то конкретном случае не отработал, то это баг - открывай issue

3. Так как нет кэширования пока, про это в курсе и это в приоритетах

4-5. Спасибо, исправим

6. Не очень понятно, что делать по-умолчанию

XVilka ★★★★ ()
Последнее исправление: XVilka (всего исправлений: 1)
Ответ на: комментарий от XVilka

Так, а как пометить то? Там есть переключалка 16-bit и 32-bit, но которая влияет на весь код глобально.

Как отметить конкретные инструкции как THUMB не понятно.

anonymous ()
Ответ на: комментарий от anonymous

Помечание конкретных инструкций в режиме Thumb не имеет смысла - так как это рантайм флаг, следовательно он следует потоку выполнения, бранчам и функциям. Поэтому флаг меняется по-функциям. Я же написал - ”afB" команда.

XVilka ★★★★ ()

вроде выглядит полезно. но теперь уже нечего дизассемблировать :) даже не могу придумать задачи для него.

Iron_Bug ★★★★ ()
Ответ на: комментарий от XVilka

Кстати, я сейчас понял, почему radare для меня неудобен.

IDA Pro - презумпция данных.

Cutter - презумпция кода.

Т.е. IDA по-умолчанию всё считает данными. Кодом считается только то, что:

a) Отмечено анализатором как код b) Помечено самым юзером как код

Всё остальное выводится как байты.

DCB 0

DCB 0xDE

DCB 0xAD

DCB 0xBE

Т.о. отфильтровывается куча говна, что не является кодом. Это удобно для флат бинарей, где не понятно где данные, код, точка входа.

Так же это упрощает визуальный анализ файла. Ты такой скроллишь кучу мусора и такой видишь всем известный паттерн:

DCB **

DCB **

DCB **

DCB E*

Да это же код, чёрт возьми! И жмёшь «C». У меня это 60% пользовательского опыта в IDA.

А r2 считает всё кодом, данные нужно помечать самому. Ещё и invalid по всему коду. Первое впечатление - ты просто смотришь на портянку из invalid и странного кода. Ничего не понятно. Помечать всё это как данные нереально.

Поэтому лично для меня сегодняшний r2 не применим на флат бинарниках, где сильно перемешаны данные и код.

Буду очень рад, если окажусь не прав, если такое поведение по-умолчанию можно изменить.

PS. Пробовал afB. Как я понял, работает только с объявленными функциями.

Тест файл https://pastebin.com/HmrFRyDp (ARMv5, LE, offset 0x10000000)

Опыт анализа в Radare2

1. Открыл файл - вижу кашу из UNDEFINED/invalid и странного кода

2. Объявляю адрес как функцию - af

3. Запускаю afB 16 - помечает только первые 4 инструкции как THUMB. По бранчам не ходит. Пробовал запускать разные режимы анализа - всё равно по бранчам не ходит и не помечает нужный мне код как THUMB или ARM.

Опыт анализа в IDA Pro

1. Открыл файл - вижу список DCB

2. Жму «C» в 0x10000000 - ида определила, что перед нами THUMB и весь код связанный код успешно дизассемблирован. Вплоть до 0x1000003A. На 0x1000003C определило, что там данные DCD, которые на которые ссылаются из 0x10000022

3. Далее начиная от 0x10000040 снова идут DCB, т.к. на тот код никто не ссылался. Жму «C» - попыталось обработать как thumb, но судя по паттерну ** ** ** E* там точно арм. Жму U что бы пометить обратно как байты. Жму Alt-G и помечаю, что дальше идёт ARM. Ставится метка CODE32. Жму «C» - весь арм код дизассемблирован успешно.

P.S. Не исключаю, что я неправильно использую Radare2.

anonymous ()

It's a good news.

Внезапно сабж проскакал мимо сознания, хотя вроде как в теме. Надо будет занырнуть в него. Пощупать.

anonymous ()
Ответ на: комментарий от EXL

Там ещё агентство национальной безопасности США пообещало опубликовать свой инструмент «GHIDRA» для всех желающих.

Видимо, у них у же есть альтернативная тулза. Либо эта уже не справляется с задачами. Либо оно стало жЫрной.

anonymous ()
Ответ на: комментарий от XVilka

Так что скажете? Очень волнует:

1. Будет ли в бущуем возможность работать в режиме - всё данные, если не помечено иначе? Это основа работы с неизвестными плоскими бинарями.

2. Может, я тупой просто и это уже сейчас можно использовать. Тоже не исключаю.

anonymous ()
Ответ на: комментарий от anonymous

1. Оно по умолчанию данные, но показывает всё равно инструкции. Мы подумаем над этим.

2. Я использую radare2 на сырых бинарниках без проблем, может просто привык уже. Но мы всё равно подумаем над этим вопросом.

Мы тут недавно проводили пользовательский опрос, и опубликовали в нашем блоге вместе с нашими ответами.

Прошу прощения за поздний ответ - не видел новых сообщений. Плохо, что нельзя настроить отправку уведомлений на почту.

XVilka ★★★★ ()

cutter windows

А можно попросить о страшном? Хочется (боюсь не только мне) билд с python-bindings под винду. Такой, где плагины типа \src\plugins\sample-python\ работали бы. Оба релиза 1.7.4 собраны без их поддержки.

tessituro ()
Ответ на: комментарий от XVilka

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

Virtuos86 ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.