не совсем так, скорее даже не так. сначала программа пишется на каком-нибудь языке высокого уровня, это исходник, а потом уже превращается в машинный код (исполняемый файл). расшифровать машинный код очень сложно. для изменения и доработки программного обеспечения нужны исходники, а их нет, они остались у программиста, а может даже утеряны. когда вы в компьютер грузите программу, то это исполняемый код, а текст программы вам не нужен и никто его никогда не дает. хотя вот линукс это пример, где все исходники открыты и поэтому линукс может развивать любой желающий.
некоторая аналогия. вот есть электронная плата (аналог исполняемого файла), но нет электрической схемы этой платы (исходник). конечно, теоретически можно по железу восстановить электрическую схему, но только теоретически, особенно, если названий электронных компонентов нет (стерты или их изначально не было, да и плата многослойная). кто бы мог справиться с такой задачей?- реально никто. примерно, то же самое с программным обеспечением.