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

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

2026-7-18 23:09
11063
收藏
免费 0
打赏
分享
最新回复 (172)
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
151

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

最后于 2天前 被mb_iiulbilc编辑 ,原因:
2天前
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
152
更致命的硬伤是架构级的缺陷:你用vmalloc分配内存,然后手动填充PTE,但刻意不挂入VMA为了过maps扫描,但内核硬性规则:mincore、process_vm_readv、mprotect等系统调用强制依赖find_vma()来校验地址合法性,难以修复的物理矛盾在于你既然没有VMA,这些系统调用必然返回-EFAULT,但你为了让Hook生效,又必须让PTE拥有READ和EXEC权限,两者在逻辑上是互斥的,系统调用说查无此页,CPU却说这页能执行,无痕Hook言过其实
2天前
0
雪    币: 397
活跃值: (1803)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
153
mark
2天前
0
雪    币: 200
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
154
厉害
2天前
0
雪    币: 0
活跃值: (85)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
155
支持 支持
1天前
0
雪    币: 0
活跃值: (330)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
156
6666666666666
1天前
0
雪    币: 220
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
157
学习一下哇
1天前
0
雪    币: 200
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
158
666
1天前
0
雪    币: 2763
活跃值: (3213)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
159
66666
1天前
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
160
6666
1天前
0
雪    币: 586
活跃值: (753)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
161
mb_iiulbilc 1.每一次对Hook函数地址的读/写/执行都会触发一次内核陷入,TLB刷新,CPU周期耗时远大于正常代码页2.在 wake_up_new_task 手动克隆幽灵内存 ...
是的,还是有待优化
1天前
0
雪    币: 586
活跃值: (753)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
162
哈哈, ai味浓浓的哈, “架构级的缺陷”, 感谢指点. 根据我浅薄的理解, cpu取指令不查vma, mmu会根据pte把va转换为pfn+offset也就是pa, 然后cpu根据pa读/写/取指, 所以mincore/mprotect/preadv走find_vma探测不到vma和cpu能不能取指&执行疑似没有关系
1天前
0
雪    币: 171
活跃值: (77)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
163
66
1天前
0
雪    币: 1000
活跃值: (480)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
164
严肃学习
1天前
0
雪    币: 233
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
165
学习学习
1天前
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
166
66666666
1天前
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
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都不影响问题的真假
23小时前
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
168
你在内存上花费的精力和时间值得赞叹,但别忘记了有些必须保持一致的地方,有些指纹检测是硬件层面的逻辑必然
23小时前
0
雪    币: 206
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
169
22小时前
0
雪    币: 106
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
170
nb
20小时前
0
雪    币: 268
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
171
666
20小时前
0
雪    币: 586
活跃值: (753)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
172
好的 谢谢哈, 讲话非常正式的感觉, 我以为是ai
12小时前
0
雪    币: 198
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
173
6666
2小时前
0
游客
登录 | 注册 方可回帖
返回