Изменение // кража системных вызовов Linux с помощью kprode в ядре 6.8Linux

Ответить Пред. темаСлед. тема
Anonymous
 Изменение // кража системных вызовов Linux с помощью kprode в ядре 6.8

Сообщение Anonymous »

В ядре Linux 6.8:
Я пытаюсь украсть системный вызов stat
Я пытаюсь изменить возвращаемые аргументы системных вызовов в Linux.
Но путь не изменился, а значения статистики плохие:
ls -l
[...]
-????????? ? ? ? ? ? Makefile
-????????? ? ? ? ? ? modules.order
-????????? ? ? ? ? ? Module.symvers
-????????? ? ? ? ? ? time_routines.c
[...]

Вот я код:
Я использую этот вопрос (не могу прочитать аргументы системного вызова из обработчика kprobe).
Но мне удалось разобраться с этим аргументом.< /p>
#include
#include
#include

MODULE_VERSION("v.0");
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Flavien ASTRAUD ");
MODULE_DESCRIPTION("ex. pour interception d'un syscall");

static void __kprobes m_statx(struct kprobe *p, struct pt_regs *regs,
unsigned long flags)
{
long r = 0;
char path[128];
struct pt_regs *user_regs = (struct pt_regs *)regs->di;
struct statx statxbuf; // (struct statx *) regs->r8;
// char *path = (char *)user_regs->si;

r = strncpy_from_user(path, (char __user *)user_regs->si, 128);

path[0] = 'X';
path[1] = 'Y';

r = copy_from_user(&statxbuf, (struct statx *)user_regs->r8,
sizeof (struct statx));

pr_info("STATX_V2: %s size=%lld\n", path, statxbuf.stx_size);
pr_info("STATX: [%s]\n", path);

statxbuf.stx_size = 42;
r = copy_to_user((char __user *)user_regs->si, path, strlen(path)+1);

r = copy_to_user((struct statx *)user_regs->r8,
&statxbuf, sizeof(statxbuf));

return;
}

struct kprobe kp = {
.symbol_name = "__x64_sys_statx",
.post_handler = m_statx,
};

static int override_statx(void)
{
if (register_kprobe(&kp) < 0)
return 0;

pr_info("sym addr : [%pK]\n", kp.addr);

return 0;
}

static void pullback_syscall(void)
{
unregister_kprobe(&kp);

return;
}

static int __init kstatx_init(void)
{
pr_info("kstatx INIT\n=============\n");

override_statx();

return 0;
}

static void __exit kstatx_exit(void)
{
pr_info("kstatx END\n=============\n");

pullback_syscall();
}

module_init(kstatx_init);
module_exit(kstatx_exit);



Подробнее здесь: https://stackoverflow.com/questions/790 ... kernel-6-8
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как изменить таблицу системных вызовов Linux в версии ядра 6+?
    Anonymous » » в форуме C++
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Как изменить таблицу системных вызовов Linux в версии ядра 6+?
    Anonymous » » в форуме Linux
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Power Bi Iframe кража
    Anonymous » » в форуме Html
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Как возобновить основной поток/процесс при отслеживании системных вызовов и клонированного процесса с помощью ptrace()
    Гость » » в форуме Android
    0 Ответы
    51 Просмотры
    Последнее сообщение Гость
  • Использование doParallel для запуска нескольких системных вызовов из R в задании Slurm
    Гость » » в форуме JAVA
    0 Ответы
    38 Просмотры
    Последнее сообщение Гость

Вернуться в «Linux»