Some fun things you can do with kernel modules (all "bad ideas")
C Makefile
Switch branches/tags
Nothing to show
Latest commit e5ba6e1 Mar 6, 2015 @jvns Merge pull request #1 from avar/patch-1
Fix a trivial typo in a comment

README.md

Kernel module fun

Motivation

I didn't know at all how kernel modules worked. This is me learning how. This is all tested using the 3.5.0-18 kernel.

Contents

hello.c: a simple "hello world" module

hello-packet.c: logs every time your computer receives a packet. This one could easily be modified to drop packets 50% of the time.

rootkit.c: A simple rootkit. blog post explaining it more

Compiling them

I'm running Linux 3.5.0-18. (run uname -r) to find out what you're using. This almost certainly won't work with a 2.x kernel, and I don't know enough. It is unlikely to do any lasting damage to your computer, but I can't guarantee anything.

I have my kernel sources set up in /lib/modules/3.5.0-18-generic. I think I only needed to run

sudo apt-get install linux-headers-3.5.0-18-generic

but I don't remember for sure. If you try this out, I'd love to hear.

To compile them, just run

make

Inserting into your kernel (at your own risk!)

sudo insmod hello.ko
dmesg | tail

should display the "hello world" message