Почему вы запутываете свой код? - PullRequest
12 голосов
/ 16 мая 2009

Вы когда-нибудь запутывали свой код раньше? Существуют ли когда-либо законные причины для этого?

Ответы [ 13 ]

20 голосов
/ 16 мая 2009

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

14 голосов
/ 16 мая 2009

Да, чтобы было труднее провести реинжиниринг.

8 голосов
/ 16 мая 2009

Это называется "Безопасность работы". Это также причина для использования Perl - не нужно делать запутывание как отдельную задачу, а значит, более высокую производительность, без потери безопасности работы.

Если хотите, назовите это "безопасность через мракобесие".

8 голосов
/ 16 мая 2009

Конечно, чтобы обеспечить работу на всю жизнь (шучу).

Это довольно весело и познавательно: Как написать неосуществимый код .

7 голосов
/ 16 мая 2009

Я не верю, что создание реверс-инжиниринга является уважительной причиной.

Хорошая причина, чтобы запутать ваш код - это уменьшить объем откомпилированного кода. Например, приложения J2ME должны быть как можно меньше. Если вы запустите свое приложение через обфускатор (и оптимизатор), то вы можете уменьшить количество файлов с нескольких Мб до нескольких сотен Кб.

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

2 голосов
/ 16 мая 2009

Разве это также не используется в качестве безопасности через неизвестность? Когда ваш исходный код общедоступен (javascript и т. Д.), Вы можете захотеть хотя бы немного сложнее понять, что на самом деле происходит на стороне клиента.

Безопасность всегда полна компромиссов. но я думаю, что безопасность от неизвестности - один из наименее эффективных методов.

1 голос
/ 16 мая 2009

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

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

Кстати, нелегко отследить исключения, выброшенные из запутанного стека! Я на самом деле запомнил в какой-то момент, что aH означает «исключение нулевого указателя» для конкретной сборки.

0 голосов
/ 28 февраля 2019

Я запутал код своих приложений для Android в основном. Я использовал инструмент ProGuard, чтобы запутать код. Когда я работал над проектом C #, наша команда использовала ArmDot. Это система лицензирования и обфускации. Современные обфускаторы используются не только для усложнения процесса взлома. Они способны защищать программы и игры от мошенничества, проверять лицензии / ключи и даже оптимизировать код. Но я не думаю, что необходимо использовать обфускатор в каждом проекте.

0 голосов
/ 22 мая 2009

Да и нет, я не поставлял приложения с инструментом, который можно было легко декомпилировать.

Я запустил нечто вроде обфускаторов для старых интерпретаторов Basic и UCSD Pascal, но это было по другой причине, оптимизируя время выполнения.

0 голосов
/ 16 мая 2009

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

    ((int8_t (*)( int32_t, void * )) hdd->_ctrl)( DISK_CMD_REQUEST, (void *) dr );

Или это просто системное программирование на C? Или эта строка должна быть написана по-другому? Вопросы ...

...