;
二、插桩前先保存实际函数入口 6 字节数据
----
插桩前先 保存函数的入口 6 字节数据 , 因为之后插桩 , 会使用跳转代码 0xE9,0,0,0,0 覆盖函数入口内存 , 被破坏的实际函数...* 会使用跳转代码 0xE9,0,0,0,0 覆盖函数入口内存
* 该函数最终还是要执行 , 需要拷贝一下 , 供之后实际函数调用使用
*/
memcpy(code, pApi, size...函数中的 0 ~ 6 字节位置 */
memcpy(pStub, code, size);
函数插桩的具体细节在之前的
【Android 逆向】函数拦截 ( 修改内存页属性 | x86 架构插桩拦截...| 可写 | 可执行 ,
* 避免因为内存访问权限问题导致操作失败
* mprotect 函数只能对整个页内存的属性进行修改
* 每个 内存页 大小都是 4KB
*/
int...ret = mprotect(pBase, 0x1000, PROT_WRITE | PROT_READ | PROT_EXEC);
/* 修改内存页属性失败的情况 */
if (ret == -1