Безопасность: КЗК-2. Попытка номер два. #255107


#0 by АЛьФ
Так как предыдущая тема ( ; ) стала слишком большой и давать ссылку в середине той ветки - это только путать людей, открываю новую ветку. Смысл ветки: проверка стойкости защиты, которую обеспечивает КЗК-2. Первая попытка такой проверки с треском провалилась за что я выражаю искреннюю благодарность ASV. Подробности о второй версии КЗК на следующей неделе у меня на сайте. Скачать и поковырять демонстрационную обработку можно здесь:
#0 by АЛьФ
Так как предыдущая тема ( ; ) стала слишком большой и давать ссылку в середине той ветки - это только путать людей, открываю новую ветку. Смысл ветки: проверка стойкости защиты, которую обеспечивает КЗК-2. Первая попытка такой проверки с треском провалилась за что я выражаю искреннюю благодарность ASV. Подробности о второй версии КЗК на следующей неделе у меня на сайте. Скачать и поковырять демонстрационную обработку можно здесь:
#1 by КонецЦикла
Премия будет?
#2 by АЛьФ
2 "Я тебя поцелую... потом... если захочешь..." (с) :)
#3 by КонецЦикла
2 Что еще скачать чтобы обработка таки запустилась в пр-тии?
#4 by DGorgoN
precomp.dll это и есть кзк2?
#5 by КонецЦикла
Требуем полного комплекта Нужна работающая обработка
#6 by АЛьФ
2 По идее ничего не надо. Все должно запускаться. 2 precomp.dll - это компонента, которая обеспечивает работу защищенных модулей.
#7 by КонецЦикла
Ой, сорри. Все хорошо
#8 by DGorgoN
говорит компонента перекомпиляции недоступна..
#9 by АЛьФ
2 Уфффф... Напугал...
#10 by АЛьФ
2 Компоненту надо положить в одно из следующих мест: каталог BIN Предприятия, Каталог базы, каталог пользователя. Или прописать в обработки полный путь к ней.
#11 by КонецЦикла
Перенеси в Bin - там где установлена семерка И под админом видимо надо
#12 by DGorgoN
блин, ясен перец что перенес.. и права админа у меня.. просто её зарегил - и поехало..
#13 by АЛьФ
2 Она не требует регистрации и прав админа.
#14 by Advan
Ты подари чегонибуть ASV - так кто еще начнет ломать.
#15 by Широкий
+14
#16 by АЛьФ
2 Я думаю над этим...
#17 by КонецЦикла
Принцип работы в двух словах можно описать? Эта длл индивидуальна получается для каждой конфиги?
#18 by АЛьФ
2 Нет, не индивидуальна. Работа основана на том, что перед исполнением 1С компилирует исходный код модуля в свой внутренний р-код (как и подавляющее большенство интерпретаторов, насколько я понимаю). Я делаю предварительную компиляцию и в модуле сохраняется не программный текст, а заархивированный скомпилированный модуль. Соответственно, при запуске такой обработке, компонента это дело перехватывает и разворачивает в памяти. Таким образом собственно исходники на стороне клиента не появляются.
#19 by КонецЦикла
Хорошо Имея "свой" КЗК-2 сломать чужую защиту проще? :) Как обстоит дело с этим?
#20 by АЛьФ
2 Нет. КЗК-2 выполняет необратимую (в идеале) операцию и не содержит в себе средств вернуть скомпилированный текст обратно к исходному виду.
#21 by Chieftain
А вопрос по поводу компилирования классов уже решен?
#22 by АЛьФ
2 Для классов пока не сделано сохранение (уж больно там запарочно место хранения определять). Пока это отложил. Тем более, что функционал по классам обещал сделать бесплатным :)
#23 by ASV
первые впечатления: 1. в первом //[BЕGIN COMPILЕD] заменили букву Е на русские, второй 2. после разархивирования: переменные на месте, исполняемый код зашифрован (заниматься его расшифровкой не будем, придется брать из 1С) 3. нумера строк в исполняемом коде вырезаны
#24 by АЛьФ
2 1. Ну, это я так... баловался :) Дальше жду вердикта...
#25 by ASV
на выходных посмотрю, если номера переменных из архива совпадают с номерами используемыми в память, то все будет ок.
#26 by АЛьФ
2 Спасибо, что тратишь на меня время. Больше никто ничего не добавит? :)
#27 by КонецЦикла
Спрошу у брата попозжа Но имхо не станет он ковырять :(
#28 by Chieftain
Я попробовал убрать второй //[BЕGIN COMPILЕD] - одинесина замелькала)
#29 by КонецЦикла
Прошу пояснить как операция может быть "необратимой" если ее надо выполнить в среде 1С? ;)
#30 by АЛьФ
2 Естественно. 2 1С не исполняет напрямую то, что ты пишешь в модуле. Предварительно она это дело компилирует. В случае 1С получает уже скомпилированный модуль.
#31 by КонецЦикла
Это я понимаю, "получает скомпилированный модуль" - по какому-то же алгоритму наверное? И как редактировать такую конфигурацию самому разработчику? Что-то не договариваешь :)
#32 by АЛьФ
2 А никак не редактировать. Иметь у себя всегда некомпилированную версию. А алгоритм компиляции - в движке 1С.
#33 by Молния
на сколько необратима компиляция?
#34 by АЛьФ
2 Вот это и пытаюсь выяснить этой веткой :) На самом деле я не зря написал в скобках "в идеале". При желании, умении и достаточном количестве времени можно ведь и пароль к базе ЦРУ прямым перебором подобрать :) Мне лично сложно ответить сколько сил и времени надо потратить, чтобы написать декомпилятор (не тот склад ума). Со своей стороны я приложил достаточно усилий, чтобы это было достаточно сложно и долго.
#35 by а лю 427
Если транслятор/интерпретатор неоптимизирующий - то декомпиляция выдаст тескт, довольно точно совпадающий с исходным. Если при этом номера строк не удалены - получится очень-очень близко к оригиналу. При оптимизирующем компиляторе близкого к исходному кода можно не получить.
#36 by Guk
Да простит меня Алексей, но так и тянет устроить голосование: Кем работает АЛьФ, и за что ему платят. Неужели поделки типа формекса, кзк, инсертера и т.п. приносят какие-то деньги?...
#37 by Vippi
Как всегда - глубокомысленно и свежо. Хоть бы раз, блин, на твою поделку глянуть.
#38 by tor0310
ну судя по всему 1-й КЗК народом используется, у знакомого взял набор примочек к одинэсине что он понатаскал с инета, 2 обработки были КЗК закрыты да и сам вот думаю какую-то из версий купить, решусь как будет ясно по ценам и чем отличаются 1-я и 2-я версия
#39 by Garykom
весьма хорошо покупают судя по встречаемости сам уже несколько раз натыкался, особенно добила ДЛО'шная конфа продвигаемая ЗАО ТПП Северо-Запад - руки бы оборвать тов. "fflena@rambler.ru" за такой изврат (строго партионный товарный учет лекарств на бух регистрах;)
#40 by КонецЦикла
Завидуете Альфовской империи, лапти-неудачнеги? :)
#41 by ASV
вы уверены что они ее покупают
#42 by КонецЦикла
Конечно, а как иначе? Иначе Альф все раскроет и опозорит
#43 by Garykom
;) Тема: Использование взломанной защиты для защиты от взлома - 5 баллов :))
#44 by Морозов Александр
аха... и походу выполнить процедуру скомпелированного модуля тоже не работает - у меня ругается, хоть с Turbobl, хоть с Formex.
#45 by а лю 427
Покупай, покупай... Судя по твоим вопросам - нетленка будет еще та... Чем больше таких защищенных поделок, тем больше можно ободрать клиента (иногда - на пару порядков). Вот напишет свою нетленку - а мы ее перепишем и сдерем в 8-10 раз больше.... Слава Альфу!!! P.S. денег Альфу не дам ни копейки (с) ну все таки я полтора года занимался примерно этой же задачей (компиляция и декомпиляция)
#46 by АЛьФ
2 Зачем же голосование? Я и так скажу. Официально моя должность называется "заместитель начальника планово-экономического отдела". Платят мне (на основной работе) за кодинг того, что напридумывают другие. Поделки мои приносят денги достаточные, чтобы ими було интересно заниматься. Я все же уже не в том возрасте, чтобы делать что-то на чистом энтузиазме и бесплатно. 2 По идее должно работать. Посмотрю в чем может быть дело. А ты как это проверяешь? Опиши, плиз полностью свои действия.
#47 by Морозов Александр
да пропростому :    ЗагрузитьВнешнююКомпоненту("formex.dll");    ЗагрузитьВнешнююКомпоненту("Turbobl");    ЗагрузитьВнешнююКомпоненту("precomp.dll");    Конт="";    ОткрытьФорму("Отчет", Конт,"c:Календарь.ert");    Сервис = СоздатьОбъект("Сервис");    Сервис.ВыполнитьПроцедуру(Конт,"Сформировать"); //ругается Значение не представляет агрегатный объект (Очистить)    Конт.Сформировать;// ругается типа нет такой процедуры да и я так понял что при загруженной precomp плюется на все в модуле кроме того что скомпелировано...
#48 by АЛьФ
2 Грузи precomp.dll первой.
#49 by Морозов Александр
а чего есть разница? ВК загружена в ПриНачалеРобтыСистемы... а открываю из обработки твой календарь...
#50 by АЛьФ
2 Разница есть.
#51 by Морозов Александр
Ну хорошо.... Глобальный модуль: ПРоцедура ПриНачалеРаботыСистемы        ЗагрузитьВнешнююКомпоненту("precomp.dll");        ЗагрузитьВнешнююКомпоненту("formex.dll");        ЗагрузитьВнешнююКомпоненту("Turbobl.dll"); ....... Обработка ДЛЯОТКРЫТИЯ.ERT: Процедура Сформировать    Конт="";    глУск=СоздатьОбъект("УскорительГК"); //для проверки загрузки Turbobl    ОткрытьФорму("Отчет", Конт,"c:Календарь.ert");    Сервис = СоздатьОбъект("Сервис");    Сервис.ВыполнитьПроцедуру(Конт,"Сформировать");// ошибка:Значение не представляет агрегатный объект (Очистить)    Конт.Сформировать; // ошибка: E:ДЛЯОТКРЫТИЯ.ERT}: Поле агрегатного объекта не обнаружено (Сформировать) КонецПроцедуры В твоем календаре добавил в процедуру ПриОткрытии - Сообщить("процедура выполняется"); никакой реакции, да и отладчик тоже не срабатывает на точку останова - отсюда вывод при загруженной ВК precomp.dll исполняется только скомпелированный код
#52 by Морозов Александр
сам календарь работает..
#53 by АЛьФ
2 Вывод правильный. Если срок лицензии работы скомпилированного модуля закончится (сейчас я не ограничивал), а так же если не загружена компонента, то будет работать открытая часть. Похоже, что вот этот код работает: Сервис.ВыполнитьПроцедуру(Конт,"Сформировать");// ошибка:Значение не представляет агрегатный объект (Очистить) Но спотыкается на этой строке:    Если Т = "" Тогда        Т = СоздатьОбъект("Таблица");    Иначе        Т.Очистить;    КонецЕсли; Т.е. просто ошибка в FormEx работы с параметрами по умолчанию. Передай в ВыполнитьПроцедуру в качестве параметра выполняемой процедуры пустую строку.
#54 by Морозов Александр
ну сделал так: Сервис.ВыполнитьПроцедуру(Конт,"Сформировать",""); всеравно ошибка та-же... ну может это ошибка и самого формекса... помнится была ветка - там была ошибка что при выполнии процедуры печати ругалась на ИспользоватьТаблицу("Моятаблица") типа не обнаружена "МояТаблица"... а вот Turbobl работал правильно, а здесь и он не работает.
#55 by АЛьФ
2 СписокАргументов = СоздатьОбъект("СписокЗначений"); СписокАргументов.ДобавитьЗначение("","-"); Сервис.ВыполнитьПроцедуру(Конт,"Сформировать",СписокАргументов);
#56 by Морозов Александр
вввввооооооооооот!!!!!!!!!!!! "Файл календарь не найден"
#57 by АЛьФ
2 Теперь ошибка в том, что исходная таблица не находится. А вообще такие вызовы для других внешних отчетов нормально срабатывают?
#58 by Морозов Александр
С твоим Формексом такая ошибка всегда если тока используется конструкция ИспользоватьТаблицу("МояТаблица")... ошибки не будет если "МояТаблица" в общих таблицах. А так по фигу что запускаеш хоть внешний хоть внутренний отчет, хоть документ..
#59 by Морозов Александр
попробуй в бухии таким образом вывести печатную форму платежки...
#60 by Морозов Александр
ладно... чет аладушек мне захотелося - пойду в магазин куплю кифирчику куплю, жена постряпает.
#61 by АЛьФ
2 Гляну. А вот почему не работает TurboBL все же непонятно... Может версия старая очень?
#62 by Морозов Александр
turbobl ver 1.1.0.2
#63 by АЛьФ
2 Не знаю. Честно по нему ничего сказать не могу. А остальные внешние обработки с ним нормально работают?
#64 by Морозов Александр
ну да.. врроде работает. Короче трудися :-))
#65 by АЛьФ
Ну... Не жнаю... не жнаю... вшё должно работать... Попробую у себя потом посмотреть.
#66 by Трулалала
а почему в обработке сразу не написать Путь="";Файл="";РасположениеФайла(Путь,Файл); ЗагрузитьВнешнююКомпоненту(Путь+"precomp.dll");
#67 by АЛьФ
2 Ну... ведь не обязательно все будут распаковывать их в один каталог. Такая проблема с загрузкой компоненты возникла только у трех людей. Остальные или увидели мои ответы, или уже знали по каким правилам грузятся компоненты в 1С.
#68 by ASV
je jz jmp просто ап.
#69 by Трулалала
А как нибудь можно узнать, загружена "precomp" или нет?
#70 by Трулалала
Идет ли какой-нибудь замедление открытия формы на расшифровку модуля?
#71 by Vippi
Попытка. На глаз незаметно.
#72 by Трулалала
А есть задается где-нибудь ключ шифрования, который потом можно использовать для расшифровки? Или это в принципе расшифровки не поддается, т.е. шифрование только в одну сторону?
#73 by Трулалала
69) Вот я и спрашиваю, попытка на каком объекте?
#74 by Vippi
Шифрование необратимое. Нет там объекта. Попытка ЗагрузитьВнешнююКомпоненту
#75 by ASV
зачем? а чего расшифровывать? кода нет?
#76 by Vippi
Занимаешься? Получается?
#77 by ASV
ужасно АЛьФ джампов понаставил в коде, получился код дефрагментированный
#78 by Vippi
А в принципе возможно код получить в первоначальном виде? Мне кажется, нет.
#79 by Alexander_M
несколько лет назад задумался над вопросом защиты кода придумал такую вещь: при передаче клиенту делать такую обработку всех модулей, короче, чтобы функции и процедуры "раскрывались" в местах их использования, т.е. их код подставляется вместо их вызова (и так по рекурсии) вроде и код открытый, а сопровождать и модифицировать нереально если в КЗК перед компиляцией делать что-то подобное, то видимо хрен кто сломает вобсчем дарю идею, ждем КЗК-3 :)
#80 by Трулалала
0) Поздравляю! Переворот в защите 7.7 состоялся!
#81 by Vippi
Это ты кого? :) Если . то что-то мысль не уловил.
#82 by ASV
[1с] Если p2=0 Тогда Возврат текДата=НачМесяца(ТекДеньНедели); стр=КонМесяца(ТекДеньНедели); Если _Таблица="" Тогда _Таблица=СоздатьОбъект("Таблица"); _Таблица.70005!(""Календарь"",1) тРасшифровка=""; _Таблица.100005!(""Шапка"",1) ПроверитьДату=0; 00ПроверитьДатуVal=текДата; ПолучитьНазваниеТаблицы=""+ДатаЧисло(ТекущаяДата); Если 00ПроверитьДатуVal<=стр Тогда Если ПроверитьДату=0 Тогда Название=НомерНеделиГода(00ПроверитьДатуVal); Таблица.100005!(""СтрокаГ|СтрокаВ"",1)         |js[72] Название=""; ПроверитьДату=ПроверитьДату+1; Если ПроверитьДату<>НомерДняНедели(00ПроверитьДатуVal) Тогда    _Таблица.130005!(""СтрокаГ|СтрокаВ"",1) КонецПроцедуры ПроверитьДату=НомерДняНедели(00ПроверитьДатуVal); Название=ДатаЧисло(00ПроверитьДатуVal); Если ПроверитьДату>5 или Число(Шаблон("["+СтрЗаменить(Формат(00ПроверитьДатуVal,"ДДДММГГГ"),""."",""+"")+"]"))=1980 Тогда _Таблица.130005!(""СтрокаГК|СтрокаВ"",1) Если ПроверитьДату=7 Тогда ПроверитьДату=0; 00ПроверитьДатуVal=00ПроверитьДатуVal+1;         |js[175] Название=""; Если ПроверитьДату<>0 Тогда ПроверитьДату=ПроверитьДату+1; Если ПроверитьДату<>8 Тогда _Таблица.130005!(""СтрокаГ|СтрокаВ"",1) ПроверитьДату=ПроверитьДату+1; _Таблица.240005!("1",1) _Таблица.250005!("0",4) _Таблица.270005!("Календарь на "+тРасшифровка,1) [/1с]
#83 by ASV
[1c]ен[/1c] [1с]ру[/1с]
#84 by ASV
это не весь код расположение фрагментов кода не всегда верное нет иначе и конецесли
#85 by ASV
константы и имена переменных получены разархивированием //[BEGIN COMPILED] исполняемый код получен копированием из памяти (вручную) дефрагментация кода произведена вручную начало процедуры не найдено
#86 by Diter
Сколько интересно сие стОит?
#87 by а лю 427
а проблем то со сторонними ВК Альф, похоже, еще поимеет...
#88 by Diter
а по поводу ВК подтверждаю. попытка использовать совместно FormEx и КЗК приводит к тому что КЗК не "открывает" закрытые модули и пишет "процедура не найдена". Если не ошибаюсь - такое же наблюдается и с 1С++ и КЗК
#89 by Морозов Александр
Паламали короче!....
#90 by ASV
эт к чему относится?
#91 by Морозов Александр
ну типа к 82 посту..
#92 by АЛьФ
2 На этот раз попытка все же оказалась неудачной с твоей стороны :)
#93 by АЛьФ
2 Порядок загрузки компонент? Логично же, что разворачивание закрытого модуля должно быть до его использования. Т.е. ВК от КЗК должна всегда грузиться самой первой.
#94 by ASV
будем считать что защита трудно взламываемая
#95 by АЛьФ
2 Спасибо.
#96 by АЛьФ
А больше никто не пытался посмотреть? Совсем народ спортивный интерес потерял? :)
#97 by ASV
кто нибудь пробовать будет?
#98 by ASV
2 попытки на 120 скачиваний, 1.5% итого защита не ломаема БОЛЕЕ чем в 98.5% случаев
Тэги: Админ
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С