Декомпиляторы не могут полностью воспроизвести исходный код по нескольким причинам:
- Оптимизации компилятора. stackoverflow.com Они не всегда отражаются в сгенерированном файле. stackoverflow.com Например, если тело функции встраивается в точку вызова, её автоматическое выделение затруднительно. citforum.ru
- Отображение «многие к одному». citforum.ru При компиляции программы из языка высокого уровня в язык ассемблера концепции языка высокого уровня отображаются «многие к одному», и однозначное восстановление программы на языке высокого уровня становится невозможным. citforum.ru
- Оптимизирующие преобразования. citforum.ru Они приводят к появлению в машинном коде конструкций, принципиально невозможных в языках высокого уровня. citforum.ru
Полностью автоматический декомпилятор реализовать принципиально невозможно, поэтому системы декомпиляции программ должны работать во взаимодействии с аналитиком, который управляет процессом декомпиляции методом проб и ошибок. citforum.ru