Итак, у меня есть склонность к пасхальным яйцам ... это восходит к тому, что я был частью найденного сообщества архива пасхальных яиц.
Однако я также много занимаюсь программированием с открытым исходным кодом.
Я хочу знать, что, по вашему мнению, является лучшим способом СИСТЕМАТИЧЕСКИ и МЕТОДИЧЕСКИ запутать код.
Примеры на PHP / Python / C / C++ предпочтительны, но на других языках это нормально, если методология объяснена правильно.
Я могу быть здесь толстым (вчера немного спал), но вы хотите запутать открытый исходный код? Разве это не противоречит сути открытого исходного кода? Я бы сказал, что лучше, чем скрывать, просто сделаю менее очевидным. Просто закопайте яйцо там, где не многие люди, вероятно, будут смотреть.
Я хочу сделать непонятным, что пасхальное яйцо там в основном ... или сделать какой-нибудь злой код, который, надеюсь, займет больше времени, чем нужно, чтобы наткнуться на пасхальное яйцо.





В этом случае вы должны использовать / написать «обфускатор». Программа, которая сделает всю работу за вас.
Обфускатор Salamander можно использовать для обфускации программ .Net, но он больше предназначен для предотвращения декомпиляции, поэтому это не совсем то, что вам нужно.
Хорошее место для изучения обфускации в C - Международный конкурс запутанного кода C
IOCCC не имеет ничего общего с автоматическим запутыванием.
Истинный. Моя мысль заключалась в следующем: знание того, как запутать, помогает написать автоматизированный механизм обфускации. IOCCC может быть источником вдохновения.
Вопрос в том, как создать, казалось бы, необфусцированный код на виду (с открытым исходным кодом), не выполняя при этом другую функцию.
Стеганография: искусство и наука написания скрытых сообщений таким образом, чтобы никто, кроме отправителя и предполагаемого получателя, даже не догадывался, что существует скрытое сообщение.
Некоторые очевидные методы:
Я могу гарантировать, что результат будет настолько нечитаемым, что вы даже не сможете его прочитать;)
Для систематического и методичного обфускации кода вы не сможете превзойти Perl. Если вам нужно что-то, что компилируется в двоичный файл, всегда есть APL.
Если вы ориентируетесь на платформу .NET, поместите исходный код пасхального яйца в файл ресурсов в виде строки binhex. Затем вы можете попросить одну из ваших процедур инициализации получить его, декодировать и скомпилировать в память. Вы можете вызвать его с помощью отражения.
Если вам нужна помощь с техническими аспектами компиляции в память и вызова полученной сборки, я могу предоставить вам библиотеку, которую я написал, и пример программы, которая ее использует.
Вы можете использовать эту технологию для загрузки подключаемых модулей, что вполне законно и разумно в инициализаторе.
В духе переименования символов: злоупотребляйте правилами области видимости и видимости, называя разные переменные одинаковыми именами.
Я не понимаю, как ваши утверждения о пасхальных яйцах и открытом исходном коде относятся к обфускации кода. Ваш вопрос запутан? :-)