ger_kar писал(а):Хотелось бы реализовать защиту с привязкой к компьютерному железу, ключом и кодом активации. Ключ нужен для учета.
ger_kar писал(а):что если вызов процедур и ф-ций делать по указателю, соответственно адрес будет не статичным, а будет высчитываться на основе кода активации и в случае если все ОК, то вызовы пойдут по нужным адресам и все будет работать, а иначе вызовы просто уйдут в никуда и все весело упадет, выдав неприятное сообщение
Да, но это не самый дешёвый, а в моем случае еще и крайне неудобный вариант.FireFenix писал(а):Пока что самое надёжное - ключ-флешка
Как раз никакого сравнения не будет и условных переходов соответственно тоже. Зато вместо этого адрес перехода будет формироваться динамически (банальный расчет с участием кода активации и хеша данных компьютера) и если что-то не совпадет, то соответственно адрес будет рассчитан неправильно и вызов по этому адресу скорее всего вызовет падение приложения. Причем таком метод теперь без проблем и на VB можно реализовать благодаря волшебным указателям Хакера.FireFenix писал(а):С точки зрения логики - всё равно будет сравнение и в зависимости от условия, переход в различные места.
Diamock писал(а):Эх... Вот если бы можно было сделать сравнение без If-Else и Select Case тогда можно говорить о защите...
FireFenix писал(а):Скажем на md5: md5(md5([серийник харда]), [ключ активации]) == [заложенный ключ]
ger_kar писал(а):Как раз никакого сравнения не будет и условных переходов соответственно тоже. Зато вместо этого адрес перехода будет формироваться динамически (банальный расчет с участием кода активации и хеша данных компьютера) и если что-то не совпадет, то соответственно адрес будет рассчитан неправильно и вызов по этому адресу скорее всего вызовет падение приложения. Причем таком метод теперь без проблем и на VB можно реализовать благодаря волшебным указателям Хакера.
ger_kar писал(а):... И еще мне вот думается, а не стоит ли в реализацию алгоритма MD5 внести заведомые искажения и таким образом, это уже будет "нечто", но не как не MD5. И таким образом если кто-то попытается применить алгоритм MD5, то у него получатся совсем другие данные. Если этого не делать, то очень легко можно просечь, какие данные берутся для привязки, а дальше банальная обработка MD5 и ....
Видимо все-же придется заюзать сравнение, именно для барьера, чтобы ничего не "взорвалось" .FireFenix писал(а):Как минимум необходимо обезопасить переход, чтобы если юзер случайно ошибся в 1 символе - у него всё не "взорвалось"
Я что-то видимо отстал от жизни, разве видяху можно заюзать для этих целей? И насколько я понял основная доля вычислений, как раз и приходится на видяху. Да надо срочно восполнять пробелы и почитать на эту тематику.FireFenix писал(а):На моих GF 9800GTX + Core i5 производительность где-то 350млн/cек + 20млн/cек ~ 400млн/сек паролей
FireFenix писал(а):А теперь посмотрим (тыц)
Извиняюсь за свою дремучесть, но что такое радужные таблицы я в упор не знаюFireFenix писал(а):Конечно, существуют ещё радужные таблицы, но сгенеренных больше чем на 8 символов - не видел.
Это точно, чем "не популярнее" тем лучше, а можно сделать операцию "Ы" и внести мутацию (можно даже кривую ) в популярный алгоритм и тогда уж точно никто не догадаетсяFireFenix писал(а):Чтоб вообще не оставить вариантов, можно заюзать md6 или другой не популярный алгоритм
FireFenix писал(а):Как раз никакого сравнения не будет и условных переходов соответственно тоже. Зато вместо этого адрес перехода будет формироваться динамически (банальный расчет с участием кода активации и хеша данных компьютера) и если что-то не совпадет, то соответственно адрес будет рассчитан неправильно и вызов по этому адресу скорее всего вызовет падение приложения. Причем таком метод теперь без проблем и на VB можно реализовать благодаря волшебным указателям Хакера.
Оно конечно может и дребедень, но все же это гораздо лучше банального сравнения. Если писать на ассемблере, то там можно еще помудрить, но в VB If ... Tnen ... никуда не денешь и любое их количество, да же сильно размазанное по проге за сравнительно небольшой промежуток времени можно подчистить. Причем это сравнительно легко сделать как в отладчике, так и дизассемблером IDA. Что касается динамического вычисления адреса на основе например хеша от оборудования, то здесь дизассемблер уже не очень поможет.Хакер писал(а):Как метод защиты это — святая дребедень.
В данном случае связи по идее будут порушены у большей части процедур/ф-ций. Конечно все порушить невозможно ибо тогда ничего работать не будет и сам алгоритм защиты будет работать по обычной схеме, а вот остальное...Хакер писал(а):FireFenix уже описал метод: строится Execution-Flow-Graph и в нём очень легко обнаружить процедуру, которая сама вызывает дофига, но которую саму не вызывает никто.
ger_kar писал(а):Что касается динамического вычисления адреса на основе например хеша от оборудования, то здесь дизассемблер уже не очень поможет.
Лишь из тех соображений, что вся программа может быть с кучей зависимостей, которые тащить на сервер себе дороже.Почему просто не слать ему полностью скомпилированную программу, которая работала бы только на его машине?
Если уж переходить на ассоциации, то скорее это дощатая хибарка закрытая на дощатую дверь и смысла ставить многослойную бронированную дверь никакого нет. Если говорить предметно, то на самом деле самое узкое место в другом месте, а именно сбор информации об установленном железе и есть та самая сарайка. Потому как запросХакер писал(а):В общем, эта защита уровня «заклеить сейф скотчем».
"SELECT ProcessorId, Revision FROM Win32_Processor"
ger_kar писал(а):Если уж переходить на ассоциации, то скорее это дощатая хибарка закрытая на дощатую дверь и смысла ставить многослойную бронированную дверь никакого нет
А где тогда сейфХакер писал(а):Нет. Не надо переоценивать. Именно скотчем.
Что-то у меня даже в голове такое не очень укладывается, а уж до реализации... Вобщем пока это не мой вариант.Хакер писал(а):Достойная защита, это когда куча процедур, которые вызываются и никогда не возвращают управление.
Какое диковинное и прикольное название "чунка" - мне очень понравилось. А что до дальнейшего, то вряд ли такое можно на VB реализовать, в отличии от моего варианта. Кроме всего прочего при такой реализации трудоемкость реализации и соответственно стоимость защиты превысит стоимость самого продукта. Такое вариант, если уж и реализовывать, то как отдельный продукт для многократного применения.Хакер писал(а):весь полезный код разбивается на чунки. Чунки перекодируются таким образом, что код чунка работает так:
А само приложение не будет при этом глючить и само загибаться? И будет ли такое возможно с приложением VB?Хакер писал(а):Вообще, под x86 системой Native API предоставляет одну очень интересную возможность, позволяющую в принципе создать внутри процесса такую среду, что любой отладчик загнётся там от «не-нормальности мира».
Antonariy писал(а):4) Вызовы этих функций сделать так: CallByName(obj, Decode(FUNC_GETDATA), ...).
ger_kar писал(а):А что до дальнейшего, то вряд ли такое можно на VB реализовать, в отличии от моего варианта
ger_kar писал(а):И будет ли такое возможно с приложением VB?
Все очень просто. Раздел не привязан к языку, и то что я собираюсь сочинить тоже, но сочинить я хочу такую защиту, которую с минимальными переделками можно реализовать в С, PB и естественно в VB. Здесь собственно идет речь об алгоритме, который к языкам не привязан, но тем не менее для меня очень важно, что-бы это потом потенциально можно было и в проектах на VB применять. А иначе только и придется, что заниматься изобретением очередных велосипедов. Кстати на защиту у меня времени тратится уже больше, чем на само изделие.Хакер писал(а):Я не понимаю. Не понимаю одного.Раздел по Windows API, к языку вообще никак не привязанный. Но все говорят только о VB:
ger_kar писал(а):Какое диковинное и прикольное название "чунка" - мне очень понравилось.
Вернуться в Windows-программирование
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4