A computer program that takes as input an executable file, and attempts to create a high level, compilable source file that does the same thing. Decompilers usually do not perfectly reconstruct the original source code, and can vary widely in the intelligibility of their outputs. Used primarily as a tool in software reverse engineering.