首页
社区
课程
招聘
[原创] Android 内核无痕 Hook 框架设计思路和避坑指北
发表于: 2026-7-18 23:09 35141

[原创] Android 内核无痕 Hook 框架设计思路和避坑指北

2026-7-18 23:09
35141
收藏
免费 290
打赏
分享
最新回复 (249)
雪    币: 600
活跃值: (220)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
151

1.每一次对Hook函数地址的读/写/执行都会触发一次内核陷入,TLB刷新,CPU周期耗时远大于正常代码页
2.在 wake_up_new_task 手动克隆幽灵内存、Shadow配置短时间连续fork产生大量子进程,子进程缺页异常时延同样异常
3.高频函数被HWBP断点命中时,极端场景会漏泄SIGTRAP信号

最后于 2026-7-25 08:30 被mb_iiulbilc编辑 ,原因:
2026-7-25 08:28
0
雪    币: 600
活跃值: (220)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
152
更致命的硬伤是架构级的缺陷:你用vmalloc分配内存,然后手动填充PTE,但刻意不挂入VMA为了过maps扫描,但内核硬性规则:mincore、process_vm_readv、mprotect等系统调用强制依赖find_vma()来校验地址合法性,难以修复的物理矛盾在于你既然没有VMA,这些系统调用必然返回-EFAULT,但你为了让Hook生效,又必须让PTE拥有READ和EXEC权限,两者在逻辑上是互斥的,系统调用说查无此页,CPU却说这页能执行,无痕Hook言过其实
2026-7-25 09:07
1
雪    币: 397
活跃值: (1898)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
153
mark
2026-7-25 09:48
0
雪    币: 200
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
154
厉害
2026-7-25 10:27
0
雪    币: 0
活跃值: (85)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
155
支持 支持
2026-7-25 14:40
0
雪    币: 0
活跃值: (390)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
156
6666666666666
2026-7-25 15:43
0
雪    币: 220
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
157
学习一下哇
2026-7-25 16:12
0
雪    币: 200
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
158
666
2026-7-25 16:18
0
雪    币: 2838
活跃值: (3368)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
159
66666
2026-7-25 17:42
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
160
6666
2026-7-25 21:29
0
雪    币: 596
活跃值: (849)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
161
mb_iiulbilc 1.每一次对Hook函数地址的读/写/执行都会触发一次内核陷入,TLB刷新,CPU周期耗时远大于正常代码页2.在 wake_up_new_task 手动克隆幽灵内存 ...
是的,还是有待优化
2026-7-25 23:59
0
雪    币: 596
活跃值: (849)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
162
哈哈, ai味浓浓的哈, “架构级的缺陷”, 感谢指点. 根据我浅薄的理解, cpu取指令不查vma, mmu会根据pte把va转换为pfn+offset也就是pa, 然后cpu根据pa读/写/取指, 所以mincore/mprotect/preadv走find_vma探测不到vma和cpu能不能取指&执行疑似没有关系
2026-7-26 00:38
0
雪    币: 171
活跃值: (112)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
163
66
2026-7-26 01:12
0
雪    币: 1000
活跃值: (590)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
164
严肃学习
2026-7-26 10:48
0
雪    币: 238
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
165
学习学习
2026-7-26 11:11
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
166
66666666
2026-7-26 11:24
0
雪    币: 600
活跃值: (220)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
167
SharkFall 哈哈, ai味浓浓的哈, “架构级的缺陷”, 感谢指点. 根据我浅薄的理解, cpu取指令不查vma, mmu会根据pte把va转换为pfn+offset也就是pa, 然后cpu根据pa读/写/取指, ...
CPU 取指确实只走 MMU 查 PTE,跟 VMA 没有关系。我的观点不是没有 VMACPU 就不能执行,而是 CPU 不查询 VMA刚好让这种映射产生了两个不一致的地址空间视图,你隐藏 maps 的代价是破坏 VMA 与 PTE 的一致性,它确实能执行但能执行却不存在才是这套架构的硬伤。如果指出问题需要被打上ai标签会让你好受些那你就认为我是ai就行,但我是不是Ai都不影响问题的真假
2026-7-26 12:25
0
雪    币: 600
活跃值: (220)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
168
你在内存上花费的精力和时间值得赞叹,但别忘记了有些必须保持一致的地方,有些指纹检测是硬件层面的逻辑必然
2026-7-26 12:48
0
雪    币: 206
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
169
2026-7-26 13:33
0
雪    币: 106
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
170
nb
2026-7-26 15:30
0
雪    币: 277
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
171
666
2026-7-26 15:37
0
雪    币: 596
活跃值: (849)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
172
好的 谢谢哈, 讲话非常正式的感觉, 我以为是ai
2026-7-26 23:51
0
雪    币: 198
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
173
6666
2026-7-27 09:33
0
雪    币: 22
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
174
66
2026-7-27 14:05
0
雪    币: 200
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
175
66
2026-7-27 15:17
0
游客
登录 | 注册 方可回帖
返回