Let's say there is a C program that simply takes a string
argv and uses
sprintf to copy it in a finite buffer. Classic stack buffer overflow. Let's even say the program is more complicated, allowing for techniques like ROP.
But then it's compiled with a stack canary/security cookie, and run on an OS using ASLR and DEP.
Does not the chance to then execute arbitrary shellcode approach 0?