Переключение на Главную Страницу Страницы: 1 2 [3] 4 5 6 ОтправитьПечать
Очень популярная тема (более 25 ответов) Защита классов (число прочтений - 26105 )
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Защита классов
Ответ #30 - 27. Июля 2006 :: 12:19
Печать  
jbond писал(а) 27. Июля 2006 :: 12:10:
Цитата:
Залито в репозиторий. Будет в завтрашней ночной сберке.
Заливалось для версии 2.0.3.0. Если в разделенную захотят ребята перенести, значи будет и там.


А можно поподоробней что завтра будет, связанное с защитой классов?

Сообщение писалось вчера. Т.е. в сегодняшней сборке уже есть. За подробностями к оплатившему эту доработку.
Могу только совсем кратко сказать: в описании класса пишешь "Класс Класс1=Класс1@my.dll", в my.dll делаешь функцию
extern "C" LPCSTR WINAPI EXPORT GetClassText(LPCSTR lpcstrClassName)
, которая возвращает текст модуля класса по имени.
  

FormEx developer
Наверх
www  
IP записан
 
alest
Senior Member
****
Отсутствует



Сообщений: 380
Местоположение: Гродно, Беларусь
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Защита классов
Ответ #31 - 27. Июля 2006 :: 12:21
Печать  
>> dll она бы сразу выгружалась. Т.е.
>> >> инициализация dll будет происходить при
>> >> загрузке каждого класса.
> > Хорошо, может еще в этот момент
> > отследить имя запрашиваемого класса
> > можно?

Можно будет не при инициализации, а при
запросе текста модуля.
Небольшой примерчик.
В defcls.prm написано:
class ТестыИсходнойТаблицы =
ТестыИсходнойТаблицы@E:\1CPP_Testing\profile.dll :
ТестовыйСлучай

Внутри dll идет проверка:
extern "C" LPCSTR WINAPI EXPORT GetClassText(LPCSTR lpcstrClassName)
{
     AFX_MANAGE_STATE(AfxGetStaticModuleState());

     HGLOBAL hgl = NULL;
     CString strClassName(lpcstrClassName);
     if(strClassName.CompareNoCase("ТестыИсходнойТаблицы")
== 0) //!!!
и возвращается соответствующий модуль.
  
Наверх
ICQ  
IP записан
 
jbond
Full Member
***
Отсутствует


1С++ Programmer

Сообщений: 140
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Защита классов
Ответ #32 - 27. Июля 2006 :: 12:23
Печать  
А образец DLL-ки будет?
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Защита классов
Ответ #33 - 27. Июля 2006 :: 12:26
Печать  
jbond писал(а) 27. Июля 2006 :: 12:23:
А образец DLL-ки будет?

Если только кто-нибудь сам напишет и выложит. Или alest выложит мой пример.
Я при оплате гарантировал, что не буду выкладывать это в открытый доступ. Только если на продажу. Иначе смысл ему был оплачивать что-либо? Улыбка
  

FormEx developer
Наверх
www  
IP записан
 
jbond
Full Member
***
Отсутствует


1С++ Programmer

Сообщений: 140
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Защита классов
Ответ #34 - 27. Июля 2006 :: 12:30
Печать  
Т.е. фунционал по возможности закрузки текста модуля из ДЛЛ - открыт,
а сама ДЛЛ с реальным шифрованием/привяками/ограничениями по времени - платная.

Можно к примеру выложить демо-пример ДЛЛ-ки для демонстрации возможностей (но для реальной защиты не подходящей).
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Защита классов
Ответ #35 - 27. Июля 2006 :: 12:36
Печать  
jbond писал(а) 27. Июля 2006 :: 12:30:
Т.е. фунционал по возможности закрузки текста модуля из ДЛЛ - открыт,
а сама ДЛЛ с реальным шифрованием/привяками/ограничениями по времени - платная.

Можно к примеру выложить демо-пример ДЛЛ-ки для демонстрации возможностей (но для реальной защиты не подходящей).

Нет. "ДЛЛ с реальным шифрованием/привяками/ограничениями по времени" не писалась. Писался именно пример и общее описание как и чего делать. Именно эта инфа и является платной. Хоть и не несет особой ценности. Просто из-за моей природной вредности Улыбка
Для знающего VC++ и в этой ветке инфы достаточно.
  

FormEx developer
Наверх
www  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Защита классов
Ответ #36 - 27. Июля 2006 :: 17:39
Печать  
Да просто нужна DLL, которая при вызове определенного метода выдает код класса.

Не вижу смысла скрывать реализацию такой DLL. Тем более, что легко можно собрать вариант 1С++, который будет отдавать код, который получил из DLL. Какая бы навороченная она ни была.

Кстати, прозвучала такая фраза:

Цитата:
Всего-то и надо - сделать работу не с исходным текстом, а со скомпилированным.

А может действительно такое можно сделать?
« Последняя редакция: 27. Июля 2006 :: 19:00 - sedmin »  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Защита классов
Ответ #37 - 28. Июля 2006 :: 05:15
Печать  
sedmin писал(а) 27. Июля 2006 :: 17:39:
Да просто нужна DLL, которая при вызове определенного метода выдает код класса.

Не вижу смысла скрывать реализацию такой DLL. Тем более, что легко можно собрать вариант 1С++, который будет отдавать код, который получил из DLL. Какая бы навороченная она ни была.

О легкости получения кода модуля класса, зашитого в dll, я уже говорил в этой ветке.
О причинах "скрываения" реализации DLL так же говорилось уже: человек заплатил за это деньги и решать как распоряжаться этим дальше - полностью его право. Захочет опубликует, не захочет, не опубликует. ИМХО достаточно и того, что основной функционал, обеспечивающий работу с dll доступен в публичной версии.

sedmin писал(а) 27. Июля 2006 :: 17:39:
Кстати, прозвучала такая фраза:

Цитата:
Всего-то и надо - сделать работу не с исходным текстом, а со скомпилированным.

А может действительно такое можно сделать?

Можно, конечно.
  

FormEx developer
Наверх
www  
IP записан
 
alest
Senior Member
****
Отсутствует



Сообщений: 380
Местоположение: Гродно, Беларусь
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Защита классов
Ответ #38 - 28. Июля 2006 :: 08:20
Печать  
И мне кажется, что можно. Сейчас из длл достается текст модуля, если туда положить объектный код, то останется пропустить стадию компиляции и сразу загрузить его в память.

Я поучаствовал как мог, для того эта доработка в 1с++ пошла, чтоб любой мог доработать.

В приложенном файле результаты сотрудничества с Альфом, без 1cpp, ночная сборка ветки 2.0.3 должна работать.
  

demo.rar ( 24 KB | Загрузки )
Наверх
ICQ  
IP записан
 
jbond
Full Member
***
Отсутствует


1С++ Programmer

Сообщений: 140
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Защита классов
Ответ #39 - 28. Июля 2006 :: 08:35
Печать  
Текст класса  фактически можно получить вызовом функции ДЛЛ из любой программы. Т.е. защита только "от дурака"?
  
Наверх
 
IP записан
 
alest
Senior Member
****
Отсутствует



Сообщений: 380
Местоположение: Гродно, Беларусь
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Защита классов
Ответ #40 - 28. Июля 2006 :: 08:37
Печать  
Пока да. Надеюсь кто-нибудь доделает и компилированный код можно будет в длл хранить.
  
Наверх
ICQ  
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Защита классов
Ответ #41 - 28. Июля 2006 :: 08:40
Печать  
jbond писал(а) 28. Июля 2006 :: 08:35:
Текст класса  фактически можно получить вызовом функции ДЛЛ из любой программы. Т.е. защита только "от дурака"?

Дык об этом с самого начала и говорилось, что от дурака.
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Защита классов
Ответ #42 - 28. Июля 2006 :: 08:41
Печать  
jbond писал(а) 28. Июля 2006 :: 08:35:
Текст класса  фактически можно получить вызовом функции ДЛЛ из любой программы. Т.е. защита только "от дурака"?

Читай всю ветку.
  

FormEx developer
Наверх
www  
IP записан
 
jbond
Full Member
***
Отсутствует


1С++ Programmer

Сообщений: 140
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Защита классов
Ответ #43 - 28. Июля 2006 :: 08:52
Печать  
Цитата:
Код класса не проблема вынести куда-нибудь или зашифровать. Только все это будет не защита, а фикция сплошная. Потому как исходники компоненты открыты, а для парсинга кода класса текст все равно должен передаваться в открытом виде в компоненту. Т.е. проблема таже, что и с защитой кода 1С, только тут потенциальному взломщику даже особо напрягаться не надо. Достаточно будет в одном месте поставить сохранение текста в файл и (оп!) весь код открыт.


Оно?
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Защита классов
Ответ #44 - 28. Июля 2006 :: 08:56
Печать  
jbond писал(а) 28. Июля 2006 :: 08:52:
Цитата:
Код класса не проблема вынести куда-нибудь или зашифровать. Только все это будет не защита, а фикция сплошная. Потому как исходники компоненты открыты, а для парсинга кода класса текст все равно должен передаваться в открытом виде в компоненту. Т.е. проблема таже, что и с защитой кода 1С, только тут потенциальному взломщику даже особо напрягаться не надо. Достаточно будет в одном месте поставить сохранение текста в файл и (оп!) весь код открыт.


Оно?

Оно самое.
  

FormEx developer
Наверх
www  
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 [3] 4 5 6
ОтправитьПечать