hook本质就是劫持函数调用,但由于处于linux用户态,每个进程都有自己独立的进程空间,所以必须先注入到所要hook的进程空间,修改其内存中的进程代码,替换其过程表的符号地址。Android中一般通过ptrace函数附加进程,然后向远程进程注入so库,从而达到监控以及远程进程关键函数挂钩。Hook的难点在于寻找函数的入口点、替换函数,这就涉及到函数的连接与加载机制。Android中一般存在两种hook:sdkhook,ndkhook。nativehook的难点在于理解ELF文件与学习ELF文件