1. INTRODUCTION  
2. BACKGROUND  
3. RETURN-ORIENTED PROGRAMMING  
4. BYPASSING DEP AND ASLR WITH ROP  
5. JUMP-ORIENTED PROGRAMMING  
6. SIGRETURN-ORIENTED PROGRAMMING  
7. CONTROL FLOW INTEGRITY  
8. USING GADGETS THAT IMMEDIATELY FOLLOW CALL INSTRUCTIONS  
9. REUSE OF FUNCTIONS  
10. DATA FLOW EXPLOITATION  
11. GENERAL CODE REUSE EXPLOIT GENERATION SCHEME  
12. GADGET CATALOG  
13. GADGET SEARCH  
14. DETERMINING GADGET SEMANTICS  
15. GADGET CHAINS GENERATION  
16. RESTRICTED SYMBOLS  
17. EXPERIMENTAL TOOLS COMPARISON  
18. CONCLUSIONS  