Stitching the gadgets: on the ineffectiveness of coarse-grained control-flow integrity protection
Return-oriented programming without returns