Несколько причин, по которым программисты не могут получить точный исходный код, декомпилировав машинный:
- Проблема «многие к одному». 1 После работы компилятора и оптимизатора разные фрагменты кода могут быть скомпилированы с использованием одного и того же набора операций. 1
- Потеря информации. 4 В процессе компиляции безвозвратно теряются комментарии, имена функций и переменных. 4 Без этих данных логика работы даже простейших программ становится непонятной. 4
- Не вся информация, которая есть в исходном коде, содержится в скомпилированном. 1 Например, некоторые аннотации используются только во время компиляции и не включаются в скомпилированный вывод. 1
При декомпиляции можно узнать примерные конструкции и понять общую логику работы программы, но точный исходный код получить невозможно. 2