使用Ptrace去拦截和仿真Linux系统调用
为演示需要,我同时构建了一个非常小的接口,这在实践中并不是个好主意。它与 OpenBSD 的
如果给它传递个参数 0 ,仅允许一些基本的系统调用,包括那些用于去分配内存的系统调用(比如 为防止发生提升权限的行为, 在 xpledge 跟踪器中,我需要去检查这个系统调用:
操作系统将返回
我写了一小段测试程序去打开
做一个无效的系统调用并不会让应用程序崩溃。它只是失败,这是一个很方便的返回方式。当它在跟踪器下运行时,它的输出如下:
这个承诺很成功,第二次的 可以将这种思路进一步发扬光大,比如,改变文件路径或返回一个假的结果。一个跟踪器可以很高效地 chroot 它的被跟踪进程,通过一个系统调用将任意路径传递给 root 从而实现 chroot 路径。它甚至可以对用户进行欺骗,告诉用户它以 root 运行。事实上,这些就是 Fakeroot NG 程序所做的事情。 仿真外部系统假设你不满足于仅拦截一些系统调用,而是想拦截全部系统调用。你就会有了 一个打算在其它操作系统上运行的二进制程序,无需系统调用,这个二进制程序可以一直运行。 使用我在前面所描述的这些内容你就可以管理这一切。跟踪器可以使用一个假冒的东西去代替系统调用号,允许它失败,以及为系统调用本身提供服务。但那样做的效率很低。其实质上是对每个系统调用做了三个上下文切换:一个是在入口上停止,一个是让系统调用总是以失败告终,还有一个是在系统调用退出时停止。 从 2005 年以后,对于这个技术,PTrace 的 Linux 版本有更高效的操作:
(编辑:52站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 如何在Windows 10中使用虚拟桌面
- windows-7 – SCCM是否适合中型企业?
- Win10记事本假死怎么办 Win10记事本假死处理方法
- 腾讯开源框架 Omi 更新,全面拥抱 Web Components
- 21个必知的机器学习开源工具,涵盖5大领域
- windows-server-2016 – 如何在Windows Server 2016上安装A
- windows-installer – Windows Installer总是说“正在安装另
- 树莓派使用入门:可以使用树莓派学习的3种流行编程语言
- windows-server-2012-r2 – 无法激活Windows Server 2012 r
- windows-server-2008 – 启动时运行bat文件