能力值:
( LV1,RANK:0 )
|
-
-
26 楼
66666
|
能力值:
( LV2,RANK:10 )
|
-
-
27 楼
感谢分享
|
能力值:
( LV2,RANK:10 )
|
-
-
28 楼
666666
|
能力值:
( LV1,RANK:0 )
|
-
-
29 楼
666
|
能力值:
( LV1,RANK:0 )
|
-
-
30 楼
666
|
能力值:
( LV1,RANK:0 )
|
-
-
31 楼
666
|
能力值:
( LV3,RANK:20 )
|
-
-
32 楼
看看
|
能力值:
( LV2,RANK:10 )
|
-
-
33 楼
路过看看
|
能力值:
( LV2,RANK:10 )
|
-
-
34 楼
能hook so里面的 native code吗?
|
能力值:
( LV1,RANK:0 )
|
-
-
35 楼
666
|
能力值:
( 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常见的读写指令解释。
|
能力值:
( LV1,RANK:0 )
|
-
-
37 楼
666
最后于 2025-7-28 10:44
被k4y0z编辑
,原因:
|
能力值:
( LV1,RANK:0 )
|
-
-
38 楼
k4y0z
666
底层和用法差距都很大,这个也可以当反射库使用。callback的个人觉得应该用于hook指令,用于恢复上下文,不管hook java函数还是native,都不是最佳实践。
|
能力值:
( LV5,RANK:60 )
|
-
-
39 楼
frida不好吗,动态,而且各种hook,trace,如此强大,如此完美
|
能力值:
( LV2,RANK:10 )
|
-
-
40 楼
6666
|
能力值:
( LV1,RANK:0 )
|
-
-
41 楼
KerryS
frida不好吗,动态,而且各种hook,trace,如此强大,如此完美
frida只适合调试逆向,并不适合集成到app中,底层是通过jni调用方法和访问字段,性能差,复杂了维护性也差。albatross有点类似c的文件头,将方法和字段定义出来,然后访问和调用,由于非调试情况下会强制将方法已机器码的形式运行,性能甚至会比以前快。
|
能力值:
( LV1,RANK:0 )
|
-
-
42 楼
而且也不支持java代码的trace,这个功能正在开发中。
|
能力值:
( LV2,RANK:10 )
|
-
-
43 楼
是666
|
能力值:
( LV2,RANK:10 )
|
-
-
44 楼
康康
|
能力值:
( LV5,RANK:60 )
|
-
-
45 楼
WanQing
frida只适合调试逆向,并不适合集成到app中,底层是通过jni调用方法和访问字段,性能差,复杂了维护性也差。albatross有点类似c的文件头,将方法和字段定义出来,然后访问和调用,由于非调试情 ...
如果用纯c或者c++,去实现java层的hook,那就好了,配合frida的gum,再加llvm 的jit,就能既高性能,又动态,完美,曾经想用gum来实现,但是java hook,工程量有点多,大佬有没有兴趣做这个
|
能力值:
( 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最终都是走机器码的。
|
能力值:
( LV1,RANK:0 )
|
-
-
47 楼
可以让hooker的方法为native就可以的,不过jni的代码jvm是无法优化的,并不推荐。
|
能力值:
( LV5,RANK:60 )
|
-
-
48 楼
WanQing
为什么要c和c++,肯定是java是最佳实践,访问java永远最佳的语言就是java语言自身。c和c++底层调用字段和方法都是jni,中间检验参数构建堆栈,甚至比java层反射性能还差,albatro ...
因为c足够精简,而且可以动态执行,就像js脚本一样,java的话,在Android中,好像只能编译成dex然后动态去用,这就很冗重了,不像c和js一样一个代码片段就可以动态执行
|
能力值:
( LV1,RANK:0 )
|
-
-
49 楼
KerryS
因为c足够精简,而且可以动态执行,就像js脚本一样,java的话,在Android中,好像只能编译成dex然后动态去用,这就很冗重了,不像c和js一样一个代码片段就可以动态执行
是的,不过用c语言当脚本,不适合写太复杂的逻辑,不然调试排查问题很困难。不过你这个想法确实是可以。
|
能力值:
( LV4,RANK:40 )
|
-
-
50 楼
fsdfsdf
|
|
|