、x86 架构下的插桩拦截
一、修改内存页属性
----
实际函数 的 函数指针为 unsigned char* pFunc , 拦截函数 的函数指针为 unsigned char* pStub , 在执行...pFunc 函数时 , 无条件跳转到 pStub 函数中 ;
要修改 pFunc 函数 , 要先设置该函数所在的内存页的访问 属性 , 否则如果用户没有相关内存访问权限 , 强行修改会报错 ;
首先...*/
int ret = mprotect(pBase, 0x1000, PROT_WRITE | PROT_READ | PROT_EXEC);
二、x86 架构下的插桩拦截
----
插桩拦截 时..., 在 实际函数 入口处写入的 跳转代码 就是 汇编中的 跳转指令 ;
跳转指令 可以理解为 " 指令 " 或 " 机器码 " , 指令是人看到的 汇编指令 , 机器码是给 CPU 执行的 二进制机器码...};
然后 , 计算 pStub 函数跳转地址 , 目标函数 pStub 地址 - 当前函数 pFunc 地址 - 5 , x86 架构中 , 跳转指令 跳转的是 偏移量 , 不是绝对地址值 ;
/