You Can Run but You Can't Read: Preventing Disclosure Exploits in Executable Code
Jump-oriented programming: a new class of code-reuse attack