linux下实现inject&hook

linux调用so的库文件时,搜素路径为当前路径,再是系统lib目录。
因此,我们便可以利用这个技巧,实现linux下hook功能。
即当前程序目录生成一个同名so,然后由so中同名函数,实现hook功能后,再调用原始的函数。
关键函数dlopen,dlsym。
step1. sudo -s -H
step2. export LD_LIBRARY_PATH=/pwd_dirname/:$LD_LIBRARY_PATH
将当前目录导入到环境变量,以保证优先搜索本地目录。
step3. make
#include
#include
typedef int (*f) (char * );
int o_lib_function (char * msg){
void * hl = dlopen("/lib/libfunc.so",RTLD_NOW|RTLD_GLOBAL);
f old_lib_function = (f) dlsym(hl, "o_lib_function");
printf("call in injected function. 
");
return (* old_lib_function)(msg);
}


其余函数见附件。
linux_inject_test.tar
| 356个评论