I am playing around with ptrace in linux. I am trying to write the memory of the traced process using /proc/pid/mem interface.
the function I ma using for accompli
ptrace(2) is a very arcane syscall, only used by debuggers and the like.
For sure, the documented PTRACE_POKEDATA
request to ptrace
should work (when the traced process is stopped) and gives you the ability to write into the memory of the traced process. I don't know if writing (or mmap
-ing) to /proc/$pid/mem
should work or not.
Googling on linux write /proc /mem
give me notably this which suggests that /proc/$pid/mem
was designed to be read-only, but might have been made writable in recent kernels. But recent Documentation/filesystems/proc.txt from kernel source tree don't say much.
I would be cautious about writing on /proc/$pid/mem
; if it works (and it might not) it probably is very kernel version specific.
Perhaps mmap
-ing some segments of that /proc/$pid/mem
file does work (but I don't know). Have you tried that?
In contrast, PTRACE_POKEDATA
should work (it has existed in SunOS and many other Unixes before Linux existed). Of course, it is fairly slow.