Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Разное > Флейм
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #16  
Старый 17.08.2009, 22:41
Только учусь Только учусь вне форума
Прохожий
 
Регистрация: 15.08.2009
Сообщения: 21
Репутация: 10
По умолчанию

Akzes, софт для частного предприятия - документооборот, контроль пользователей и т.п.

Ситуация была следующая, что заставило задуматься о защите посерьезней:
Софт покупался фирмой в рассрочку с поэтапной оплатой в несколько месяцев. Стояло ограничение до определенной даты, при наступлении "черной даты", приложение отключалось и предлагалось купить лицензию.
Подробней о том, как все было реализовано:
1. Файл инсталляции (находился у меня, не продавался) генерировал переменную и записывал ее в реестр.
2. При запуске приложения шла проверка - существует ли в данном разделе реестра переменная N и каково ее значение. При совпадении приложение запускалось, при несовпадении - сообщение "Ошибка! Нет прав доступа. Приобретите лицензионную версию!".
Это собственно была защита от тупого копирования с компа на комп.
Что касается ограничения в использовании до определенной даты:
При наступлении "черной даты" при запуске приложения уничтожалась переменная и при следующем запуске программа ее не находила, соответственно выдавая сообщении о предложении купить лицензию. Что мной было сделано не так? И как могли продлить дату использования не меняя ее на предшествующую?
Я предполагаю (может неверно из-за неимения достаточного кол-ва информации), что экзешник распаковали, сменили дату, запаковали и все ОК. Или такого быть не может?
Не могу понять
1. возможно ли раскрыть exe-файл?
2. в каком виде отображается листинг программы, в том же что и я вижу при написании или в двоичном виде, или в кодах ассемблера?
3. возможно ли во взломанном файле внести коррективы и чтобы потом приложение работало корректно?
Если да, тогда получается все бессмысленно.
Но исходя из твоих постов и твоей уверенности что взломать затратнее, чем купить, я могу сделать вывод, что я ошибаюсь...
разъясни неучу...

Извини, что со мной приходиться нянчиться как с первокурсником.

По твоему алгоритму все понятно. Готовые процедуры ты все дал, остается их только подставить в нужное место.

Последний раз редактировалось Только учусь, 17.08.2009 в 23:28.
Ответить с цитированием
  #17  
Старый 18.08.2009, 00:46
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,004
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

1. Да, возможно.
2. Можно декомпилировать до асма. О том, что можно декомпилировать exe до паскаля лично я не слышал (именно exe).
3. Да, возможно. Для этого достаточно декомпилировать до асма.

Итого. Да, такая защита только от ламера. Любой более-менее толковый пользователь сможет снести такую защиту. Достаточно эффективно кодировать куски кода, что бы они в принципе были недоступны в незарегистрированной версии. Но разработка такой защиты самостоятельно - очень дорогое удовольствие. Проще что-нить купить. Посмотри в сторону ASProtect и ExeCriptor.
Ответить с цитированием
  #18  
Старый 18.08.2009, 12:53
Аватар для AllMaNi
AllMaNi AllMaNi вне форума
Новичок
 
Регистрация: 15.06.2009
Адрес: Россия, ЮФО
Сообщения: 57
Репутация: 10
По умолчанию

Только учусь,
Цитата:
При запуске приложения шла проверка - существует ли в данном разделе реестра переменная N и каково ее значение.
Ну это совсем просто. . можно отследить RegMon'ом куда что пишеться и где чем проверяется. Потом найденный ключ импортируется в *.REG файл и запускется каждый раз перед запуском приложения. И всего то. типа вечный триал будет. Подобный образом устроена защита игр от компании Alawar. У них в реестр в 16-ричном виде пишется время оставшееся для демо режима.
На счет взлома...
Упакуй прогу по совету lmikle. Есть спец крипторы - т.е. программы для защиты приложений от дизассемблирования. Если несколько раз зашифровать, упаковать, скремблировать и прочими методами защититься - прогу будет сложно вскрыть, соотвественно взломать. Для этого потребуется куча свпец. софта и навыков крэкера.
Другой выход разрабатывать защиту самому. Но в одиночку без серьезных навыков программирования это будет сложно. т.к. известные методы защиты имеют известные методы взлома, а неизвестные - само собой требуют времени для анализа и реверсного инжиниринга.
__________________
Пусть ненавидят миллионы, зато любят тыщи (с) Многоточие
Ответить с цитированием
  #19  
Старый 18.08.2009, 13:35
Только учусь Только учусь вне форума
Прохожий
 
Регистрация: 15.08.2009
Сообщения: 21
Репутация: 10
По умолчанию

Всем спасибо за ответы!
Теперь картина ясна
Да, разрабатывать защиту в одиночку - дело серьезное, тем более без серьзных навыков программирования.
Скажите, а тот способ, что предлагал Akzes, насколько эффективен (считывание и шифрование серийника)? Хотелось бы услышать мнения по этому поводу. Тем более если экзешник до асма распаковывается, сложно ж будет увидеть процедуру шифрования? Или для знающего это тоже не проблема?

А мне нужно двигаться в сторону ASProtect и ExeCriptor.
А как вы защищаете свои творения? понимаю, вопрос глупый, но хотя бы в общих чертах или с помощью чего?

И еще вопрос - собираюсь разрабатывать БД под SQL сервером. Будет ли это являться так сказать косвенной защитой, т.е. сервер нужно будет настроить нужным образом и обслуживать в случае неисправности работы приложения. (данный вопрос на начальной стадии изучения)
__________________
Ответить с цитированием
  #20  
Старый 18.08.2009, 17:51
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,004
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

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

Особенности настройки SQL-серверов всем и так известны. Так что тут про защиту вообще говорить не приходится
Ответить с цитированием
  #21  
Старый 18.08.2009, 18:54
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

но если шифровать все-таки придется (пароли), то вот здесь неплохая идея :
http://delphiworld.narod.ru/base/more_crypt.html
Ответить с цитированием
  #22  
Старый 19.08.2009, 13:31
Аватар для Konrad
Konrad Konrad вне форума
Эксперт
 
Регистрация: 19.03.2009
Сообщения: 1,261
Репутация: 45834
По умолчанию

Цитата:
Сообщение от roamer
но если шифровать все-таки придется (пароли), то вот здесь неплохая идея :
http://delphiworld.narod.ru/base/more_crypt.html
Идея не новая, и вполне ломаема при приведенной тобой реализации.

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


О предложенном Akzes -ом методе:
1. Если он шифрует значение переменной(любые постоянные данные системы: предложенный номер винта и т.п.),то соответсвенно он должен где-то брать ключ,и соответсвенно защита нулевая.
2. Еси он берет хеш переменной, тогда другое дело, но никто не мешает немного изменить его программу и перед той строкой, где прога берет хеш переменной, полученный результат изменить на тот который позволит дальше пользоваться программой.

Последний раз редактировалось Konrad, 19.08.2009 в 13:40.
Ответить с цитированием
  #23  
Старый 19.08.2009, 15:02
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

Цитата:
Сообщение от Konrad
Идея не новая, и вполне ломаема при приведенной тобой реализации.
Позволю себе не согласиться.
1. Справедливости ради: это не моя реализация ...
2. И, кроме того, идея неплохая (у того, кто придумал) - затруднить процесс дешифровки. Т.е., это вспомогательная мера и не более того.
3. А шифровать надо комбинацией методов типа MD5, SHA1 и т.д.
Ответить с цитированием
  #24  
Старый 19.08.2009, 15:59
Akzes Akzes вне форума
Прохожий
 
Регистрация: 18.02.2009
Сообщения: 27
Репутация: 13
По умолчанию

мой метод тут уже обсуждают
lol
это не метод, а мое предложение человеку, как сделать защиту серьезней, чем то что он имел...
Ответить с цитированием
  #25  
Старый 19.08.2009, 23:10
Аватар для Konrad
Konrad Konrad вне форума
Эксперт
 
Регистрация: 19.03.2009
Сообщения: 1,261
Репутация: 45834
По умолчанию

Цитата:
Сообщение от roamer
Позволю себе не согласиться.
1. Справедливости ради: это не моя реализация ...
2. И, кроме того, идея неплохая (у того, кто придумал) - затруднить процесс дешифровки. Т.е., это вспомогательная мера и не более того.
3. А шифровать надо комбинацией методов типа MD5, SHA1 и т.д.
1. Не важно.
2. Практически никак не затруднит, если следовать приведенному примеру.
3. Это не шифры.

Последний раз редактировалось Konrad, 19.08.2009 в 23:14.
Ответить с цитированием
  #26  
Старый 19.08.2009, 23:42
Аватар для AllMaNi
AllMaNi AllMaNi вне форума
Новичок
 
Регистрация: 15.06.2009
Адрес: Россия, ЮФО
Сообщения: 57
Репутация: 10
По умолчанию

Советую всеже сторонними методами пользоваться..Есть люди которые в этом хорошо разбираются.
Для коммерческого приложения я бы посоветовал ORiEN
Мощная штука.
Вот здесь страничка по этому поводу.
Приложение платное - как сообщает сам автор - стоимость - "сколько не жалко".

Цитата:
ORiEN - невероятно мощная и эффективная защита исполняемых файлов операционной системы Microsoft Windows 9x/ME/XP/2K. Основное назначение - защита от банального воровства программного обеспечения и ограничение допуска, а также дать возможность разработчикам защищать свое ПО от различного рода посягательств на него.
Яркие особенности:

4096-ти битная защита (по типу стандарта DES)
упаковка защищаемых данных (используется aPlib от Jibz)
полиморфное тело защиты (уникальный движок Polystack)
защита по паролю (до 4-х паролей)
защита ключевым файлом
различные привязки (HASP, BIOS и т.д.)
демонстрационные ограничения
интеграция с защищаемой программой
полная совместимость со всей линейкой операционных систем Microsoft Windows
и куча прочих эксклюзивных и стандартных функций!.....
Полная поддержка:

приложений типа EXE, DLL, SCR, OCX и т.д.
компиляторов C/C++ и Delphi
компиляторов Visual Basic
компиляторов Visual FoxPro
компиляторов Sybase PowerBuilder
и т.д.
__________________
Пусть ненавидят миллионы, зато любят тыщи (с) Многоточие
Ответить с цитированием
  #27  
Старый 19.08.2009, 23:44
Аватар для AllMaNi
AllMaNi AllMaNi вне форума
Новичок
 
Регистрация: 15.06.2009
Адрес: Россия, ЮФО
Сообщения: 57
Репутация: 10
По умолчанию

P.S. я бы не взялся прогу, защищенную по максимуму этой защитой взламывать....
__________________
Пусть ненавидят миллионы, зато любят тыщи (с) Многоточие
Ответить с цитированием
  #28  
Старый 20.08.2009, 01:55
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,004
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от AllMaNi
P.S. я бы не взялся прогу, защищенную по максимуму этой защитой взламывать....

Кому очень надо - все равно взломают. Или закардят.
Нет абсолютной защиты. Но можно настолько усложнить именно взлом, что экономически он станет нецелесообразным. Однако это, как я уже сказал, не защитит от кардеров.
Ответить с цитированием
  #29  
Старый 20.08.2009, 08:47
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

Цитата:
Сообщение от Konrad
1. Не важно.
2. Практически никак не затруднит, если следовать приведенному примеру.
3. Это не шифры.
--- Желаете доказать ?
:-)
Ответить с цитированием
  #30  
Старый 20.08.2009, 10:31
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

Вообще-то, это был бы интересный эксперимент.
У меня вообще нет опыта ДеШифровки и вскрытия.
Но вот зашифровать и "запутать" текст - это вполне возможно.
Но насколько это эффективно ?
Может попробуем провести эксперимент ?

Ниже два примера:

1. Здесь зашифрованный пароль.
Чтобы упростить задачу:
длина ключа - не более 16 латинских символов в регистре LoCase

Код:
              
і…Ї±ЎЋЫ–*—нeљєІЎ¤јЎ№q)°№gъkЃЌoc`



2. Здесь зашифрованный текст.
Для упрощения: 2 строчки.

Код:
              
1urvxBD//lL8AvbI/w0g2PsE+BkZI5be/A3IIRH+/wUfJRcTE2cNMEPiElUMJisu

/vAtHD3wKyIzPylWRDM3VpUtJjiQHVU9PkdDQldLSgk4P24QVHowIlhAV2FGQglKWGskSVNUbUtgTXBqYC89fVgkbJVyXnxwdHtxZcpwZnAsmW10h56JhIpSoDOTgpLjsIaOssJpW5uGieOXqYRhlI+Vqp69nLSMuO+WlL9vpJeYftTPnr+wpgOiuc1us62ywufFiL+2vHLIt8tdxcPDx/Dw08ruux7SvMJe88bD5tHR3dbR9jfn2tygwvHt7yzf28HB8bAE8e66FujkA+z+/OsQ/MXT+wCwBgIT2CkGBAENAMkrJw5sBjDzPRgAKg0DBHATOBxxChkwJypX




Может быть кто-то попробует ?
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:34.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter