|
10 / 0 / 0
Регистрация: 05.06.2015
Сообщений: 4
|
|
Защита программы от повторного использования05.06.2015, 23:00. Показов 1463. Ответов 10
Метки нет (Все метки)
Всем привет, пожалуйста не ругайтесь за дублирование темы, я видел несколько созданных тем про подключение формы vb.net к удаленной базе данных. Но я так и не понял решение проблемы. И что, если нельзя подключиться к удаленной бд из формы, как можно защитить свою программу?
Подскажите пожалуйста какой нибудь действенный способ защитить программу? Я написал программу, на которой есть форма авторизации, регистрации, и добавления в бд записи на тот момент когда программа включена, т.е. когда пользователь залогинился, в базе записывается флаг что программа запущена. И если с этим ключом еще кто-то логинится одновременно с другого компа тогда происходит проверка по бд, проверка видит что уже программа включена где-то и не пускает второго пользователя с этим ключом. Но вот беда.. локально красиво все работает, но на хостинге нет возможности из vb.net соединяться к базе. т.е. соединяться то можно но только статическому ip, т.е. нескольким юзерам уже не подключиться никак, да и в принципе невозможно это, т.к. на хостинге необходимо добавить ip для которого хотим получить доступ для удаленного подключения.. я естественно никаких ip не знаю... Может есть какие то мысли на этот счет? я что-то никак не могу понять как другие защищают свои программы, неужели нет возможности сделать регистрацию и авторизацию в программе на vb.net в удаленную базу данных... это просто в уме не укладывается... Или есть какие то другие принципы с работой с удаленной бд? Пожалуйста, если не трудно расскажите... я столько времени убил на этот механизм... неужели придется все переделывать(((
0
|
|
| 05.06.2015, 23:00 | |
|
Ответы с готовыми решениями:
10
Простейшая защита программы: где хранить число срабатываний программы? Защита программы от нелицензионного использования Защита программы от нелегального использования |
|
147 / 147 / 41
Регистрация: 01.12.2009
Сообщений: 275
|
||
| 06.06.2015, 01:08 | ||
|
0
|
||
|
Администратор
|
||||
| 06.06.2015, 04:36 | ||||
|
2
|
||||
|
1548 / 1521 / 325
Регистрация: 03.10.2012
Сообщений: 1,551
|
|||
| 07.06.2015, 23:47 | |||
Сообщение было отмечено vadimnev как решение
РешениеСмысл его в том, что приложение посылает ключ доступа не запросом к удаленной базе данных, а скрипту, который принимает данные, осуществляет связь с БД, и возвращает результат в приложение. Преимущества данного способа: Не нужен белый IP, да и вообще никаких IP не нужно (вы ведь не можете знать IP пользователей вашего приложения) "Почти готовое" потому что надо немного подправить код скрипта для соответствия полям вашей БД и удалить лишнее (у меня там используются 3 аргумента, а вам достаточно одного - ключа доступа).
1
|
|||
|
10 / 0 / 0
Регистрация: 05.06.2015
Сообщений: 4
|
|
| 08.06.2015, 09:22 [ТС] | |
|
Спасибо mrCrown!
Да, оказывается у меня изначально была ошибка с подходом к этой теме(( Я делаю первую программу для людей и не знал как правильно делать. А хостинг делает все правильно, в целях безопасности закрывают доступ к удаленному подключению. Существует технология WEB API Для тех кто столкнулся с такой-же проблемой, смысл заключается в следующем: создается пакет скриптов к которым обращаются клиентские приложения (Windows Forms, WPF, Silverlight), эти скрипты уже в свою очередь загружаются на сервер и работают с базой. В моем случае база данных MySql и ASP.NET не подходит, для сервера я использую PHP. ( очень хороший и работающий пример, связка PHP+MySql+VB.NET ) PHP скрипты работают точно так-же как с обычными формами на HTML, обычные методы GET POST, а в Windows Forms отправляются все данные из формы по ссылке с параметрами. Думаю данный метод очень логичный и надежный. P.S. А я когда локально работал с базой в самой Windows Forms, там даже подключения к базе толком нет, подключал через костыли (Устанавливал на машину MySql Connector потом уже появляется возможность работать с БД) Но все равно всем спасибо за ответы и рекомендации! Всем удачной рабочей недели!
0
|
|
| 08.06.2015, 09:26 | |
|
Не по теме: нескромный вопрос... а при вылете программы у пользователя -получиться что ключ потерян ??? и как - делать программный сброс по таймингу на стороне хоста ???
0
|
|
|
10 / 0 / 0
Регистрация: 05.06.2015
Сообщений: 4
|
|
| 08.06.2015, 11:20 [ТС] | |
|
Shadik, ну при вылете программы и даже если прямые запросы в базу будете делать, ключи будут теряться. Вообще критических ошибок лучше не допускать, обрабатывайте ошибки комбинацией try
Не думаю что по таймауту хороший подход сбрасывать ключи, допустим клиент открыл программу запустил и остановил сам, и через какое-то время у вас сбросится ключ. Думаю это не очень красиво по отношению к пользователю. Хотя я может и не прав, в Total Comander соединение по FTP сделано именно так, если программа не активна в течении какого-то времени соединение сбрасывает и необходимо коннектиться заново P.S. Вообще думаю что в php есть функция timeout, вот первый попавшийся материал, в принципе можно использовать и stream_set_timeout() после какого-то времени запускать принудительное обнуление всех параметров какие вам необходимо обнулять.. Но тогда пользователь не сможет использовать Ваше приложение пока эта функия не сработает. Если я ошибаюсь не судите строго я тоже начинающий разработчик, боевых приложений не писал, кто знает поправьте если я не прав. Любой критике и советам буду очень рад!
0
|
|
|
399 / 318 / 53
Регистрация: 14.08.2014
Сообщений: 1,010
|
||
| 08.06.2015, 16:28 | ||
Я посмеялся от души. Нет, не над Вами, а над тем, как порой люди легко заблуждаются и думают, что нашли хорошее решение.Я ни в коем случае не пытаюсь никого задеть или как-либо оскорбить, напротив, хотелось бы уберечь от ошибок, поэтому прочитайте пожалуйста текст ниже... vadimnev, я хотел бы просветить Вас относительно затеи с сервером и относительно того, что Вы посчитали этот вариант надежным. Не хочу Вас расстраивать, но к сожалению этот метод абсолютно ненадежный! Сервера, передача ключей, всё это конечно хорошо, но не надежно. Более того, ломается за 5 минут. Я поясню как... (прошу заметить, что я не являюсь профи крякером или реверсером, но опыт полученный в схожей сфере позволит мне без труда обойти эту защиту) 1. Запускаем программу и начинаем проходить процедуру получения ключа. Перед этим я запустил бы сниффер. 2. Перехватываем сниффером пост запрос, который отправляет Ваша программа на сервер и смотрим, что возвращает сервер (скрипт) в ответ. 3. Если код программы не обфусцирован, то вскрываем ее рефлектором. 4. Находим строку с адресом куда отправляется пост запрос на скрипт и ставим туда адрес на свой липовый сервер(обманку), на котором простенький скрипт, который всегда возвращает True (или что там у Вас отвечает сервер при удачной активации). 5. Считай дело в шляпе! Теперь, что не отправь, наш сервер-обманка всегда говорит программе, что все ок, всё True и кулЛ. Всё, программа взломана и может быть использована на любом количестве компьютеров, с любыми введенными ключами. Второй вариант взлома. Если на код программы накинут прот (обфускация, криптовка и прочий кряхтеж), то я бы даже не стал тратить свое время, пользоваться рефлектором и что-то там искать в коде и править. Я сделал бы проще. Нафиг мне сидеть дебажить километры запутанного и не читаемого кода? Есть вариант проще! 1. Так же перехватываем сниффером пост запрос, смотрим адрес скрипта. 2. Идем в файл хостс и прописываем адрес сервера Вашего скрипта, тем самым мы перенаправим пост запрос на локальный. На локалке кидаем тот же скрипт-обманку. 3. Запускаем программу, она за счет файла хостс отправляет пост запрос на мой локальный скрипт-обманку и дело в шляпе, программа опять взломана. Есть еще как минимум несколько способов взломать привязку к серверу, но они уже более хардкорные и нужно будет задействовать шеснадцатиричные редакторы и OllyDbg Подводя итог, могу сказать одно, что, если программа серьезная, то без обид, но вышеописанный метод защиты для школоты. Я не реверсер, но с момента запуска и до момента отвязки программы пройдет не более 10 минут, я ее взломаю. Опытный реверсер снимет подобную защиту вовсе за несколько минут. Но есть и хорошие новости. Защитить программу с помощью сервера всё же можно, но решение будет более сложным и я не буду его здесь описывать, дабы не давать пищу для ума тем же реверсерам и крякерам, хер им!
4
|
||
|
10 / 0 / 0
Регистрация: 05.06.2015
Сообщений: 4
|
|
| 08.06.2015, 20:18 [ТС] | |
|
Спасибо за комментарий Дядя Корней!
Очень полезная инфа, я тоже думал на счет обфускации программы. Я пока не знаю как это делается, но думаю ничего сложного) Eще думал по мак адресу привязывать как-то программу к компу, но думаю по отношению к юзерам это не красиво будет, скорее всего у пользователя несколько устройств на котором пользователь будет использовать программу.. И не думаю что моя программа стоит чтобы ее взламывали, по поводу защиты я имел в виду что для сервера безопасно с одного файла получать запросы в базу чем с десятков или сотен IP адресов, или я ошибаюсь? Я начинающий разработчик, это моя первая коммерческая программа, поэтому я рад любым комментариям и критике Так что все хорошо!
0
|
|
|
399 / 318 / 53
Регистрация: 14.08.2014
Сообщений: 1,010
|
||
| 09.06.2015, 14:20 | ||
|
GSXL, SSL это как вариант усложнить крякеру работу минут на 5, но не вариант 100% защиты.
Объясню. Даже SSL не защитит, если у сервера нет добротного сертификата (обычно 98% пользователей его не делают, т.к. душит жаба его покупать). Если сертификата нет, то в противном случае я так же без особых усилий смогу вклиниться сниффером между сервером и программой, и снять траффик, несмотря даже на то, что " соединение защищенное". Вязаться нужно к материнской плате + желательно захватить процессор. В идеале привязываться к: Папка - Материнка - Проц. - МАК. Но даже такая привязка оставит дырки для крякера. Опять же не буду вдаваться в подробности, чтобы не облегчать им жизнь. Кто по настоящему хочет защитить свою программу думаю дойдет до всего сам, методом проб и ошибок. Так же не стоит забывать про кейгены. Почаще используйте Using. Не храните строковые переменные в открытом виде. Всегда по возможности очищайте глобальные переменные. Делайте проверки важных переменных. Почаще разбивайте код на процедуры. Это частично затруднит взлом.
1
|
||
| 09.06.2015, 14:20 | |
|
Помогаю со студенческими работами здесь
11
Защита от повторного логина из другого клиента. Защита программы от НСД. Защита путем шифрования части программы на флеш-диске или флешке
Назвать и описать базовый модуль повторного использования Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y
Z4Tv2zpXVVo
https:/ / github. com/ shumilovas/ med2. git
|
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа.
В качестве фильтра для отбора справочника служит группа номенклатуры.
Отбор по наименованию группы. . .
|
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
|
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс.
Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
|
|
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа.
В качестве фильтра для отбора служит значение перечислений.
/ / Событие "НачалоВыбора" реквизита на форме. . .
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|