Se il programma è stato compilato in un linguaggio bytecode (esempio: Java/C#) non è difficile risalire ad una buona approssimazione del sorgente originale.
Se è stato compilato nativamente (esempio: C/C++/Delphi) difficilmente riuscirai a risalire al codice, a meno di accontentarsi del codice Assembly o del lavoro di alcuni "decompilatori specifici"!