如何防止别人卸载内核模块

1.防卸载内核模块

不论是Windows还是Linux,当我们开发完一个内核模块的时候,内核模块中往往都承担这至关重要的作用。如果别人卸载了内核模块,那就起不到作用了。所以如何防止卸载。

2.Windows防卸载

Windows内核模块防卸载一般两种方法:

  • 1.不写unload函数,很暴力的方法,确实没发卸载,但是自己也卸载不了了,那如果我们自己要升级的话,也卸载不了,是个问题。
  • 2.在内核模块中创建一个device设备文件,然后用户态打开这个device,这个时候当我们卸载的时候,就会提示stop_pending。因为被占用了,所以卸载不掉,当我们自己需要升级的时候,直接关闭刚才打开的device设备文件,就可以卸载掉了。

3.Linux防卸载

Linux上就简单多了。

try_module_get(THIS_MODULE)  //增加本内核模块的引用计数
module_put(THIS_MODULE)     //减少该内核模块的引用计数

增加引用计数,卸载时就会提示in use。当我们自己想卸载的时候,就调用Put,减少引用计数。

你可能感兴趣的:(如何防止别人卸载内核模块)