如何利用Ptrace拦截和模拟Linux系统调用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何利用Ptrace拦截和模拟Linux系统调用相关的知识,希望对你有一定的参考价值。

这里的“拦截”我指的是tracer能够改变系统调用参数,改变系统调用的返回值,甚至屏蔽特定的系统调用。这也就意味着,一个tracer将能够完全实现自己的系统调用,这就非常有趣了,也就是说,一个tracer将可以模拟出一整套操作系统机制,而且这一切都不需要内核提供任何其他帮助。
但问题在于,一个进程一次只能够绑定一个tracer,因此我们无法在调试进程(GDB)的过程中模拟出一套外部操作系统,而另一个问题就是模拟系统调用将耗费更多的资源开销。
在这篇文章中,我将主要讨论x86-64架构下的Linux Ptrace,并且我还会使用到一些特定的Linux扩展。除此之外,我可能会忽略错误检查,但最终发布的完整源码将会解决这些问题。
参考技术A 建议:
推荐使用VMware Workstation 在Windows 7中安装Linux系统。在VMware中安装Linux,安装方式如下:
1 如果使用光盘安装,选择Install Disc从DVD/CDA驱动器,选择Easy模式(简易模式),因为VMware可以认出这些操作系统,开始安装即可,非常简单;
2. 如果使用虚拟光碟安装,需要格式为.iso格式,选择“Installer disc image file(iso)”,也是使用Easy模式(简易模式)安装即可;
3.. 根据自己的实际情况选择安装方式即可;
4. 推荐Redhat Enterprise Linux 5(RHEL 5)系统。

以上是关于如何利用Ptrace拦截和模拟Linux系统调用的主要内容,如果未能解决你的问题,请参考以下文章

linux ptrace II

Ptrace 详解 转载

linux CVE-2019-13272 本地特权漏洞

Android 逆向ptrace 函数 ( C 标准库 ptrace 函数简介 | ptrace 函数真实作用 )

Linux内核本地提权漏洞(CVE-2019-13272)

Ptrace 沙箱绕过