Декомпиляция действительно неверна.Декомпиляторы компилируют объектный код в исходное представление.Во многих отношениях их легче писать, чем в традиционных компиляторах - «исходный» код уже проверен на синтаксис и обычно очень точно отформатирован.
Они создают таблицу символов (адресов) и создают представление целевого языка дляприложение.Обычная трудность заключается в том, что оригинальный компилятор в большей или меньшей степени оптимизировал исходное приложение, удаляя общие подвыражения, выводя константный код из циклов и многие другие подобные методы.Их часто невозможно представить на целевом языке.
В тех случаях, когда источник предназначен для четко определенной ВМ, часто эта оптимизация оставляется на усмотрение JIT-компилятора, а полученный декомпилированный код очень читабелен - вмногие случаи практически идентичны оригиналу.Компиляторы этого типа часто оставляют некоторые или все символы в объектном коде, позволяя их восстановить.Другие включают номера строк, чтобы помочь с отладкой и устранением неполадок.Все это помогает восстановить исходный код.
В качестве счетчика существуют обфускаторы кода, которые преднамеренно выполняют преобразования в код, которые предотвращают простое восстановление исходного кода путем скремблирования имен, изменения генерируется код последовательности (безизменение его результирующего значения) и введение конструкций, для которых нет эквивалента в исходном языке.