草庐IT

使用 ptrace() 取消系统调用

出于某些安全目的,我使用ptrace获取系统调用编号,如果这是一个危险的调用(例如10表示取消链接),我想取消此系统调用。这里是测试程序del.c的源代码。用gcc-odeldel.c编译。#include#includeintmain(){remove("/root/abc.out");return0;}这是安全管理器源代码test.c。用gcc-otesttest.c编译。#include#include#include#include#include#include#include#include#include#includeintmain(){inti;pid_tchild;

使用 ptrace() 取消系统调用

出于某些安全目的,我使用ptrace获取系统调用编号,如果这是一个危险的调用(例如10表示取消链接),我想取消此系统调用。这里是测试程序del.c的源代码。用gcc-odeldel.c编译。#include#includeintmain(){remove("/root/abc.out");return0;}这是安全管理器源代码test.c。用gcc-otesttest.c编译。#include#include#include#include#include#include#include#include#include#includeintmain(){inti;pid_tchild;

linux - 父进程的追踪

子进程可以使用ptrace系统调用来跟踪它的父进程吗?操作系统是linux2.6谢谢。更新1:我想从“自身”追踪process1。这是不可能的,所以我fork并尝试从子进程执行ptrace(process1_pid,PTRACE_ATTACH)。但是我不能,有一个奇怪的错误,比如内核禁止子进程跟踪他们的父进程UPD2:安全策略可以禁止此类跟踪。哪些警察这样做?内核中的校验代码在哪里?UPD3:在我的嵌入式Linux上,PEEKDATA没有错误,但GETREGS没有:child:getregsparent:-1errnois1,strerrorisOperationnotpermitte

linux - 父进程的追踪

子进程可以使用ptrace系统调用来跟踪它的父进程吗?操作系统是linux2.6谢谢。更新1:我想从“自身”追踪process1。这是不可能的,所以我fork并尝试从子进程执行ptrace(process1_pid,PTRACE_ATTACH)。但是我不能,有一个奇怪的错误,比如内核禁止子进程跟踪他们的父进程UPD2:安全策略可以禁止此类跟踪。哪些警察这样做?内核中的校验代码在哪里?UPD3:在我的嵌入式Linux上,PEEKDATA没有错误,但GETREGS没有:child:getregsparent:-1errnois1,strerrorisOperationnotpermitte

c - 运行 ptrace 时偶尔会丢失 PTRACE_EVENT_VFORK

很抱歉,我无法发布代码来重现此内容。我的问题恰恰是我不知道如何去调试这个问题。我正在使用ptrace和PTRACE_O_TRACEFORK|PTRACE_O_TRACEEXEC|PTRACE_O_TRACEVFORK|PTRACE_O_TRACEVFORKDONE|PTRACE_O_TRACECLONE跟踪进程及其子进程(以及子进程的子进程)。该机制很像strace,但用途略有不同,因为我只是跟踪被读取或修改的文件。我的代码(用C语言编写)在x86-64架构的Debianwheezy和Debianjessie上运行良好(在i386上测试较少)。当我尝试在UbuntuPrecisex86

c - 运行 ptrace 时偶尔会丢失 PTRACE_EVENT_VFORK

很抱歉,我无法发布代码来重现此内容。我的问题恰恰是我不知道如何去调试这个问题。我正在使用ptrace和PTRACE_O_TRACEFORK|PTRACE_O_TRACEEXEC|PTRACE_O_TRACEVFORK|PTRACE_O_TRACEVFORKDONE|PTRACE_O_TRACECLONE跟踪进程及其子进程(以及子进程的子进程)。该机制很像strace,但用途略有不同,因为我只是跟踪被读取或修改的文件。我的代码(用C语言编写)在x86-64架构的Debianwheezy和Debianjessie上运行良好(在i386上测试较少)。当我尝试在UbuntuPrecisex86

linux - ptrace 和线程

我正在开发一个linux应用程序,它结合了ptrace来观察另一个进程的线程。当我观察到的应用程序fork子进程时,这已经运行良好。通过在我的应用程序中调用waitpid,我可以在观察应用程序中获得以下信号:SIGSTOP形成子进程SIGTRAP来自parent为了跟踪所有child,我使用PTRACE_O_TRACEFORK设置了ptrace,PTRACE_O_TRACEVFORK,PTRACE_O_TRACECLONE和PTRACE_O_TRACEEXIT.虽然子进程一切正常,但我无法观察应用程序的线程。我得到SIGTRAP来自创建线程的进程,但我没有从线程获得任何信号。线程和pt

linux - ptrace 和线程

我正在开发一个linux应用程序,它结合了ptrace来观察另一个进程的线程。当我观察到的应用程序fork子进程时,这已经运行良好。通过在我的应用程序中调用waitpid,我可以在观察应用程序中获得以下信号:SIGSTOP形成子进程SIGTRAP来自parent为了跟踪所有child,我使用PTRACE_O_TRACEFORK设置了ptrace,PTRACE_O_TRACEVFORK,PTRACE_O_TRACECLONE和PTRACE_O_TRACEEXIT.虽然子进程一切正常,但我无法观察应用程序的线程。我得到SIGTRAP来自创建线程的进程,但我没有从线程获得任何信号。线程和pt

c - ptrace 在 Linux 中如何工作?

ptrace系统调用允许父进程检查附加的子进程。例如,在Linux中,strace(通过ptrace系统调用实现)可以检查子进程调用的系统调用。当附加的子进程调用系统调用时,可以通知ptracing父进程。但这究竟是如何发生的呢?我想知道这个机制背后的技术细节。提前谢谢你。 最佳答案 Whentheattachedchildprocessinvokesasystemcall,theptracingparentprocesscanbenotified.Buthowexactlydoesthathappen?父进程使用PTRACE_AT

c - ptrace 在 Linux 中如何工作?

ptrace系统调用允许父进程检查附加的子进程。例如,在Linux中,strace(通过ptrace系统调用实现)可以检查子进程调用的系统调用。当附加的子进程调用系统调用时,可以通知ptracing父进程。但这究竟是如何发生的呢?我想知道这个机制背后的技术细节。提前谢谢你。 最佳答案 Whentheattachedchildprocessinvokesasystemcall,theptracingparentprocesscanbenotified.Buthowexactlydoesthathappen?父进程使用PTRACE_AT