The Shellcoder's Handbook: Discovering and Exploiting Security Holes