а вы можете раздавить пакет с чипсами, а потом склеить их обратно, как было? это насчёт "теоретически". в общем случае, можно декомпилировать исполняемый образ и получить валидный, компилируемый код. но он будет лишь напоминать первоначальный. в случае кода на промежуточном языке для сред исполнения (например, .net, jvm) можно получить соответствие около 90% - это уже круто. код на Delphi тоже неплохо декомпилируется за счёт анализа использования VCL в коде. код на C декомпилируется за счёт анализа crt и api-вызовов, но плохо. код на C++ декомпилируется отвратительно.
обычно сгенерированный код декомпилятором код подвергается масштабному рефакторингу путём его анализа и отладки. если код только обфусцирован, то реверсится он таким макаром очень быстро, поскольку типы уже есть.
Не плохая идея, но увы. Получить один и тот же вариант порой можно десятком способов, и при запущенной программе не все условия программы исполняются. А вообще идея забавная.
и практически.... ДЕКОМПИЛЯЦИЯ! полной разборкой кода занимаются вирусные аналитики (из антивирусных лабораторий) они могут декомпилить даже упакованные 5-7раз коды в оболочку
учи мат часть, декомпилятором можно получить только относительно похожий код который нех работать не будет, машинный код перевести в высокоуровневый почти не реально( если не брать простейшие программы типа хеловорда)
Денис Павлов
Гуру
(2550)
ну можешь и так считать, никто не мешать
проект наш 279 классов и интерфейсов разобрали в корне за 2 дня(спецы из каспера)
и вернули ПОЧТИ ИСХОДНИК... просто без одного, 3уровень нахождения директорий был нарушен(4- не было, а все легки в 3)
но это не беда, в classpath были данные что и где
Не только возможно, но и широко применяется. Декомпиляция — процесс воссоздания исходного кода декомпилятором! Главное не нарушить лицензию ПО. За это штрафы и статьи)
декомпиляцией это зовётся. возможна, да. но, так как компиляция - процесс с потерями, первоначального кода байт в байт не получим. точность восстановленного кода так же зависит от конкретного ЯП.