Декомпилятор
Декомпиля́тор— это программа, транслирующаяисполняемый модуль(полученный на выходекомпилятора) в эквивалентныйисходный коднаязыке программированиявысокого уровня.
Декомпиля́ция— процесс воссоздания исходного кода декомпилятором.
Декомпиляция, в частности, используется приобратной разработкепрограмм.
Удачность декомпиляции зависит от объема информации, представленной в декомпилируемом коде.Байт-код,используемый большинством виртуальных машин (таких какJava Virtual Machineили.NET FrameworkCommon Language Runtime) часто содержит обширные метаданные, делающие декомпиляцию вполне выполнимой, в то время какмашинный кодболее скуден и сложен в декомпиляции. В частности трудночитаемыми представляются вызовы подпрограмм или функций с косвенной адресацией вызовов (в терминах языков программирования высокого уровня — вызовы через указатели на функции/процедуры).
Если известно на каком языке была написана декомпилируемая программа, то в первую очередьдизассемблируютсяи анализируютсябиблиотеки времени исполнения(RTL — runtime library) компилятора с этого языка, так как в основном компиляция программы сводится к вызовам с различными параметрами процедур из этих библиотек. Кроме того, многие компиляторы позволяют увидеть, в какой ассемблерный код превращаются операторы программы после компиляции. Эти конструкции становятся шаблонами для декомпилятора, поэтому процесс декомпиляции в некотором смысле похож на распознавание в машинном коде конечного набора подобных шаблонов. Легче всего распознаются вызовы процедур и возвраты из них. Они служат границами для восстановления операторов процедуры.
Некоторые компиляторы и инструменты, используемые после компиляции, подвергают программный кодобфускациис целью затруднить декомпиляцию.
Декомпиляторы можно рассматривать как состоящие из ряда фаз, каждая из которых вносит свой вклад в определенные аспекты общего процесса декомпиляции.
Примеры декомпиляторов
[править|править код]- FernFlower
- .NET Reflector,dotPeek— для декомпиляции сборок.NET
- ILSpy
- Delphi Decompiler
- JAD— JAva Decompiler
- В СССР декомпиляторы с языков PL/M-80 и Фортран-80 разрабатывались Н. А. Надольским в лаборатории Э. М. Пройдакова в ИПУ АН (1983—1984 гг).
См. также
[править|править код]Для улучшения этой статьижелательно:
|
Этозаготовка статьиопрограммном обеспечении.Помогите Википедии, дополнив её. |