bhook icon indicating copy to clipboard operation
bhook copied to clipboard

是否可以对.init_array中的调用进行hook

Open yimun opened this issue 2 years ago • 3 comments

从原理上来看,bhook执行的时机应该是在dlopen之后?现在有个需求是:dlopen里会执行.init和.init_array区块的代码,我需要hook一个在.init_array区块中执行的函数,从本地尝试来看hook是无效的,原因是dlopen阶段hook还未执行,是否有其他办法可以做到呢?

image

yimun avatar Dec 02 '21 07:12 yimun

@yimun 是的,目前执行hook的时机是dlopen完成之后,所以.init和.init_array中的逻辑在执行时还没有hook。我有空想想怎么提前一下hook时机,有什么好的建议和想法欢迎一起探讨哈~

caikelun avatar Dec 06 '21 02:12 caikelun

@caikelun 感谢回复!这两天我尝试了一下,但没有找到比较好的方案。 原因是linker内部的dl_iterate_phdr和dlopen是有互斥锁的,而.init和.init_array调用是在dlopen内部,所以直到dlopen结束前是无法读取到elf的 😭

yimun avatar Dec 09 '21 12:12 yimun

[](https://github.com/bytedance/bhook/issues/37#issuecomment-1097623212)

fh2002 avatar Apr 15 '22 16:04 fh2002