Обфускация кода?

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

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

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

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


person Mez    schedule 24.09.2008    source источник
comment
Я не понимаю, как ваши утверждения о пасхальных яйцах и открытом исходном коде относятся к обфускации кода. Ваш вопрос запутан? :-)   -  person Hobbo    schedule 24.09.2008
comment
Я могу быть здесь толстым (вчера немного спал), но вы хотите запутать открытый исходный код? Разве это не противоречит сути открытого исходного кода? Я бы сказал, что лучше, чем скрывать это, просто сделаю менее очевидным. Просто закопайте яйцо там, где не многие люди, вероятно, будут смотреть.   -  person Rob Cooper    schedule 24.09.2008
comment
Я хочу сделать непонятным, что пасхальное яйцо там в основном ... или сделать какой-нибудь злой код, который, надеюсь, займет больше времени, чтобы понять, чем наткнуться на пасхальное яйцо.   -  person Mez    schedule 24.09.2008


Ответы (6)


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

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

person Dark Shikari    schedule 24.09.2008

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

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

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

person Burkhard    schedule 24.09.2008
comment
IOCCC не имеет ничего общего с автоматическим запутыванием. - person shoosh; 24.09.2008
comment
Правда. Моя мысль заключалась в следующем: знание того, как запутать, помогает написать автоматизированный механизм обфускации. IOCCC может быть источником вдохновения. - person Burkhard; 24.09.2008

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

person mouviciel    schedule 08.04.2009

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

person Community    schedule 24.09.2008
comment
Стеганография: искусство и наука написания скрытых сообщений таким образом, чтобы никто, кроме отправителя и предполагаемого получателя, даже не догадывался, что существует скрытое сообщение. - person Schwern; 28.10.2008

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

  • удалите комментарии и как можно больше пробелов, не нарушая при этом ничего
  • соединить линии
  • переименовать переменные и функции в бессмысленные (желательно 1 символ)
person Hugh Allen    schedule 24.09.2008

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

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

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

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

person Peter Wone    schedule 08.04.2009