защита данных.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
ExiliM
Новичок
Новичок
Аватара пользователя
 
Сообщения: 47
Зарегистрирован: 22.02.2010 (Пн) 4:41

защита данных.

Сообщение ExiliM » 10.05.2010 (Пн) 7:30

Имеется бд. Структура мной придуманная, но это не суть.
В состав проги пока входит 3 файла(Сама прога, и 2 файла, представляющие собой разъеденённую активикс библу, при чём зашифрованную двумя способами)
В общем я придумал способ хранения оной вот какой:

При запуске эксе оба куска расшифровываются и склеиваются...Затем при помощи позднего связывания (CreateObject) я использую функцию проверки прав пользователя, и если всё успешно, то генерирую бд. Является ли такой способ защиты нормальным? (всмысле защиты от отладчика)

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: защита данных.

Сообщение iGrok » 10.05.2010 (Пн) 12:39

ExiliM писал(а):Является ли такой способ защиты нормальным? (всмысле защиты от отладчика)

Ну куда-то же она кладётся, расшифрованная и склеенная? Значит там её можно найти, и дальше делать с ней всё, что душе угодно...
label:
cli
jmp label

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: защита данных.

Сообщение Хакер » 10.05.2010 (Пн) 12:40

позднего связывания (CreateObject)

Опять.

Напоминаю, что CreateObject не имеет никакого отношения к позднему связыванию.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

hclubmk
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 240
Зарегистрирован: 19.06.2009 (Пт) 14:23
Откуда: От-туда

Re: защита данных.

Сообщение hclubmk » 10.05.2010 (Пн) 12:48

В PECompact есть загрузчик anti-debug
...that offers enhanced protection against reverse-engineering

интересно было-бы выслушать мнения.
Научились ли Вы радоваться трудностям?

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Re: защита данных.

Сообщение Twister » 10.05.2010 (Пн) 13:16

В PECompact есть загрузчик anti-debug <...> интересно было-бы выслушать мнения.
Достаточно юзать не OllyDbg и иже с ним, а удаленную отладку с помощью WinDbg. И половина anti-debug трюков сразу станут нерабочими. Ну а по поводу навесных защит рассуждать можно долго. Где-то они эффективны, где-то нет. PECompact к числу надежных, имхо, не относится.

Является ли такой способ защиты нормальным? (всмысле защиты от отладчика)
Всмысле защиты от копирования/просмотра информации, имел ввиду автор? Ибо я не пойму, при чем тут шифрование базы данных и антиотладка. Впрочем, Вы можете выложить свое поделие и подвергнуть его испытанию ;)
А я все практикую лечение травами...

ExiliM
Новичок
Новичок
Аватара пользователя
 
Сообщения: 47
Зарегистрирован: 22.02.2010 (Пн) 4:41

Re: защита данных.

Сообщение ExiliM » 10.05.2010 (Пн) 19:17

iGrok, кладётся, но как только выполняется функция, то сразу же удаляется и разрегистрируется. Т.е если понял намёк, то легко можно вычислить куда именно сохраняется?

Хакер, странно, вбивал в поиске позднее связывание, выводится в основном посты про CreateObject

Twister, я пытаюсь сделать так, что б взломщик не узнал куда именно сохраняется база, и каким алгоритмом шифруется. Потом осуществляется проверка crc, энтропии и т.д, если не совпадает, то уже другой разговор.

з.ы Просто как я выяснил, при дизассемблировании программы, написанной на vb6, достаточно легко ищутся места проверки логина, пароля и т.д...вообщем того места, после которой пользователь получает полный контроль над программой. (Очень легко, безусловным переходом обходятся такие команды, как If, If Instr(), Select Case и т.д) Вот я и хотел , что б это было труднее сделать.

з.з.ы. Может быть попробовать реализовать рашифровку "на лету"? Но не совсем понимаю как это делается..

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: защита данных.

Сообщение iGrok » 10.05.2010 (Пн) 22:50

Разумеется, легко можно выяснить, куда оно кладётся. И даже приостановить в этот момент выполнение твоей программы, чтобы она не успела удалить файл. Или отнять права на удаление - дать только на создание. В общем, заполучить код компонента - не проблема.

Далее, если база создаётся, чтобы с ней работать, а не чисто для того, чтобы создать и забыть - значит к ней есть обращения из программы, и можно отследить, где она.

Как и что лучше защищать - в поиск по форуму. Обсуждалось неоднократно.
label:
cli
jmp label

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: защита данных.

Сообщение Хакер » 10.05.2010 (Пн) 23:21

Хакер, странно, вбивал в поиске позднее связывание, выводится в основном посты про CreateObject

Так это давно открытый мною принцип: «Один придурок написал чушь, сто — скопировали».

Понятие связывание относится только к вызовам членов класса. Когда есть вызов члена, можно говорить о связывании (раннее или позднее, и если позднее, то какое (есть два типа)). CreateObject только создаёт объект. О каком тогда связывании может идти речь?

Ну разумное критическое мышление должно же быть, а не только вбивание в поиска.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: защита данных.

Сообщение SLIM » 10.05.2010 (Пн) 23:32

Хакер писал(а):Понятие связывание относится только к вызовам членов класса. Когда есть вызов члена, можно говорить о связывании (раннее или позднее, и если позднее, то какое (есть два типа)). CreateObject только создаёт объект. О каком тогда связывании может идти речь?

Я думаю имелось в виду связывание в другом плане. Например CreateObject "свяжет" текущее приложение с COM-сервером, и сделает это после вызова данной функции. Чем тебе не позднее связывание? И почему ты так жестко привязал связывание к членам класса, и ни к чему кроме?
Пишите жизнь на чистовик.....переписать не удастся.....

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: защита данных.

Сообщение Хакер » 10.05.2010 (Пн) 23:55

Потому что есть устоявшиеся термины.
Есть термин связывание в программировании вообще. Отсюда пошли statically- и dynamically link library.
Есть термин связывание в ООП — то же самое, но уже более частные для ООП случаи. ООП всё таки Математическая формула: \in программированию.
Есть термин связывание в свете COM — опять же, то же, но уже совсем частный случай — всё что в COM не наблюдается вообще здесь уже не обсуждается, и остаётся только два вида связывания: раннее и позднее.

Поскольку здесь было сказано не просто «связывание», а именно «позднее связывание», можно смело судить, что никакие иные связывания, вроде придуманного тобою связывание клиента и сервера метафизическими узами маршаллинга, в виду не имелись. А так же потому, что это одна из часто встречаемых ошибок.

Вообще, мог бы что-нибудь более умное придумать в защиту своего подзащитного. А то ведь фразы-то какие: слово «свяжет» в кавычках, как бы намекающее на некую неуловимость явления, «после вызова функции», намекающее, что некоторые иные функции умеют по-телепатски выполнять свою задачу ещё до того, как будут вызваны.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: защита данных.

Сообщение SLIM » 11.05.2010 (Вт) 0:44

Хакер писал(а):Потому что есть устоявшиеся термины.
Есть термин связывание в программировании вообще. Отсюда пошли statically- и dynamically link library.
Есть термин связывание в ООП — то же самое, но уже более частные для ООП случаи. ООП всё таки Математическая формула: \in программированию.
Есть термин связывание в свете COM — опять же, то же, но уже совсем частный случай — всё что в COM не наблюдается вообще здесь уже не обсуждается, и остаётся только два вида связывания: раннее и позднее.

Ну ты приведи по всем трем случаям примеры хоть.
Хакер писал(а):Вообще, мог бы что-нибудь более умное придумать в защиту своего подзащитного. А то ведь фразы-то какие: слово «свяжет» в кавычках, как бы намекающее на некую неуловимость явления, «после вызова функции», намекающее, что некоторые иные функции умеют по-телепатски выполнять свою задачу ещё до того, как будут вызваны.

Мне думается что здесь имелось в виду связывание в смысле связывания, например, dll-модуля. Поэтому и привожу в кавычках, потому что связывание - это когда два независимых объекта связываются тонкой ниткой, но единым не становятся.
По поводу "после вызова функции" - связывание произойдет во время выполнения функции а не после, поэтому это и было сказано с осторожностью, так как принять на веру "после" легче.
Пишите жизнь на чистовик.....переписать не удастся.....

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: защита данных.

Сообщение Хакер » 11.05.2010 (Вт) 0:50

SLIM писал(а):Ну ты приведи по всем трем случаям примеры хоть.

Делать мне нечего.


связываются тонкой ниткой, но единым не становятся.

Какой ещё ниткой? Не придумывай.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: защита данных.

Сообщение SLIM » 11.05.2010 (Вт) 1:21

[offtopic]
Хорошо что разговор закончился так
[/offtopic]
Пишите жизнь на чистовик.....переписать не удастся.....

ExiliM
Новичок
Новичок
Аватара пользователя
 
Сообщения: 47
Зарегистрирован: 22.02.2010 (Пн) 4:41

Re: защита данных.

Сообщение ExiliM » 13.05.2010 (Чт) 10:21

Пробовал вводить в поиск разные ключевые слова, но всё без толку..вариант защит отпадает через 1-2 сообщения в найденных мной топиках, т.к уже не актуальные. iGrok, будьте добры, приведите пару ссылок.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: защита данных.

Сообщение jangle » 13.05.2010 (Чт) 11:14

ExiliM - а тебе от кого надо защитить программу? Если от девочки секретарши, то может еще прокатит. Но если девочка умная, она позовет админа. А одмин обязательно знает о существовании сайтов типа краклаб.ру где бесплатно ломают программы всем желающим. Спорт там у людей такой. Админ выложит твою программу на кракерский сайт, где ее сломают за 5 минут. Так что лучше не занимайся глупостями с "защитой", а совершенствуй свою программу.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: защита данных.

Сообщение iGrok » 13.05.2010 (Чт) 11:16

viewtopic.php?f=1&t=41530
И далее по ссылкам.

В частности:
viewtopic.php?f=1&t=20643
label:
cli
jmp label

ExiliM
Новичок
Новичок
Аватара пользователя
 
Сообщения: 47
Зарегистрирован: 22.02.2010 (Пн) 4:41

Re: защита данных.

Сообщение ExiliM » 13.05.2010 (Чт) 15:43

Админ не выложит, ибо будет наказан) т.к в бд будет храниться грубо говоря коммерческая тайна фирмы.

Ладно, вопрос тогда такой...нужна хотя б небольшая защита от отладчика. На сколько я понимаю, то при запуске проги через отладчик, программа естественно висит в памяти, но вот вопрос: Когда её запускают из под отладчика, это можно как то отследить?

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: защита данных.

Сообщение Денис » 13.05.2010 (Чт) 16:00

Используйте защиту такого плана:

1. Генерируем лицензионный ключ с контрольными суммами и идентификаторами.
2. В каждую процедуру функцию или метод объекта в своем приложении добавляем параметр Key
Пример:
Код: Выделить всё
Sub CommandButton1_Click()
    'MainKey as String - это хэш из нашего ключевого файла. Читается в публичную переменную при загрузке приложения
    Call CommandButton1_SecureClick(MainKey)
End Function

3. В каждой Secure-функции параметр MainKey сравнивается с эталоном. Да, этот момент и ищут крякеры, но он будет размазан по всей программе и стоимость взлома во много крат превысит стоимость программы.
4. Всё! Суперзащита! Главное помнить, что сравнение должно многократно дублироваться в функциях (ни в коем случае нельзя рефакторить его в отдельную функцию). Есть предположение, что компилятор может произвести рефакторинг сам, в таком случае юзаем обфускатор.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

ExiliM
Новичок
Новичок
Аватара пользователя
 
Сообщения: 47
Зарегистрирован: 22.02.2010 (Пн) 4:41

Re: защита данных.

Сообщение ExiliM » 13.05.2010 (Чт) 16:09

Код: Выделить всё
'Допустим я запихиваю crc в ключ
Key = Crc(arr())


Не понятно, что такое:
Код: Выделить всё
SecureClick

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: защита данных.

Сообщение Денис » 13.05.2010 (Чт) 16:24

ExiliM писал(а):
Код: Выделить всё
'Допустим я запихиваю crc в ключ
Key = Crc(arr())


Не понятно, что такое:
Код: Выделить всё
SecureClick


Постараюсь объяснить:

Код: Выделить всё
Private Sub CommandButton1_Click()
    Call CommandButton1_SecureClick(MainKey)
End Function

Private Sub CommandButton1_SecureClick(MainKey as String)
    EtKey = Crc(Etalon())   
    if MainKey = EtKey then
        'Выполняем код, который до этого выполнялся в CommandButton1_Click
    else
        'Ничего не делаем. Нельзя здесь выводить никаких предупреждающих сообщений.
        'Программа должна просто ничего не делать.
    End if
End Sub
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

ExiliM
Новичок
Новичок
Аватара пользователя
 
Сообщения: 47
Зарегистрирован: 22.02.2010 (Пн) 4:41

Re: защита данных.

Сообщение ExiliM » 13.05.2010 (Чт) 16:31

понял, я думал что ещё за действие СекретныйКлик у кнопки ), оказывается это просто процедура с дублированным именем, с моим параметром, ясно.
Значит, что, я в каждой функции/процедуре, должен проверять crc и вписывать в mainkey..понятно, спасибо...и наверное желательно, что б при этом были какие-то лишние действия? и алгоритм получения crc хотя б немного отличался?

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Re: защита данных.

Сообщение Twister » 13.05.2010 (Чт) 16:35

Код: Выделить всё
'MainKey as String - это хэш из нашего ключевого файла. Читается в публичную переменную при загрузке приложения
Call CommandButton1_SecureClick(MainKey)
Угу. Подменяем значение глобальной переменной и преспокойно работаем ;)

Я бы рекомендовал задействовать подобный метод не для всех подряд процедур приложения, а только для ключевых. При чем "MainKey" я бы каждый раз получал заново. И не отдельной функцией, а прямо в коде процедур.
А я все практикую лечение травами...

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: защита данных.

Сообщение jangle » 13.05.2010 (Чт) 16:42

ExiliM писал(а):Значит, что, я в каждой функции/процедуре, должен проверять crc и вписывать в mainkey..понятно, спасибо...и наверное желательно, что б при этом были какие-то лишние действия? и алгоритм получения crc хотя б немного отличался?


Функция которая считает CRC пропатчивается кракером и теперь всегда возвращает нужно значение, поставь хоть миллион проверок в коде. Время взлома 5 минут. Стоимость взлома - дешевле бутылки пива.

ExiliM
Новичок
Новичок
Аватара пользователя
 
Сообщения: 47
Зарегистрирован: 22.02.2010 (Пн) 4:41

Re: защита данных.

Сообщение ExiliM » 13.05.2010 (Чт) 16:45

я и не говорю, что буду писать только crc, да и плюс сумма будет меняться постоянно, я думаю запарятся менять?

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: защита данных.

Сообщение jangle » 13.05.2010 (Чт) 16:54

ExiliM писал(а):я думаю запарятся менять?


Если за взлом твоей программы кто-то заплатит хотя бы 20-30 долларов, то не запарятся менять. 20 баксов за 10 минут работы в отладчике хорошая цена.

ExiliM
Новичок
Новичок
Аватара пользователя
 
Сообщения: 47
Зарегистрирован: 22.02.2010 (Пн) 4:41

Re: защита данных.

Сообщение ExiliM » 13.05.2010 (Чт) 17:03

Не, всё равно видимо не так понял. У меня есть база, и есть приложение.

Приложение считает crc базы данных(!), entropy, + например средствами wmi, я получу серийник процессора. И, как предложил Денис, я генерирую эл.ключ. Который и проверяю практически на всех участках программы. Соответственно, даже если изменили сумму 1 раз и проработали в проге, занеся ещё несколько записей в бд, сумма изменится. И при последующем запуске снова не захочет робить.

з.ы возник ещё 1 вопрос, возможна модификация программы при выполнении? например подменить сумму, на обратную?

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: защита данных.

Сообщение Antonariy » 13.05.2010 (Чт) 21:30

з.ы возник ещё 1 вопрос, возможна модификация программы при выполнении? например подменить сумму, на обратную?
Полиморфизм? Теоретически да, практически (на VB) сомневаюсь.

Автор, пойми, все твои ухищрения для крякера равнозначны записке на двери "Ключ под ковриком". Уже на обсуждение защиты ты потратил времени и денег (на интернет) больше, чем потребуется крякеру. Либо ты защищаешь от дурака простейшим пришедшим в голову способом, либо не защищаешь совсем.
Лучший способ понять что-то самому — объяснить это другому.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: защита данных.

Сообщение Денис » 13.05.2010 (Чт) 22:13

Twister писал(а):Угу. Подменяем значение глобальной переменной и преспокойно работаем ;)

Лол нет, в глобальную переменную кладем данные из ключевого файла (который можно и блокнотом открывать, например).
Twister писал(а):Я бы рекомендовал задействовать подобный метод не для всех подряд процедур приложения, а только для ключевых. При чем "MainKey" я бы каждый раз получал заново. И не отдельной функцией, а прямо в коде процедур.


Ну, насчет для ключевых, это от трудолюбия кодера зависит.
А получать мы будем не MainKey, я повторяюсь, а EtalonKey. Который, да, рассчитывается в каждой криптованной процедуре отдельно. И желательно разными алгоритмами.

ExiliM писал(а):Приложение считает crc базы данных(!), entropy, + например средствами wmi, я получу серийник процессора.

Я надеюсь, это все не занимает много времени? Иначе программа несколько затормозится в работе.

jangle писал(а):Функция которая считает CRC пропатчивается кракером и теперь всегда возвращает нужно значение, поставь хоть миллион проверок в коде.

CRC считаться будет не в отдельной функции, а во всех криптованных функциях. В коде будет не миллион проверок, а миллион блоков избыточного кода.
Теперь оцени стоимость взлома?
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: защита данных.

Сообщение jangle » 13.05.2010 (Чт) 22:40

Денис писал(а):CRC считаться будет не в отдельной функции, а во всех криптованных функциях. В коде будет не миллион проверок, а миллион блоков избыточного кода.
Теперь оцени стоимость взлома?


Да хоть миллиард блоков :) Глупостями заниматься никто не запрещает. Все твои блоки будут пропатчены одним макросом в дебагере, скриптами, или самописной тулзой. Стоимость взлома по-прежнему бутылка пива.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: защита данных.

Сообщение jangle » 13.05.2010 (Чт) 22:46

ExiliM писал(а):Не, всё равно видимо не так понял. У меня есть база, и есть приложение.

Приложение считает crc базы данных(!), entropy, + например средствами wmi, я получу серийник процессора.


Определение серийника процессора можно отключить в BIOS. А еще можно сделать так, что твоя программа получала всегда тот номер, который захочет кракер. 111111 или 22222 или 0 без разницы.

з.ы возник ещё 1 вопрос, возможна модификация программы при выполнении? например подменить сумму, на обратную?


Да возможно. Но что помешает пропатчить твою программу еще до выполнения?

След.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 25

    TopList