1. A method comprising: by one or more processors of a machine, accessing and analyzing code of a software application to identify a set of vulnerabilities of the software application, each vulnerability among the set of vulnerabilities corresponding to a different execution path among a set of execution paths to be explored within the code during the analyzing of the code; by one or more processors of the machine, determining that a vulnerability among the identified set of vulnerabilities of the software application is exploitable by: ranking the set of execution paths to be explored; and identifying within the analyzed code an execution path that leads to arbitrary code being enabled to execute on a computer during execution of the software application by the computer, the identifying being performed by exploring the execution path in accordance with the ranking of the set of execution paths; and by one or more processors of the machine, automatically generating an exploit for the determined exploitable vulnerability, the automatically generated exploit including an input that, after being inputted to the software application during execution of the software application by the computer, causes the software application to follow the execution path that leads to arbitrary code being enabled to execute on the computer.