Designing BSD Rootkits: An Introduction to Kernel Hacking