pwntools 的 p32 函数很奇怪

问题描述

我正在英特尔 x86_64、Ubuntu 64 位、python3、Pwntools v4.3.1 上进行测试

$ python
Python 3.7.4 (default,Aug 13 2019,20:35:49) 
[GCC 7.3.0] :: Anaconda,Inc. on linux
Type "help","copyright","credits" or "license" for more information.
>>> from pwn import *
>>> addr = 0xbffffb78
>>> print(p32(addr))
b'x\xfb\xff\xbf'

在我看来,0xbffffb78 的正确打包结果应该是\x78\xfb\xff\xbf

但是为什么 b'x\xfb\xff\xbf' 会发生? \x78 在哪里?

不使用 p32() 的正确打包方式是什么?

解决方法

这就是 Python 呈现 bytes objects 的方式。如果一个字节可以呈现为 ASCII 字符,则显示为一个。

>>> b"\x78"
b'x'

要查看呈现为十六进制的字节,您可以使用字节对象的 hex method

>>> b'x\xfb\xff\xbf'.hex()
'78fbffbf'

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...