Python:在Linux下写入另一个进程的内存
如何在Ubuntu Linux下用Python写入另一个进程的地址空间?我尝试过的方法:
1) 使用虚拟文件 /proc/$PID/mem,并定位到特定地址。我成功地用它读取了内存,但尝试写入时却出现了IOError错误:
fd=open("/proc/"+pid+"/mem","r+")
fd.seek(address,0)
fd.write("ABC")
输出:
IOError: [Errno 22] Invalid argument
2) 尝试使用python-ptrace库,正如其他讨论中提到的那样。不过,我找不到好的文档或示例代码。
注意:这不是权限问题,作为root用户运行时也出现同样的情况。
1 个回答
3
在这里找到了解决方案:http://tito.googlecode.com/svn-history/r2/trunk/draft/fakefs.py
这个方法使用了ctypes这个包来加载libc库,然后通过libc.ptrace这个功能,配合POKEDATA选项来写入数据。