A computer implemented method for determining whether an executable file is malicious, the method comprising: intercepting the executable file during the launching of the executable file; synchronously calculating a first hash of a portion of the executable file; synchronously searching for the first hash in a verdict cache; when the first hash is found in the verdict cache, determining whether the first hash belongs to a list of malicious files; when the first hash belongs to the list of malicious files, synchronously generating a request for the information about the executable file including calculating a second hash of the executable file, synchronously searching for the second hash in the verdict cache and/or a remote server, and pronouncing a final decision as to a harmfulness or safety of the executable file based on the results of the synchronous search; and when the first hash does not belong to the list of malicious files, granting access to the executable file, asynchronously generating the request for the information about the executable file, the requested information including at least an indication as to harmfulness of the executable file, asynchronously calculating a second hash of the executable file, performing an antivirus scanning of the executable file with a local database based on the second hash, the local database containing information about malicious and safe files, and asynchronously searching for the information about the executable file in a verdict cache located on a remote server according to the second hash, and pronouncing a decision as to harmfulness or safety of the executable file based on the results of the asynchronous search. intercepting the executable file during the launching of the executable file; synchronously calculating a first hash of a portion of the executable file; synchronously searching for the first hash in a verdict cache; when the first hash is found in the verdict cache, determining whether the first hash belongs to a list of malicious files; when the first hash belongs to the list of malicious files, synchronously generating a request for the information about the executable file including calculating a second hash of the executable file, synchronously searching for the second hash in the verdict cache and/or a remote server, and pronouncing a final decision as to a harmfulness or safety of the executable file based on the results of the synchronous search; and when the first hash does not belong to the list of malicious files, granting access to the executable file, asynchronously generating the request for the information about the executable file, the requested information including at least an indication as to harmfulness of the executable file, asynchronously calculating a second hash of the executable file, performing an antivirus scanning of the executable file with a local database based on the second hash, the local database containing information about malicious and safe files, and asynchronously searching for the information about the executable file in a verdict cache located on a remote server according to the second hash, and pronouncing a decision as to harmfulness or safety of the executable file based on the results of the asynchronous search.