Имя: Пароль:
LIFE
Спам
OFF: Обфускатор 1С.
,
0 AndStar
 
20.12.12
10:27
http://netlenka1c.ru/
Коллега разработал. Просит отзывы.
По-моему неплохо получилось.
99 х86
 
21.12.12
09:30
а почему в спам переместили?
100 1Сергей
 
21.12.12
09:33
(сто)
101 Нетленка1С
 
21.12.12
09:34
(98) Можно исходный код посмотреть?
102 Serg_1960
 
21.12.12
09:35
(99) Потому что это спам - Спам (англ. spam) — рассылка коммерческой и иной рекламы или иных видов сообщений (информации) лицам, не выражавшим желания их получать.
103 Serg_1960
 
21.12.12
09:53
(101) Нет, нельзя.

PS: Сорри, Нетленка1С, но пример в (71) - остается "читабельный" даже без анти-обфускации.

Функция ___a_()
...    
функция ___d()
...    
процедура выбпериоднажатие(a)
   a_ = f__();
   a_.редактироватькакинтервал = ___a_();
   a_.редактироватькакпериод = __b__();
   a_.вариантнастройки = вариантнастройкипериода.период;
   a_.установитьпериод(началопериода, ?(конецпериода=""+_c__()+"-"+___d()+"-"+_e(), конецпериода, конецдня(конецпериода)));
   если a_.редактировать() тогда
       началопериода = a_.получитьдатуначала();
       конецпериода = a_.получитьдатуокончания();
   конецесли;
конецпроцедуры
...    
функция _c__()
...    
функция _e()
...    
функция f__()
...    
функция __b__()
104 Stagor
 
21.12.12
10:24
Пук="В=10;";
Выполнить(Пук);

получил:

//Не найдено функций


*** Итог - работай дальше.
105 quest
 
21.12.12
10:26
(101) исходный код - lexer + (возможно) парсер.

(0) мне кажется более правильным будет подход с описываением не отдельными функциями, а в одной функции собрать всю логику и поделить метками,далее через "перейти" бегать куда надо, собирая текст программы из имеющихся строк, после чего выполнить собранную строку. Отказаться от именований переменных через __ а использовать родной и боли знакомый GUID.
106 Stagor
 
21.12.12
10:28
все - это детские игрушки.
Нужно просто написать конфигурацию в 10 раз больше по коду, чем УПП с УФ и запросами на 10 страниц каждый, и никто в ней не разберется без всякого обфускатора.
107 Нетленка1С
 
21.12.12
10:32
(104)

функция Пук()

Пук="В=10;";
Выполнить(Пук);

конецфункции
108 ОбычныйЧеловек
 
21.12.12
10:33
(96) Когда (если) напишешь, что нить стоящее - приходи поговорим "о скрытие исходников, защите кода" и т.д. а до этого момента - это просто какой-то детский лепет.
109 Нетленка1С
 
21.12.12
10:33
Необходимо наличие хотя бы одной функции в модуле. Пока.
110 Serg_1960
 
21.12.12
10:38
(105) +1 Генерация меток по принципам уникального идентификатора (подсказываю: "тире" заменить на "нижнюю черту").
+2 Использование автономных функций без параметров - недостаток алгоритма обфускации. Я бы даже сказал - профанация оббускации :) Лучше одну функцию "обфускации", но с множественными входами и выходами и изменяемой логикой по входным параметрам.
111 mrParadox
 
21.12.12
10:41
Насколько медленнее работает после?
112 Нетленка1С
 
21.12.12
11:09
На обычных обработках и отчетах разница не ощутима.
Самую большую долю потерь составляет расшифровка строк.
Потеря зависит от числа больших строковых констант в модуле, на парсере с миллионом операций над большими строками, падение было 25%.
Вообще не уверен в необходимости шифрования строк. В обфускации это считается самой слабой защитой, т.к. все данные для расшифровки хранятся в коде программы. Возможно будет функция отключения шифрования строк для специфичных модулей с большим количеством вызовов сложных строк.
113 quest
 
21.12.12
11:10
(109) Вопрос наверное риторический  - ты видишь способ монетизировать эту разработку? и второй практический - на чем написано? AST строиться?
114 Нетленка1С
 
21.12.12
11:23
(113) Есть определенные идеи на этот счет. С введением монетизации, работа над развитием проекта конечно велась бы уже на другом уровне, значительно быстрее и позволила бы добавлять новые функции нужные пользователем. Базовый функционал однозначно планировался как бесплатный, по мере развития проекта будет видно.

строится AST
115 Нетленка1С
 
21.12.12
11:27
(110) я уже писал, что это все планируется добавлять
116 Нетленка1С
 
21.12.12
11:36
(113) .NET
117 quest
 
21.12.12
12:02
(116) граф потока управления строиться? Если да - как устроен? парсер самописный?
118 Нетленка1С
 
21.12.12
12:09
(117) все самописное, детали пока раскрыть не могу
119 kiruha
 
21.12.12
12:11
(0)
И где гарантия, что "защищаемые" не сохраняются на серере автора нетленки ?
120 quest
 
21.12.12
12:13
(117) ну тогда вопросов нет.
(119) а зачем?
121 kiruha
 
21.12.12
12:17
(120)
Потом выложить в сеть бесплатно
122 Нетленка1С
 
21.12.12
12:18
иии? в чем смысл для автора сервиса?
123 kiruha
 
21.12.12
12:19
надежней было бы скачать обработку, как
в http://infostart.ru/public/15907/
а не онлайн

для авторов
124 Нетленка1С
 
21.12.12
12:19
(121) чтобы все пользователи увидели свои модули в открытом доступе?
125 Нетленка1С
 
21.12.12
12:20
функцию хранения текстов по желанию на сервере вообще можно убрать, меньше забот
126 Нетленка1С
 
21.12.12
12:23
(123) цель проекта была - онлайн защита
127 kiruha
 
21.12.12
12:25
(126)
Чтобы потом монетеизировать ?
128 quest
 
21.12.12
12:26
ты не верную цель выбрал. защита - никому не нужна. а вот анализ кода - расчет метрик, построение графов зависимости, поиск неиспользуемых/недостижимых - уже более востребованная вещь.

видимо через месяц мне также придется спамить и рекламировать свой проект :)
129 Нетленка1С
 
21.12.12
12:26
(127) Я писал выше о монетизации.
130 Нетленка1С
 
21.12.12
12:28
(128) время покажет
131 kiruha
 
21.12.12
12:36
(128)
Уже было Ищи fez с 1000+ тестов кода
132 kiruha
 
21.12.12
12:39
133 Stagor
 
21.12.12
12:48
(107) не работает с таким кодом!



Функция ЧегоНадо()
   Сообщить("Привет");
КонецФункции

Функция ЧтоЯДелаю()
   Выполнить("ЧегоНадо();")
КонецФункции
134 Фея с лопатой
 
21.12.12
12:50
почему, у меня вот это выдало.

функция a() _a__="106110921087108210811092"; __a_="647842";сообщить(_a_(_a__,__a_)); конецфункции
функция _a_(a__,a___) если пустаястрока(a__) или пустаястрока(a___) тогда возврат a__; конецесли; _a = стрдлина(a__)/4; __a = ""; для ___a=1 по _a цикл __a = __a + символ(число(сред(a__, (___a-1)*4+1, 4))-число(символ(кодсимвола(a___, ___a)))); конеццикла; a___ = ""; a__ = __a; возврат a__; конецфункции
функция a_() b___="10701085107910861060107310821086004000430067"; _b="78407160028";выполнить(b__(b___,_b)) конецфункции
функция b__(__a__,_a___) если пустаястрока(__a__) или пустаястрока(_a___) тогда возврат __a__; конецесли; ___a_ = стрдлина(__a__)/4; b = ""; для b_=1 по ___a_ цикл b = b + символ(число(сред(__a__, (b_-1)*4+1, 4))-число(символ(кодсимвола(_a___, b_)))); конеццикла; _a___ = ""; __a__ = b; возврат __a__; конецфункции
135 GANR
 
21.12.12
12:53
Если за код стыдно - можно и обфусировать его.
136 Нетленка1С
 
21.12.12
13:06
(134) Код внутри Выполнить не анализируется, в этом случае можно написать так

Функция  Проверка() экспорт
   
   ЧегоНадо();
   ЧтоЯДелаю();
       
КонецФункции

//@global
Функция ЧегоНадо()
  Сообщить("Привет");
КонецФункции

Функция ЧтоЯДелаю()
  Выполнить("ЧегоНадо();")
КонецФункции
137 kiruha
 
21.12.12
13:15
(135)
Если выкладываешь демки и бесплатные варианты обработок - идеально
Никто не может доработать до полнофункционального применения
138 Stagor
 
21.12.12
13:17
(136) Советуешь пол конфигурации переписать, что бы обфускатор работал корректно? :)
139 Stagor
 
21.12.12
13:20
"Код внутри Выполнить не анализируется" - Значит не для любого кода 1С8
140 Neg
 
21.12.12
13:28
Хрень получается

функция __b__() перейти ~b;~___b:возврат новый <<?>>списокзначений;~_b:перейти ~__b;~b___:перейти ~_b;~b_:возврат 0;~b__:перейти ~b___;~_b__:возврат null;~__b:перейти ~b_;~b:перейти ~b__;~__b_:возврат новый списокзначений;~_b_:возврат null; конецфункции
{Документ.ЧекККМ.Форма.Модуль(123)}: Переменная не определена (списокзначений)
функция __b__() перейти ~b;~___b:возврат новый списокзначений;~_b:перейти ~__b;~b___:перейти ~_b;~b_:возврат 0;~b__:перейти ~b___;~_b__:возврат null<<?>>;~__b:перейти ~b_;~b:перейти ~b__;~__b_:возврат новый списокзначений;~_b_:возврат null; конецфункции
{Документ.ЧекККМ.Форма.Модуль(123)}: Переменная не определена (null)
функция __b__() перейти ~b;~___b:возврат новый списокзначений;~_b:перейти ~__b;~b___:перейти ~_b;~b_:возврат 0;~b__:перейти ~b___;~_b__:возврат null;~__b:перейти ~b_;~b:перейти ~b__;~__b_:возврат новый <<?>>списокзначений;~_b_:возврат null; конецфункции
{Документ.ЧекККМ.Форма.Модуль(123)}: Переменная не определена (списокзначений)
функция __b__() перейти ~b;~___b:возврат новый списокзначений;~_b:перейти ~__b;~b___:перейти ~_b;~b_:возврат 0;~b__:перейти ~b___;~_b__:возврат null;~__b:перейти ~b_;~b:перейти ~b__;~__b_:возврат новый списокзначений;~_b_:возврат null<<?>>; конецфункции
{Документ.ЧекККМ.Форма.Модуль(123)}: Переменная не определена (null)
функция c___(_b___,___b_) если пустаястрока(_b___) или пустаястрока(___b_) <<?>>тогда возврат _b___; конецесли; c = стрдлина(_b___)/4; c_ = ""; для c__=1 по c цикл c_ = c_ + символ(число(сред(_b___, (c__-1)*4+1, 4))-число(символ(кодсимвола(___b_, c__)))); конеццикла; ___b_ = ""; _b___ = c_; возврат _b___; конецфункции
{Документ.ЧекККМ.Форма.Модуль(124)}: Неправильное использование арифметической или строковой операции
функция c___(_b___,___b_) если пустаястрока(_b___) или пустаястрока(___b_) тогда возврат _b___; конецесли; c = стрдлина(_b___)/4; c_ = ""; для c__=1 по c цикл c_ = c_ + символ<<?>>(число(сред(_b___, (c__-1)*4+1, 4))-число(символ(кодсимвола(___b_, c__)))); конеццикла; ___b_ = ""; _b___ = c_; возврат _b___; конецфункции
{Документ.ЧекККМ.Форма.Модуль(124)}: Функция не обнаружена (символ)
функция a() ___c="006700860089008700730094005700530054004800980035006800840090008600910096005200540094"; _c_="144413856053155875361";_c="007000860084008700910054006200560053005400550064005401010033007100830089008600870096005600490097"; __c="076305814518681444835714";если остаток>___a_<<?>>() тогда возврат c___(_c,__c); конецесли; если остаток=__b__() тогда возврат c___(___c,_c_); конецесли; конецфункции
{Документ.ЧекККМ.Форма.Модуль(125)}: Функция не обнаружена (___a_)
функция ___a_() перейти ~a_;~__a__:возврат '00010101000000';~__a_:возврат 0;~_a:перейти ~__a;~__a:перейти ~___a;~_a__:возврат новый <<?>>массив;~a__:возврат 0;~_a_:возврат истина;~a___:перейти ~_a;~a_:перейти ~a___;~_a___:возврат 1;~___a:перейти ~a__; конецфункции
{Документ.ЧекККМ.Форма.Модуль(126)}: Переменная не определена (массив)
функция ___a_() перейти ~a_;~__a__:возврат '00010101000000';~__a_:возврат 0;~_a:перейти ~__a;~__a:перейти ~___a;~_a__:возврат новый массив;~a__:возврат 0;~_a_:возврат истина<<?>>;~a___:перейти ~_a;~a_:перейти ~a___;~_a___:возврат 1;~___a:перейти ~a__; конецфункции
{Документ.ЧекККМ.Форма.Модуль(126)}: Переменная не определена (истина)
При проверке модуля обнаружены синтаксические ошибки!
141 Neg
 
21.12.12
13:31
А сраненького говн(о)кода

Функция ПроверитьВид()
   Если Остаток>0 Тогда
    Возврат "FONT[16711680] COUNT[10]";  
   КонецЕсли;
   
   Если Остаток=0 Тогда
     Возврат "BRUSH[1000] COUNT[10]";  
   КонецЕсли;
КонецФункции
142 Stagor
 
21.12.12
14:23
(0) Вообщем - отзывы такие:
Игрушка. Для серьезной обфускации непригодна!
143 Нетленка1С
 
21.12.12
14:37
(138) Это бета-тест, все можно добавить
144 Stagor
 
21.12.12
15:22
(143) добавить анализ кода внутри Выполнить и Вычислить будет почти невозможно. Вложенность метапрограммирования может быть разная!
145 kiruha
 
22.12.12
14:31
(144)
Ну и нафиг - пусть остается
Мне кажется уже и так обфускация избыточна
146 Stagor
 
24.12.12
12:11
(145) Большинству она на уровне кода 1С не нужна вообще.
147 BMW1C
 
26.12.12
15:42
По поводу вопроса хранения модулей на сервере.

Во первых, теперь для этого требуется пароль. Модуль шифруется алгоритмом AES (Rijndael). Не зная пароля текст

восстановить невозможно. Забыли пароль - текст уже не вернуть никогда.

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

Допустим разработчик приходит к заказчику. Открывает модуль, запускает программу для расшифровки. Вставляет в нее зашифрованный текст. Дальше нужно вводить пароль.
А если у заказчика стоит кейлоггер + запись экрана + используется один и тот же пароль неоднократно (что скорее

всего)? То все модули, которые когда либо защищали этим паролем, становятся сразу же скомпроментированы.

Поэтому от сохранения исходника в тексте модуля придется, скорее всего, отказаться ради безопасности.
148 х86
 
26.12.12
16:03
(143)зачем такую злую капчу поставил?
149 PLUT
 
26.12.12
16:05
(147) а если использовать как в ЭЦП? ГОСТ Р34.10-2001 есть, что-то там про открытый и закрытый ключ))) крипропровайдер уже в винду встроенный есть?? и еще бесплатный какой-то, ну который с 1С-Отчетность вроде идет?
150 BMW1C
 
26.12.12
16:09
(148) Можно войти с учетной записью гугла, или др.
Занимает секунды
151 BMW1C
 
26.12.12
16:16
(149) Пока мне кажется генерирование пар ключей и т.д выходит за рамки данного сайта. Можно сделать так. Если не хочется привязки к сервису, защитил модуль у заказчика, пришел домой, зашел на сайт, скачал себе локально последние изменения.
152 Юрий Лазаренко
 
26.12.12
16:24
(0) В целом достаточно интересно, протестил на большом модуле - работает без ошибок, тормозов не заметил. Автору +100500.
153 BMW1C
 
27.12.12
10:50
Улучшения за последнее время:
Добавил поддержку английского синтаксиса.
добавлено защищенное соединение.
Добавлены средства от обратного инжиниринга

Добавлена новая директива @unittype <ТипМодуля>
Тип модуля: Form, Common, System, Object
Позволяет явно указать тип модуля, в определенный случаях, например когда в Общем модуле используются функции с признаками обработчиков.

Добавлено шифрование хранящихся модулей
Исправлены мелкие баги
154 kiruha
 
27.12.12
13:09
Если можно -  хотелось бы Обфускация "по частям"

т.е. часть модуля кладешь(только целые функции и процедуры)
потом 2 часть, третью

чтобы при этом не было конфликтов имен и ссылок
Т.е. некий уникальный параметр при обфускации, который гарантировал бы, что конфликтов не будет
Например добавлялся к именам и ссылкам
155 jbond
 
27.12.12
13:13
(15) - настоящий программист пишет код, в котором может разобраться только он.

Хотя должно быть верно еще более сильное утверждение:

настоящий программист пишет код, в котором не может разобраться даже он (спустя неделю)
156 kiruha
 
27.12.12
13:15
Зачем это нужно
Я например писал обработку месяц и не хочу доверять ее автору сайта
Просто беру ключевые функции - обфусцирую, потом вставляю в код своей обработки - чтобы он при этом работал
157 Rebelx
 
27.12.12
13:50
(0) Лажа. Попробовал на большом (700 строк) реальном модуле - поведение разное, выдает ошибку.
в топку
158 ttk
 
27.12.12
14:14
Такое после защиты выдает ошибку при выполнении

Перем тз;

Процедура КнопкаВыполнитьНажатие(Кнопка)
   // Вставить содержимое обработчика.
   тз.Очистить();
КонецПроцедуры

ТЗ = Новый ТаблицаЗначений;
159 Юрий Лазаренко
 
27.12.12
14:22
(157) я на 1400 строк выкладывал - нормуль было
160 Rebelx
 
27.12.12
14:23
(159) Т.е. с учетом (158) - как повезет :)
161 BMW1C
 
29.12.12
11:04
(158) Исправил эту и другие ошибки, произвел полный рефакторинг, чтобы не всплывали подобные ошибки (или во всяком случае их теперь можно будет легко исправлять). Тесты все прошли, но может конечно где-то что-то нарушилось. Буду рад услышать замечания.
162 SachoZ
 
29.12.12
11:35
Обфуксация еще и на производительность влияет, я против такой агрессивной защиты, думаю вреда от нее больше чем пользы.
163 Torquader
 
31.12.12
01:56
Самое главное, что в 1С нельзя поменять названия методов объектов и их имена при создании - только на основе этой информации можно разобрать почти любой код.
А вставка попыток с неверным выходом - это просто замедление исполнения.
Наиболее интересно использовать переменные из русских и латинских одинаковых букв - вроде всё видно, но не сразу допрёшь, что обманули.
164 kiruha
 
31.12.12
09:58
(163)
Большинство сложных разработок "чужого" кода и так легче заново написать, чем "разоброть", так что любая обфускация практически на 0 защищает. Причем эта обускфакция состоит в банальном переименовании переменных
Дальнейшая - типа ложные переходы, замена циклов и условий на goto  и т.п. - только видимость,т.к. можно написать "обратное" преобразование
Возвращаемся в итоге к старой доброй разработке
Которая еще и не влияет на производительность и гарантировано не даст ошибок
165 vde69
 
31.12.12
10:47
есть идейка написать "выпрямитель" кода, думаю будет более востребован...


правда главной проблеммой (как и для офбуксатора) вижу проблемму с поиском внешних ссылок (например из свойст элементов формы, или глобальные переменные...)
166 craxx
 
31.12.12
10:59
все это полная ерунда... обфускации. при желании восстанавливается за 10-15 минут.
настоящая зашита возможна с помощью внешней компоненты. dll-ка, в ресурс которой вставляется внешняя обработка в зашифрованном виде. а ключ хранится на внешнем ресурсе к примеру. В модуль внешней обработки зашит весь функционал, т.е. по сути общий модуль.
Примерный алгоритм
1. Получения ключа с внешнего ресурса. Если не получен - возврат неопределено, т.е. клиент бреется с дальнейшей работой.
2. Создание виртуального устройства (некоего диска в оперативной памяти), куда будет в виде файлика помещена обработочка.
3. Расшифровка двоичных данных внешней обработки.
4. Сохранение расшифрованных двоичных данных обработки в файл
5. Создание объекта внешней обработки из файла.
6. Уничтожение виртуального устройства.
7. Возврат объекта внешней обработки.
Короче говоря, вот достаточно надежный алгоритм защиты. У меня есть парочка договоров с клиентами с рассрочкой платежа на год - вот там именно такой алгоритм прописан. в случае просрочки платежей - ключик с внешнего ресурса тупо удаляется и вуаля - вместо объекта внешней обработки (где весь функционал) возврат Неопределено.
После полного расчета этот механизм заменяется на обычный Общий модуль.
167 vde69
 
31.12.12
11:52
(166) как только ты расшифрушь обработку - считай что уже все взломано...
168 craxx
 
31.12.12
12:15
ничего подобного
см. п.2 и п. 6
и все это выполняется во внешней компоненте.
для 1с это будет выглядеть так
ОбщиеПроцедуры = ВК.ПолучитьОбработку();
В итогде вернется объект внешней обработки.
а файлик уже уничтожен будет.
169 kiruha
 
31.12.12
12:17
(166)>>за 10-15 минут

И как ты восстановишь имена переменных ? ))
+ обусфакция нужна для сокрытия кода демо разработок лежащих в открытом доступе и не требующая защиты
170 kiruha
 
31.12.12
12:19
Создание виртуального устройства
Уничтожение виртуального устройства.

Это вообще за гранью
171 craxx
 
31.12.12
12:22
(170) почему за гранью?
172 craxx
 
31.12.12
12:23
+ (170) именно так защищена обработочка переноса данных из StoreHouse в 1С.
173 kiruha
 
31.12.12
14:33
(171)
Потому что на стороне клиента лезет в установку/удаление вирт привода. Это мало кому понравится
174 craxx
 
31.12.12
15:03
(173) в договоре полностью оговаривается эта функциональность
175 craxx
 
31.12.12
15:05
+(173) да и не привод это вовсе, так область памяти, на очень короткое время эмулирующая диск
176 kiruha
 
31.12.12
15:08
А сама dll выложена ?
Где ?
177 craxx
 
31.12.12
15:12
сама длл либо в папочке bin, либо двоичные данные в константе типа хранилище значения.
тут выкладывать не буду.
178 vde69
 
31.12.12
15:45
(168)
после того как в нутри 1с созхдан обьект "обработка", то простейший отладчик туда тупо попадет, не говоря о грабилках памяти...
179 craxx
 
31.12.12
16:33
отладчик точно не попадет. проверено.
если интересно могу продемонстрировать.
что за грабилки памяти?
180 quest
 
31.12.12
16:42
(179) и ты это сейчас серьезно? то что 1С не умеет копаться в чужой памяти, совсем не означает что этого никто не умеет
181 vde69
 
31.12.12
18:49
(179) включи замер производительности и будешь чуток удивлен :)

а вообще в 1с есть способы и покруче...
182 kiruha
 
31.12.12
19:35
(177)
На инфостарте можно - платно/бесплатно по желанию
183 Torquader
 
31.12.12
23:22
На самом деле, если нужна серьёзная защита, то защищают не весь код, а отдельные функции, причём ключ должен со временем меняться, так как иначе вместо получения ключа его просто подставят туда, куда нужно.
Если в памяти dll или где-то в какой-то момент есть расшифрованный код, то его прекрасно получают и сохраняют на диск - по крайней мере - от запуск на виртуальной машине защититься никак нельзя - сама dll и не узнает, что в её память кто-то заглянул.
Кстати, некоторые взломщики так и работают - запоминают состояние памяти dll на момент после расшифровки и уже в следующий раз вместо dll загружают именно этот кусок.
А вот если расшифровываются только отдельные функции, то восстановить весь код просто нереально, но нужно понимать, что если ключ постоянный, то алгоритм расшифровки не застрахован от того, что вместо получения ключа в него подставят функцию копирования ключа из файла.
184 Torquader
 
31.12.12
23:23
Что касается виртуальных дисков, то тут единственная проблема в том, что для создания устройства нужны права администратора - хотя - для большинства закрытых dll тоже нужны права администратора - и это одна из причин, почему в некоторых конторах сразу ставят условия, что программа должна работать под пользователем с урезанными правами.
185 МегаБум
 
01.01.13
00:31
док = СоздатьОбъект ("Документ.СписаниеТМЦ");

док.ВыбратьДокументы();

Пока док.ПолучитьДокумент()=1 Цикл
 док.Удалить();
КонецЦикла;
186 МегаБум
 
01.01.13
00:32
после обработки:

функция a_(a,a_) если пустаястрока(a) или пустаястрока(a_) тогда возврат a; конецесли; a__ = стрдлина(a)/4; a___ = ""; для _a=1 по a__ цикл a___ = a___ + символ(число(сред(a, (_a-1)*4+1, 4))-число(символ(кодсимвола(a_, _a)))); конеццикла; a_ = ""; a = a___; возврат a; конецфункции
функция a(a) перем a_; попытка a_=0%a; возврат 2 исключение возврат 1 конецпопытки конецфункции
a_=0;если -2*-2 >= 0 тогда a_=?(a_=0,0,1) иначе a_=?(a_=0,0,1) конецесли;a__="10491088108810931088107710881098005410611095108710941074109210821080105810521068"; a___="52624038848752723006"; a = создатьобъект (a_(a__,a___)); a.выбратьдокументы(); пока a.получитьдокумент()=a(a_) цикл a.удалить(); конеццикла;
187 МегаБум
 
01.01.13
00:33
(186) скармливаем еще раз и получаем:

функция a(a,a_) ___a_=""; b="";__a__=""; _a___="";__a_=0;_a__=0;если -2*-2 >= 0 тогда _a__=?(_a__=0,0,1) иначе _a__=?(_a__=0,0,1) конецесли;_a_=1;___a=0;__a=0;если -1*-1 < 0 тогда __a=?(__a=0,1,0) иначе __a=?(__a=0,1,0) конецесли;_a=1;если 0*0 >= 0 тогда _a=?(_a=0,0,1) иначе _a=?(_a=0,0,1) конецесли;если пустаястрока(a) или пустаястрока(a_) тогда возврат a; конецесли; a__ = стрдлина(a)/b(_a); a___ = __b_(__a__,_a___); для _a=b_(__a) по a__ цикл a___ = a___ + символ(число(сред(a, (_a-b__(___a))*b___(_a_)+_b(_a__), __b(__a_)))-число(символ(кодсимвола(a_, _a)))); конеццикла; a_ = __b_(___a_,b); a = a___; возврат a; конецфункции
функция b__(a) перем a_; попытка a_=0%a; возврат 2 исключение возврат 1 конецпопытки конецфункции
функция __b(a) перем a_; попытка a_=0%a; возврат 5 исключение возврат 4 конецпопытки конецфункции
функция b(a) перем a_; попытка a_=0%a; возврат 4 исключение возврат 3 конецпопытки конецфункции
функция b_(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 2 конецпопытки конецфункции
функция b___(a) перем a_; попытка a_=0%a; возврат 4 исключение возврат 3 конецпопытки конецфункции
функция __b_(a,a_) если пустаястрока(a) или пустаястрока(a_) тогда возврат a; конецесли; a__ = стрдлина(a)/4; a___ = ""; для _a=1 по a__ цикл a___ = a___ + символ(число(сред(a, (_a-1)*4+1, 4))-число(символ(кодсимвола(a_, _a)))); конеццикла; a_ = ""; a = a___; возврат a; конецфункции
функция _b(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция _b_(a) перем a_; попытка a_=0%a; возврат 2 исключение возврат 1 конецпопытки конецфункции
функция _b__(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 2 конецпопытки конецфункции
функция a_(a) перем a_; _a=0;если -1*-1 >= 0 тогда _a=?(_a=0,1,0) иначе _a=?(_a=0,1,0) конецесли;a___=0;если 1*1 >= 0 тогда a___=?(a___=0,1,0) иначе a___=?(a___=0,1,0) конецесли;a__=0; попытка a_=___b(a__)%a; возврат _b_(a___) исключение возврат _b__(_a) конецпопытки конецфункции
функция ___b(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 0 конецпопытки конецфункции
функция _a___(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 0 конецпопытки конецфункции
функция __a(a) перем a_; попытка a_=0%a; возврат -1 исключение возврат 0 конецпопытки конецфункции
функция a__(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 0 конецпопытки конецфункции
функция __a__(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат -1 конецпопытки конецфункции
функция _a(a) перем a_; попытка a_=0%a; возврат 3 исключение возврат 2 конецпопытки конецфункции
функция ___a_(a,a_) если пустаястрока(a) или пустаястрока(a_) тогда возврат a; конецесли; a__ = стрдлина(a)/4; a___ = ""; для _a=1 по a__ цикл a___ = a___ + символ(число(сред(a, (_a-1)*4+1, 4))-число(символ(кодсимвола(a_, _a)))); конеццикла; a_ = ""; a = a___; возврат a; конецфункции
функция ___a(a) перем a_; попытка a_=0%a; возврат -1 исключение возврат 0 конецпопытки конецфункции
функция a___(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 2 конецпопытки конецфункции
функция __a_(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция _a__(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 0 конецпопытки конецфункции
функция _a_(a) перем a_; попытка a_=0%a; возврат -1 исключение возврат 0 конецпопытки конецфункции
_a=0;если -2*-2 >= 0 тогда _a=?(_a=0,0,1) иначе _a=?(_a=0,0,1) конецесли;__a=0;если -2*-2 < 0 тогда __a=?(__a=0,0,1) иначе __a=?(__a=0,0,1) конецесли;___a=1;если -2*-2 >= 0 тогда ___a=?(___a=0,1,0) иначе ___a=?(___a=0,1,0) конецесли;_a_=1;если 1*1 >= 0 тогда _a_=?(_a_=0,1,0) иначе _a_=?(_a_=0,1,0) конецесли;_a__=1;если -2*-2 < 0 тогда _a__=?(_a__=0,1,0) иначе _a__=?(_a__=0,1,0) конецесли;__a_=1;если 0*0 < 0 тогда __a_=?(__a_=0,1,0) иначе __a_=?(__a_=0,1,0) конецесли;__a__=0;если -2*-2 >= 0 тогда __a__=?(__a__=0,1,0) иначе __a__=?(__a__=0,1,0) конецесли;_a___=1;___a_=0;если 1*1 < 0 тогда ___a_=?(___a_=0,1,0) иначе ___a_=?(___a_=0,1,0) конецесли;b=0;если 1*1 >= 0 тогда b=?(b=0,1,0) иначе b=?(b=0,1,0) конецесли;b_="00570050005700610056005000620064005100560058006000530054005800590056005100640060004900510063005900540052006400620049005000650060005600500053005500550049005800500051005200620061005100510058006300500056006000600049005300600056005100490065005300510048006400500057005400600050005400540054006100570054005400550055004800550057"; b__="82547268282446187384038454860284820361412458232818380554218320808642561586156011";b___="00540050005900500059005600540059006100560057006000550050006300510056005300480058"; _b="10507833541520815504";a=a__(_a);если -a___(__a)*-_a(___a) >= __a(_a_) тогда a=?(a=___a(_a__),_a_(__a_),_a__(__a__)) иначе a=?(a=__a_(_a___),__a__(___a_),_a___(b)) конецесли;a_=___a_(b_,b__); a__=___a_(b___,_b); a___ = создатьобъект (a(a_,a__)); a___.выбратьдокументы(); пока a___.получитьдокумент()=a_(a) цикл a___.удалить(); конеццикла;
188 МегаБум
 
01.01.13
00:35
полученный результат еще раз:

функция _j(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция ___k_(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция _k(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 0 конецпопытки конецфункции
функция l_(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 2 конецпопытки конецфункции
функция k(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 0 конецпопытки конецфункции
функция l(a) перем a_; попытка a_=0%a; возврат -1 исключение возврат 0 конецпопытки конецфункции
функция j(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 2 конецпопытки конецфункции
функция _s(a,a_) если пустаястрока(a) или пустаястрока(a_) тогда возврат a; конецесли; a__ = стрдлина(a)/4; a___ = ""; для _a=1 по a__ цикл a___ = a___ + символ(число(сред(a, (_a-1)*4+1, 4))-число(символ(кодсимвола(a_, _a)))); конеццикла; a_ = ""; a = a___; возврат a; конецфункции
функция _l(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция __k_(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат -1 конецпопытки конецфункции
функция l__(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат -1 конецпопытки конецфункции
функция _i___(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция ___j(a) перем a_; попытка a_=0%a; возврат -1 исключение возврат 0 конецпопытки конецфункции
функция j___(a) перем a_; попытка a_=0%a; возврат -1 исключение возврат 0 конецпопытки конецфункции
функция k__(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат -1 конецпопытки конецфункции
функция j_(a) перем a_; попытка a_=0%a; возврат 2 исключение возврат 3 конецпопытки конецфункции
функция j__(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат -1 конецпопытки конецфункции
функция __j__(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 0 конецпопытки конецфункции
функция _j_(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат -1 конецпопытки конецфункции
функция _j__(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция ___j_(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция _k__(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция _k___(a) перем a_; попытка a_=0%a; возврат -1 исключение возврат 0 конецпопытки конецфункции
функция k_(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция __k(a) перем a_; попытка a_=0%a; возврат -1 исключение возврат 0 конецпопытки конецфункции
функция l___(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 0 конецпопытки конецфункции
функция __j(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция a(a,a_) ___d_=""; e="";e_=""; e__="";__d__=""; _d___="";_d__=""; __d_="";_d_=1;если 0*0 < 0 тогда _d_=?(_d_=0,1,0) иначе _d_=?(_d_=0,1,0) конецесли;___d=0;__d=0;если 1*1 < 0 тогда __d=?(__d=0,1,0) иначе __d=?(__d=0,1,0) конецесли;_d=0;если 0*0 >= 0 тогда _d=?(_d=0,1,0) иначе _d=?(_d=0,1,0) конецесли;d___=1;если -1*-1 >= 0 тогда d___=?(d___=0,1,0) иначе d___=?(d___=0,1,0) конецесли;d__=0;если 0*0 >= 0 тогда d__=?(d__=0,1,0) иначе d__=?(d__=0,1,0) конецесли;d_=0;d=1;если 0*0 >= 0 тогда d=?(d=0,0,1) иначе d=?(d=0,0,1) конецесли;___c_=1;_c___=0;__c__=0;если -2*-2 < 0 тогда __c__=?(__c__=0,1,0) иначе __c__=?(__c__=0,1,0) конецесли;__c_=1;если -1*-1 < 0 тогда __c_=?(__c_=0,1,0) иначе __c_=?(__c_=0,1,0) конецесли;_c__=0;если -2*-2 >= 0 тогда _c__=?(_c__=0,0,1) иначе _c__=?(_c__=0,0,1) конецесли;_c_=0;___c=1;если 0*0 >= 0 тогда ___c=?(___c=0,1,0) иначе ___c=?(___c=0,1,0) конецесли;__c=0;если 0*0 < 0 тогда __c=?(__c=0,1,0) иначе __c=?(__c=0,1,0) конецесли;_c=0;если 0*0 < 0 тогда _c=?(_c=0,1,0) иначе _c=?(_c=0,1,0) конецесли;c___=1;если 0*0 < 0 тогда c___=?(c___=0,0,1) иначе c___=?(c___=0,0,1) конецесли;c__=1;если -1*-1 < 0 тогда c__=?(c__=0,1,0) иначе c__=?(c__=0,1,0) конецесли;c_=0;если -1*-1 < 0 тогда c_=?(c_=0,1,0) иначе c_=?(c_=0,1,0) конецесли;c=0;если 1*1 >= 0 тогда c=?(c=0,0,1) иначе c=?(c=0,0,1) конецесли;___b_=0;если -2*-2 >= 0 тогда ___b_=?(___b_=0,1,0) иначе ___b_=?(___b_=0,1,0) конецесли;_b___=1;если 1*1 >= 0 тогда _b___=?(_b___=0,1,0) иначе _b___=?(_b___=0,1,0) конецесли;__b__=1;если 1*1 >= 0 тогда __b__=?(__b__=0,0,1) иначе __b__=?(__b__=0,0,1) конецесли;__b_=1;если -2*-2 >= 0 тогда __b_=?(__b_=0,1,0) иначе __b_=?(__b_=0,1,0) конецесли;_b__=1;если -2*-2 < 0 тогда _b__=?(_b__=0,1,0) иначе _b__=?(_b__=0,1,0) конецесли;_b_=1;если -1*-1 < 0 тогда _b_=?(_b_=0,0,1) иначе _b_=?(_b_=0,0,1) конецесли;___b=1;если -2*-2 < 0 тогда ___b=?(___b=0,1,0) иначе ___b=?(___b=0,1,0) конецесли;__b=1;если 0*0 < 0 тогда __b=?(__b=0,0,1) иначе __b=?(__b=0,0,1) конецесли;_b=0;если 0*0 >= 0 тогда _b=?(_b=0,1,0) иначе _b=?(_b=0,1,0) конецесли;b___=0;если 0*0 >= 0 тогда b___=?(b___=0,0,1) иначе b___=?(b___=0,0,1) конецесли;b__=0;b_=0;если -1*-1 >= 0 тогда b_=?(b_=0,1,0) иначе b_=?(b_=0,1,0) конецесли;a__=_s(_d__,__d_); a___=_s(__d__,_d___);_a=_s(___d_,e); __a=_s(e_,e__);___a=_i___(b_);_a_=___i_(b__);если -j(b___)*-j_(_b) >= j__(__b) тогда _a_=?(_a_=j___(___b),_j(_b_),__j(_b__)) иначе _a_=?(_a_=___j(__b_),_j_(__b__),_j__(_b___)) конецесли;_a__=__j_(___b_);__a_=__j__(c);__a__=_j___(c_);если -___j_(c__)*-k(c___) < k_(_c) тогда __a__=?(__a__=k__(__c),k___(___c),_k(_c_)) иначе __a__=?(__a__=__k(_c__),___k(__c_),_k_(__c__)) конецесли;_a___=_k__(_c___);если __k_(___c_)*__k__(d) >= _k___(d_) тогда _a___=?(_a___=___k_(d__),l(d___),l_(_d)) иначе _a___=?(_a___=l__(__d),l___(___d),_l(_d_)) конецесли;если пустаястрока(a) или пустаястрока(a_) тогда возврат a; конецесли; ___a_ = стрдлина(a)/a___(_a___); b = ___a(_a,__a); для _a___=_a(__a__) по ___a_ цикл b = b + символ(число(сред(a, (_a___-a_(__a_))*__a(_a__)+_a_(_a_), a__(___a)))-число(символ(кодсимвола(a_, _a___)))); конеццикла; a_ = ___a(a__,a___); a = b; возврат a; конецфункции
функция ___k(a) перем a_; попытка a_=0%a; возврат 2 исключение возврат 1 конецпопытки конецфункции
функция k___(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция _k_(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат -1 конецпопытки конецфункции
функция _j___(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция __k__(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция __j_(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 0 конецпопытки конецфункции
функция ___i_(a) перем a_; попытка a_=0%a; возврат -1 исключение возврат 0 конецпопытки конецфункции
функция _l_(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция a_(a) перем a_; _a=1;если 0*0 < 0 тогда _a=?(_a=0,1,0) иначе _a=?(_a=0,1,0) конецесли;a___=0;если 0*0 < 0 тогда a___=?(a___=0,0,1) иначе a___=?(a___=0,0,1) конецесли;a__=1;если 0*0 < 0 тогда a__=?(a__=0,1,0) иначе a__=?(a__=0,1,0) конецесли; попытка a_=__l(a__)%a; возврат ___l(a___) исключение возврат _l_(_a) конецпопытки конецфункции
функция __l(a) перем a_; попытка a_=0%a; возврат -1 исключение возврат 0 конецпопытки конецфункции
функция ___l(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 2 конецпопытки конецфункции
функция __l__(a) перем a_; попытка a_=0%a; возврат 3 исключение возврат 4 конецпопытки конецфункции
функция _l__(a) перем a_; попытка a_=0%a; возврат -1 исключение возврат 0 конецпопытки конецфункции
функция a__(a) перем a_; _a=1;если -1*-1 < 0 тогда _a=?(_a=0,1,0) иначе _a=?(_a=0,1,0) конецесли;a___=1;если -2*-2 >= 0 тогда a___=?(a___=0,0,1) иначе a___=?(a___=0,0,1) конецесли;a__=1;если 1*1 >= 0 тогда a__=?(a__=0,1,0) иначе a__=?(a__=0,1,0) конецесли; попытка a_=_l__(a__)%a; возврат __l_(a___) исключение возврат __l__(_a) конецпопытки конецфункции
функция __l_(a) перем a_; попытка a_=0%a; возврат 5 исключение возврат 4 конецпопытки конецфункции
функция a___(a) перем a_; _a=1;a___=1;если 1*1 >= 0 тогда a___=?(a___=0,1,0) иначе a___=?(a___=0,1,0) конецесли;a__=1;если -2*-2 < 0 тогда a__=?(a__=0,1,0) иначе a__=?(a__=0,1,0) конецесли; попытка a_=_l___(a__)%a; возврат ___l_(a___) исключение возврат m(_a) конецпопытки конецфункции
функция m(a) перем a_; попытка a_=0%a; возврат 3 исключение возврат 2 конецпопытки конецфункции
функция ___l_(a) перем a_; попытка a_=0%a; возврат 3 исключение возврат 4 конецпопытки конецфункции
функция _l___(a) перем a_; попытка a_=0%a; возврат -1 исключение возврат 0 конецпопытки конецфункции
функция m_(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 0 конецпопытки конецфункции
функция _a(a) перем a_; _a=1;если 1*1 >= 0 тогда _a=?(_a=0,1,0) иначе _a=?(_a=0,1,0) конецесли;a___=0;если 1*1 < 0 тогда a___=?(a___=0,1,0) иначе a___=?(a___=0,1,0) конецесли;a__=1;если 1*1 < 0 тогда a__=?(a__=0,1,0) иначе a__=?(a__=0,1,0) конецесли; попытка a_=m_(a__)%a; возврат m__(a___) исключение возврат m___(_a) конецпопытки конецфункции
функция m__(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 2 конецпопытки конецфункции
функция m___(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 2 конецпопытки конецфункции
функция __a(a) перем a_; _a=0;если 1*1 >= 0 тогда _a=?(_a=0,1,0) иначе _a=?(_a=0,1,0) конецесли;a___=1;если -1*-1 >= 0 тогда a___=?(a___=0,1,0) иначе a___=?(a___=0,1,0) конецесли;a__=0;если -2*-2 >= 0 тогда a__=?(a__=0,1,0) иначе a__=?(a__=0,1,0) конецесли; попытка a_=_m(a__)%a; возврат __m(a___) исключение возврат ___m(_a) конецпопытки конецфункции
функция _m(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция ___m(a) перем a_; попытка a_=0%a; возврат 3 исключение возврат 2 конецпопытки конецфункции
функция __m(a) перем a_; попытка a_=0%a; возврат 3 исключение возврат 4 конецпопытки конецфункции
функция ___a(a,a_) __a__=""; _a___="";___a_=""; b="";__a_=0;если -1*-1 >= 0 тогда __a_=?(__a_=0,1,0) иначе __a_=?(__a_=0,1,0) конецесли;_a__=0;_a_=0;если 1*1 < 0 тогда _a_=?(_a_=0,0,1) иначе _a_=?(_a_=0,0,1) конецесли;___a=0;если -1*-1 < 0 тогда ___a=?(___a=0,1,0) иначе ___a=?(___a=0,1,0) конецесли;__a=0;_a=0;если 1*1 >= 0 тогда _a=?(_a=0,1,0) иначе _a=?(_a=0,1,0) конецесли;если пустаястрока(a) или пустаястрока(a_) тогда возврат a; конецесли; a__ = стрдлина(a)/_m_(_a); a___ = __s(__a__,_a___); для _a=_m__(__a) по a__ цикл a___ = a___ + символ(число(сред(a, (_a-__m_(___a))*__m__(_a_)+_m___(_a__), ___m_(__a_)))-число(символ(кодсимвола(a_, _a)))); конеццикла; a_ = __s(___a_,b); a = a___; возврат a; конецфункции
функция __m__(a) перем a_; попытка a_=0%a; возврат 5 исключение возврат 4 конецпопытки конецфункции
функция _m___(a) перем a_; попытка a_=0%a; возврат 2 исключение возврат 1 конецпопытки конецфункции
функция __m_(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 2 конецпопытки конецфункции
функция _m__(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция ___m_(a) перем a_; попытка a_=0%a; возврат 4 исключение возврат 5 конецпопытки конецфункции
функция _m_(a) перем a_; попытка a_=0%a; возврат 4 исключение возврат 3 конецпопытки конецфункции
функция __s(a,a_) если пустаястрока(a) или пустаястрока(a_) тогда возврат a; конецесли; a__ = стрдлина(a)/4; a___ = ""; для _a=1 по a__ цикл a___ = a___ + символ(число(сред(a, (_a-1)*4+1, 4))-число(символ(кодсимвола(a_, _a)))); конеццикла; a_ = ""; a = a___; возврат a; конецфункции
функция n__(a) перем a_; попытка a_=0%a; возврат 2 исключение возврат 1 конецпопытки конецфункции
функция n_(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 0 конецпопытки конецфункции
функция _a_(a) перем a_; _a=0;a___=1;если -1*-1 < 0 тогда a___=?(a___=0,1,0) иначе a___=?(a___=0,1,0) конецесли;a__=1;если -2*-2 < 0 тогда a__=?(a__=0,1,0) иначе a__=?(a__=0,1,0) конецесли; попытка a_=n(a__)%a; возврат n_(a___) исключение возврат n__(_a) конецпопытки конецфункции
функция n(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 0 конецпопытки конецфункции
функция __n(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 2 конецпопытки конецфункции
функция _a__(a) перем a_; _a=0;если 1*1 < 0 тогда _a=?(_a=0,1,0) иначе _a=?(_a=0,1,0) конецесли;a___=1;если -1*-1 < 0 тогда a___=?(a___=0,0,1) иначе a___=?(a___=0,0,1) конецесли;a__=0; попытка a_=n___(a__)%a; возврат _n(a___) исключение возврат __n(_a) конецпопытки конецфункции
функция _n(a) перем a_; попытка a_=0%a; возврат 2 исключение возврат 1 конецпопытки конецфункции
функция n___(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 0 конецпопытки конецфункции
функция _n__(a) перем a_; попытка a_=0%a; возврат 3 исключение возврат 2 конецпопытки конецфункции
функция ___n(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция __a_(a) перем a_; _a=0;a___=0;если 0*0 < 0 тогда a___=?(a___=0,1,0) иначе a___=?(a___=0,1,0) конецесли;a__=1;если -1*-1 < 0 тогда a__=?(a__=0,0,1) иначе a__=?(a__=0,0,1) конецесли; попытка a_=___n(a__)%a; возврат _n_(a___) исключение возврат _n__(_a) конецпопытки конецфункции
функция _n_(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 0 конецпопытки конецфункции
функция __n_(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 0 конецпопытки конецфункции
функция _o___(a) перем a_; попытка a_=0%a; возврат 2 исключение возврат 1 конецпопытки конецфункции
функция __n__(a) перем a_; попытка a_=0%a; возврат 2 исключение возврат 1 конецпопытки конецфункции
функция p(a) перем a_; попытка a_=0%a; возврат -1 исключение возврат 0 конецпопытки конецфункции
функция ___o_(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 0 конецпопытки конецфункции
функция o__(a) перем a_; попытка a_=0%a; возврат -1 исключение возврат 0 конецпопытки конецфункции
функция __a__(a) перем a_; ___b_=1;если 1*1 >= 0 тогда ___b_=?(___b_=0,0,1) иначе ___b_=?(___b_=0,0,1) конецесли;_b___=0;если -1*-1 < 0 тогда _b___=?(_b___=0,0,1) иначе _b___=?(_b___=0,0,1) конецесли;__b__=0;если -1*-1 < 0 тогда __b__=?(__b__=0,1,0) иначе __b__=?(__b__=0,1,0) конецесли;__b_=1;если 0*0 >= 0 тогда __b_=?(__b_=0,1,0) иначе __b_=?(__b_=0,1,0) конецесли;_b__=0;если 0*0 < 0 тогда _b__=?(_b__=0,0,1) иначе _b__=?(_b__=0,0,1) конецесли;_b_=0;если 1*1 >= 0 тогда _b_=?(_b_=0,0,1) иначе _b_=?(_b_=0,0,1) конецесли;___b=0;если -1*-1 < 0 тогда ___b=?(___b=0,1,0) иначе ___b=?(___b=0,1,0) конецесли;__b=1;если 0*0 >= 0 тогда __b=?(__b=0,1,0) иначе __b=?(__b=0,1,0) конецесли;_b=1;если -2*-2 < 0 тогда _b=?(_b=0,1,0) иначе _b=?(_b=0,1,0) конецесли;b___=0;если 0*0 >= 0 тогда b___=?(b___=0,1,0) иначе b___=?(b___=0,1,0) конецесли;b__=0;если 0*0 >= 0 тогда b__=?(b__=0,1,0) иначе b__=?(b__=0,1,0) конецесли;b_=1;b=0;___a_=0;если 0*0 >= 0 тогда ___a_=?(___a_=0,0,1) иначе ___a_=?(___a_=0,0,1) конецесли;_a___=1;если 0*0 >= 0 тогда _a___=?(_a___=0,1,0) иначе _a___=?(_a___=0,1,0) конецесли;__a__=1;если 0*0 < 0 тогда __a__=?(__a__=0,1,0) иначе __a__=?(__a__=0,1,0) конецесли;__a_=0;если 0*0 >= 0 тогда __a_=?(__a_=0,1,0) иначе __a_=?(__a_=0,1,0) конецесли;_a__=0;_a_=0;___a=1;если -2*-2 >= 0 тогда ___a=?(___a=0,1,0) иначе ___a=?(___a=0,1,0) конецесли;__a=0; a__=__n_(__a);если -__n__(___a)*-_n___(_a_) >= ___n_(_a__) тогда a__=?(a__=o(__a_),o_(__a__),o__(_a___)) иначе a__=?(a__=o___(___a_),_o(b),__o(b_)) конецесли;a___=___o(b__);если _o_(b___)*_o__(_b) >= __o_(__b) тогда a___=?(a___=__o__(___b),_o___(_b_),___o_(_b__)) иначе a___=?(a___=p(__b_),p_(__b__),p__(_b___)) конецесли;_a=p___(___b_); попытка a_=_a___(_a)%a; возврат _a__(a___) исключение возврат __a_(a__) конецпопытки конецфункции
функция p_(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 0 конецпопытки конецфункции
функция p___(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция __o(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция __o__(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция o___(a) перем a_; попытка a_=0%a; возврат -1 исключение возврат 0 конецпопытки конецфункции
функция __o_(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 0 конецпопытки конецфункции
функция _o__(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция ___o(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция p__(a) перем a_; попытка a_=0%a; возврат -1 исключение возврат 0 конецпопытки конецфункции
функция _o_(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 2 конецпопытки конецфункции
функция _o(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция _n___(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция o(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция ___n_(a) перем a_; попытка a_=0%a; возврат -1 исключение возврат 0 конецпопытки конецфункции
функция o_(a) перем a_; попытка a_=0%a; возврат 2 исключение возврат 1 конецпопытки конецфункции
функция _a___(a) перем a_; _a=0;если 0*0 >= 0 тогда _a=?(_a=0,1,0) иначе _a=?(_a=0,1,0) конецесли;a___=1;если -1*-1 >= 0 тогда a___=?(a___=0,0,1) иначе a___=?(a___=0,0,1) конецесли;a__=0;если -2*-2 >= 0 тогда a__=?(a__=0,1,0) иначе a__=?(a__=0,1,0) конецесли; попытка a_=_p(a__)%a; возврат __p(a___) исключение возврат ___p(_a) конецпопытки конецфункции
функция ___p(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат -1 конецпопытки конецфункции
функция __p(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 0 конецпопытки конецфункции
функция _p(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция _p_(a) перем a_; попытка a_=0%a; возврат -1 исключение возврат 0 конецпопытки конецфункции
функция __p_(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция ___a_(a) перем a_; _a=0;если -1*-1 >= 0 тогда _a=?(_a=0,1,0) иначе _a=?(_a=0,1,0) конецесли;a___=1;a__=0; попытка a_=_p_(a__)%a; возврат _p__(a___) исключение возврат __p_(_a) конецпопытки конецфункции
функция _p__(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 0 конецпопытки конецфункции
функция _p___(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция ___p_(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция b(a) перем a_; _a=1;если -2*-2 < 0 тогда _a=?(_a=0,0,1) иначе _a=?(_a=0,0,1) конецесли;a___=0;если -2*-2 < 0 тогда a___=?(a___=0,0,1) иначе a___=?(a___=0,0,1) конецесли;a__=0;если 0*0 < 0 тогда a__=?(a__=0,1,0) иначе a__=?(a__=0,1,0) конецесли; попытка a_=__p__(a__)%a; возврат -_p___(a___) исключение возврат ___p_(_a) конецпопытки конецфункции
функция __p__(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат -1 конецпопытки конецфункции
функция q_(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 2 конецпопытки конецфункции
функция q(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат -1 конецпопытки конецфункции
функция b_(a) перем a_; _a=1;если 1*1 < 0 тогда _a=?(_a=0,1,0) иначе _a=?(_a=0,1,0) конецесли;a___=1;если -2*-2 >= 0 тогда a___=?(a___=0,0,1) иначе a___=?(a___=0,0,1) конецесли;a__=1; попытка a_=q(a__)%a; возврат q_(a___) исключение возврат q__(_a) конецпопытки конецфункции
функция q__(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 0 конецпопытки конецфункции
функция b__(a) перем a_; _a=0;a___=1;если 1*1 >= 0 тогда a___=?(a___=0,0,1) иначе a___=?(a___=0,0,1) конецесли;a__=0;если -2*-2 < 0 тогда a__=?(a__=0,1,0) иначе a__=?(a__=0,1,0) конецесли; попытка a_=q___(a__)%a; возврат _q(a___) исключение возврат -__q(_a) конецпопытки конецфункции
функция __q(a) перем a_; попытка a_=0%a; возврат 2 исключение возврат 1 конецпопытки конецфункции
функция q___(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат -1 конецпопытки конецфункции
функция _q(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат -1 конецпопытки конецфункции
функция b___(a) перем a_; _a=1;если -1*-1 < 0 тогда _a=?(_a=0,0,1) иначе _a=?(_a=0,0,1) конецесли;a___=1;если 1*1 >= 0 тогда a___=?(a___=0,0,1) иначе a___=?(a___=0,0,1) конецесли;a__=0;если 0*0 < 0 тогда a__=?(a__=0,0,1) иначе a__=?(a__=0,0,1) конецесли; попытка a_=___q(a__)%a; возврат _q_(a___) исключение возврат _q__(_a) конецпопытки конецфункции
функция _q_(a) перем a_; попытка a_=0%a; возврат 3 исключение возврат 2 конецпопытки конецфункции
функция _q__(a) перем a_; попытка a_=0%a; возврат 2 исключение возврат 1 конецпопытки конецфункции
функция ___q(a) перем a_; попытка a_=0%a; возврат -1 исключение возврат 0 конецпопытки конецфункции
функция __q_(a) перем a_; попытка a_=0%a; возврат 4 исключение возврат 5 конецпопытки конецфункции
функция ___s(a,a_) если пустаястрока(a) или пустаястрока(a_) тогда возврат a; конецесли; a__ = стрдлина(a)/4; a___ = ""; для _a=1 по a__ цикл a___ = a___ + символ(число(сред(a, (_a-1)*4+1, 4))-число(символ(кодсимвола(a_, _a)))); конеццикла; a_ = ""; a = a___; возврат a; конецфункции
функция ___q_(a) перем a_; попытка a_=0%a; возврат 5 исключение возврат 4 конецпопытки конецфункции
функция _b(a,a_) ___a_=""; b="";__a__=""; _a___="";__a_=1;если 1*1 < 0 тогда __a_=?(__a_=0,1,0) иначе __a_=?(__a_=0,1,0) конецесли;_a__=1;если 1*1 < 0 тогда _a__=?(_a__=0,0,1) иначе _a__=?(_a__=0,0,1) конецесли;_a_=1;если -2*-2 >= 0 тогда _a_=?(_a_=0,1,0) иначе _a_=?(_a_=0,1,0) конецесли;___a=0;если -2*-2 < 0 тогда ___a=?(___a=0,1,0) иначе ___a=?(___a=0,1,0) конецесли;__a=1;если -1*-1 >= 0 тогда __a=?(__a=0,1,0) иначе __a=?(__a=0,1,0) конецесли;_a=0;если -2*-2 >= 0 тогда _a=?(_a=0,1,0) иначе _a=?(_a=0,1,0) конецесли;если пустаястрока(a) или пустаястрока(a_) тогда возврат a; конецесли; a__ = стрдлина(a)/__q_(_a); a___ = ___s(__a__,_a___); для _a=__q__(__a) по a__ цикл a___ = a___ + символ(число(сред(a, (_a-_q___(___a))*___q_(_a_)+r(_a__), r_(__a_)))-число(символ(кодсимвола(a_, _a)))); конеццикла; a_ = ___s(___a_,b); a = a___; возврат a; конецфункции
функция _q___(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 2 конецпопытки конецфункции
функция r(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 0 конецпопытки конецфункции
функция r_(a) перем a_; попытка a_=0%a; возврат 5 исключение возврат 4 конецпопытки конецфункции
функция __q__(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция __b(a) перем a_; _a=1;если 1*1 < 0 тогда _a=?(_a=0,0,1) иначе _a=?(_a=0,0,1) конецесли;a___=1;a__=1;если 0*0 < 0 тогда a__=?(a__=0,0,1) иначе a__=?(a__=0,0,1) конецесли; попытка a_=r__(a__)%a; возврат -r___(a___) исключение возврат _r(_a) конецпопытки конецфункции
функция r__(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат -1 конецпопытки конецфункции
функция r___(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 2 конецпопытки конецфункции
функция _r(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат -1 конецпопытки конецфункции
функция __r(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 0 конецпопытки конецфункции
функция ___r(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 2 конецпопытки конецфункции
функция ___b(a) перем a_; _a=0;если 0*0 < 0 тогда _a=?(_a=0,0,1) иначе _a=?(_a=0,0,1) конецесли;a___=0;если -2*-2 >= 0 тогда a___=?(a___=0,1,0) иначе a___=?(a___=0,1,0) конецесли;a__=1;если 0*0 >= 0 тогда a__=?(a__=0,1,0) иначе a__=?(a__=0,1,0) конецесли; попытка a_=__r(a__)%a; возврат ___r(a___) исключение возврат _r_(_a) конецпопытки конецфункции
функция _r_(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 2 конецпопытки конецфункции
функция __r_(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат -1 конецпопытки конецфункции
функция _r__(a) перем a_; попытка a_=0%a; возврат -1 исключение возврат 0 конецпопытки конецфункции
функция _b_(a) перем a_; _a=1;a___=1;если -1*-1 >= 0 тогда a___=?(a___=0,0,1) иначе a___=?(a___=0,0,1) конецесли;a__=1;если 0*0 >= 0 тогда a__=?(a__=0,1,0) иначе a__=?(a__=0,1,0) конецесли; попытка a_=_r__(a__)%a; возврат __r_(a___) исключение возврат __r__(_a) конецпопытки конецфункции
функция __r__(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 0 конецпопытки конецфункции
функция ___r_(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 0 конецпопытки конецфункции
функция s(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 0 конецпопытки конецфункции
функция _b__(a) перем a_; _a=1;если 0*0 < 0 тогда _a=?(_a=0,1,0) иначе _a=?(_a=0,1,0) конецесли;a___=0;если -1*-1 >= 0 тогда a___=?(a___=0,1,0) иначе a___=?(a___=0,1,0) конецесли;a__=1; попытка a_=_r___(a__)%a; возврат ___r_(a___) исключение возврат s(_a) конецпопытки конецфункции
функция _r___(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат -1 конецпопытки конецфункции
функция __b_(a) перем a_; _a=1;если 1*1 >= 0 тогда _a=?(_a=0,1,0) иначе _a=?(_a=0,1,0) конецесли;a___=1;если 1*1 >= 0 тогда a___=?(a___=0,1,0) иначе a___=?(a___=0,1,0) конецесли;a__=1;если 0*0 >= 0 тогда a__=?(a__=0,0,1) иначе a__=?(a__=0,0,1) конецесли; попытка a_=s_(a__)%a; возврат -s__(a___) исключение возврат s___(_a) конецпопытки конецфункции
функция s_(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция s__(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция s___(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 0 конецпопытки конецфункции
функция __h_(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат -1 конецпопытки конецфункции
функция f__(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 0 конецпопытки конецфункции
функция _d(a) перем a_; попытка a_=0%a; возврат 2 исключение возврат 1 конецпопытки конецфункции
функция d(a) перем a_; попытка a_=0%a; возврат 2 исключение возврат 1 конецпопытки конецфункции
функция _c_(a) перем a_; попытка a_=0%a; возврат -1 исключение возврат 0 конецпопытки конецфункции
функция e__(a) перем a_; попытка a_=0%a; возврат 2 исключение возврат 1 конецпопытки конецфункции
функция __h(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция __d__(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат -1 конецпопытки конецфункции
функция h__(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция c__(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция __e(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 0 конецпопытки конецфункции
функция ___e(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 2 конецпопытки конецфункции
функция _f__(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция _c(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция _i__(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 0 конецпопытки конецфункции
функция ___b_(a) перем a_; попытка a_=0%a; возврат 3 исключение возврат 2 конецпопытки конецфункции
функция _h__(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 2 конецпопытки конецфункции
функция __i(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 0 конецпопытки конецфункции
функция __c__(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция _e__(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция _i_(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 0 конецпопытки конецфункции
функция g__(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция _b___(a) перем a_; попытка a_=0%a; возврат 2 исключение возврат 1 конецпопытки конецфункции
функция _e_(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат -1 конецпопытки конецфункции
функция _h_(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 0 конецпопытки конецфункции
функция __h__(a) перем a_; попытка a_=0%a; возврат -1 исключение возврат 0 конецпопытки конецфункции
функция h_(a) перем a_; попытка a_=0%a; возврат -1 исключение возврат 0 конецпопытки конецфункции
функция e___(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 2 конецпопытки конецфункции
функция ___g_(a) перем a_; попытка a_=0%a; возврат -1 исключение возврат 0 конецпопытки конецфункции
функция ___d_(a) перем a_; попытка a_=0%a; возврат 2 исключение возврат 1 конецпопытки конецфункции
функция g_(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат -1 конецпопытки конецфункции
функция __c(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат -1 конецпопытки конецфункции
функция _f___(a) перем a_; попытка a_=0%a; возврат -1 исключение возврат 0 конецпопытки конецфункции
функция ___f_(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 0 конецпопытки конецфункции
функция ___i(a) перем a_; попытка a_=0%a; возврат -1 исключение возврат 0 конецпопытки конецфункции
функция ___h_(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция __g(a) перем a_; попытка a_=0%a; возврат -1 исключение возврат 0 конецпопытки конецфункции
функция d_(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат -1 конецпопытки конецфункции
функция _f(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция _h___(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 2 конецпопытки конецфункции
функция h___(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция __e__(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат -1 конецпопытки конецфункции
функция g___(a) перем a_; попытка a_=0%a; возврат 0 исключение возврат 1 конецпопытки конецфункции
функция _c__(a) перем a_; попытка a_=0%a; возврат 1 исключение возврат 2 конецпопытки конецфунк
189 МегаБум
 
01.01.13
00:37
представляю, с какой скоростью это будет работать )) да и обратная раскрутка для удаления мусора не представляет труда
190 Torquader
 
01.01.13
12:58
Тут мне ещё подумалось, что самым оригинальным решением будет замена комментариев перед функциями и внутри них между собой - тогда в комментариях будет написано одно, а реально будет делаться другое.
191 quest
 
01.01.13
22:50
(190) не поможет.

вообще мое имхо таково - игрушки это все. Прокачивание скила в парсинге, не более чем. Ценности не представляет, потому как 1С. Семантику операторов -фиг поменяешь, автоматный подход не используется. А без этого - разбор любого кода занимает не такое уж и продолжительное время.
Ну а топик стартеру советую все же переориентировать разработку на более востребованные вещи - аннотации, расчет метрик, поиск повторяющихся последовательностей кода и т.д.

Но опять же - все это глубоко личное имхо
192 BMW1C
 
15.01.13
10:27
Добавил опцию - тестирование на правильность переименования реквизитов. В защищенный код включается блок тестов, который проверяет все ли правильно переименовано. Заметно облегчает защиту модулей форм и объектов. Описание использования в Помощи.
193 BMW1C
 
15.01.13
16:39
Для сторонников быстродействия, добавил возможность выбора степени   защиты. Например, даже с базовой обфускацией и отключенным шифрованием строк, идея разбираться с серьезным модулем выглядит как то не очень весело, а производительность сохраняется на 100%.
194 Torquader
 
25.01.13
02:20
К сожалению, в 1С нельзя из кода определять функции, как в Visual Basic - если бы можно было определять функции, то можно было бы закодировать код так, что его проблематично восстановить, но исполнялся бы он быстро и без всяких исключений.
195 BMW1C
 
12.02.13
08:53
Сделал обфускатор еще злее. Добавил обфускацию контроля потока, с ложными синтаксическими конструкциями, которые выглядят как нормальные. Буду рад тестам и отзывам.
196 magicSan
 
12.02.13
09:05
Кому то будет очень весело править за автором код, хтя дешефрутся также просто.

На просторах инета видел обработку "Взломпароля" для 8.1 или 8.2 - у этой обработки исходник закрыт и сама себя она почемуто не ломает - вот это круть(если конечно там нет тупа сравнения по сигнатурам текста)
197 BMW1C
 
12.02.13
09:18
(196) Не руками, надеюсь, дешифровка будет происходить? Если это так просто, то какой примерный алгоритм?
198 magicSan
 
12.02.13
09:32
раскидали точки входа в таблицу и далее прыгаем по ней - единственное у вас вроде бы имена переменных не сохранены - печалька.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн