Как правильно установить и запустить декомпилятор radare2 r2snow?

Я провел последние несколько часов, пытаясь установить декомпилятор безуспешно. Поскольку я недавно использовал radare2 в качестве дизассемблера, я подумал, что использование соответствующего пакета декомпилятора будет работать хорошо. Узнав, что radeco и radeco-lib в настоящее время недостаточно стабильны для сборки, я использовал их менеджер пакетов r2pm, чтобы наконец установить скрипт BASH r2snow в ~/.local/share/radare2/prefix/bin,

Но сейчас я не могу понять, как запустить его для декомпиляции двоичного файла! Я получаю сообщение об ошибке: "Usage: r2 -i '.!r2snow'", я знаю это r2 это сокращение для radare2 и -i Флаг должен передать файл сценария для запуска, но я попытался передать его сценарию BASH r2snow несколькими способами, но безуспешно.

Кто-нибудь с опытом использования этого конкретного декомпилятора знает, как правильно вызывать его? Обычно я мог понять это сам, но отсутствие надлежащей документации оказалось слишком сложным.

Я не шучу, каждый раз, когда вы вызываете программу неправильно, она насмехается над вами. Совсем недавно: "Usage: r2 -i '.!r2snow'" -- This should be documented, since it's not that obvious. Возможно, мне стоит попробовать другой декомпилятор. Существуют ли бесплатные декомпиляторы, которые проще в настройке?

1 ответ

Решение

Чтобы установить плагины radare2, вы должны начать с:

$ r2pm init
$ r2pm update

Затем установите желаемый плагин, используя r2pm:

$ r2pm -i r2snow

Вы можете получить эту ошибку:

ОШИБКА: Сборка не удалась. Возможно, вам понадобятся "brew install cartr/qt4/qt" и "brew install boost" или "sudo apt-get install libboost-dev libqt4-dev"

Так что просто установите недостающие библиотеки:

$ sudo apt-get install libboost-dev libqt4-dev'

Затем вы можете вызвать r2snow из оболочки wihtin r2 через !r2snow или как снаружи r2 -i '.!r2snow' /bin/ls


Вместо r2snow я бы предложил использовать r2dec или же r2retdec,

Установить r2dec:

$ r2pm -i r2dec

А потом просто использовать pdd:

$ r2 -A my_file
...
[0x00000540]> s main
[0x000006a4]> pdd
int32_t main () {
    /* arg1 */
    *(local_14h) = edi;
    /* arg2 */
    *(local_20h) = rsi;
    esi = 7;
    edi = 0x61;
    print_it (*(local_20h), *(local_14h));
    esi = 0x11;
    edi = 0x6b;
    print_it (edi, esi);
    *(local_4h) = 5;
    edx = *(local_4h);
    eax = edx;
    eax += eax;
    eax += edx;
    *(local_4h) = eax;
    eax = *(local_4h);
    edi = eax;
    dumb_function (edi);
    esi = 9;
    edi = 0x62;
    print_it (edi, esi);
    eax = 0;
    return eax;
}

Установить r2retdec:

$ r2pm -i r2retdec

Убедитесь, что есть npm установлен и следуйте инструкциям в репозитории. После того, как вы установили его, используйте $dec изнутри оболочки r2.

Другие вопросы по тегам