如何通过/ 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 (将#修改为@)

相关问答

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