bash - 如何正确安装和调用“r2snow”radare2 反编译器?
问题描述
在过去的几个小时里,我一直在尝试安装反编译器,但没有成功。由于我最近一直在使用radare2作为反汇编器,我认为使用相关的反编译器包会很好用。在发现radeco和radeco-lib目前还不够稳定,无法构建后,我使用他们的包管理器r2pm最终将r2snow BASH 脚本安装在~/.local/share/radare2/prefix/bin
.
但现在我不知道如何运行它来反编译二进制文件!我收到的错误信息是:"Usage: r2 -i '.!r2snow'"
。我知道这r2
是 的简写radare2
,并且-i
标志是传递要运行的脚本文件,但是我尝试以多种方式将 r2snow BASH 脚本传递给它,但没有成功。
有使用此特定反编译器经验的人知道如何正确调用它吗?通常我可以自己解决这个问题,但事实证明缺乏适当的文档太难了。
我不骗你,每次你不正确地调用程序时,它都会嘲笑你。最近:"Usage: r2 -i '.!r2snow'" -- This should be documented, since it's not that obvious.
也许我应该完全尝试不同的反编译器。有没有更容易设置的免费反编译器?
解决方案
要安装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
然后,您可以通过或从外部调用 r2snow 从 r2 shellr2 -i '.!r2snow' /bin/ls
我建议不要使用 r2snow,而是使用r2dec
or 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 shell 中使用。
推荐阅读
- javascript - 我该如何循环这个 JSON 数据
- javascript - 在 JavaScript 中为数组中的每个对象添加成功率
- android - 更改 TextView 中可绘制图标的位置
- javascript - 我正在尝试使用 jquery 设置表单变量的操作。它正确设置了动作,但在动作页面上没有任何内容
- ios - 归档“Command PhaseScriptExecution failed with a nonzero exit code”时出现颤振错误
- parsing - ANTLR4 解析器丢弃剩余的标记
- python-3.x - 字典不包含必需的键:Pages
- sas - SAS %DO %UNTIL 比较两个变量
- python - 使用带有 re 的列表(或如何删除可能密码子列表之间的子字符串)
- r - 如何在 r 中为 tslm 构建预测模型