Python:在linux下写入另一个进程的内存

时间:2013-01-21 23:33:07

标签: python linux address-space

如何在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 个答案:

答案 0 :(得分:2)

在此处找到解决方案:http://tito.googlecode.com/svn-history/r2/trunk/draft/fakefs.py

它使用ctypes包加载libc,然后用libc.ptrace和POKEDATA选项来写入字节。