Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Создание обфускатора (к диплому)

244
06 октября 2010 года
UAS
2.0K / / 19.07.2006
В общем, 5 курс - пора бы думать уже и о теме диплома.
Писать что-то, типа сайтов, опросников, пакетов лабораторных, как прочие, мне не хочется в виду того, что первое для меня слишком просто, а остальное просто неинтересно.

Мне же интересно написать обфускатор, как-то душа к этому лежит и интересно повозиться и разобраться. В общем, что это такое и зачем используется я прекрасно знаю. О том, как это реализуется качественно (не на уровне простых замен) знаний мало. Я так полагаю, что надо писать свои анализаторы языка, но не уверен. Собственно, потому у меня возник ряд вопрос, которые лучше спросить и более осведомлённых людей.
Писать собираюсь для php (v.5.3), в виду того, что его знаю очень хорошо, а потому не придётся тратить много времени на изучение языка и прочих подводных камней (которые, например, снижают производительность).

Собственно вопросы:
1) И самый главный - имеет ли смысл вообще писать на такую тему? Аналоги есть в сети, но в целом достойных немного, а с поддержкой версии 5.3 ещё меньше.
2) Имеет ли смысл писать именно для php или есть смысл взглянуть на другой язык? Если да, то на какие и кратко почему.
3) Примерная сложности разработки
4) На каком языке программирования лучше всего писать обфускатор? Т.е. какой язык более подходит для моих целей? Из языков программирования отлично разбираюсь во всем, что как-то связано с веб-программированием, на базовом уровне (в среднем) программирую на C#, C++, Java
5
06 октября 2010 года
hardcase
4.5K / / 09.08.2005
Обфускатор нужен для осложенения декомпиляции программ (либо осложения отладки и реверсинжиниринга).
Насколько мне известно PHP это ниразу не компилируемый язык, а также он не попадает на клиент как JavaScript, так как используется для серверных решений, спрашивается, зачем тогда обфусцировать код на PHP?

Касаемо сложности разработки: ты сможешь сделать синтаксический и семантический анализатор PHP за приемлемое время?
244
07 октября 2010 года
UAS
2.0K / / 19.07.2006
Да тут не в том дело, что он используется для серверных решений. Проблема как раз в том, что он у нас относится к скриптовым, код его полностью открыт, что как раз и ставит остро проблему авторского права и защиты исходного кода от изучения. PHP так-то распространен практически на всех серверах, да и доля сайтов, написанных на нем, я считаю, значительно больше остальных (напис. на прочих языках) вместе взятых.
В принципе, я пишу это для того, чтобы кто-то использовал, у кого не будет доступа к Zend Guard (который и стоит нормально). Помимо обфускации хочу добавить немного оптимизации кода, но это не основная цель, но рассматриваться и по возможности делаться будет.
Ну а зачем серверный код обфусцровать?
1)Ну, допустим, написал человек какую-либо библиотеку/модуль/прочее и хочет её распространять, при этом не хочет давать доступа к исходным кодам. Если в рамках компилируемых языков это в целом делается просто за счет того, что не все разбираются в асм-языках (ну или в том, что получилось после трансляции) - все равно среднестатистический программист (не профессионал) вряд ли сможет разобраться что, где, к чему и как. В рамках скриптовых языках все хуже - там вообще код открытым текстом. Поэтому хорошая обфускация хоть как-то позволяет защитить код.
2) Работа с заказчиком. Ну это уже моя личная амбиция. Просто есть такие категории заказчиков, которых не устраивает "показываете на своем сервере и если работает, то я вам отсылаю деньги и вы мне код". Некоторые хотят у себя сразу проверить. Естественно, есть такие "личности", которые проверят и присвоят себе безвозмездно. Обфускацией можно будет хотя бы усложнить ему жизнь, или встроить в скрипт ограничение на кол-во запусков и типа того. Опять же - опытный человек сможет разобраться, как исправить. Но учитывая большое кол-во быдла на php, в обфусцированном коде даже удалить такую защиту подавляющему большинству программистов будет крайне сложно.

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

Upd: специализация моя - комплексное обеспечение инф.безопасности автоматизированных систем, но тянет больше в программирование.
1.8K
07 октября 2010 года
LM(AL/M)
332 / / 20.12.2005
--> hardcase
Цитата: hardcase
...сделать синтаксический и семантический анализатор...


не уверен что семантический анализ необходим для обфускации

--> UAS:
2) в случае с php задача сильно осложняется тем, что он позволяет микшировать код с html-ом и javascript-ом, так что придётся делать еще и синтаксический анализ этих языков. думаю что для первой разработки это будет неподъемная задача. кроме того если php поддерживает еще и динамическое выполнение (имею в виду что-то типа ф-ции eval() в js), то это дополнительное затруднение
4) из языков я бы выбрал пролог, символьная обработка -- это одно из типичных его применений. а еще можно обойтись без написания синтаксического анализатора вручную -- воспользоваться чем-нибудь вроде yacc + lex

5
07 октября 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: UAS

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


Я написал полный парсер C# 4.0 и встроил его в виде плагина в компилятор Nemerle примерно за 1.5-2 месяца, до этого опыта разработки парсеров практически не имел. Язык реализации - Nemerle + макрос PegGrammar.

5
07 октября 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: LM(AL/M)

не уверен что семантический анализ необходим для обфускации


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

5
08 октября 2010 года
hardcase
4.5K / / 09.08.2005
Кстати, в тему диплома. Тут вот тема интересная проскакивала на RSDN.
244
09 октября 2010 года
UAS
2.0K / / 19.07.2006
Темка, может, и интересная, но от моей специализации слишком далека.
Вообщем, я пока хз делать или нет. Будет свободное время - сяду сам поразбираться, там уже тогда сделаю сам выводы.
5
09 октября 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: UAS
Темка, может, и интересная, но от моей специализации слишком далека.
Вообщем, я пока хз делать или нет. Будет свободное время - сяду сам поразбираться, там уже тогда сделаю сам выводы.


Ты на #codenet бы зашел, ато мы с Одиссеем чуть не начали обфускатор без тебя писать. :D

244
09 октября 2010 года
UAS
2.0K / / 19.07.2006
А вы пишите, пишите)) Я вам пиво поставлю за это :D
244
21 октября 2010 года
UAS
2.0K / / 19.07.2006
Гугл запретили?
http://ru.wikipedia.org/wiki/Обфускация
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог