Light-industry-up.ru

Экосистема промышленности

Декомпиляция

23-04-2023

Декомпиля́тор — это программа, транслирующая исполнимый модуль (полученный на выходе компилятора) в относительно эквивалентный исходный код на языке программирования высокого уровня. Для сравнения, дизассемблер транслирует исполняемый модуль программы в текст на языке ассемблера.

Декомпиля́ция — процесс воссоздания исходного кода декомпилятором.

Декомпиляция, в частности, используется при обратной разработке программ.

Удачность декомпиляции зависит от объема информации, представленной в декомпилируемом коде; байт-код, используемый большинством виртуальных машин (таких как Java Virtual Machine или .NET Framework Common Language Runtime) часто содержит обширные метаданные, делающие декомпиляцию вполне выполнимой, в то время как машинный код более скуден и сложен в декомпиляции. В частности трудночитаемыми представляются вызовы подпрограмм или функций с косвенными адресами.

Если известно на каком языке была написана декомпилируемая программа, то в первую очередь дизассемблируются и анализируются библиотеки времени исполнения (runtime library) компилятора с этого языка, так как в основном компиляция программы сводится к вызовам с различными параметрами процедур из этих библиотек. Кроме того, многие компиляторы позволяют увидеть, в какой ассемблерный код превращаются операторы программы после компиляции. Эти конструкции становятся шаблонами для декомпилятора, поэтому процесс декомпиляции в некотором смысле похож на распознавание в машинном коде конечного набора подобных шаблонов. Легче всего распознаются вызовы и возврат из процедур. Они служат границами для восстановления операторов процедуры.

Некоторые компиляторы и инструменты используемые после компиляции создают обфусцированный код, с целью затруднить декомпиляцию.

Примеры декомпиляторов

  • .NET Reflector
  • Delphi Decompiler
  • JAD — JAva Decompiler
  • VB Decompiler
  • В СССР декомпиляторы с языков PL/M-80 и Фортран-80 разрабатывались Н. А. Надольским в лаборатории Э. М. Пройдакова в ИПУ АН (1983—1984 гг).

См. также


Декомпиляция.

© 2014–2023 light-industry-up.ru, Россия, Краснодар, ул. Листопадная 53, +7 (861) 501-67-06