linux源码分析-ptrace

linux源码分析-ptrace

ID:10262184

大小:778.50 KB

页数:48页

时间:2018-06-14

linux源码分析-ptrace_第1页
linux源码分析-ptrace_第2页
linux源码分析-ptrace_第3页
linux源码分析-ptrace_第4页
linux源码分析-ptrace_第5页
资源描述:

《linux源码分析-ptrace》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、一函数说明1.函数使用说明名字ptrace–进程跟踪形式#includeintptrace(intrequest,intpid,intaddr,intdata);描述Ptrace提供了一种父进程可以控制子进程运行,并可以检查和改变它的核心image。它主要用于实现断点调试。一个被跟踪的进程运行中,直到发生一个信号。则进程被中止,并且通知其父进程。在进程中止的状态下,进程的内存空间可以被读写。父进程还可以使子进程继续执行,并选择是否是否忽略引起中止的信号。Request参数决定了系统调用的功能:PTRACE_TRACEME本进程被其父进程所跟踪。其父进程应该希

2、望跟踪子进程。PTRACE_PEEKTEXT,PTRACE_PEEKDATA从内存地址中读取一个字节,内存地址由addr给出。PTRACE_PEEKUSR从USER区域中读取一个字节,偏移量为addr。PTRACE_POKETEXT,PTRACE_POKEDATA往内存地址中写入一个字节。内存地址由addr给出。PTRACE_POKEUSR往USER区域中写入一个字节。偏移量为addr。PTRACE_SYSCALL,PTRACE_CONT重新运行。PTRACE_KILL杀掉子进程,使它退出。PTRACE_SINGLESTEP设置单步执行标志PTRACE_ATTACH跟踪指定pid进程。

3、PTRACE_DETACH结束跟踪Intel386特有:PTRACE_GETREGS读取寄存器PTRACE_SETREGS设置寄存器PTRACE_GETFPREGS读取浮点寄存器PTRACE_SETFPREGS设置浮点寄存器init进程不可以使用此函数返回值成功返回0。错误返回-1。errno被设置。错误EPERM特殊进程不可以被跟踪或进程已经被跟踪。ESRCH指定的进程不存在EIO请求非法1.功能详细描述1)PTRACE_TRACEME形式:ptrace(PTRACE_TRACEME,0,0,0)描述:本进程被其父进程所跟踪。其父进程应该希望跟踪子进程。2)PTRACE_PEEKTE

4、XT,PTRACE_PEEKDATA形式:ptrace(PTRACE_PEEKTEXT,pid,addr,data)ptrace(PTRACE_PEEKDATA,pid,addr,data)描述:从内存地址中读取一个字节,pid表示被跟踪的子进程,内存地址由addr给出,data为用户变量地址用于返回读到的数据。在Linux(i386)中用户代码段与用户数据段重合所以读取代码段和数据段数据处理是一样的。3)PTRACE_POKETEXT,PTRACE_POKEDATA形式:ptrace(PTRACE_POKETEXT,pid,addr,data)ptrace(PTRACE_POKEDA

5、TA,pid,addr,data)描述:往内存地址中写入一个字节。pid表示被跟踪的子进程,内存地址由addr给出,data为所要写入的数据。1)PTRACE_PEEKUSR形式:ptrace(PTRACE_PEEKUSR,pid,addr,data)描述:从USER区域中读取一个字节,pid表示被跟踪的子进程,USER区域地址由addr给出,data为用户变量地址用于返回读到的数据。USER结构为core文件的前面一部分,它描述了进程中止时的一些状态,如:寄存器值,代码、数据段大小,代码、数据段开始地址等。在Linux(i386)中通过PTRACE_PEEKUSER和PTRACE_P

6、OKEUSR可以访问USER结构的数据有寄存器和调试寄存器。2)PTRACE_POKEUSR形式:ptrace(PTRACE_POKEUSR,pid,addr,data)描述:往USER区域中写入一个字节,pid表示被跟踪的子进程,USER区域地址由addr给出,data为需写入的数据。3)PTRACE_CONT形式:ptrace(PTRACE_CONT,pid,0,signal)描述:继续执行。pid表示被跟踪的子进程,signal为0则忽略引起调试进程中止的信号,若不为0则继续处理信号signal。4)PTRACE_SYSCALL形式:ptrace(PTRACE_SYS,pid,0

7、,signal)描述:继续执行。pid表示被跟踪的子进程,signal为0则忽略引起调试进程中止的信号,若不为0则继续处理信号signal。与PTRACE_CONT不同的是进行系统调用跟踪。在被跟踪进程继续运行直到调用系统调用开始或结束时,被跟踪进程被中止,并通知父进程。5)PTRACE_KILL形式:ptrace(PTRACE_KILL,pid)描述:杀掉子进程,使它退出。pid表示被跟踪的子进程。1)PTRACE_SINGLESTEP形式:

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。