jjzjj

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

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

windows - Windows 中有类似 Linux ptrace 系统调用的东西吗?

阅读MonitoringcertainsystemcallsdonebyaprocessinWindows,我想知道Windows相当于ptrace系统调用或编程解决方法。 最佳答案 您可以使用ETW来跟踪系统调用。启动跟踪时,在EVENT_TRACE_PROPERTIES中,您可以将EVENT_TRACE_FLAG_SYSTEMCALL标志添加到EnableFlags。这会启用SysCallEnter和SysCallLeave事件,如所述here. 关于windows-Windows中

linux - ptrace suid 进程(在它放弃特权之后)

我知道我们不能对suid二进制文件执行ptrace。但是,我想知道为什么我们不能在二进制文件将其特权降为uid而不是euid后执行ptrace。例如,在二进制文件中,suid二进制文件在执行某些步骤后会降低权限。seteuid(euid);/*euidwasobtainedbygeteuid()*/ret_chdir=chdir(path);seteuid(ruid);/*ruidwasobtainedbygetuid()*/system("whoami");printf("Enteranychar");scanf("%c",&junk);在我的例子中,当打印“whoami”时,它是进