Возможности декомпиляторов

16. 07. 2013

Ситуация довольно пикантная, так как формально такие программы существуют. В процессе своей эволюции компиляторы языков программирования стали сложнее, и теперь вместо машинного кода создают его промежуточные виды – p-языки, языки байт-машин и т.д. А эти промежуточные формы, к сожалению, состоят из более простых конструкций, нежели машинный код, и довольно легко превращаются обратно в исходный листинг программы.

Декомпиляторы

Возможности декомпиляторовПри этом даже есть возможность восстановить многие имена идентификаторов – они беспечно хранятся в областях отладочной информации загрузочных модулей. Понятно, что даст в этом случае декомпилятор – возможность полностью восстановить алгоритм работы программы, структуры ее данных и даже листинг. А дальше кому как интересно: можно изменить продукт и продать как свой, можно понять секреты конкурирующих фирм, а можно написать МегаВирус современности…

Официальные попытки создания декомпиляторов велись еще со времен первых версий Фортрана, но потом шумиха утихла. Во времена существования компиляторов с Си, Паскаля, Модулы, Фортрана и прочих вновь началась охота за декомпиляторами, но опять утихла в виду отсутствия предложений. То, что предлагалось, могло лишь немногим помочь в исследовании чужих программ. К примеру, для Pascal 6.0 можно было частично восстанавливать интерфейсные секции TPU, а для Delphi первых версий – оконные структуры и ассемблерный код в качестве тела процедур и функций. С СУБД вроде FoxPro, Clipper и прочими декомпилирование даже защищенных программ проходило очень гладко, а с появлением промежуточных платформ вроде.NET разбирать чужую программу мог любой школьник – есть даже бесплатные декомпиляторы. В настоящее время легко восстанавливается все ПО, написанное под платформы JVM, NET, включая их «родственников» на мобильных платформах. Это вынуждает разработчиков использовать обсфукацию – запутывание отдельных частей программы от анализа, что, конечно, не добавляет ей рейтинга, зато отражается в цене.

А вот с программами старых формаций ситуация с декомпилированием очень плоха. К обиде пользователей, инструментов анализа почти нет, а работать на уровне машинного кода – проще написать программу заново. При этом слухи о том, что, подобно Граалю, существуют универсальные декомпиляторы, не дают успокоиться многим. Хотя бы в том плане, если случайно потерял свой исходный код. Оказывается, таких «растерях» в стране очень много, и даже многие программистские проекты закрывались по этой причине. Вот бы создать такой декомпилятор и оказывать услуги населению!

  • Egg Head

    Интересная статья.

    Вот кстати по теме сайт (с онлайн-демо версией) и заодно список интернет ресурсов с декомпиляторами

    demono.ru/links.html