首页
社区
课程
招聘
[原创] sukinject:跨进程 arm64 DBI hook / 注入框架
发表于: 2026-7-10 11:44 3243

[原创] sukinject:跨进程 arm64 DBI hook / 注入框架

2026-7-10 11:44
3243

 看了网上很多关于 arm64 无痕 hook 的方法,然后自己理解下加上 ai 帮忙

 整理并开源了一个自己在用的 Linux / Android arm64 跨进程 hook 框架:sukinject


 ### 它是什么


 sukinject 做的是跨进程、内核辅助的 hook,不是同进程 inline hook。


 公开语义很简单:


 ```text

   target -> replacement -> origin

 ```


 - target:目标进程里的函数地址

 - replacement:也在目标进程地址空间里的代码(内核生成的 ABI wrapper / 已有 VA / agent 装进去的代码)

 - origin:目标进程里可回调原函数的 trampoline(ghost 页入口)


 调用方进程里的普通 C 函数指针,不能直接当 replacement——地址空间隔离决定了这一点。


 和 Dobby 那类同进程 inline hook 是不同模型,不追求 Dobby 兼容。需要同进程改字节插跳的,继续用 Dobby 即可。


 ### 技术路线(简要)


 依赖 root + 匹配内核的 kmod(/proc/sukinject)。


 大致思路:


 1. 目标代码页通过 PTE 翻转 UXN,执行会 instruction fault

 2. kprobe 挂在 fault 路径上,把 PC 重定向到 ghost / 重编译页

 3. 原始页字节尽量不改;执行走 shadow,读路径仍可对准原页(隐蔽性谱系更接近 wxshadow / 整页 DBI 那条线,而不是改 .text 插 B)


 能力边界也说清楚:


 - 主线 AArch64;compat32 会 fail closed

 - 需要自己能加载 suk_step4.ko(内核版本/树要对上)

 - 不是完整动态链接器,也不是「任意 C++ / TLS / 完整 so 语义」运行时

 - agent 路径支持受限 ELF / package 装进目标再绑入口,不是 ptrace+dlopen 主线


 ### 2. 四条 hook 路径


 ┌───┬────────────────────────────┬───────────┬──────────────────────────────────────────────────────┬────────────────────────────────┐

 │ # │ 路径                       │ kmod 命令 │ 核心做法                                             │ 代价/限制                      │

 ├───┼────────────────────────────┼───────────┼──────────────────────────────────────────────────────┼────────────────────────────────┤

 │ 1 │ DBI 整页重编译(默认主线) │ dbi-hook  │ UXN + fault 改 PC → ghost 重编译页;原页字节尽量不动 │ 复杂页/热页可能踩坑;有 origin │

 ├───┼────────────────────────────┼───────────┼──────────────────────────────────────────────────────┼────────────────────────────────┤

 │ 2 │ 指针换槽                   │ ptr-hook  │ 只改 8B 槽,不改 .text                               │ 只覆盖「过指针」调用           │

 ├───┼────────────────────────────┼───────────┼──────────────────────────────────────────────────────┼────────────────────────────────┤

 │ 3 │ HW-BP persistent           │ bp-hook   │ 硬件执行断点,命中改 pc;可 origin island            │ 每 hit 进内核;槽位少          │

 ├───┼────────────────────────────┼───────────┼──────────────────────────────────────────────────────┼────────────────────────────────┤

 │ 4 │ PFN-swap                   │ pfn-hook  │ 页帧/执行视图交换(实验)                            │ 非默认;隐蔽模型与 DBI 不同    │

 └───┴────────────────────────────┴───────────┴──────────────────────────────────────────────────────┴────────────────────────────────┘


 安装窗口还有 break-arm(oneshot 断点汇合)、task-hold、fork-watch 等,用来卡安装时机,本身不是第 3 条长期 hook。


 主路径:业务上优先 DBI +(可选)agent 装载;能指针化的用 ptr;低频零改字节再考虑 bp-hook;pfn 当实验后端。


 ### 你能直接用的东西



传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!!

最后于 2026-7-10 11:52 被PPKun编辑 ,原因:
收藏
免费 121
打赏
分享
最新回复 (58)
雪    币: 112
活跃值: (9015)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
tql
2026-7-10 11:49
0
雪    币: 411
活跃值: (571)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
tql
2026-7-10 12:09
0
雪    币: 231
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
把 PC 重定向到 ghost,这条路对于libart不行,直接崩溃
2026-7-10 12:24
0
雪    币: 793
活跃值: (1100)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
看样子得高内核手机才行对吧,试用一下
2026-7-10 13:04
0
雪    币: 660
活跃值: (2256)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
666
2026-7-10 13:29
0
雪    币: 88
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
7
大内核hook时代
2026-7-10 14:16
0
雪    币: 18
活跃值: (579)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
666
2026-7-10 14:59
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
9
6666
2026-7-10 15:06
0
雪    币: 2886
活跃值: (5752)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
测试 依旧无痕hook大时代
2026-7-10 15:13
0
雪    币: 109
活跃值: (515)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
666
2026-7-10 15:15
0
雪    币: 158
活跃值: (5291)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
666
2026-7-10 15:36
0
雪    币: 216
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
13
1
2026-7-10 15:55
0
雪    币: 2790
活跃值: (6670)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
14
感谢分享!
2026-7-10 16:39
0
雪    币: 42
活跃值: (581)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
mb_cfjwplfo 把 PC 重定向到 ghost,这条路对于libart不行,直接崩溃
我readme里已经说了不行了,会卡死的
2026-7-10 17:27
0
雪    币: 42
活跃值: (581)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
x1a0f3n9 看样子得高内核手机才行对吧,试用一下
不知道低版本行不行,我没低版本的手机了
2026-7-10 17:28
0
雪    币: 28
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
17
1
2026-7-10 18:11
0
雪    币: 5
活跃值: (1795)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
666
2026-7-10 20:32
0
雪    币: 6
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
19
太强了,向大佬学习
2026-7-10 20:44
0
雪    币: 231
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
20
PPKun 我readme里已经说了不行了,会卡死的
为什么不行啊大佬,我也好奇这个
2026-7-11 12:16
0
雪    币: 42
活跃值: (581)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
mb_cfjwplfo 为什么不行啊大佬,我也好奇这个
ART很多地方会自改,ghost不会自动同步,要手动重编,没同步就会看起来是新代码,但是跑的是旧代码
然后很多涉及跳转的地方,也不好处理
2026-7-11 14:21
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
22
牛逼
2026-7-11 17:00
0
雪    币: 758
活跃值: (1875)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
666
2026-7-12 02:44
0
雪    币: 95
活跃值: (3367)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
66666666
2026-7-12 11:00
0
雪    币: 4933
活跃值: (6180)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
6
2026-7-13 07:53
0
游客
登录 | 注册 方可回帖
返回