Вход | Регистрация
    1  2   
О жизни... :: Спам

OFF: Обфускатор 1С.

OFF: Обфускатор 1С.
Я
   AndStar
 
20.12.12 - 10:27
http://netlenka1c.ru/
Коллега разработал. Просит отзывы.
По-моему неплохо получилось.
 
 
   MRAK
 
1 - 20.12.12 - 10:32
   AndStar
 
2 - 20.12.12 - 10:35
Это не то.
   ХочуСказать
 
3 - 20.12.12 - 10:36
(0)
онлайн?

остой..
пусть оффлайн выкаладывает
   IamAlexy
 
4 - 20.12.12 - 10:37
(0) онлайн это хорошо...

главное незабывайте сохранять копии незашифрованных модулей и затем выкладывать их в обменниках...
   Serg_1960
 
5 - 20.12.12 - 10:47
(0) Красивое решение вопроса.

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

Автор - молодец. Красивое решение вопроса - нетленки - бесплатно.
   vitek89
 
6 - 20.12.12 - 10:50
Круть!
   pessok
 
7 - 20.12.12 - 10:54
(0) красиво!
   Адинэснег
 
8 - 20.12.12 - 10:56
(0)бугога... Щас побежали тебе базу модулей наполнять :-D
   pessok
 
9 - 20.12.12 - 10:57
(8) ну ты же на копрокоде 100500 летней давности проверял, как все?)
   Aleksey
 
10 - 20.12.12 - 10:57
где кнопка скачать?
 
 Рекламное место пустует
   MRAK
 
11 - 20.12.12 - 11:00
(2) согласен, в (0) красивее)
   buhkiller
 
12 - 20.12.12 - 11:01
(0) Че-то многовато в тексте "перейти"
   pessok
 
13 - 20.12.12 - 11:02
(12) дык обфускатор
   pessok
 
14 - 20.12.12 - 11:03
при регистрации дает сохранить сорцы на сервере, гы
   Ursus maritimus
 
15 - 20.12.12 - 11:03
(0) не нужно. у 70% 1Сников код сразу обфусцирован.
   Азат
 
16 - 20.12.12 - 11:04
не пойму, в чем глобальная мегамысль автора? регать домен, платить за него бабки и отдавать услугу бесплатно????
   pessok
 
17 - 20.12.12 - 11:05
(16) бесплатна она пока тестят ее, имхо, потом сделает рекламу, платную регистрацию и т.п..
да и стоимость домена... щас даже одноэсник-студент за час больше получает, чем платить за год за домен
   PLUT
 
18 - 20.12.12 - 11:07
обфускатор надо допилить, чтобы еще операторы и методы на буржуйском языке))) вот тогда точно мегаобфускатор получится
   TormozIT
 
19 - 20.12.12 - 11:09
Неплохо.
   Undefined vs NULL
 
20 - 20.12.12 - 11:09
вот оригинал

Procedure Operator() Export
   
   If CurrentDate()<='20100301' Then
       Return;    
   EndIf;

   QueryText = "SELECT
                  |    Продажи.Регистратор,
                  |    SUM(Продажи.СтоимостьРегл) AS Summa
                  |FROM
                  |    РегистрНакопления.Продажи AS Продажи
                  |
                  |GROUP BY
                  |    Продажи.Регистратор";
   Query = New Query(QueryText);
   VT = Query.Execute().Unload();
   Sum = 0;
   For each Row in VT do
       Sum = Sum + Row.Summa;        
   EndDo;

EndProcedure

вот результат

procedure operator() export if currentdate()<=_c() then return; endif; b___ = _d__(__d_,__d__); _b = new query(b___); vt = _b.execute().unload(); __b = d__(); for each row in vt do __b = __b + row.summa; enddo; endprocedure

хреновая обфускация
   pessok
 
21 - 20.12.12 - 11:09
не жрет пендосские операторы чтоле?
   Undefined vs NULL
 
22 - 20.12.12 - 11:11
+(20) шучу, весь модуль удачно, просто там была эта процедура-шутка, вот обратил внимание
   Asmody
 
23 - 20.12.12 - 11:12
производительность мерили?
   Адинэснег
 
24 - 20.12.12 - 11:16
ПОСОНЫ НАЛЕТАЙ У МЕНЯ БРАТ ПРОВЕРИЛ КАПЕЦ КАРТА В БАЗЕ ЧУТЬ ВСЁ НЕ СНЯЛИ СПАСИБО ДРУГУ ОН СЕРВИС ЗОПИЛИЛ
http://s1.hostingkartinok.com/uploads/images/2012/12/072e1467de2e2ebbd91d7b7e0237dca6.png
   Stim
 
25 - 20.12.12 - 11:17
а обратная фускация реализована? а то понадобится самому допилить - и потратишь неделю на разбор)
   le_
 
26 - 20.12.12 - 11:20
(24) После ввода информации о карте она автоматически попадает в базу кардера и сервис возвращает положительный результат? )
   pessok
 
27 - 20.12.12 - 11:22
(24) ты сделал мой день!
   Адинэснег
 
28 - 20.12.12 - 11:23
   le_
 
29 - 20.12.12 - 11:24
1С: Управление кардингом )
   Stim
 
30 - 20.12.12 - 11:25
ааа)))
   Pooh
 
31 - 20.12.12 - 11:26
(24) бггг
всегда нравилось такое )
   фобка
 
32 - 20.12.12 - 11:34
(0) имхо, надо еще убирать пробелы у операторов " = ", "+","-"
хотя и так визуально неплохо смотрится, даже на маленьких функциях.
   фобка
 
33 - 20.12.12 - 11:34
еще можно рандомно менять написание методов с рус на англ
 
 
   К_Дач
 
34 - 20.12.12 - 11:37
Пусть автор поделится, какмими методами криптозащиты он пользовался))) помимо обычной замены имен с помощью ключа, очевидно, анализируется ход выполнения модуля и спомощью "перейти" запутывается, не меняя при этом сам ход
   фобка
 
35 - 20.12.12 - 11:38
(34) там подмена числовых констант на функции с метками
   К_Дач
 
36 - 20.12.12 - 11:42
Очень круто вобщем, без знания лога на расшифровку уйдет количество времени, несоизмеримое с эффективностью от взлома. Автор молодец, добился фактически фактически "гарантированной стойкости". Скорее всего после бета-теста, услуга станет платной. Между прочим, у сайта есть огромные шансы подружиться с инфостартом... большинство обрадуется возможности защитить свои нетленки. Ну а Доржи - тот вообще будет счастлив
   le_
 
37 - 20.12.12 - 11:42
   Stim
 
38 - 20.12.12 - 11:44
еще раз - как обратно вернуть свой код?
   rotting
 
39 - 20.12.12 - 11:44
поубивал бы, понаписывают глючный код, а потом еще и паролями всякими позакрывают......
   PLUT
 
40 - 20.12.12 - 11:47
(38) никак. работает в одну сторону
   Stim
 
41 - 20.12.12 - 11:49
(40) фигово. нужно выдавать какой-то уникальный ключ, по которому можно вернуть все в зад
   pessok
 
42 - 20.12.12 - 11:50
(41) зачем?
   К_Дач
 
43 - 20.12.12 - 11:51
(41) наверняка функционал расшифровки будет предоставляться после покупки услуги. А ключ - он скорее всего будет индивидуальным и привязан к пользователю, чтобы один разработчик не мог расшифровывать код другого...
   pessok
 
44 - 20.12.12 - 11:54
и щас каждый сидит и думает... "бл*ть, ну почему не я?"$$$
   PLUT
 
45 - 20.12.12 - 11:55
(43) функционал расшифровки то зачем? не проще хранить исходники?

как вариант - исходники и результаты хранить в БД, привязать к пользователю. дальше - банальное сравнение
   Stim
 
46 - 20.12.12 - 11:56
(42) чтобы поддерживать и сопровождать свои решения.
   vde69
 
47 - 20.12.12 - 11:57
(45) ключ расшифровки для сабжа вполне реально генерить, только он будет большим...
   pessok
 
48 - 20.12.12 - 11:57
(46) дык ты пишешь то по нормальному коду, Ctrl+A, Ctrl+C, потом в базе "для клеендов" Ctrl+V
   К_Дач
 
49 - 20.12.12 - 11:58
(45) да, но так для разработки и поддержки собственных продуктов тебе всегда нужен доступ к сайту и интернет. Ну и защищенное соединение, разумеется.
 
 Рекламное место пустует
   PLUT
 
50 - 20.12.12 - 11:59
(47) в качестве нагрузки к тексту обфускации можно исходники зашифрованные прям в модуль добавлять, зашифровать каким-нибудь открытым ключом, по принципу ЭЦП)
   Stim
 
51 - 20.12.12 - 11:59
(48) это не то. тебе нужно вносить исправление в функционал клиента, исхдники могут потеряться
   pessok
 
52 - 20.12.12 - 12:01
(51) а зачем у клиента? пользовать свой ключик на чужом компьютере опасно
   Stim
 
53 - 20.12.12 - 12:03
(52) у клиента - потому что у него функционал. у него могут быть 100500 обработок, исходники от которых уже давно канули в небытие
   pessok
 
54 - 20.12.12 - 12:04
(53) ну вообще да, согласен. деобфускатор нннннада
   PLUT
 
55 - 20.12.12 - 12:09
(49) несложно свою обормотку написать для шифрования исходного текста модуля. потом его тупо в текст модуля в конце добавить. засада будет, если кто-то его оттуда выпилит, а бэкапов не будет. но если клиенты на поддержке, то репозиторий  .CF клиентов нужно у себя держать
   Никола_Питерский
 
56 - 20.12.12 - 12:12
ТС передай коллеге пускай мутит авторизацию через другие сервисы(соц. сети, и прочее зло), вломы(лениво) региться, а обратная связь только через регистрацию !
   PLUT
 
57 - 20.12.12 - 12:14
(56) Tyson
Джордж Вашингтон
Kavar
vde69
Вадя
Alex33
PowerBoy
tomvlad
J_B
Starhan
vladko
Bida
Begin
le_
rij
ilpar
Я не курил
forforumandspam
notton
Stim
Lokli
Адинэснег
Никола_Питерский
фобка
skiller3000
PLUT
Пухлый кот
эцп
ReaderT
Есть вопросик
бомболюк
pessok
egorious
geka-geka
БледноЗолотистый
НеМогуВойтиВАккаунт
Юный 1С
Нетленка1С

автор в ветке?
   vde69
 
58 - 20.12.12 - 12:14
для автора советы

1. добавить мусора для неверной работы "перейти к определению"
2. Все процедуры и функции сделать с параметрами и по параметру отрабатывать мусорные варианты (для защиты от оптимизаторов выкидывающих мусор)
   PLUT
 
59 - 20.12.12 - 12:17
+(57) Дата регистрации:    20.12.2012     сегодня
   le_
 
60 - 20.12.12 - 12:18
   Нетленка1С
 
61 - 20.12.12 - 12:28
Всем большое спасибо за советы и обсуждение данного проекта. Отвечу на некоторые вопросы:
1.    Возможности обратной деобфускации без потери данных нет, т.к. часть информации при защите теряется безвозвратно. Любой защищенный коммерческий продукт, можно сломать, восстановить часть кода, методами обратной инженерии, но цель обфускатора в значительном усложнении его несанкционированного использования.
2. Английский язык, если нужнен, постараюсь добавить в ближайшее время.
3. Методы защиты планирую добавлять, в том числе и предикаты и защиту от Перехода к определению
4. Авторизацию через другие сервисы добавлю в ближайшее время
   PLUT
 
62 - 20.12.12 - 12:34
(61) что насчет (50)? бред?

а вообще такая защита для коммерческого продукта - по сути привязка клиента к "Славик незаменимый"

вдруг приходит телеграмма: "Папа всё. Целую. Мама"
   Нетленка1С
 
63 - 20.12.12 - 12:46
(62) Вполне реалистично.Можно подумать как это реализовать.
   vde69
 
64 - 20.12.12 - 12:53
(62)(63)
такая защита все равно ломается и не так сложно как кажется на первый взгляд...

уверен, что через некоторое время появится анти-офбуксатор :)
   Stim
 
65 - 20.12.12 - 12:56
(63) защищать нужно от продажи, а не от сопровождения.
клиент должен иметь право обращаться к другим разработчикам для изменения/сопровождения, но не должен иметь права продавать продукт
   PLUT
 
66 - 20.12.12 - 12:56
(64) она для затруднения допиливания "левыми" лицами, у которых по идее "башню снести" должно. т.е. не совсем защита для ломания
   ДайтеДайтеСказать
 
67 - 20.12.12 - 12:58
(0) овно, хоть бы сайт без глюков сделали
   ДайтеДайтеСказать
 
68 - 20.12.12 - 12:59
(67) у меня воспользоваться не получилось, два раза код вводил
   pessok
 
69 - 20.12.12 - 13:02
Д`Артаньян в теме, посоны!
   PLUT
 
70 - 20.12.12 - 13:05
(68) зарегистрируйся на сцайте
   Feunoir
 
71 - 20.12.12 - 13:06
Подозрение на то, что неправильно обрабатывается "константа типа дата". Из такого кода:

[1c]
Процедура ВыбПериодНажатие(Элемент)
   НастройкаПериода = Новый НастройкаПериода;
   НастройкаПериода.РедактироватьКакИнтервал = Истина;
   НастройкаПериода.РедактироватьКакПериод = Истина;
   НастройкаПериода.ВариантНастройки = ВариантНастройкиПериода.Период;
   НастройкаПериода.УстановитьПериод(НачалоПериода, ?(КонецПериода='0001-01-01', КонецПериода, КонецДня(КонецПериода)));
   Если НастройкаПериода.Редактировать() Тогда
       НачалоПериода = НастройкаПериода.ПолучитьДатуНачала();
       КонецПериода = НастройкаПериода.ПолучитьДатуОкончания();
   КонецЕсли;
КонецПроцедуры
[/1c]

получается такой:
[1c]
функция ___a_() перейти ~a__;~___a:перейти ~_a_;~_a:перейти ~__a;~__a__:возврат "";~__a:перейти ~___a;~_a___:возврат -1;~__a_:возврат новый списокзначений;~a__:перейти ~_a;~a___:возврат истина;~_a__:возврат "";~_a_:перейти ~a___; конецфункции
функция ___d() перейти ~__c_;~d:перейти ~d_;~_c___:перейти ~___c_;~d___:возврат '00010101000000';~__d:возврат null;~___c_:перейти ~d;~__c_:перейти ~_c___;~__c__:возврат 01;~d_:перейти ~__c__;~_d:возврат "";~d__:возврат 1; конецфункции
процедура выбпериоднажатие(a) a_ = f__(); a_.редактироватькакинтервал = ___a_(); a_.редактироватькакпериод = __b__(); a_.вариантнастройки = вариантнастройкипериода.период; a_.установитьпериод(началопериода, ?(конецпериода='_c__()-___d()-_e()', конецпериода, конецдня(конецпериода))); если a_.редактировать() тогда началопериода = a_.получитьдатуначала(); конецпериода = a_.получитьдатуокончания(); конецесли; конецпроцедуры
функция _c__() перейти ~_b___;~c:перейти ~c_;~_c_:возврат новый списокзначений;~c_:перейти ~c__;~c__:перейти ~c___;~__c:возврат истина;~___c:возврат "";~_b___:перейти ~c;~c___:перейти ~___b_;~___b_:возврат 0001;~_c:возврат 0; конецфункции
функция _e() перейти ~_d_;~_d__:возврат 01;~___d_:перейти ~_d__;~e___:возврат "";~__d__:перейти ~_d___;~e__:возврат неопределено;~e:возврат -1;~e_:возврат 1;~__d_:перейти ~__d__;~_d_:перейти ~__d_;~_d___:перейти ~___d_; конецфункции
функция f__() перейти ~__e;~_e___:возврат истина;~__e_:перейти ~__e__;~__e__:перейти ~___e;~_e__:перейти ~__e_;~f_:возврат ложь;~__e:перейти ~_e_;~f:возврат null;~_e_:перейти ~_e__;~___e:возврат новый настройкапериода;~___e_:возврат 1; конецфункции
функция __b__() перейти ~b;~b_:возврат истина;~__b:перейти ~b_;~_b__:возврат ложь;~b__:перейти ~b___;~___b:возврат "";~b:перейти ~b__;~b___:перейти ~_b;~_b_:возврат ложь;~__b_:возврат неопределено;~_b:перейти ~__b; конецфункции
[/1c]

при проверке синтаксиса ругается на:

a_.установитьпериод(началопериода, ?(конецпериода=<<?>>'_c__()-___d()-_e()', конецпериода, конецдня(конецпериода)));
   PLUT
 
72 - 20.12.12 - 13:10
ну конфигуратора башню снесло от такой даты '_c__()-___d()-_e()'
   Feunoir
 
73 - 20.12.12 - 13:11
(72) Так в исходном тексте нормально. А после обфускации - фигня.
   PLUT
 
74 - 20.12.12 - 13:19
(73) руками исправь в конструкции ?(условие,истина,ложь). не так много их.

автор допилит))
   Feunoir
 
75 - 20.12.12 - 13:21
(74) Это-ж бета-тест. А я бета-тестер. Поэтому и пишу про найденные ошибки в надежде, что "автор допилит". У меня чисто академический интерес, так как сам обфускацией не увлекаюсь.
   quest
 
76 - 20.12.12 - 13:29
вот понять не могу - там регэкспами парситься или все же строиться ast и по нему уже компилируется?
   Нетленка1С
 
77 - 20.12.12 - 14:45
(71) Вот для этого и нужен бета-тест :) Спасибо
Исправил.
   х86
 
78 - 20.12.12 - 16:58
(77)если не секрет у тебя какие планы на сайт и обработку? сделать коммерческий проект?
   orefkov
 
79 - 20.12.12 - 17:02
(77)
Еще обращения к свойствам/методам после точки запилить через Выполнить, с шифрованием имен.
   orefkov
 
80 - 20.12.12 - 17:06
Перед КонецХХХ(Если,Процедуры,Функции,Цикла) точку с запятой можно не ставить.
новый списокзначений заменить на новый(функция_возвращающая_строку_списокзначений)
   PLUT
 
81 - 20.12.12 - 17:12
теперь модули без исходных текстов для скрытия г@внокода не нужны! теперь можно обфускивать спокойно и не париться

ура товарищи)
   Serg_1960
 
82 - 20.12.12 - 17:31
(81) Ты не прав. г@внокод изначально обфусцирован - его автор сам себе злобный обфускатор.
   PLUT
 
83 - 20.12.12 - 17:33
(82) или коллективный автор)) если франч - автор нетленки
   МуМу
 
84 - 20.12.12 - 21:56
С точки зрения производительности не есть гуд. Но с точки зрения маркетинга и подачи - молодец! Хотя ошибочки есть. А насчет защиты - автор, не слушай жадных, злых одинэсников. Защищать нужно - ничто так не внушает веру в человечность и порядочность как стопроцентная предоплата(не мое).
   Злопчинский
 
85 - 20.12.12 - 22:26
что мешает при обфурскации запрашивать (или генерить самому) длинный пароль. Исходный нормальный код - зипуется с паролем и перекодируется в читабельные букавки, зазипованный тескт вставляется как блок комментариев. Пароль - выдается разработчику вместе с обфусцировнным кодом.
   HeroShima
 
86 - 20.12.12 - 22:35
лучше эксклюзивную функциональность в бинарник убирать, имха, а так: симпатично
   AlexBor
 
87 - 20.12.12 - 22:43
Господа знающие подскажите от какого слово произошло обфускация?
   AlexBor
 
88 - 20.12.12 - 22:47
Скажите а как в плане законности, кто то по договору что то сделал или слепил ту же нетленку, и вот вам пожалуйста вроде как и не совсем и пароль, но как то и защита что ли. Т.е. допустим ты ушел и после тебя пришел другой работать открыл и что дальше какие могут быть варианты развития событий?
   МуМу
 
89 - 20.12.12 - 23:06
(85) В продолжении темы. Этот текст отправляется mms, в ответ на него получается мастер код. Затем в ответ на него отправляется определенная сумма денег по яндекс мани, а затем отправляется клиент код.:)
   Serg_1960
 
90 - 21.12.12 - 02:37
(87) Обфускация (от лат. obfuscare — затенять, затемнять; и англ. obfuscate — делать неочевидным, запутанным, сбивать с толку)
   КонецЦикла
 
91 - 21.12.12 - 02:42
Должна ли поставка продукта с ТАКИМ кодом оговариваться в договоре интересно? Или типа буквы знакомые и хорошо?
   Serg_1960
 
92 - 21.12.12 - 03:00
Если автор алгоритмы пишет по догору для заказчика, авторские права (как правило) передаются заказчику и обфускация - вне закона.
Если автор продаёт готовый продукт (пусть и адаптированный для заказчика) - обфускация, в данном случае - защита авторских прав и законно.

Впрочем в "нормальном" договоре авторские права отдельно оговаривается.

Имхо, обфускация алгоритма законна при наличии авторский прав на алгоритмы и (как и электронная защита) должна оговариваться в документации.
   Нетленка1С
 
93 - 21.12.12 - 07:52
Добавил вход с учетными записями Google, Facebook, Twitter. Добавил страницу в Twitter, где буду писать об исправлениях и улучшениях.
   Vladal
 
94 - 21.12.12 - 08:45
Вот здесь код сразу написан обфусцированным:
http://s52.radikal.ru/i137/1207/77/6ea15989e208.png
   ptrtss
 
95 - 21.12.12 - 08:57
Хорошее подспорье уволенным программерам
   Vladal
 
96 - 21.12.12 - 09:00
(95) Да это всё для подростков. Тайна! Шпиён! Мой гениальный код никто не увидит! BolgenOS!
Помню, одно время на кружке информатики страдали скрытием своих исходников. Лет так по 13-14 нам тогда было.
   Serg_1960
 
97 - 21.12.12 - 09:09
(64) "уверен, что через некоторое время появится анти-офбуксатор" - уже появился :)

Реализация обфускации позволяет автоматизировать "обратный процесс", НО: при обфускации удаляются наименования переменных и поэтому "восстановленные" алгоритмы, пусть и в меньшей степени, но всё-таки остаются "обфусцированными :(
   Serg_1960
 
98 - 21.12.12 - 09:23
(77) "Спасибо. Исправил"  - хорошо, проверьте :)

Функция ___a_() Экспорт
  Перейти ~a__;
  ~___a:Перейти ~_a_;
  ~_a:Перейти ~__a;
  ~__a__:Возврат "Проверка ""нетленки"" на наличие в тексте ""ковычек""";
  ~__a:Перейти ~___a;
  ~_a___:Возврат -1;
  ~__a_:Возврат Новый СписокЗначений();
  ~a__:Перейти ~_a;
  ~a___:Возврат ИСТИНА;
  ~_a__:Возврат "";
  ~_a_:Перейти ~a___;
КонецФункции
   х86
 
99 - 21.12.12 - 09:30
а почему в спам переместили?
   1Сергей
 
100 - 21.12.12 - 09:33
(сто)
  1  2   

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует