Да, можно декомпилировать .exes, используя такие инструменты, как декомпилятор dcc. Это даст хорошие результаты, если оригинальная программа была написана на C. Если она была написана на другом языке, вам, возможно, придется попробовать другой инструмент, подходящий для этого языка.
При декомпиляции программного обеспечения, чем больше вы знаете языка ассемблера, тем лучше вам, возможно, придется исследовать код высокого уровня из сборки низкого уровня, если декомпилятор запутается или часть кода была фактически написана на языке ассемблера.
Декомпиляция является отличным способом изучения работы программ на самом низком уровне. Вы также обнаружите, что во многих случаях декомпилированная программа компилируется обратно в exe, но символы, используемые для описания переменных, совершенно бессмысленны. Возможно, вам придется выполнять детективную работу, чтобы действительно понять, что означает и делает код.
Я не вижу ничего плохого в этическом отношении для декомпиляции кода для вашего собственного развлечения или обучения, но если у вас есть злонамеренные намерения, такие как декомпиляция коммерческого программного обеспечения, чтобы изменить сообщение об авторских правах на ваше собственное или искать уязвимость для злонамеренной эксплуатации, то это может быть считается неэтичным.
Вы можете обнаружить, что разработчик пошел на все, чтобы предотвратить декомпиляцию, создав загрузчик, который распаковывает программное обеспечение в память или имеет код, явно запутывающий декомпиляторы. Это все часть веселья.