In this paper, a gray box fuzzer is presented to detect vulnerabilities in executable binary code. The literature surveys show that fuzz testing has three major problems. At first, the input space provided by the fuzzers to coverage execution paths in a binary program, can be very large. Secondly, most fuzzers can not support sufficient coverage of execution paths because of large input space. Finally, a large number of possible vulnerabilities can not reveal within an unseen execution path because of this unsufficient coverage. The proposed method, resolves the problem of large input space, in an evolutionary process, by conducting the test data generation towards suspicious paths in which one or more vulnerability patterns are observed. In the presented method, when a vulnerablility pattern is observed in an execution path by a test data, the next test data is generated revealing the vulnerablity. As a result, the number of detected vulnerabilities can increase. Our evaluations show better performance of presented method compared to other fuzz testing methods.