Для тех кто не в теме, обфускация – это когда у нас есть код программы, и мы хотим сделать этот код нечитаемым. Как правило, обфусцировать (или все-таки обфускировать?) пытаются разные скрипты (на javascript, php и тд), потому что если программа написана на компилируемом языке, можно не извращаться и распространять только бинарники. Производить обфускацию руками долго и неприятно, потому пишутся специальные программы – обфускаторы. Дальше речь пойдет о том, как их собственно делают.
В некоторых блогах пишут мол «смотрите – берем код на javascript, делаем escape(), а потом eval(unescape()), обфускатор готов!». Код конечно будет нечитаемым, вот только расшифровать его можно будет за две минуты. Притом мы получим исходный код в том состоянии, в каком он был до обфускации – с комментариями, отступами и тд.
В «нормальном» обфускаторе, который на выходе выдает в 99% случаев рабочий код, должен быть реализован полноценный синтаксический анализатор нужного нам языка программирования. Задача эта не то, чтобы нерешаемая, но можно пойти и более короткой дорогой, воспользовавшись регулярными выражениями. Это потребует от нас кое-какой дисциплины во время написания кода шифруемого приложения, зато весь обфускатор уложится в 20 строк. Read more: Записки программиста
В некоторых блогах пишут мол «смотрите – берем код на javascript, делаем escape(), а потом eval(unescape()), обфускатор готов!». Код конечно будет нечитаемым, вот только расшифровать его можно будет за две минуты. Притом мы получим исходный код в том состоянии, в каком он был до обфускации – с комментариями, отступами и тд.
В «нормальном» обфускаторе, который на выходе выдает в 99% случаев рабочий код, должен быть реализован полноценный синтаксический анализатор нужного нам языка программирования. Задача эта не то, чтобы нерешаемая, но можно пойти и более короткой дорогой, воспользовавшись регулярными выражениями. Это потребует от нас кое-какой дисциплины во время написания кода шифруемого приложения, зато весь обфускатор уложится в 20 строк. Read more: Записки программиста
0 comments:
Post a Comment