我花了过去几个小时尝试安装反编译器,但没有成功。由于我最近一直在使用radare2作为反汇编程序,因此我认为使用相关的反编译程序包会很好用。在发现radeco和radeco-lib目前不够稳定之后,我使用了它们的包管理器r2pm最终在{{1}中安装了r2snow BASH脚本}。
但是现在我不知道如何运行它来反编译二进制文件!我收到的错误消息是:~/.local/share/radare2/prefix/bin
。我知道"Usage: r2 -i '.!r2snow'"
是r2
的简写,并且radare2
标志是传递脚本文件来运行,但是我尝试过以多种方式传递r2snow BASH脚本,但没有成功。
任何有使用此特定反编译器经验的人都知道如何正确调用它吗?通常我可以自己解决这个问题,但是事实证明,缺乏适当的文档太困难了。
我不骗你,每当你不正确地调用程序时,它就会嘲笑你。最近:-i
也许我应该完全尝试使用其他反编译器。有没有更容易设置的免费反编译器?
答案 0 :(得分:4)
要安装radare2插件,您应该从以下内容开始:
$ r2pm init
$ r2pm update
然后使用r2pm
安装所需的插件:
$ r2pm -i r2snow
您可能会收到此错误:
错误:构建失败。您可能需要“简单安装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 shell或类似r2 -i '.!r2snow' /bin/ls
的外部调用r2snow
我建议使用r2dec
或r2retdec
而不是r2snow。
要安装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
,然后按照repository中的说明进行操作。
安装后,请在r2 shell中使用$dec
。