Linux下系统调用的hook机制
2018-03-15 14:56
316 查看
Linux下系统调用的hook机制
[]http://blog.csdn.net/sdulibh/article/details/42078681]http://0pointer.de/blog/projects/mutrace.html
http://0pointer.de/blog/projects/mutrace.html – 对mutex进行trace的hook
https://github.com/dbpercona/mutrace/blob/master/README
linux下系统调用hook机制的原理
LD_PRELOAD机制:允许用户手动指定使用的动态链接库,将系统库函数hook->lib.so.6
dlyopen;dlsym: 通过句柄和连接符名称获取真实库函数名或者变量名
实例
main.c
编译:gcc -o main main.c
#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { if( strcmp(argv[1], "123") ) { printf("Incorrect\n"); } else { printf("Correct\n"); } return 0; }
hook.c
编译:gcc -fPIC -shared -o hook.so hook.c -ldl
#include<stdio.h> #include<string.h> #include<dlfcn.h> typedef int (*STRCMP) (const char*, const char*); int strcmp(const char* s1, const char* s2) { static void *handle = NULL; static STRCMP old_strcmp = NULL; if(!handle) { handle = dlopen("libc.so.6", RTLD_LAZY); old_strcmp = (STRCMP)dlsym(handle, "strcmp"); } if(old_strcmp) printf("addr=%p\n", old_strcmp); printf("you are hacked. s1=<%s>,s2=<%s>\n", s1, s2); return old_strcmp(s1, s2); }
运行: LD_PRELOAD= ./hook.so ./main 123
未完待续…
相关文章推荐
- Linux系统调用的实现机制分析
- Linux系统调用的实现机制分析
- Linux系统调用的实现机制分析
- Linux系统调用的实现机制分析
- Linux系统调用的实现机制分析
- Linux系统调用的实现机制分析
- linux内核剖析---Linux系统调用详解(实现机制分析)
- Linux系统调用的工作机制(上)
- 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】Linux系统调用的实现机制分析
- linux中的系统调用机制
- Linux系统调用详解(实现机制分析)--linux内核剖析(六)
- 例析Linux系统调用的机制
- Linux系统调用的实现机制分析
- Linux系统调用的实现机制分析
- Linux系统调用Hook
- Linux系统调用的实现机制分析
- Linux系统调用的实现机制分析
- Linux 系统调用实现机制
- Linux系统调用的实现机制分析