dipto181

test_kit.c

Mar 25th, 2020
304
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.71 KB | None | 0 0
  1. #include <linux/module.h>
  2. #include <linux/slab.h>
  3. #include <linux/string.h>
  4. #include <linux/moduleparam.h>
  5. #include <linux/kernel.h>
  6. #include <linux/init.h>
  7. #include <linux/tty.h>
  8. #include <linux/unistd.h>
  9. #include <linux/syscalls.h>
  10.  
  11. #include <asm/ptrace.h>
  12. #include <asm/uaccess.h>
  13. #include <asm/cacheflush.h>
  14. #include <linux/sched.h>
  15. #include <linux/file.h>
  16. #include <linux/proc_fs.h>
  17. #include <linux/dirent.h>
  18. #include <net/tcp.h>
  19.  
  20.  
  21. MODULE_LICENSE("GPL");
  22. unsigned long *sys_call_table;
  23. unsigned long ( *original_read ) ( const struct pt_regs *regs );
  24.  
  25.  
  26.  
  27.  
  28. unsigned long test_read(const struct pt_regs *regs){
  29.  
  30. printk(KERN_INFO "Inside test_read");
  31. unsigned int fd = regs->di;
  32. char *buf = (char*) regs->si;
  33.  
  34. int i;
  35. unsigned long r=1;
  36.  
  37. char *kbuf=(char*)kmalloc(256,GFP_KERNEL);
  38. printk(KERN_INFO "File descriptor\n");
  39. printk(KERN_CONT "%lu",fd);
  40. printk(KERN_INFO "User Buffer\n");
  41. printk(KERN_CONT "%p",buf);
  42. return r;
  43.  
  44. }
  45.  
  46. static int __init kit_start(void)
  47. {
  48. sys_call_table = kallsyms_lookup_name("sys_call_table");
  49. printk(KERN_INFO "System call addresss ");
  50. printk(KERN_CONT "%p",sys_call_table);
  51. original_read = (void *)sys_call_table[__NR_read];
  52. printk(KERN_INFO "Original read address ");
  53. printk(KERN_CONT "%p",original_read);
  54.  
  55.  
  56. write_cr0 (read_cr0 () & (~ 0x10000));
  57. sys_call_table[__NR_read]=test_read;
  58. write_cr0 (read_cr0 () | 0x10000);
  59.  
  60.  
  61. return 0;
  62. }
  63.  
  64.  
  65. /*delete module rmmod*/
  66. void __exit kit_exit(void)
  67. {
  68. printk(KERN_INFO "Exiting");
  69.  
  70. write_cr0 (read_cr0 () & (~ 0x10000));
  71. sys_call_table[ __NR_read ] = original_read;
  72. write_cr0 (read_cr0 () | 0x10000);
  73.  
  74.  
  75. }
  76.  
  77. module_init(kit_start);
  78. module_exit(kit_exit);
Advertisement
Add Comment
Please, Sign In to add comment