首页
社区
课程
招聘
[原创]Albatross Android——快速、优雅的强大安卓hook框架
发表于: 2025-7-20 13:57 11444

[原创]Albatross Android——快速、优雅的强大安卓hook框架

2025-7-20 13:57
11444
收藏
免费 194
支持
分享
最新回复 (162)
雪    币: 20
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
26
66666
2025-7-23 14:25
0
雪    币: 43
活跃值: (1934)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
27
感谢分享
2025-7-23 15:23
0
雪    币: 343
活跃值: (1792)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
28
666666
2025-7-23 15:47
0
雪    币: 203
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
29
666
2025-7-23 16:10
0
雪    币: 378
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
30
666
2025-7-23 16:11
0
雪    币: 1
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
31
666
2025-7-23 16:47
0
雪    币: 821
活跃值: (5332)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
32
看看
2025-7-23 17:08
0
雪    币: 1862
活跃值: (2690)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
33
路过看看
2025-7-23 17:23
0
雪    币: 226
活跃值: (2219)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
34
能hook so里面的 native code吗?
2025-7-23 17:37
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
35
666
2025-7-23 17:47
0
雪    币: 46
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
36
hpphpp 能hook so里面的 native code吗?
如果是通过java hook那就得有很大限制,libc和art等jvm依赖的库不能hook,app的是可以回调java方法在java层hook。项目的albatross_base是能hook方法和指令,和监控内存读写的,不过只实现x86,x64,arm,arm64常见的读写指令解释。
2025-7-23 21:46
0
雪    币: 57
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
37

666

最后于 2025-7-28 10:44 被k4y0z编辑 ,原因:
2025-7-25 16:55
0
雪    币: 46
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
38
k4y0z 666
底层和用法差距都很大,这个也可以当反射库使用。callback的个人觉得应该用于hook指令,用于恢复上下文,不管hook java函数还是native,都不是最佳实践。
2025-7-25 23:46
0
雪    币: 4149
活跃值: (7039)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
39
frida不好吗,动态,而且各种hook,trace,如此强大,如此完美
2025-7-26 04:55
0
雪    币: 0
活跃值: (1139)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
40
6666
2025-7-26 05:13
0
雪    币: 46
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
41
KerryS frida不好吗,动态,而且各种hook,trace,如此强大,如此完美
frida只适合调试逆向,并不适合集成到app中,底层是通过jni调用方法和访问字段,性能差,复杂了维护性也差。albatross有点类似c的文件头,将方法和字段定义出来,然后访问和调用,由于非调试情况下会强制将方法已机器码的形式运行,性能甚至会比以前快。
2025-7-26 08:39
0
雪    币: 46
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
42
而且也不支持java代码的trace,这个功能正在开发中。
2025-7-26 08:40
0
雪    币: 38
活跃值: (350)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
43
是666
2025-7-26 11:53
0
雪    币: 178
活跃值: (1310)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
44
康康
2025-7-26 12:09
0
雪    币: 4149
活跃值: (7039)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
45
WanQing frida只适合调试逆向,并不适合集成到app中,底层是通过jni调用方法和访问字段,性能差,复杂了维护性也差。albatross有点类似c的文件头,将方法和字段定义出来,然后访问和调用,由于非调试情 ...
如果用纯c或者c++,去实现java层的hook,那就好了,配合frida的gum,再加llvm 的jit,就能既高性能,又动态,完美,曾经想用gum来实现,但是java hook,工程量有点多,大佬有没有兴趣做这个
2025-7-26 17:44
0
雪    币: 46
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
46
KerryS 如果用纯c或者c++,去实现java层的hook,那就好了,配合frida的gum,再加llvm 的jit,就能既高性能,又动态,完美,曾经想用gum来实现,但是java hook,工程量有点多,大佬 ...
为什么要c和c++,肯定是java是最佳实践,访问java永远最佳的语言就是java语言自身。c和c++底层调用字段和方法都是jni,中间检验参数构建堆栈,甚至比java层反射性能还差,albatross写的java代码如果没有debug最终都是走机器码的。
2025-7-26 18:12
1
雪    币: 46
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
47
可以让hooker的方法为native就可以的,不过jni的代码jvm是无法优化的,并不推荐。
2025-7-26 18:22
0
雪    币: 4149
活跃值: (7039)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
48
WanQing 为什么要c和c++,肯定是java是最佳实践,访问java永远最佳的语言就是java语言自身。c和c++底层调用字段和方法都是jni,中间检验参数构建堆栈,甚至比java层反射性能还差,albatro ...
因为c足够精简,而且可以动态执行,就像js脚本一样,java的话,在Android中,好像只能编译成dex然后动态去用,这就很冗重了,不像c和js一样一个代码片段就可以动态执行
2025-7-27 20:06
0
雪    币: 46
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
49
KerryS 因为c足够精简,而且可以动态执行,就像js脚本一样,java的话,在Android中,好像只能编译成dex然后动态去用,这就很冗重了,不像c和js一样一个代码片段就可以动态执行
是的,不过用c语言当脚本,不适合写太复杂的逻辑,不然调试排查问题很困难。不过你这个想法确实是可以。
2025-7-27 21:00
0
雪    币: 1501
活跃值: (3808)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
50
fsdfsdf
2025-7-27 21:07
0
游客
登录 | 注册 方可回帖
返回