草庐IT

PTRACE_DETACH

全部标签

在 ptraced Linux 进程中调用 ptrace

有人添加到Wikipedia"ptrace"article声称在Linux上,一个ptraced进程本身不能ptrace另一个进程。我正在尝试确定是否(如果是,为什么)是这种情况。下面是我设计的一个简单程序来测试它。我的程序失败(sub子进程未正常运行)但我非常确信这是我的错误,而不是根本性的错误。本质上,初始进程Afork进程B,后者又forkC。A追踪它的childB,B追踪它的childC。设置完成后,所有三个进程都被编写为仅每秒打印一次A、B或C到标准输出。在实践中,A和B工作正常,但C只打印一次,然后就卡住了。使用ps-eopid,cmd,wchan检查显示C卡在内核函数pt

在 ptraced Linux 进程中调用 ptrace

有人添加到Wikipedia"ptrace"article声称在Linux上,一个ptraced进程本身不能ptrace另一个进程。我正在尝试确定是否(如果是,为什么)是这种情况。下面是我设计的一个简单程序来测试它。我的程序失败(sub子进程未正常运行)但我非常确信这是我的错误,而不是根本性的错误。本质上,初始进程Afork进程B,后者又forkC。A追踪它的childB,B追踪它的childC。设置完成后,所有三个进程都被编写为仅每秒打印一次A、B或C到标准输出。在实践中,A和B工作正常,但C只打印一次,然后就卡住了。使用ps-eopid,cmd,wchan检查显示C卡在内核函数pt

c - 不允许 PTRACE_ATTACH

出于某种原因,我无法附加到我自己的进程?!如果我以root身份尝试strace就可以正常工作。$./list8&[1]3141$child4starts...$strace-p3141attach:ptrace(PTRACE_ATTACH,...):OperationnotpermittedCouldnotattachtoprocess.Ifyouruidmatchestheuidofthetargetprocess,checkthesettingof/proc/sys/kernel/yama/ptrace_scope,ortryagainastherootuser.Formorede

c - 不允许 PTRACE_ATTACH

出于某种原因,我无法附加到我自己的进程?!如果我以root身份尝试strace就可以正常工作。$./list8&[1]3141$child4starts...$strace-p3141attach:ptrace(PTRACE_ATTACH,...):OperationnotpermittedCouldnotattachtoprocess.Ifyouruidmatchestheuidofthetargetprocess,checkthesettingof/proc/sys/kernel/yama/ptrace_scope,ortryagainastherootuser.Formorede

linux - PTrace: linux/user.h: 没有那个文件或目录

我在英特尔32位机器上使用Ubuntu12.04和linux-headers-3.2.0-60。我正在尝试构建这个简单的程序来理解PTrace.但是在编译过程中出错。#include#include#include#include#include/*ForconstantsORIG_EAXetc*/intmain(){pid_tchild;longorig_eax;child=fork();if(child==0){ptrace(PTRACE_TRACEME,0,NULL,NULL);execl("/bin/ls","ls",NULL);}else{wait(NULL);orig_ea

linux - PTrace: linux/user.h: 没有那个文件或目录

我在英特尔32位机器上使用Ubuntu12.04和linux-headers-3.2.0-60。我正在尝试构建这个简单的程序来理解PTrace.但是在编译过程中出错。#include#include#include#include#include/*ForconstantsORIG_EAXetc*/intmain(){pid_tchild;longorig_eax;child=fork();if(child==0){ptrace(PTRACE_TRACEME,0,NULL,NULL);execl("/bin/ls","ls",NULL);}else{wait(NULL);orig_ea

使用 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;

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