Можно, но глубина зависит от платформы. У программ в промежуточном представлении — Java, .NET, байт-код Python — имена классов и методов присутствуют всегда, они нужны для связывания, и восстановление даёт текст, близкий к исходному. У машинного кода C и C++ имён локальных сущностей нет, а листинг декомпилятора — реконструкция, а не исходный текст. Go и Delphi занимают промежуточное положение: имена функций и типов лежат в служебных структурах.
Как это выглядит на конкретной платформе, показано на странице экспертизы исходного кода на Java. Редкий или устаревший язык исследование не исключает, но меняет инструменты: готового анализатора может не быть, а на нём держится структурное сопоставление, — тогда разбор ведут вручную, дольше и грубее.
Отправляя чужой установочный файл, скажите, откуда он у вас: декомпилирование ограничено пунктом 3 статьи 1280 ГК РФ, и для сравнения кодовых баз нужно поручение суда, согласие правообладателя или разрешающая лицензия.