加载中…
个人资料
行者无疆-超越
行者无疆-超越
  • 博客等级:
  • 博客积分:0
  • 博客访问:23,180
  • 关注人气:1
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
正文 字体大小:

Bionic中的ptrace函数

(2014-04-23 18:52:11)
标签:

bionic

ptrace

android

it

分类: Android安全

ptrace函数的原型是:

long ptrace(enum __ptrace_request request, pid_t pid, void *addr, void *data);

q  参数request是请求ptrace执行的操作。

q  参数pid是目标进程的ID

q  参数addr是目标进程的地址值。

q  参数data的作用则根据request的不同而变化,如果需要向目标进程中写入数据,data存放的是需要写入的数据;如果从目标进程中读数据,data将存放返回的数据。

参数request的常用的值如下:

名称

说明

PTRACE_TRACEMEE

0

PTRACE_TRACEME用在目标进程中。表示子进程容许父进程跟踪自己。

PTRACE_PEEKTEXT

1

从目标进程的代码段中读取一个长整型,内存地址由参数addr指定。

PTRACE_PEEKDATA

2

从目标进程的数据段中读取一个长整型,内存地址由参数addr指定。

PTRACE_PEEKUSR

3

在调试coredump文件时,从USER区域中读取一个长整型。USER结构为coredump文件的前面一部分,它描述了进程中止时的一些状态,如:寄存器值,代码、数据段大小,代码、数据段开始地址等。USER区域地址由参数addr参数。

PTRACE_POKETEXT

4

向目标进程的代码段中写入一个长整型,内存地址由参数addr指定。

PTRACE_POKEDATA

5

向目标进程的数据段中写入一个长整型,内存地址由参数addr指定。

PTRACE_POKEUSR

6

USER区域中写入一个长整型。

PTRACE_CONT

7

继续执行目标进程。参数pid表示被跟踪的目标进程。

PTRACE_KILL

8

中止目标进程。参数pid表示被跟踪的目标进程。

PTRACE_SINGLESTEP

9

设置单步执行标志,单步执行一条指令。被跟踪进程单步执行完一条指令后,被跟踪进程将被中止,并通知调试进程。

PTRACE_GETREGS

12

读取寄存器值,pid表示被跟踪的目标进程,返回的寄存器值保存在data指定的地址中,armx86因为寄存器不相同,所以这里data指向的数据结构也不一样

PTRACE_SETREGS

13

设置寄存器值,pid表示被跟踪的目标进程,data为寄存器数据地址。

PTRACE_GETFPREGS

14

读取浮点寄存器值,pid表示被跟踪的目标进程,返回的浮点寄存器值保存在data指定的地址中

PTRACE_SETFPREGS

15

设置浮点寄存器值,pid表示被跟踪的目标进程,data为浮点寄存器数据地址。

PTRACE_ATTACH

16

要求跟踪某个进程。参数pid表示被跟踪进程。被跟踪进程将成为当前进程的子进程,并进入中止状态。

PTRACE_DETACH

17

结束跟踪某个进程。 参数pid表示被跟踪的子进程。结束跟踪后被跟踪进程将继续执行。

PTRACE_SYSCALL

24

继续执行被中止的进程。参数pid表示被跟踪的子进程。与PTRACE_CONT不同的是当被跟踪进程进行系统调用或者从系统调用中返回时,被跟踪进程将被中止,并通知调试进程。

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有