在Linux下,如何将数据写入另一个进程的内存中? Python实现。

6
如何在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
"rw" 不是 "open()" 的有效模式值。要同时打开文件进行读写,您必须使用 "r+"。 - Martijn Pieters
1
你确定使用显式IPC(其中可以包括共享内存)不更合适吗? - Brian Cain
你所尝试的事情足够不寻常,也许分享一下你想要实现什么目标会得到更好的答案,而不是询问你预设解决方案的执行情况。 - engineerC
@ZippyZeppoli 另一个进程是标准的用户空间进程,尽管是闭源的。 - user1998059
@CaptainMurphy,我正在尝试修改一个正在运行的闭源应用程序中的一些字符串,将所有'XYZ'实例替换为'ABC'。通过向进程发送SIGSTOP并读取/proc/$PID/maps和/proc/$PID/mem,我已经成功获取了所有这些字符串的地址。但是我需要一种写入这些地址的方法。 - user1998059
显示剩余7条评论
1个回答

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接