feat: чтение регистра таблицы прерываний
This commit is contained in:
@ -1,21 +1,23 @@
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/init.h>
|
||||
#include <asm/desc.h>
|
||||
|
||||
typedef struct {
|
||||
uint16_t size;
|
||||
uint64_t adress;
|
||||
} Fuck_IDT_register;
|
||||
|
||||
extern void store_idt(Fuck_IDT_register *storage);
|
||||
extern void store_idt(struct desc_ptr *storage);
|
||||
|
||||
static int __init fuck_system(void)
|
||||
{
|
||||
pr_info("start to fuck system");
|
||||
struct desc_ptr newidtr;
|
||||
gate_desc *oldint, *newint;
|
||||
Fuck_IDT_register idt_register;
|
||||
store_idt(&idt_register);
|
||||
|
||||
struct desc_ptr newidtreg;
|
||||
struct desc_ptr oldidtreg;
|
||||
gate_desc *oldidt, *newidt;
|
||||
store_idt(&oldidtreg);
|
||||
newidtreg.address = oldidtreg.address;
|
||||
newidtreg.size = oldidtreg.size;
|
||||
newidt = (gate_desc *)newidtreg.adress;
|
||||
memcpy(newidt, oldidt, newidtreg.size);
|
||||
|
||||
pr_info("idt register stored");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -5,3 +5,4 @@ section .text
|
||||
store_idt: ; rdi - указатель
|
||||
sidt [rdi]
|
||||
ret
|
||||
int3
|
||||
|
||||
Reference in New Issue
Block a user