Как правильно установить и запустить декомпилятор 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.