codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
#include <linux/kernel.h> #include <linux/module.h> #include <linux/moduleparam.h> #include <linux/unistd.h> #include <asm/cacheflush.h> MODULE_LICENSE ("GPL"); //Address from in System.map void **sys_call_table = (void*)0xffffffff81551380; asmlinkage int (*orig_fopen) (const char*, int, int); asmlinkage int new_fopen(const char* file, int flags, int mode) { printk("A file was opened!\n"); return orig_fopen(file, flags, mode); } int init_module() { //Save orginal function entry we are replacing orig_fopen = sys_call_table[__NR_open]; //Make page writeable set_memory_rw((long unsigned int)sys_call_table, 1); //Replace Entry sys_call_table[__NR_open] = new_fopen; //Restore RO permission to syscall table set_memory_ro((long unsigned int)sys_call_table, 1); return 0; } void cleanup_module() { //Restore the original call set_memory_rw((long unsigned int)sys_call_table, 1); sys_call_table[__NR_open] = orig_fopen; set_memory_ro((long unsigned int)sys_call_table, 1); }
Private
[
?
]
Run code
Submit