首页
社区
课程
招聘
4
Android使用perf_event实现硬断点
发表于: 2024-2-15 21:14 10730

Android使用perf_event实现硬断点

2024-2-15 21:14
10730

背景

在Android中,目前有一下几种方式实现硬件断点。

  1. GDB Server
  2. rwProcMem33等此类内核模块

但是这些方式都有一些问题,比如GDB Server需要使用ptrace附加在目标进程,容易被检测。rwProcMem33等内核模块需要内核头文件,不开源内核难以使用,此外触发一次断点后会导致整个线程卡死,直到断点删除。

使用linux perf_event机制实现硬件断点可以在不附加在目标进程、不安装内核模块的情况下下断,同时也无法被目标进程检测。
该方法支持读、写、执行断点,可以读写断点设置1、4、8字节长度。断点后可以输出此时的寄存器信息。


[注意]看雪招聘,专注安全领域的专业人才平台!

收藏
免费 4
支持
分享
赞赏记录
参与人
雪币
留言
时间
dreameriii
为你点赞~
2024-3-2 21:14
ForrestV
为你点赞~
2024-2-20 09:58
轻快笑着行
为你点赞~
2024-2-19 10:07
你瞒我瞒
为你点赞~
2024-2-18 15:12
最新回复 (9)
雪    币: 12
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
第一种怎么实现呢。
2024-2-20 15:40
0
雪    币: 21
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3

..

最后于 2024-2-20 20:25 被wx_晚风_407编辑 ,原因:
2024-2-20 17:23
0
雪    币: 1109
活跃值: (3626)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
 牛批
2024-2-20 18:57
0
雪    币: 42
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5
mb_qnxaollu 第一种怎么实现呢。
使用ptrace的PTRACE_GETREGSET和PTRACE_SETREGSET修改REGSET_HW_BREAK和REGSET_HW_WATCH,内核中这两个regset的定义在这里
https://elixir.bootlin.com/linux/v5.15.148/source/arch/arm64/kernel/ptrace.c#L1470
2024-2-20 20:44
0
雪    币: 24
活跃值: (1739)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6

大佬太强了,正好需要这个功能,感谢无私分享!  

最后于 2024-3-3 09:37 被dreameriii编辑 ,原因:
2024-3-2 21:10
0
雪    币: 12
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
7
有成品不。
2024-6-4 08:36
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
No space left on device怎么解决?
2024-7-11 04:14
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
9
能被检测到
2024-8-26 10:10
0
雪    币: 4
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
10
ri_Char 使用ptrace的PTRACE_GETREGSET和PTRACE_SETREGSET修改REGSET_HW_BREAK和REGSET_HW_WATCH,内核中这两个regset的定义在这里 http ...
最后于 2024-12-13 13:24 被mb_xqptnehm编辑 ,原因: 不用
2024-12-2 19:33
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册