Когда и как я должен запутать свой код Delphi? - PullRequest
4 голосов
/ 03 июня 2011

Что я должен знать о запутывании кода в Delphi?

Должен ли я или не должен это делать?

Как это делается и есть ли хорошие (коммерческие / бесплатные) инструменты для автоматизации?

Ответы [ 5 ]

11 голосов
/ 03 июня 2011

Зачем вам это нужно?

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

Если люди хотят переделать вашу работу, они могут, несмотря ни на что, запутывание или нет, черт возьми, некоторые кодеры пишут практически естественный запутанный код (работая с несколькими)

Поэтому мой голос не должен беспокоить.Если кто-то не покажет мне декомпилятор для Delphi, который действительно работает и производит полные наборы компилируемых и всех Delphi, где он был изначально, я бы не стал беспокоиться об одной капле.

7 голосов
/ 03 июня 2011

Pythia - это программа, которая может запутывать двоичные файлы (не исходные), созданные с помощью Delphi или C ++ Builder. Исходный код Pythia здесь .

До enter image description here

* После 1013 *: enter image description here

5 голосов
/ 03 июня 2011

Нет смысла запутывать, поскольку компилятор уже делает это за вас.

Нет способа воссоздать исходный код из двоичного файла.

И компоненты могут распространяться полезным способом без необходимости распространять исходный код.

Так что обычно (технической) причины для распространения исходного кода нет.

4 голосов
/ 04 июня 2011

Например, вы можете сделать что-то другое, чтобы уменьшить возможность злоумышленника отключить вашу систему активации программного обеспечения, но в скомпилированной с нуля системе, такой как Delphi, вы не можете воссоздать исходный код из двоичных файлов.Другой ответ (принятый в данный момент) говорит именно об этом, и кто-то еще указал на полезный инструмент для запутывания информации RTTI, которую люди могут использовать, чтобы получить некоторое представление о внутренностях вашего программного обеспечения.

Вы могли быИзучите следующие методы защиты, чтобы заблокировать модификацию вашей системы, если вы действительно этого хотите:

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

  2. Обнаружение отладки.В этом случае вы можете обнаружить отладчики, используемые в вашем программном обеспечении, и попытаться заблокировать его работу.

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

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

0 голосов
/ 21 марта 2014

Вы можете использовать бесплатный JCF (Jedi Code Formatter), чтобы скрыть ваш исходный код. Тем не менее, синтаксис Паскаль не допускает сильного запутывания, а JCF даже не делает это лучше (ну, это инструмент форматирования кода, а не обфускатор!)

...