Jump-oriented programming: a new class of code-reuse attack
Control-flow integrity principles, implementations, and applications