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:  C |   copy code |?0102#include&lt;stdio.h>03#include&lt;malloc.h>04#include&lt;stdlib.h>05int main(void)06{07 int <em>p;08 printf("calling from main…\n");09 p=(int *)malloc(10);10 if(!p)11 {12 printf("Got allocation error…\n");13 exit(1);14 }15 printf("returning to main…\n");16 free(p); /</em> freeing memory from heap … Continue reading