5

Я видел, как мой друг извлекал файл исходного кода из файла Java * * .class .Он использовал какое-то программное обеспечение для этого.

Можно ли сделать то же самое с «* .exe»? Если да, как я могу это сделать? Также этично ли это делать, учитывая, что исполняемый файл - это просто небольшой файл, который не защищен от копирования?

6 ответов6

8

Это зависит от языка, который использовали разработчики.

Для языков Java и .NET большую часть времени можно «декомпилировать» исходный код. это не будет настоящий исходный код (имена переменных будут другими, оптимизация компилятором будет иметь перекомпонованный код и т. д.), но он будет близок.

Другие языки, такие как C/C++, не так просты.

Что касается этики, если вы просто хобби-программист, заинтересованный в игре, то это нормально. Однако, если вы профессионал, и вы пытаетесь получить исходный код для копирования приложения, то это очень неэтично и ничего страшного!

4

Если приложение написано на одном из языков .NET (VB/C #), вы можете использовать отражатель Красных ворот в reflector.red-gate.com разбирать приложения в соответствующем исходные файлы. Однако не все приложения написаны на таких управляемых языках, и декомпиляция приложения C++, или написанного на Delphi, или другого неуправляемого языка не так проста, и все, что вы можете получить - это шестнадцатеричные дампы, которые очень трудно затем реконструировать в реальное приложение.

2

Вы не можете сделать это, если ваш .exe код находится в C/C++, но если он находится в C #, вы можете сделать это. Я не знаю хорошего инструмента для этого, но одним из способов является использование ANTS Profiler. Он показывает вам все объекты, методы и аргументы из двоичного файла C #.

1

Да, можно декомпилировать .exes, используя такие инструменты, как декомпилятор dcc. Это даст хорошие результаты, если оригинальная программа была написана на C. Если она была написана на другом языке, вам, возможно, придется попробовать другой инструмент, подходящий для этого языка.

При декомпиляции программного обеспечения, чем больше вы знаете языка ассемблера, тем лучше вам, возможно, придется исследовать код высокого уровня из сборки низкого уровня, если декомпилятор запутается или часть кода была фактически написана на языке ассемблера.

Декомпиляция является отличным способом изучения работы программ на самом низком уровне. Вы также обнаружите, что во многих случаях декомпилированная программа компилируется обратно в exe, но символы, используемые для описания переменных, совершенно бессмысленны. Возможно, вам придется выполнять детективную работу, чтобы действительно понять, что означает и делает код.

Я не вижу ничего плохого в этическом отношении для декомпиляции кода для вашего собственного развлечения или обучения, но если у вас есть злонамеренные намерения, такие как декомпиляция коммерческого программного обеспечения, чтобы изменить сообщение об авторских правах на ваше собственное или искать уязвимость для злонамеренной эксплуатации, то это может быть считается неэтичным.

Вы можете обнаружить, что разработчик пошел на все, чтобы предотвратить декомпиляцию, создав загрузчик, который распаковывает программное обеспечение в память или имеет код, явно запутывающий декомпиляторы. Это все часть веселья.

1

Техническая сторона: да, можно декомпилировать код ... вроде. То, что вы получите обратно, не будет исходным исходным кодом, и может даже не очень походить на исходный исходный код, если только исполняемый файл не был скомпилирован с включенными полными отладочными символами. Однако в конечных производственных сборках часто отключаются символы отладки, чтобы сделать исполняемый файл настолько маленьким, насколько это возможно, и избежать того, чтобы любой, кто проверял исполняемый файл, предоставил информацию, превышающую минимальный объем информации.

Юридическая сторона: в соответствии с Законом о защите авторских прав в цифровую эпоху предпринимается попытка декомпилировать или перепроектировать любое программное обеспечение, которое правообладатель пытался защитить от этого. До сих пор суды толковали, что неважно, насколько нелепой может быть попытка, это все же незаконно. Даже если нет никаких технических мер для защиты кода, вероятно, существует лицензионное соглашение, в котором говорится, что вы не можете декомпилировать или перепроектировать исполняемый файл.

Как правило, я склонен считать эти вещи полностью этическими, если вы не делаете их с намерением причинить вред кому-либо еще, но закон имеет тенденцию не соглашаться.

0

Получение исходного кода из файлов .class - это просто, но трудно получить код из файлов .exe.Используйте этот http://www.hiew.ru/ для дизассемблирования файлов .exe, но этот сгенерированный код не будет таким же, как оригинальный, так как пропускает много строк, которые игнорируются компилятором, что затрудняет его чтение.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .