В ядре 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
Изменение // кража системных вызовов Linux с помощью kprode в ядре 6.8 ⇐ Linux
1728283375
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);
Подробнее здесь: [url]https://stackoverflow.com/questions/79060852/modifying-stealing-linux-syscalls-using-kprode-in-kernel-6-8[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия