Linux hook函数简单实践

#起因 最近对hook函数比较感兴趣,希望能捕获所有某种系统调用,看网上有一篇文章(http://opensourceforu.com/2011/08/lets-hook-a-library-function/) 介绍hook malloc函数,但可能内核实现不同,4.4.0上有问题。特写一篇文章进行更新。 原文中,hook函数中调用printf,其实printf、fprintf等函数都会再调用malloc函数,导致segment fault。正确的方式应该是用snprintf写入内存,然后调用write函数输出。同理,如果在hook open函数的时候,调用了open函数,也会造成segment fault的问题。 #示例 a.c: #include<stdio.h> #include<malloc.h> #include<stdlib.h> int main(void) { int p; printf(“calling from main…\n”); p=(int *)malloc(10); if(!p) { printf(“Got allocation error…\n”); exit(1); } printf(“returning to main…\n”); free(p); / … Continue reading