iqiyi / xHook

🔥 A PLT hook library for Android native ELF.
Other
4.07k stars 759 forks source link

请教两个问题 #94

Open Mr-JingShi opened 2 years ago

Mr-JingShi commented 2 years ago

https://github.com/iqiyi/xHook/blob/9180bd74098fd41f808d3968e2e52b4f5db92c99/libxhook/jni/xh_util.c#L49

你好,大佬,最近我在学习PLT hook的相关知识,所以找到了xhook。 xhook写的太好了,让我学到了好多知识。

(1)Line49 line[512]够大吗?如果一行读不完,恰好在动态库名称或者路径的地方被截断了,strstr(line, pathname)一直等于NULL,那岂不永远找不到相应的内存页。 为什么不用getLine或者加上\n的判断,或者去掉对pathname的判断。 android对动态库的路径或者动态库的名称长度有严格限制吗,所以512够用?

(2)为什么要特殊处理跨内存页,实际应用中有遇到重定位函数表/GOT内容跨页的现象吗? 不是有严格的内存对齐要求(要么4要么8)? 这种PLT-GOT相关的条目不是程序刚运行时就分配地址了吗? 内存碎片对变量地址,可能导致变量跨页存储。 我实在不理解这个地方为什么要处理跨页。