如何解决如何通过/ 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 举报,一经查实,本站将立刻删除。