bud*_*hao 4 c linux x86 ptrace system-calls
它是否绕过了被跟踪进程的只读页面权限?还是需要临时修改权限才可以写?如果是这种情况,被跟踪的进程是否可以看到权限更改?
查看内核源代码,x86 使用通用(而不是特定于架构的)ptrace 请求函数。
实际更改由mm/memory.c:__access_remote_vm() 完成,它使用mm/gup.c:get_user_pages_remote()获取目标页面的内核映射,然后是 kmap(page)、copy_to_user_pages()、set_page_dirty_lock( )、kunmap(page) 和 put_page(page)。
对实际操作的简单描述是,通过内核映射访问(修改)包含代码的目标进程内存——目标进程和内核之间的虚拟内存“窗口”或“屏障”——而不是通过对用户空间进程可见的映射。
基于以上,我们可以回答上述问题:
是否
PTRACE_POKETEXT绕过被跟踪进程的只读页面权限?
是的。为此,内核不使用用户空间进程可见的页面保护机制;它使用自己的内部映射。
还是需要临时修改权限才可以写?
不,不是的。
请注意,除了用户空间内存中更改的数据(以及可能页面是否由可执行文件支持)以及可能存在的任何内核或硬件错误外,内核何时以及如何使用自己的映射是不可见的和用户空间进程无法检测到。
| 归档时间: |
|
| 查看次数: |
1043 次 |
| 最近记录: |