Code-pointer integrity
Stitching the gadgets: on the ineffectiveness of coarse-grained control-flow integrity protection