我已经玩了一段时间了ptrace
。我遵循了一些教程,例如this one或this one。到目前为止,当我有一个ptrace
-d 子进程时,我能够:
- 检测系统调用并浏览寄存器。
- 借助.
PTRACE_PEEKDATA
_ptrace
- 借助.
PTRACE_POKEDATA
_ptrace
我的问题如下:假设我刚刚检测到一个open
系统调用。由于存储在 ebx 寄存器中的地址,我可以修改要打开的文件的文件名。但是,我想知道是否可以将文件名更改为任何我想要的任何大小。如果我要更改的名称非常大(假设是原始文件名长度的 50 倍),我不会弄乱一些我不应该写的内存吗?我应该在孩子的记忆空间中“分配”一些记忆吗?如果是这样,这将如何完成?
请注意,子进程是一些用 执行的程序execve
,我无法访问它的源代码。