使 r2 -i <script> 使用 python3 而不是 python2

逆向工程 雷达2
2021-07-10 11:35:32

我有一个正在运行的 r2 脚本r2 -i script.py test.x默认情况下,此命令使用 python2。我怎样才能让它使用python3?我在配置中找不到任何东西。

1个回答

OP 没有提到他们的操作系统,因此我假设操作系统是 Linux。


radare2 正在使用python您机器上的默认版本。这意味着,可能/usr/bin/python在您的机器上指向/usr/bin/python2.7. 您可以通过readlink在文件上执行来检查它

$ readlink -f /usr/bin/python
/usr/bin/python2.7

对此的解决方案应该非常简单。简单地说,改变python指向的位置应该可以解决问题。您可以通过在您的机器上执行ln并指向python执行此操作python3

$ sudo ln -sf /usr/bin/python3 /usr/bin/python

演示时间

想象一下以下 Python 脚本,它只打印 Python 的版本:

$ cat demo.py
import platform
print(platform.python_version())

这是脚本与 Python2 和 Python3 兼容。

现在,让我们尝试使用此初始化脚本执行radare2,而无需更改/usr/bin/python. python会指向python2。

$ readlink -f /usr/bin/python
/usr/bin/python2.7

$ r2 -q -i demo.py -
2.7.12

如您所见,radare2 执行了初始化脚本并打印了“2.7.12”。

现在,让我们修改符号链接以指向python3并再次测试脚本:

$ sudo ln -sf /usr/bin/python3 /usr/bin/python

$ readlink -f /usr/bin/python
/usr/bin/python3.5

$ r2 -q -i demo.py -
3.5.2

按照您的要求, nowpython3被执行而不是python2.

如果要python指向python2,可以使用相同的命令将其还原:

sudo ln -sf /usr/bin/python2.7 /usr/bin/python