目录
函数地址替换是最简单的hook方式,在开发的时候发现C开发的程序和C++开发的程序hook还是有差别的。C开发的程序函数几乎是可以直接使用readelf查看,因此在查找函数偏移量的时候相对简单一些,但是如果是C++开发无法直接使用readelf命令查看函数地址,因此需要动态跟踪函数地址,找到函数偏移量然后针对该函数地址进行hook。
一、简单的系统函数hook
我们以getpid函数为例,该函数是linux系统中的系统函数。
1. 程序编写
该程序是我们希望被hook的目标程序。代码如下【main.cc】:
#include <stdio.h>
#include <unistd.h>
#include <stdbool.h>
// 替换getpid函数
int mygetpid(){
return 520;
}
int main(){
while(true){
printf("the pid is %d\n",getpid());
sleep(1);
}