bhook
bhook copied to clipboard
是否可以对.init_array中的调用进行hook
从原理上来看,bhook执行的时机应该是在dlopen之后?现在有个需求是:dlopen里会执行.init和.init_array区块的代码,我需要hook一个在.init_array区块中执行的函数,从本地尝试来看hook是无效的,原因是dlopen阶段hook还未执行,是否有其他办法可以做到呢?
@yimun 是的,目前执行hook的时机是dlopen完成之后,所以.init和.init_array中的逻辑在执行时还没有hook。我有空想想怎么提前一下hook时机,有什么好的建议和想法欢迎一起探讨哈~
@caikelun 感谢回复!这两天我尝试了一下,但没有找到比较好的方案。 原因是linker内部的dl_iterate_phdr和dlopen是有互斥锁的,而.init和.init_array调用是在dlopen内部,所以直到dlopen结束前是无法读取到elf的 😭
[](https://github.com/bytedance/bhook/issues/37#issuecomment-1097623212)