![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 14.11.2010
Сообщений: 47
|
![]()
Есть программный продукт, состоящий из EXE и около 10 dll файлов. Продукт сделан на C# под .NET4 . Обфусцируется SmartAssembly (который при обфускации естественно не меняет имена публичных функций и пропертей, описанных в DLL). Именя публичных функций и пропертей, описанных в DLL, делаем нечитаемыми (поскольку обфускация на них не влияет, и если их оставлять как есть - то легко станет понять что происходит в коде).
Механизм активации следующий: Получаем ID железа, отправляем на сервер и выданным пользователю кодом лицензии. Если код на сервере не занят, то данному коду лицензии приписывается данный ID железа (в обратном случае (если код занят) - сервер возвращает ошибку). Механизм проверки активированности программы следующий: Получаем ID железа, отправляем на сервер и выданным пользователю кодом лицензии. Если на сервере имеется такое сочетание кода лицензии и ID железа, то сервер возвращает строку, сигнализирующую о том, что программа активирована. В обратном случае (если на сервере НЕТ такого сочетания кода лицензии и ID железа) - сервер возвращает строку, сигнализирующую о том, что программа НЕактивирована. Нужны советы: 1. Как сделать анализ кода (например через Reflector) более затруднительным - чтобы проанализировать наш функционал было значительно дороже, чем воссоздать его с нуля. 2. Как усовершенствовать механизм активации, чтобы он был труднее для взлома? p.s. Слышали про сервер (или программу) "ГАВНОКОД" (или как то так называется), которая запутывает код класса, может кто сталкивался
Автоматизация получения заказов для ВСЕХ ФРИлансеров!
|
![]() |
![]() |
![]() |
#2 | |||
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
![]() Цитата:
Должна ли программа после "активации" работать даже при отсутствии подключения к сети Интернет? Если нет, чем гарантируется, что она не будет работать? Если да, как она проверяет, что она "активирована"? Цитата:
Зависит от задачи, в общем. Цитата:
|
|||
![]() |
![]() |
![]() |
#3 | |
Пользователь
Регистрация: 14.11.2010
Сообщений: 47
|
![]() Цитата:
Автоматизация получения заказов для ВСЕХ ФРИлансеров!
|
|
![]() |
![]() |
![]() |
#4 | |||
Дружите с Linq ;)
Форумчанин
Регистрация: 15.10.2008
Сообщений: 823
|
![]() Цитата:
Совет по SmartAssembly: используйте internal классы. Классы public (например, для работы с БД) вынести в отдельную сборку, их нельзя обфусцировать, а получить схему бд они и так могут в любое время. Цитата:
Цитата:
Одно время думал, что важный код лучше выносить в dll на C, но ведь хацкер, найдя вызов функции в dll из кода всегда может сделать точно такой же вызов, так что не выход. Динамическое создание dll в памяти через Codedom, получив код с удаленного сервера тоже не спасет, только усложнит жизнь. Вывод: Читайте мануалы по SmartAssembly. Ищете готовые решения для защиты программ, они будут лучше чем ваш самопал.
Не давай организму поблажки, каждый день тренируй его в шашки..
![]() |
|||
![]() |
![]() |
![]() |
#5 | ||
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
![]() Цитата:
Я не имею ни желания, ни, по-хорошему, квалификации для того, чтобы давать корректные советы по созданию системы защиты ПО от тех или иных несанкционированных действий, особенно через форум. Я могу попробовать указать на дыры в сформулированной концепции защиты. Это не означает, что их устранение сделает защиту лучше: это лишь означает, что, если такие дыры есть, то значит, система защиты создавалась неправильно по некоторой фундаментальной причине и эту причину следует обнаружить и устранить. В конце концов, если произвольный человек на форуме способен указать на одну ошибку, есть приличная вероятность того, что на самом деле их двадцать. Цитата:
|
||
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 14.11.2010
Сообщений: 47
|
![]()
1. Мы изменили имена публичных фукнций DLL (там где не получилось сделать internal), но мы не меняли имена многих публичных пропертей (из DLL). Эти проперти используются обфусцированными функциями. Вопрос следующий: не получится ли у взломщика на базе открытых и понятных имен пропертей - дизассемблировать код обфусцированных SmartAssembly функций в читаемый?
2. Мы в коде оставляем много комментариев (в функциях и над ними). Не доступны ли они в конечной сборке?
Автоматизация получения заказов для ВСЕХ ФРИлансеров!
|
![]() |
![]() |
![]() |
#7 | ||
Дружите с Linq ;)
Форумчанин
Регистрация: 15.10.2008
Сообщений: 823
|
![]() Цитата:
Цитата:
Вообще скачать dotPeek, откройте им свои dll и взгляните как это выглядит.
Не давай организму поблажки, каждый день тренируй его в шашки..
![]() |
||
![]() |
![]() |
![]() |
#8 | |
Пользователь
Регистрация: 14.11.2010
Сообщений: 47
|
![]() Цитата:
Автоматизация получения заказов для ВСЕХ ФРИлансеров!
|
|
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Нужны советы программистов | Clarus | Софт | 4 | 11.08.2012 10:45 |
Нужны советы | Nikolai2010 | Работа с сетью в Delphi | 0 | 05.05.2012 14:02 |
Нужны советы... | Makc19977 | JavaScript, Ajax | 18 | 25.02.2012 18:57 |
Нужны советы по созданию механизма активации программы | alexplato | C# (си шарп) | 1 | 01.08.2011 13:37 |
Нужны советы по Java | shkipper | Помощь студентам | 1 | 08.04.2009 02:28 |