小编Chr*_*ier的帖子

搜索读取虚拟内核内存的隐藏模块?

我目前正在研究一个小型LKM,它会搜索隐藏在内核空间内的模块,就像之前的一些内核级rootkit一样.导致模块的内核空间通过vmalloc()分配,find_module_list()遍历所有条目vmap_area_list并调用check_module():

 void find_module_list(void) {
        count = 0;

        spin_lock(lock);
        list_for_each_entry(va,l, list) {
                if (!(va->flags & VM_VM_AREA))
                        continue;

                vm = va->vm;
                vaddr = (unsigned long) vm->addr;

                if((vaddr < VMALLOC_START) || (vaddr > VMALLOC_END))
                        break;

                size = vm->size;
                printk(KERN_INFO"ADDRESS: %lx\n",vaddr);
                printk(KERN_INFO"SIZE:  %lu\n",size);
                count++;
                printk(KERN_INFO"NUMBER: %lu\n",count);

                unsigned char *i =(unsigned char*)vm->addr;         
                unsigned char *max = (unsigned char*)(vaddr+size);      

                check_module(i,max-PAGE_SIZE);  
        }
        spin_unlock(lock);
}

int init_module(void) {
        lock = (struct spinlock*)0xc1aff8a6; // vmap_area_lock
        l = (struct list_head*)0xc18fd01c;  // vmap_area_list
        printk(KERN_INFO"VMALLOC_START: %lx\n",VMALLOC_START);
        printk(KERN_INFO"VMALLOC_END: …
Run Code Online (Sandbox Code Playgroud)

linux virtual module linux-kernel

6
推荐指数
1
解决办法
334
查看次数

SMP调度如何在Linux内核中运行?(ARM架构)

在linux中,调度程序将在经过特定时间后触发.据我所知,定时器触发一个中断,进而触发一次调用schedule.

在SMP系统中,我在"理解Linux内核"一书中读到"每个处理器自己运行调度程序()函数".这是否意味着每个定时器中断都会触发每个cpu同时进行重新调度?

arm scheduler linux-kernel

5
推荐指数
1
解决办法
9411
查看次数

标签 统计

linux-kernel ×2

arm ×1

linux ×1

module ×1

scheduler ×1

virtual ×1