我有一个正在运行的 r2 脚本r2 -i script.py test.x。默认情况下,此命令使用 python2。我怎样才能让它使用python3?我在配置中找不到任何东西。
使 r2 -i <script> 使用 python3 而不是 python2
逆向工程
雷达2
2021-07-10 11:35:32
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