微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何通过/ proc / x / mem访问64位地址空间的上半部分?

如何解决如何通过/ proc / x / mem访问64位地址空间的上半部分?

不,我在任何地方都没有大于18艾字节的文件。我正在尝试从/ proc / self / mem阅读。当我在Python中执行以下操作时:

f.seek(0xfe00001de000007f)

我得到:

ValueError: cannot fit 'int' into an offset-sized integer

我还尝试使用os.lseek,但出现了稍微不同的错误

OverflowError: Python int too large to convert to C long

最后,我尝试通过两个步骤进行搜索

offset = 0xfe00001de000007f
f.seek(offset >> 1)
f.seek(offset >> 1,1) #seek relative to current position

编辑:上面的代码中实际上存在错误,因为offset >> 1丢弃了最低有效位。在此示例中的确为1。因此,如果有效,它实际上将寻求0xfe00001de000007e。但是,这不是我遇到的错误的原因。我知道这一点是因为我尝试查找0x7ffffffffffffffe,然后通过每个1字节进行两次相对查找。第一个起作用,第二个给出错误

但随后我得到:

OSError: [Errno 0] Error

在遇到该错误后,我尝试执行f.tell(),但它再次给出了相同的错误

进一步的研究似乎表明Linux仅不支持超过0x7fffffffffffffffff的文件偏移量。所以我的问题是,如何通过procfs访问这部分64位地址空间?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。