Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.08.2013, 18:12   #11
bakanaev
Форумчанин
 
Регистрация: 27.03.2012
Сообщений: 438
По умолчанию

Цитата:
Добавляем к этому особый алгоритм генерации ответов сервера, который внешне кажется случайным и, основываясь на проверке этих ответов, размазываем кое какие не очевидные сюрпризы по программе.
Расскажите пожалуйста тут подробней. Очень интересно. Спасибо
bakanaev вне форума Ответить с цитированием
Старый 11.08.2013, 18:29   #12
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
По умолчанию

Цитата:
Сообщение от саша40 Посмотреть сообщение
Записываешь кое-какие данные(рандомные) в ключи реестра и от туда ссчитываешь. Или генерируешь код активации в программе и хранишь в реестре. При проверке, от туда его проверяешь.
Настолько толстый троллинг что даже пИчально становится
Lime вне форума Ответить с цитированием
Старый 11.08.2013, 19:36   #13
zumm
БохЪ
Форумчанин
 
Аватар для zumm
 
Регистрация: 30.09.2009
Сообщений: 724
По умолчанию

Цитата:
Расскажите пожалуйста тут подробней. Очень интересно. Спасибо
К примеру: пускай программа обращается к серверу раз в три минуты, что бы сообщить о том, что ключ занят. Она отсылает ключ и сигнатуру (forward declaration). Сервер проверив и ключ и сигнатуру, генерирует и возвращает новую сигнатуру программе.

Пускай эта сигнатура генерируется особым алгоритмом, таким, что бы она каждый раз была разной, но имела какую то неявную закономерность. Самый простой пример - в ней всегда четное количество гласный букв, а начало совпадает с началом md5 хеша ip адреса машины с которой она была запрошена.
(Еще раз подмечу крайнюю ненадежность этого примера).

Зная эту закономерность, внутри программы можно каждый раз проверять подлинность сигнатуры. И активно это использовать. Например в самом интересном месте работы программы, внезапно, выдать совершенно левую ошибку и отказаться работать дальше.

С виду эта сигнатура - случайный набор символов. Если взломщик решил писать свой сервер, он с вероятностью 90% не станет разбираться как генерируется эта сигнатура. Главное достаточно надежно замаскировать такие проверки.
В планах порабощение вселенной...
zumm вне форума Ответить с цитированием
Старый 11.08.2013, 20:06   #14
Kix.IV
Участник клуба
 
Регистрация: 11.08.2012
Сообщений: 1,226
По умолчанию

В ходе темы, ТС ни разу не отписался, зато за него всё уже решили.
Метод защиты действительно не эффективный. Мало того, что его легко обойти, так он ещё и пользователю мешает(в случае смены железа).

zumm, способ хороший, но очень затратный. Для мелких проектов не потходит. К тому же автору нужно готовую либу для защиты, а не теорию хорошой защиты.
Kix.IV вне форума Ответить с цитированием
Старый 12.08.2013, 00:17   #15
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,442
По умолчанию

Цитата:
Получается довольно надежно. Кул хацкерам для взлома придется написать свой сервер + разгадать метод шифрования и расшифровать библиотеку. Добавляем к этому особый алгоритм генерации ответов сервера, который внешне кажется случайным и, основываясь на проверке этих ответов, размазываем кое какие не очевидные сюрпризы по программе. Время которое придется потратить на взлом будет непомерным, мало кто решит с этим возиться.
А зачем мне сидеть и что-то там раскодировать?
Выудил "контрольные методы", и там перед ret прописал:
mov eax, 1
ret


И глубоко пофигу на то, что происходит в самой функции.

Все. В дизассемблере неплохо так видно как движется программа когда нет ключа, и очень хорошо видно, какие места программа обходит стороной. Там байтик с ожидаемого 00 на 01 заменил, тут результат функции изменил, там патч прописал. Вот и все.

И выудить лакомое место довольно просто! Достаточно найти строку "Вы успешно зарегистрированы!" ну или что-то типа того. Потом поставить бряк перед недалеким cmp.

Сломать сетевое ПО сложно, когда ему нужно сохранить функциональность, да и то, его ломают уже недели через 2. К примеру тот же MS Office и Windows в целом.

Последний раз редактировалось Человек_Борща; 12.08.2013 в 00:20.
Человек_Борща вне форума Ответить с цитированием
Старый 12.08.2013, 12:10   #16
Kix.IV
Участник клуба
 
Регистрация: 11.08.2012
Сообщений: 1,226
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
А зачем мне сидеть и что-то там раскодировать?
Выудил "контрольные методы", и там перед ret прописал:
mov eax, 1
ret


И глубоко пофигу на то, что происходит в самой функции.

Все. В дизассемблере неплохо так видно как движется программа когда нет ключа, и очень хорошо видно, какие места программа обходит стороной. Там байтик с ожидаемого 00 на 01 заменил, тут результат функции изменил, там патч прописал. Вот и все.

И выудить лакомое место довольно просто! Достаточно найти строку "Вы успешно зарегистрированы!" ну или что-то типа того. Потом поставить бряк перед недалеким cmp.

Сломать сетевое ПО сложно, когда ему нужно сохранить функциональность, да и то, его ломают уже недели через 2. К примеру тот же MS Office и Windows в целом.
Я думаю там как минимум будет протектор и все строки будут закодированы. Такая защита в первую очередь сделана от кейгенов.
Kix.IV вне форума Ответить с цитированием
Старый 08.03.2014, 18:22   #17
bakanaev
Форумчанин
 
Регистрация: 27.03.2012
Сообщений: 438
По умолчанию

апну темку.
zumm Вы писали
Цитата:
Что бы защищаться от внедрения в exe можно скачивать с сервера какую нибудь необходимую информацию. На моем примере, это библиотека с константами, которую сервер шифрует при помощи пользовательского ключа, а программа на своей стороне расшифровывает эту библиотеку и грузит ее в память, не сохраняя на диск.
Вы можете более детально расписать как происходит шифрование dll на сервере? и как вы грузите расшифрованную dll не сохранив ее перед этим на диск?

Спасибо за ответы)
bakanaev вне форума Ответить с цитированием
Старый 08.03.2014, 18:46   #18
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,442
По умолчанию

Схема дырявая
Ключ для расшифровки-то у клиента....
Выхватил эту dll'у и все.
Человек_Борща вне форума Ответить с цитированием
Старый 08.03.2014, 18:49   #19
bakanaev
Форумчанин
 
Регистрация: 27.03.2012
Сообщений: 438
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Схема дырявая
Ключ для расшифровки-то у клиента....
Выхватил эту dll'у и все.
))) Есть что предложить взамен ?
мне метод zumm нравится
bakanaev вне форума Ответить с цитированием
Старый 08.03.2014, 19:24   #20
zumm
БохЪ
Форумчанин
 
Аватар для zumm
 
Регистрация: 30.09.2009
Сообщений: 724
По умолчанию

bakanaev, зашифровать библиотеку можно каким угодно обратимым алгоритмом. Хоть переXORить с ключом. Для пущего эффекта можно и сигнатуру (описанную выше) приплести, что бы каждый раз шифр разным выходил. Еще лучше добавить лишних данных, что бы длина шифровки была переменной.

По поводу использования библиотеки не сохраняя на диск: просто оставлять ее в памяти. Можно обойтись и без библиотеки.

Хорошо если у вас не просто какие-то константные значения, а жизненно необходимые программе функции. Можно пойти еще дальше, и передавать уже не библиотеку, а сами эти функции (предварительно скомпилированные и зашифрованные, конечно).

Или даже еще дальше. Можно расшифровывающую функцию передавать вместе с шифрованными данными (естественно шифровать ее другим алгоритмом или не шифровать вообще), вот хацкер удивится.

Человек_Борща, да, согласен. Но это пока все что мне пришло в голову. На моем опыте метод оказался эффективен: мой софт перестали ломать после того как я перешел на вот такую вот защиту.
В планах порабощение вселенной...
zumm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Лицензионная политика Sweta Помощь студентам 0 07.12.2011 01:29
Защита отключение программ Simbad Безопасность, Шифрование 1 15.08.2011 15:06
Защита от нещелательных программ Pigoreva Помощь студентам 9 27.05.2011 00:01
Лицензионная версия Delphi Lokos Софт 11 28.09.2010 16:57