Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <linux/module.h>
- #include <linux/kernel.h>
- #include <linux/unistd.h>
- typedef asmlinkage ssize_t (*sys_read_t)(unsigned int fd, char __user * buf, size_t count);
- // Global variables
- void **sys_call_table = NULL;
- sys_read_t sys_read_original = NULL;
- asmlinkage ssize_t sys_read_hooked(unsigned int fd, char __user * buf, size_t count)
- {
- ssize_t ret;
- ret = sys_read_original(fd, buf, count);
- printk("hi\n");
- return ret;
- }
- int init_module(void)
- {
- printk(KERN_INFO "Hello World\n");
- sys_call_table = 0xc02bfaa0;
- printk("saving orig sys_read\n");
- sys_read_original = sys_call_table[__NR_read];
- printk("hooking sys_read\n");
- sys_call_table[__NR_read] = sys_read_hooked;
- return 0;
- }
- void cleanup_module(void)
- {
- printk("restoring original sys_read\n");
- sys_call_table[__NR_read] = sys_read_original;
- printk(KERN_INFO "k thx bye\n");
- }
- MODULE_LICENSE("GPL");
- MODULE_AUTHOR("corny");
- MODULE_DESCRIPTION("simple hello world");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement