LINUX.ORG.RU

Релиз открытого фреймворка реверс-инжиринга Rizin 0.4.0 и его GUI Cutter 2.1.0

 , , , ,


4

2

Rizin – фреймворк для реверс-инжиринга, начавшийся как форк Radare2, продолживший его развитие с уклоном в большую чистоту кода, удобный API и фокусом на анализе кода без форенсики. С момента форка проект перешел на принципиально отличный механизм сохранения сессии («проектов») в виде состояния на базе сериализации. Кроме того, переработан парсер команд и их организация, в сторону большей организации и удобства.

Cutter – графическая оболочка для Rizin, написанная на Qt/C++. Cutter, как и сам Rizin, нацелен на процесс обратной разработки программ в машинном коде или байткоде (например JVM или PYC).

Для Cutter/Rizin существуют плагины декомпиляции на основе Ghidra (только С++ код, без Java), JSdec, RetDec.

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

  • добавлена поддержка создания сигнатур FLIRT, которые потом могут быть загружены в IDA Pro;
  • в стандартую поставку включена база стандартных сигнатур для популярных библиотек;
  • улучшено распознавание функций и строк исполняемых файлов на Go для x86/x64/PowerPC/MIPS/ARM/RISC-V;
  • новый язык промежуточного представления RzIL на базе BAP Core Theory (SMT-подобный язык);
  • добавлена возможность авто-определения базового адреса для «сырых» файлов;
  • поддержка загрузки в отладочном режиме «слепков» памяти на базе Windows PageDump/Minidump форматов;
  • улучшена работа с удаленными отладчиками на базе WinDbg/KD.

На данный момент на новый RzIL переведена поддержка архитектур ARMv7/ARMv8, AVR, 6052, brainfuck. К следующему релизу планируется завершить SuperH, PowerPC, частично x86.

Также дополнительно выпущены:

  • rz-libyara – плагин для Rizin/Cutter для поддержки загрузки и создания сигнатур в формате Yara;
  • rz-libdemangle – библиотека расшифровки имён функций для языков C++/ObjC/Rust/Swift/Java;
  • rz-ghidra – плагин для Rizin/Cutter для декомпиляции (на базе C++ кода Ghidra);
  • jsdec – плагин для Rizin/Cutter для декомпиляции оригинальной разработки;
  • rz-retdec – плагин для Rizin/Cutter для декомпиляции (на базе RetDec);
  • rz-tracetest – утилита перекрёстной проверки корректности трансляции машинного кода в RzIL путём сравнения с трассой эмуляции (на базе QEMU, VICE).

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

★★★★★

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

Если ему подсунуть бинарник неизвестного происхождения - он может определить, на каком языке это написано ?

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

Да, по виду некоторых символов или строк. Но это весьма слабая логика и далеко не всегда работает.

Вот исходник этого детекта: librz/bin/bin_language.c

XVilka ★★★★★
() автор топика

Cutter – вещь, выручал несколько раз, очень понятный у него интерфейс даже для недалёких типа меня. С консольным r2 не так легко было совладать. Вот бы ещё падучесть при работе с большими сессиями ему подубавили, но даже в текущем виде всё равно сильно радует.

IDA Pro не трогал, может поэтому я так доволен.

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

Да нет. Именно Pro (там теперь и Home есть) в одни руки в минимальной комплектации (без декомпиляторов и прочих плюшек) 1975$.

SkyMaverick ★★★★★
()

Поможет разобраться что написали на работе до меня?

perl5_guy ★★★★★
()

А декомпилятор, rzil принимает на вход?

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

Шрифт с «программистскими» лигатурами (т.е. символы != в такой последовательности рисуются вот так). Выглядит как JetBrains Mono - даже вне вопроса о лигатурах очень неплохой моноширинный шрифт. Есть и другие такие: Fira Code, Iosevka, Hasklig… эталонное лоровское ненужно, но в целом приятно и привыкается :)

Возможно, смысл в том, чтобы показать, что GUI лигатуры поддерживает, что в общем-то хорошо, особенно если отключается.

lwo
()
Последнее исправление: lwo (всего исправлений: 1)

Чистота кода это про «anal» в r2? Или ещё что-то? Т.е. есть ли принципиальные отличия от radare2/iaito vs rizin/cutter?

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

Различий очень много, и со временем их количество растёт (часть из них описана в этой же самой новости):

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

А тут можно как в ida:

  1. Помочь дизассемблеру, подсказать где данные, а где код?
  2. Связать автоматически, поправить вручную обращения к переменным и метки переходов?
xor2003
()

Подобные тулзы исключительно для изучения кода, или уже есть «разобрал бинарник-поправил-скомпилилось как родное»?

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

В общем случае такая задача не решаема. Более того, компилятор часть информации теряет по пути, по разборе сложных программ реверс-инженер многое додумывает сам, исходя из своей интуиции и опыта, или кусков доступной документации, кода, SDK/API. Существуют прототипы утилит, использующих ML/DL/etc для декомпиляции, однако дальше академии и примитивных случаев кода они не зашли.

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

Блин что-то уж должно он любые операции делает. Открывал либу под древний ARM размером 4.0 МБ – он анализировал её полчаса.

Декомпиляция тоже медленноватая.

А вот GUI классно сделан.

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

То есть, оно – под Линукс? Ого себе.

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

Это выглядит как вполне конкретный баг. В общем случае такого быть не должно - я рекомендую открыть issue, в идеале запустить с perf и показать где он больше всего проводит времени.

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