summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--md/writeup.md1
-rw-r--r--md/writeup/kernel_hello_world.md54
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
+```