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

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

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

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

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

Я не понимаю, как ваши утверждения о пасхальных яйцах и открытом исходном коде относятся к обфускации кода. Ваш вопрос запутан? :-)

Hobbo 24.09.2008 10:45

Я могу быть здесь толстым (вчера немного спал), но вы хотите запутать открытый исходный код? Разве это не противоречит сути открытого исходного кода? Я бы сказал, что лучше, чем скрывать, просто сделаю менее очевидным. Просто закопайте яйцо там, где не многие люди, вероятно, будут смотреть.

Rob Cooper 24.09.2008 11:17

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

Mez 24.09.2008 11:30
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
1 871
6

Ответы 6

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

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

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

IOCCC не имеет ничего общего с автоматическим запутыванием.

shoosh 24.09.2008 11:19

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

Burkhard 24.09.2008 19:44

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

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

Schwern 28.10.2008 00:14

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

  • удалите комментарии и как можно больше пробелов, не нарушая при этом ничего
  • соединить линии
  • переименовать переменные и функции в бессмысленные (желательно 1 символ)
  1. Скомпилируйте код с полной оптимизацией. Полностью удалите двоичный файл.
  2. Используйте декомпилятор для кода.

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

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

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

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

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

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

Другие вопросы по теме