В общем пишу программу на Delphi в связке с php. Задача чтобы 1 программу мог использовать только один человек. Как реализовать то что я хочу? На данный момент имееться! 1) Запрос идет на ip адрес а не домен(чтобы не было возможности подменить в hosts) 2) Используется для передачи данных протокол https 3) На каждую программу выдается логин и пароль которые используется для авторизации на моем сервере тип авторизации на сервере Basic Auth, а так же в каждую программу встраивается определенный auth_id. И у каждого пользователя он свой. 4) Если подключаемся первый раз то в базу данных вноситься HardId,WindowsID,серийный номер материнской карты,ип адрес в интернете из которого вычисляем город и страну и тоже добавляем в базу. Все это дело передается в MD5 формате. А так же 1 поле вносятся сумма этих данных в MD5 плюс добаляются некоторые данные. 5) Далее берем запрос из базы все эти данные и сравниваем и если хоть одно из них не идентично то аккаунт банится. Что можно еще добавить или что изменить чтобы получить лучше защиту моего приложения? В данный момент думаю auth_id сделать как второй пароль. Который будет требоваться на сайте после чего будет получаться сессия на 10 минут. И если сессия существует то можно работать с программой. И через каждые 10 минут повторно проводить эту проверку и получать новую сессию.
А если IP динамический? А если нужно юзать софт утром на работе, а днём дома? Выполнения функций будт производится на сервере? Т.е. серверу передаём параметры, а он возвращает результат. Сам результат показываем в программе.
IP используется только для вычисления Города и Страны и сравнения их. Само сравнение ип не происходит. Задача разрешить использовать только на 1 компе. То есть регистрация на 1 комп и все. Да отправляются данные на сервер там происходит запрос к бд. И выдается ответ программе.Далее программа сверяет эти данные и исходя из них выполняет какое действие. Чтобы не было возможности подменить запрос использую протокол HTTPS.
cardons, я имел ввиду выполнение функций программы, а не функций защиты. Ну ты понял P.S.: А что за софт пишешь, если можно в лс
Да функции все выполняются на сервере. Софт пишу для одной игры. А я о чем выше пишу? Вы хоть умнее бы советы давали.
Плохо читали... Юзал и не раз ) Выше цитата Мне кажется это вы плохо знакомы с привязкой к железу. Привязка к железу как раз и создается из данных которые не меняются на компе а именно серийный номер мат.платы и т.д. и на ее основе и создается код для которого требуется потом код авторизации. А если использовать эту же защиту в связке с авторизацией на сервере и где нету возможности подменить данные которые передаются на сервер потому что подмена в hosts в случае работы с ip невозможна то придется писать эмулятор Web сервера и то это возможно в том случае если вам удастся прочесть запросы и ответы которые отправляются на сервер. А если учитывать то что это все дело передается по протоколу HTTPS и используется при этом шифрование к примеру RSA то это практически не возможно.
На данный момент интересуют подсказки. 1) Сделать защиту от использования программы через прокси 2) Сделать защиту от открытия программы в дебаггера типа Olly Debugger. Если такая попытка была моментально бан. Как реализовать?
на счет проверки на отладку под олькой, тут сложно что придумать, так как для нее есть плагины, которые хорошо это дело прячут, а так для ольки 1.10 можно багу заюзать такого вида: Code: procedure OllyBugCall; asm DB $EB,$13,$E2,$07,$C9,$53,$C2,$00,$00,$82,$6D,$F1, $77,$FE,$C5,$6B,$E3,$70,$F6,$00,$00 end; сам код ничего не делает, но олька виснет наглухо при анализе бинарника
Если надо реализовать обнаружения отладчиков в ring 3 то тут так: Установить seh , вызвать DebugBreak и проверить под отладкой или нет.Это конечно только капля в море,но без бряков дебажить прогу будет труднее.Еще делается защита от трассировки и т.п. Что касается softice, тут придется открывать '\\.\NTICE'.если подступаться из ring 3. если там всякие защиты обнаружения стоят,то только драйвер писать.
Спасибо за ответы. Подскажите каким протектором поверх программы пройти? Подойдет любой. Даже платный.