|
|
||||||
Защита программы03.09.2010, 14:07. Показов 11827. Ответов 19
Требуется, чтобы программа работала в двух режимах:
- Режим с ограничениями (демо) - Режим полной функциональности Методы регистрации программы пока что не интересуют. Думаю, как это лучше сделать, в голову пришла такая мысль. Создается специальный класс-защитник, в который инкапсулируется класс основной программы. В главной функции создается объект защитника и запускается. В методе запуска защитника производится проверка регистрационных данных. Если данные валидны, то программа запускается в режиме полной функциональности, если данные невалидны, то в демо-режиме. В класс основной программы добавляется флаг demo_mode, который отвечает за урезку функционала. В GUI интерфейсе можно, например, будет делать недоступными некоторые кнопки. Набросал скелет защитника. Может у кого есть какие идеи по этому поводу?
0
|
||||||
| 03.09.2010, 14:07 | |
|
Ответы с готовыми решениями:
19
Защита программы Защита от падений программы Защита данных программы |
|
14 / 14 / 3
Регистрация: 12.05.2010
Сообщений: 43
|
|
| 03.09.2010, 14:18 | |
Сообщение было отмечено как решение
Решение
Совсем не надёжное решение.
5
|
|
|
|
||
| 03.09.2010, 14:25 [ТС] | ||
|
promix_17, Все это хорошо, но сейчас меня больше интересует конкретика нежели теория. Для начала мне надо написать хоть какое-то решение, а потом уже "защищаться от взлома".
0
|
||
|
14 / 14 / 3
Регистрация: 12.05.2010
Сообщений: 43
|
|
| 03.09.2010, 14:27 | |
|
Ну всё равно, решение сразу учись писать надёжное, а то привыкнешь...
0
|
|
|
Временно недоступен
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
|
|
| 03.09.2010, 20:51 | |
|
Самое надёжное,наверное,это сервер авторизации и прога с define-ами. Перекомпилировать для разной функциональности.
0
|
|
|
Заблокирован
|
|
| 03.09.2010, 21:01 | |
|
#pragma, подскажешь как использовать сервер авторизации(или может книжку хорошую) ?
нельзя ведь писать если(ответ с сервера устраивает){ авторизовались } иначе { не получилось } ведь возможно подменить вообще запрос сервера на что-то инное. Чем помогут define-ы не представляю вообще.Про перекопилировать тоже непонял, вот получил для полной функциональности и неполной. Кому-то дал полную версию, как предотвратить ее распространение? (лучше пример конечно)
0
|
|
|
155 / 102 / 12
Регистрация: 22.07.2010
Сообщений: 445
|
||
| 03.09.2010, 21:12 | ||
|
0
|
||
|
|
|
| 03.09.2010, 22:46 | |
|
Не стоит выдумывать колесо, давно разработана куча техник защиты.
Регулярные проверки CRC на предмет изменения екзешника. Проверки на работающий дебаггер (Skype) Привязка к железу по серийным номерам (Windows). Проблема распространения решается баном серийника, если с двух разных компов высылали запрос авторизации за короткий период (вряд ли один человек может, например, завтра переехать в другую страну, сменить комп, повторить это опять в следующий день и т.д.) С сервера можно получать набор смещений, добавляемых к адресу функции - если адрес неправильный, програма крашанёт. В таком случае заранее нельзя знать, что подобранный код правильный. Можно по-разному изворачиться, банить черезе некоторое время, по рендому и т.п. Но снова ж таки, это всё предположения, догадки. Есть куча людей, к-рые посвятили этому тучу времени и написали соответсвенные статьи.
0
|
|
|
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
|
|
| 03.09.2010, 22:57 | |
|
Всегда считал, что демо-версия не должна в принципе имеет в дистрибутиве того функционала, который защищается, тем более если его ещё можно и запустить на исполнение. Методов защиты триал- и демо-версий - полным-полно, выбирайте и встраивайте. Мне, например, нравится вариант, когда при всех охраняемых дествиях, хеш файла программы сверяется с правильным хешем, созданым при сборке дистра. Сам хеш лучше держать не в ресурсах, а в файле, создаваемом при установке в, например, виндире, с не привлекающим внимания именем.
0
|
|
|
Временно недоступен
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
|
||
| 04.09.2010, 02:56 | ||
|
0
|
||
|
|
|||
| 05.09.2010, 09:02 [ТС] | |||
Тогда такой вариант. Основная программа хранится в зашифрованном виде. Программа защитник запускается, проверяет регистрационные данные на валидность, расшифровывает основную программу и выполняет (при чем желательно выполнять прямо из оперативной памяти, не сохраняя расшифрованную копию на диск). Конечно, можно сделать дамп участка памяти с программой, но это уже проблема.
0
|
|||
|
1080 / 1007 / 107
Регистрация: 28.02.2010
Сообщений: 2,889
|
||
| 05.09.2010, 09:12 | ||
|
0
|
||
|
|
||
| 05.09.2010, 09:17 [ТС] | ||
![]() А вот зашифровать/расшифровать файл, а также предварительно проверить контрольную сумму для него несложно. Осталось только извернуться, чтобы запустить код из памяти.
0
|
||
|
6 / 6 / 0
Регистрация: 28.07.2010
Сообщений: 12
|
||
| 13.09.2010, 00:18 | ||
|
Так, или я что-то не уловил?
0
|
||
|
|
|||
| 13.09.2010, 00:54 | |||
|
Добавлено через 7 минут Сначала загрузчик загружаем машину, затем запускает код в этой машине. Если вирт. машина хорошо спроектирована, хакер задолбается её расшифровывать. Всю программу, особенно если она большая, нет смысла в вирт. машину писать - слишком геморройно. http://ru.wikipedia.org/wiki/%... 0%BD%D0%B0 http://seculab.ru/ru/projects-neoguard.php
1
|
|||
|
23 / 23 / 4
Регистрация: 05.05.2010
Сообщений: 82
|
||
| 13.09.2010, 15:18 | ||
|
Реализуется это через шифрование таблицы констант. Из всех защищаемых функций выбираются константы, создается большая таблица. Она шифруется пару сотен раз с разными ключами и разными алгоритмами и остается в программе. В коде программы есть ключи. Набор алгоритмов для расшифровки находится в HASP-e. Хакер, обладая шифром и ключем, но без алгоритма не сможет ничего сделать. Сотни различных вариантов нужны для того, чтобы усложнить перехват взаимодействия с ключем. Хакер каждый раз будет получать новую последовательность данных с новыми ключами и с новыми запросами.
0
|
||
|
|
|
| 13.09.2010, 15:20 | |
|
Shaper, что мешает взломщику, имея 1 рабочий ключ, захардкодить все констатны в ф-циях, где они используются ?
0
|
|
|
23 / 23 / 4
Регистрация: 05.05.2010
Сообщений: 82
|
|
| 13.09.2010, 15:55 | |
|
Я упустил один момент. Создатели ключа это предусмотрели и создали систему кодирования приложения. Оно переводится с обычного машинного кода на виртуальный. Причем, при запуске формируется не одна, а целых 5 виртуальных машин, и каждая из них - со своим языком. Работают они по очереди и каждая выполняет свой участок кода. Разбирать это все дебагером очень сложно. Я только не знаю, будет ли такая оболочка работать без ключа. Я с ключом делал.
0
|
|
| 13.09.2010, 15:55 | |
|
Помогаю со студенческими работами здесь
20
Защита программы паролем Защита программы от неверного ввода Защита программы от остановки процесса Обеспечить надежность программы (защита от ввода неверных символов) Защита программы от НСД. Защита путем шифрования части программы на флеш-диске или флешке Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536
Одним из. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 19.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|