Идет бета-тестирование портала. Об ошибках пишите нам или на форуме.

[2 in 1] «Обфускация кода 1С» и «RegExp Тестер»

62

Инструментарий программиста (алгоритмы, утилиты)

03.06.2008 [20.11.2008]

Описание

Внешний отчет, обработка для 1С: Предприятие 8.1

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

1. Обфускация кода 1С.
Что же такое обфускация? Как говорит Википедия:
Обфускация (от лат. obfuscare, «затенять, затемнять») — запутывание кода программы, то есть приведение исходного текста или исполняемого кода к виду, сохраняющему функциональность программы, но затрудняющему анализ, понимание алгоритмов работы и модификацию при декомпиляции. Применяется для защиты программ от декомпиляции и незаконного использования, нарушения авторских прав программистов.

Данная обработка является упрощенным обфускатором для встроенного языка 1С. В ней используются только некоторые способы лексического запутывания, такие как:
- замена имен переменных/процедур/функций/параметров на трудночитаемые;
- удаление форматирования текста;
- шифрование строковых переменных (может потребоваться capicom.dll).

Результат работы этой обработки можно увидеть на примере её исходного кода :)

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

2. RegExp Тестер (бонус).
Обработка, предназначенная для программистов, использующих в своих программах регулярные выражения. Позволяет протестировать шаблоны выражений до непосредственного использования в коде. Так же можно использовать для поиска совпадений в произвольном тексте с использованием шаблонов.

http://coder1cv8.narod.ru

Скриншоты

Исходный код
Рис. 1593 . Исходный код
Дерево лексического запутывания
Рис. 1594 . Дерево лексического запутывания
Результат
Рис. 1595 . Результат
RegExp Тестер
Рис. 1596 . RegExp Тестер

Скачать

Наименование Размер Скачиваний
991
Доступ
Obfuscare_1C.zip 24 kb 550 Зарегистрированные
RegExp_Tester.zip 6 kb 441 Зарегистрированные

Оценка сообщества

Плюсы (+62):

, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,


Добавить плюс Добавить минус

Комментарии (65)

Страницы: 123 ... 4Вперед

1.
+ -
03.06.2008 15:06:34

Обфускатор 1С пока находиться на стадии тестирования, поэтому прошу сообщать об обнаруженных багах.
На коде 7.7 не тестировал (так как "вживую" семерку уже давно не видел), но вероятно будет работать и для него.

2.
+ -
03.06.2008 15:06:52

Пока имеется только один баг: нельзя использовать ковычки в комментарии.
Кто подскажет мне шаблон регулярного выражения, способного отличить двойной слэш внутри строковой константы от комментария, буду очень признателен )

3.
+ -
03.06.2008 16:06:15

Обфуксатор оч.даже + а вот Для отладки RegExp лучше использовать RegexBuddy

4.
+ -
03.06.2008 16:06:19

(3) Не знал, поэтому и нарисовал по-быстрому свою обработку, гляну эту программу, спасибо... )

5.
+ -
03.06.2008 20:06:07

(1) Насколько я понял, так как обработка исходного текста происходит в отрыве от контекста, то надо самому определять, какие имена процедур, функций и переменных можно заменять на белиберду, а какие - нет. Ведь нет никакой информации о том, какие переменные, процедуры и функции являются глобальными, какие переменные являются реквизитами объекта или формы и т.д.
Но, по крайней мере, можно определить некоторые имена переменных, процедур и функций, которые нельзя менять - те, которые объявлены со словом Экспорт. Сейчас обработки слова Экспорт нет совсем. Более того, если переменная объявлена с Экспорт, она обфусцируется вне зависимости от флажка в дереве лексического анализа.
Также нет обработки английских синонимов ключевых слов.
И еще есть траблы с регистром - если процедура объявлена как "Процедура", то в дереве лексического анализа она показывается как процедура, если же она объявлена как "процедура" или "ПроцедурА", например, то в дереве лексического анализа она становится вдруг функцией!

6.
+ -
03.06.2008 21:06:00

Посмотри Ei // там с структуре модуля разбираются процедуры функции и переменные http://enterpriseintegrator.googlepages.com/StructureModule.jpg

7.
+ -
03.06.2008 22:06:32

На 7.7 это - типичный кирпичиватель - я таким только одну свою разработку закрыл (строк на 40), требуется явное указание в области описания всех используемых переменных, + не забывать про имена функция в реквизитах диалогов.. мое резюме - вполне нормальная защита...

8.
+ -
04.06.2008 08:06:25

Гиблая затея, хотя и смелая =)

9.
+ -
04.06.2008 08:06:32

(5) > "Насколько я понял, так как обработка исходного текста происходит в отрыве от контекста, то надо самому определять, какие имена процедур, функций и переменных можно заменять на белиберду, а какие - нет."

Именно так, если бы можно было получать текст модуля штатными средствами, то наверное имело бы смысл выбирать не просто код, а объект, например обработку или объект метаданных из конфигурации. А уже из него получать исходный код, с разбором на реквизиты формы, объекта и т.д. Да и я думаю, определить имена обработчиков событий, так же не возможно штатно. Поэтому здесь, ответственность за "проставление галочек" ложиться на пользователя.

По-поводу того что обфусцируется в независимости от флажка - это не правда ) Просто сейчас пока есть такой недостаток: если нажать "Выполнить", а потом поменять флажки без выполнения "Анализа" заново, то уже обфусцированные переменные остануться. Доработкой этого недостатка займусь в ближайшее время.

По-поводу траблов с регистром написания, странно, не должно быть... Проверю.

ЗЫ: Спасибо за грамотные замечания.

10.
+ -
04.06.2008 08:06:11

(6) Сорри, что не в тему. German, подскажи плиз, а чем это ты смотришь структуру модуля?

11.
+ -
04.06.2008 09:06:39

(5) > "Сейчас обработки слова Экспорт нет совсем."

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

> "Также нет обработки английских синонимов ключевых слов."

Принято.

12.
+ -
04.06.2008 09:06:20

(6) Герман, до твоих гениальных (в хорошем смысле этого слова :) ) творений мне долековато что и говорить... )

13.
+ -
04.06.2008 09:06:57

(7) Слышал про "закирпичиватель" на 7.7, но не разу не видел его в живую... Наверно потому, что у меня ещё не возникало необходимости таким образом скрывать свои алгоритмы, я ещё не написал свою "нетленку" ))

14.
+ -
04.06.2008 09:06:40

(8) Почему?... )

15.
+ -
04.06.2008 09:06:42

Исправлен баг с регистром написания. Например, "ПроЦедурА" обрабатывается корректно.

16.
+ -
04.06.2008 10:06:54

А я вот не считаю такую защиту сколь либо действенной.
Сам таким образом ковырял закирпиченный Rocket Launcher, вполне успешно (только т-с-с-с!)...
Будем ждать КЗК 3.0 для 8-ки...

17.
+ -
04.06.2008 10:06:45

Добавлена обработка английских синонимов ключевых слов.

18.
+ -
04.06.2008 11:06:16

(16) Согласен. Данная обработка написана мной чисто из интереса, без какой-либо практической цели.
Я считаю, что будущее защиты исходного кода для восьмерки за обфускаторами так называемого "байт-кода". Более тего, я тестировал бэта-версию такого обфускатора и могу сказать, что существующие на данный момент декомпиляторы просто вываливаются с ошибкой при попытке декомпеляции защищенного таким образом модуля (только не просите у меня эту обработку, я не автор и распространением не занимаюсь).

19.
+ -
04.06.2008 11:06:42

(18) обработку не надо, дай исходный байт-код + перекомпиллированный

20.
+ -
04.06.2008 11:06:12

(19) MMF, я даже не сомневаюсь, что ты разберешь ) Но скорее всего, прийдется поковыряться ручками, как с любым хорошо запутанным кодом.

[+]:

Страницы: 123 ... 4Вперед

Для добавления комментария необходимо зарегистрироваться.
Есть вопросы?
тел. (812) 309-06-46
support@infostart.ru
Обратная связь
Логин :
Пароль :
Забыли пароль?

Статистика

Пользователей: 43870

См. также