bytedance / bhook

:fire: ByteHook is an Android PLT hook library which supports armeabi-v7a, arm64-v8a, x86 and x86_64.
https://github.com/bytedance/bhook/tree/main/doc#readme
MIT License
2.05k stars 315 forks source link

bHook在部分系统上面会报“替换 GOT 值之前,通过 dladdr() 验证函数地址失败。”错误码19 #95

Open yuanwofei opened 5 months ago

yuanwofei commented 5 months ago

bytehook Version

1.0.10

Android OS Version

Android 14

Android ABIs

arm64-v8a

Device Manufacturers and Models

小米 13 Android 14和Pixel 3XL Android 12

Describe the Bug

bHook在部分系统上面会报“替换 GOT 值之前,通过 dladdr() 验证函数地址失败。” 错误码19,屏蔽下面这块代码 image 能绕过这个报错。

另外屏蔽这块代码之后,后续的hook是成功的,看起来不需要verify the GOT value这个步骤也是可以的。不清楚是不是verify the GOT value这块代码在部分系统上面有兼容问题?

caikelun commented 5 months ago

这个机制是为了防止“在bytehook hook之前,这个GOT项中的地址值已经被其他PLT hook逻辑修改了”,如果遇到这种情况,bytehook再去修改一次是可以的,但是一个进程中存在多个plt hook逻辑是不太合理的,所以目前是返回errno,需要使用者排查一下,比如可以在bytehook hook之前,先打印一下这个GOT位置的地址值,看看是不是符合预期,还是被hook了。

yuanwofei commented 5 months ago

可能是,我同时使用了xHook和bHook,我屏蔽其中一个看看