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

6 投票
1 回答
1506 浏览
提问于 2025-04-17 13:19

如何在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选项来写入数据。

撰写回答