diff --git a/translated/tech/20180623 Intercepting and Emulating Linux System Calls with Ptrace - null program.md b/published/20180623 Intercepting and Emulating Linux System Calls with Ptrace - null program.md similarity index 96% rename from translated/tech/20180623 Intercepting and Emulating Linux System Calls with Ptrace - null program.md rename to published/20180623 Intercepting and Emulating Linux System Calls with Ptrace - null program.md index 5f55baf400..f20fea2e07 100644 --- a/translated/tech/20180623 Intercepting and Emulating Linux System Calls with Ptrace - null program.md +++ b/published/20180623 Intercepting and Emulating Linux System Calls with Ptrace - null program.md @@ -1,7 +1,7 @@ 使用 Ptrace 去拦截和仿真 Linux 系统调用 ====== -`ptrace(2)`(”进程跟踪process trace“)系统调用通常都与调试有关。它是类 Unix 系统上通过原生调试器监测被调试进程的主要机制。它也是实现 [strace][1](系统调用跟踪system call trace)的常见方法。使用 Ptrace,跟踪器可以暂停被跟踪过程,[检查和设置寄存器和内存][2],监视系统调用,甚至可以拦截系统调用。 +`ptrace(2)`(“进程跟踪process trace)系统调用通常都与调试有关。它是类 Unix 系统上通过原生调试器监测被调试进程的主要机制。它也是实现 [strace][1](系统调用跟踪system call trace)的常见方法。使用 Ptrace,跟踪器可以暂停被跟踪过程,[检查和设置寄存器和内存][2],监视系统调用,甚至可以拦截intercepting系统调用。 通过拦截功能,意味着跟踪器可以篡改系统调用参数,篡改系统调用的返回值,甚至阻塞某些系统调用。言外之意就是,一个跟踪器本身完全可以提供系统调用服务。这是件非常有趣的事,因为这意味着**一个跟踪器可以仿真一个完整的外部操作系统**,而这些都是在没有得到内核任何帮助的情况下由 Ptrace 实现的。