diff options
-rw-r--r-- | md/writeup.md | 1 | ||||
-rw-r--r-- | md/writeup/kernel_hello_world.md | 54 |
2 files changed, 55 insertions, 0 deletions
diff --git a/md/writeup.md b/md/writeup.md index e3758f7..c3e3e7b 100644 --- a/md/writeup.md +++ b/md/writeup.md @@ -12,6 +12,7 @@ [Solving crackmes](writeup/crackme.md) [Using iptables](writeup/using_iptables.md) [GCC inline assembly](writeup/gcc_inline_assembly.md) +[Kernel:Hello World](writeup/kernel_hello_world.md) ## Projects diff --git a/md/writeup/kernel_hello_world.md b/md/writeup/kernel_hello_world.md new file mode 100644 index 0000000..efad275 --- /dev/null +++ b/md/writeup/kernel_hello_world.md @@ -0,0 +1,54 @@ +# Kernel compile "Hello world" + +Compile minimal linux kernel module. + +## Files + +You need to create to files __Makefile__ and __hello_world.c__. + +__Makefile__ +``` +obj-m += hello_world.o + +KDIR ?= /lib/modules/$(shell uname -r)/build + +all: + make -C $(KDIR) M=$(PWD) modules + +clean: + make -C $(KDIR) M=$(PWD) clean +``` + + +__hello_world.c__ +``` +//http://www.tldp.org/LDP/lkmpg/2.4/html/c147.htm +#include <linux/module.h> /* Needed by all modules */ +#include <linux/kernel.h> + +int hello_world_init( void ) +{ + printk(KERN_DEBUG "Hello World!\n"); + return 0; +} + +void hello_world_exit( void ) +{ + printk(KERN_DEBUG "Exit Hello World!\n"); +} + +module_init( hello_world_init ); +module_exit( hello_world_exit ); + +MODULE_LICENSE("GPL"); +``` + + + +##Compile + +Now if you havent done so ... install kernel headers of kernel that your system have now. And everything should be there. + +``` +make +``` |