Запутывание кода? - PullRequest
       29

Запутывание кода?

0 голосов
/ 24 сентября 2008

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

Однако я также занимаюсь программированием с открытым исходным кодом.

Что я хочу знать, так это то, что, по вашему мнению, является наилучшим способом СИСТЕМАТИЧЕСКИ и МЕТОДИЧЕСКИ запутывать код.

Примеры в PHP / Python / C / C ++ предпочтительнее, но в других языках это хорошо, если методология объяснена правильно.

Ответы [ 6 ]

4 голосов
/ 24 сентября 2008
  1. Скомпилируйте код с полной оптимизацией. Полностью удалите двоичный файл.
  2. Используйте декомпилятор кода.

Я могу гарантировать, что результат будет настолько нечитаемым, что вы даже не сможете его прочитать;)

3 голосов
/ 24 сентября 2008

В этом случае вы должны использовать / написать «обфускатор». Программа, которая сделает всю работу за вас.

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

Хорошее место, чтобы узнать об обфускации в C - это Международный конкурс кодов с запутанным C

2 голосов
/ 08 апреля 2009

В духе переименования символов: чрезмерно используйте правила видимости и области видимости, называя разные переменные одним и тем же именем.

1 голос
/ 08 апреля 2009

Для систематического и методического запутывания кода, вы не можете победить Perl. Если вам нужно что-то, что компилируется в двоичный файл, всегда есть APL.

Если вы ориентируетесь на платформу .NET, поместите исходный код пасхального яйца в файл ресурсов в виде строки binhex. Затем вы можете получить одну из ваших подпрограмм инициализации, извлечь ее, декодировать и скомпилировать в память. Вы можете вызвать его, используя отражение.

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

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

1 голос
/ 24 сентября 2008

Некоторые очевидные методы:

  • удаляйте комментарии и столько пробелов, сколько сможете, не ломая вещи
  • объединить строки
  • переименовывать переменные и функции в бессмысленные (желательно 1 символ)
1 голос
/ 24 сентября 2008

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

...