如何生成随机存储器地址
0x7fffffffffff
与 0x7fffffff0000
之间的
然后使用 struct.pack("L", var)
所以最终会打印出类似的内容:
$ python3 -c 'import struct; print(struct.pack("L", 0x7fffffffd292))'
b'\x92\xd2\xff\xff\xff\x7f\x00\x00'
地址不应包含空字节(\x00)
,但struct添加的后缀
答案 0 :(得分:1)
您可以在循环中生成地址,如果前一个地址有空字节,则重新创建地址。地址只是整数,因此您可以使用random.randint
创建它们:
import random
n = 0 # inital value, obviously has null bytes
while n & 0xff == 0 or n & 0xff00 == 0:
n = random.randint(0x7fffffff0000, 0x7fffffffffff)
# use n here, e.g. struct.pack or whatever
大多数情况下,你只需要一次通过循环。只有当你特别不走运时才需要多次尝试。