Russian Qt Forum
Ноябрь 22, 2024, 12:20 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Системный вызов  (Прочитано 2831 раз)
koldun90
Крякер
****
Offline Offline

Сообщений: 345


Просмотр профиля
« : Декабрь 25, 2015, 20:39 »

Здравствуйте не подскажите как можно перехватить системные вызовы open create read write?

upd: нашел модуль ядра помогите скомпилировать
Код
C
#include <linux/module.h>
#include <linux/kernel.h>
#include <sys/syscall.h>
#include <linux/types.h>
#include <linux/slab.h>
#include <linux/string.h>
#include <asm/uaccess.h>
 
extern void *sys_call_table[];
 
int (*orig_open)(const char *pathname, int flag, int mode);
 
int own_open(const char *pathname, int flag, int mode)
{
   char *kernel_path;
   char hide[]="test.txt";
   kernel_path=(char *)kmalloc(255,GFP_KERNEL);
 
   copy_from_user(kernel_path, pathname, 255);
   if(strstr(kernel_path,(char *)&hide) != NULL)
   {
kfree(kernel_path);
return -ENOENT;
 
   }
   else
   {
kfree(kernel_path);
return orig_open(pathname, flag, mode);
 
   }
 
}
int init_module()
{
   orig_open=sys_call_table[SYS_open];
   sys_call_table[SYS_open]=own_open;
   return 0;
 
}
 
void cleanup_module()
 
{
   sys_call_table[SYS_open]=orig_open;
}
 
« Последнее редактирование: Декабрь 26, 2015, 11:32 от koldun90 » Записан
qate
Супер
******
Offline Offline

Сообщений: 1177


Просмотр профиля
« Ответ #1 : Декабрь 28, 2015, 11:08 »

http://habrahabr.ru/post/199090/
http://www.catonmat.net/blog/simple-ld-preload-tutorial/
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.057 секунд. Запросов: 22.