The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Новая версия фреймворка для обратного инжиниринга - radare2 0.9.6

11.11.2013 23:53

Вышла новая версия radare 0.9.6, открытого фреймворка для реверс-инжиниринга. Фреймфорк написан полностью на языке Си, и доступен как в виде библиотек, так и в виде утилит (r2, rabin2, rasm2, etc). Большая часть фреймворка распространяется под лицензией LGPL, что позволяет использовать его в коммерческих приложениях.

Среди поддерживаемых архитектур: 8051, x86(16, 32 и 64 бита), arm (включая aarch64), avr, arc (arctangent a4 и arcompact), mips, powerpc, sparc, java, dalvik, bf, rarvm. Radare2 компилируется и работает в GNU/Linux, Windows, OSX, *BSD, Android, Solaris и iOS. Особенностью фреймворка является его модульность и расширяемость: поддерживает скриптование на Vala, Python, Perl, Ruby, Go, Guile, Lua, JavaScript, Java. Предоставляется поддержка отладки, в том числе и через протокол gdb. Основной парадигмой дизассемблера является интерактивность.

В новой версии:

  • Поддержка цветовых схем и вывода стрелок/рамок символами юникода.
  • Расположение конфигурационных файлов приведено в соответствии со спецификациями XDG.
  • Поддержка платформ AArch64, Texas Instruments C55x+, 8051, ARCompact.
  • Автоматическое распознавание и загрузка исполняемых файлов TE (Terse Executable), образов BIOS/UEFI.
  • Поддержка классов Java 7.
  • Поддержка объявления типов структур и множеств, например командой 'td':
    
       [0x8048000]> "td struct Foo { int a; int b; };"
    
    
  • Python-биндинги переписаны с использованием ctypes, вместо swig.
  • Поддержка биндингов на Java JNI и D.
  • Для упрощения работы в r2 добавлена базовая поддержка команд 'clear', 'ls', 'cat', 'cd', 'pwd'.
  • Все команды могут быть соединены через пайпы '|' как и в обычном POSIX shell.
  • Начат рефакторинг и переход ядра на SDB (простая база данных "ключ-значение") для хранения метаинформации (функции, метки, комментарии и многое другое).

Релиз был подготовлен с активным тестированием и исправлением регрессий (r2-regressions tests). При нахождении ошибок просьба, по возможности, прикреплять результат выполнения такого теста к уведомлению об ошибке вместе с подробным описанием проблемы.

  1. Главная ссылка к новости (http://rada.re/get/r2-096.html...)
Автор новости: XVilka
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/38403-radare2
Ключевые слова: radare2, debug
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (36) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 00:34, 12/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Супер! Совершенно незаменимая штука.
     
  • 1.2, Аноним (-), 00:38, 12/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Мегавещь! И на правильных сях.
     
  • 1.3, Аноним (-), 00:54, 12/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Огромное спасибо за новость! А ты случаем не писал статей с примерами работ в ней??
     
     
  • 2.4, XVilka (ok), 01:01, 12/11/2013 [^] [^^] [^^^] [ответить]  
  • +11 +/
    Было дело. Вообще пишу по реверсу BIOS/UEFI, но планирую и пару crackme разобрать с помощью radare2. А вообще вот статьи про использование radare2 для crackme - http://dustri.org/b/tag/radare2.html
     
     
  • 3.5, kai3341 (ok), 03:03, 12/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Ник ваш больно знакомый. Вы не с мотофорума?
     
     
  • 4.17, Аноним (-), 07:03, 12/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Он много откуда. Какие-то части flashrom тоже вроде на совести xvilka.
     

  • 1.6, arisu (ok), 03:35, 12/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    авторы молодцы. долгой жизни и всяческих успехов.
     
  • 1.8, pavlinux (ok), 03:56, 12/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Ушёл ломать нвидиевый блоб.
     
     
  • 2.9, arisu (ok), 03:57, 12/11/2013 [^] [^^] [^^^] [ответить]  
  • +20 +/
    > Ушёл ломать нвидиевый блоб.

    сломаешь — за новым не приходи!

     
     
  • 3.10, Аноним (-), 04:42, 12/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    если он сломает, то новый - и не понадобится ;)
     
  • 3.16, Аноним (-), 07:02, 12/11/2013 [^] [^^] [^^^] [ответить]  
  • +11 +/
    > сломаешь — за новым не приходи!

    Нене, ему надо два. Чтобы все по правилам: один сломал, второй про@#$л :).

     

  • 1.11, Аноним (-), 05:27, 12/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Что-то это напоминает. А, IDA, ну конечно же :)
     
     
  • 2.12, pavlinux (ok), 05:36, 12/11/2013 [^] [^^] [^^^] [ответить]  
  • –3 +/
    SoftICE нашё фсё!!!
     
     
  • 3.14, Аноним (-), 07:01, 12/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    kdb тебе в руки :)
     

  • 1.13, Аноним (-), 06:48, 12/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    SoftIce под LGPL? Под линух есть? Если нет, то не считается.
     
     
  • 2.15, Аноним (-), 07:02, 12/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > SoftIce под LGPL? Под линух есть? Если нет, то не считается.

    Есть kdb. Нечто подобное по смыслу как раз...

     
  • 2.18, andy (??), 09:11, 12/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Был linICE вроде. Но не развивается давно.
     

  • 1.19, fufufuu (?), 10:23, 12/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    он дрова под винду может ковырять?
     
     
  • 2.20, цирроз (ok), 11:06, 12/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    второй абзац?
     

  • 1.21, annulen (ok), 11:25, 12/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Пытался разобраться, но так и не осилил. Продолжаю дизассемблить ht и objdump -d.
     
     
  • 2.26, XVilka (ok), 13:18, 12/11/2013 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Там довольно просто - 'r2 /directory/file'. Если это формат исполняемого файла - он сам распознает и прыгнет на току входа. Если это просто бинарный файл - надо указывать архитектуру и битность - 'r2 -a arm -b 16 /directory/file' - ARM, в режиме Thumb.
    'pd' - дизассемблировать, 'pd 5' - дизассемблировать 5 инструкций, 'pdf' - дизассемблировать функцию, 'pdf @ sym.main' - дизассемблировать функцию 'main'. 'Vp' - переход в визульный режим. 'af+ 0x234234 32 my_function' - добавить функцию 'my_function' по адресу 0x234234 с размером 32. 'Cd 2 @ 0x234400' - пометить 2 байта по адресу 0x234400 как данные. "CCa 0x5723462 my comment" - добавить комментарий 'my comment' по адресу 0x5723462. 'f .my_label @ 0x789433' - добавить локальную (доступно только внутри функций) метку 'my_label' по адресу 0x789433. Для других команд и подробностей их использования есть функция '?' - показывает список команд, их синтаксис и краткое описание.
     
     
  • 3.28, annulen (ok), 13:35, 12/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Мне бы что-нибудь с воркфлоу в стиле ht - дизассемблировать весь бинарник, а затем ходить по ссылкам в листинге и править результаты анализа и отставлять свои комментарии. В ht не хватает возможности оставлять свои комментарии и сохранять потом весь листинг. Да и скриптинг не помешал бы (например, я бы тогда автоматизировал разруливание релокейшенов). Еще для ppc ht "режет" границы функций по blrl, хотя обычно это простой вызов функции по указателю внутри функции.
     
     
  • 4.31, XVilka (ok), 14:06, 12/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Ну для этого отлично подойдет visual mode (команды 'V'). А скриптинг есть - если собрать radare2, а потом r2-bindings, то в r2 будут доступны скрипты - например '!#lua print("qwe")' или '!#python print("wre")'
     
  • 2.78, Monah Tuk (?), 09:24, 14/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    HT это HT Editor: http://hte.sourceforge.net/ ?
     
     
  • 3.79, annulen (ok), 17:04, 15/11/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > HT это HT Editor: http://hte.sourceforge.net/ ?

    Да. На мой взгляд, весьма полезная штука.

     
     
  • 4.80, Monah Tuk (?), 04:14, 19/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >> HT это HT Editor: http://hte.sourceforge.net/ ?
    > Да. На мой взгляд, весьма полезная штука.

    А можно на пальцах, есть ли там возможность загрузить листринг полученный от objdump для mips, и получить возможность переходов по b и прочим командам (желательна и визуализация переходов), ну и там редактирование. А то очень не хватает такой утилиты.

     

  • 1.22, es (??), 12:33, 12/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Боже правый, sourcer реинкарнировал.
     
     
  • 2.27, XVilka (ok), 13:20, 12/11/2013 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Sourcer был не интерактивный. А это - интерактивный, за счет чего (в отличие от того же ndisasm, objdump, etc) можно получить вполне читаемый листинг.
     

  • 1.23, x0r (??), 12:42, 12/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    отреверсил Inertia Player 16/32bit DOS
    http://www.youtube.com/watch?v=ow6NWPmHJK0
    https://github.com/xor2003/inertia_player
    как проще сконвертить в C?
    tasm_recover не осилил пока
     
     
  • 2.51, annulen (ok), 20:57, 12/11/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > отреверсил Inertia Player 16/32bit DOS
    > http://www.youtube.com/watch?v=ow6NWPmHJK0
    > https://github.com/xor2003/inertia_player
    > как проще сконвертить в C?

    Если полностью отреверсил, тебе не составит труда написать код самостоятельно :)

     
     
  • 3.77, x0r (??), 16:48, 13/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    а как же личная жизнь и здоровье?)
     

  • 1.24, Аноним (-), 12:45, 12/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ух ты! Теперь Иду можно будет выкинуть?
     
     
  • 2.72, eoranged (ok), 08:14, 13/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Ещё не скоро. Очень не скоро.

    Все, кому нужно, разжились IDA Pro. А все остальные или не потянут разработку продукта такого уровня или им вообще не нужен дизассемблер/декомпилятор.

     

  • 1.74, Аноним (-), 11:29, 13/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Он умеет как IDA опознавать вызываемые системные функции DOS и Windows и отмечать места вызовов комментариями? Если нет, насколько сложно прикрутить такую возможность через скрипты?
     
     
  • 2.75, XVilka (ok), 13:12, 13/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Пока не умеет. Но это в планах - https://github.com/radare/radare2/issues/26

    Скриптами это можно сделать, например для питона получить информацию об инструкции - 'core.cmd_str("pi")'

     
     
  • 3.76, XVilka (ok), 13:13, 13/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Или 'core.op_str(addr)'
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру