When attempting to reverse engineer an executable file to uncover potential vulnerabilities, which technique is MOST effective for understanding the high-level logic and control flow without executing the code?
Conducting a fuzz test to identify potential memory leaks or crashes
Performing static analysis of the code
Observing the behavior of the application through dynamic analysis
Reviewing the application logs for error messages and system events