Gray Hat C#: A Hacker's Guide to Creating and Automating Security Tools