Форум программистов, компьютерный форум CyberForum.ru

Защита программы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Чтение файла по блокам http://www.cyberforum.ru/cpp-beginners/thread163251.html
Добрый день, помогите пожалуста с чтение файла на С++, без NET Фаил хранит блоки текста разделяемые текстовой меткой "END", блок при считывании хочу помешать в string, потом уже обрабатывать его. есть предложения, чтобы работало достаточно эффективно.
C++ Сеть и очередь структур Всем привет. Пишу клиент-серверное приложение, в качестве пакета данных у меня 4 int числа, в виде структуры. struct message { int arg; }; Клиентская программа параллельным потоком принимает данные от сервера, каждая "порция" данных это одна структура message. http://www.cyberforum.ru/cpp-beginners/thread163208.html
Получение времени года по введенному пользователем месяцу C++
Решить с помощью оператора Case. Написать программу, которая запрашивает у пользователя номер месяца и выводит соответствующее название времени года. В случае, если пользователь укажет недопустимое число, программа должна вывести сообщение "Ошибка ввода данных". Ниже представлен рекомендуемый вид экрана во время работы программы.Введите номер месяца (число от 1 до 12) и нажмите <Enter> -> 11.
Динамической вектор C++
Створить параметризований тип, динамической вектор.Реализировать функциї: додаванние и удаление елементов, поиск максимального за сер. оценками, сортировка за фамилиеи. ===================== Клас студент Поля: фамилия, факультет, середня оценка. Удалить тех студентов, сер.оценка которих ниже как 3!! ===================== Проблема с вектором
C++ Как получить левую часть строки? http://www.cyberforum.ru/cpp-beginners/thread163194.html
С попощю такого куска кода я получу результат: erty , тоесть правая часть строки qwerty, а как мне получить левую часть строки например qwer? Спасибо! void main() { char buf="qwerty"; char str; memcpy(str,buf+2,sizeof(str)); printf("%s\n",str); }
C++ От значений элементов каждой строки двумерного массива вычесть значение минимального элемента этой строки От значений элементов каждой строки двумерного массива вычесть значение минимального элемента этой строки. подробнее

Показать сообщение отдельно
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1

Защита программы - C++

03.09.2010, 14:07. Просмотров 2396. Ответов 19
Метки (Все метки)

Требуется, чтобы программа работала в двух режимах:
- Режим с ограничениями (демо)
- Режим полной функциональности

Методы регистрации программы пока что не интересуют.

Думаю, как это лучше сделать, в голову пришла такая мысль.
Создается специальный класс-защитник, в который инкапсулируется класс основной программы.
В главной функции создается объект защитника и запускается. В методе запуска защитника производится проверка регистрационных данных. Если данные валидны, то программа запускается в режиме полной функциональности, если данные невалидны, то в демо-режиме.

В класс основной программы добавляется флаг demo_mode, который отвечает за урезку функционала. В GUI интерфейсе можно, например, будет делать недоступными некоторые кнопки.

Набросал скелет защитника. Может у кого есть какие идеи по этому поводу?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include <iostream>
 
class MainProgram
{
public:
    void Run() {
        if(demo)
            std::cout << "Main Program running in Demo Mode" << std::endl;
        else
            std::cout << "Main Program running in Registered Mode" << std::endl;
    }
    
    void SetDemoMode() {
        demo = true;
    }
    
private:
    bool demo;
};
 
// Подсистема противодействия
// нейтрализации защитных функций
class ReactionSystem
{
    // Методы этого класса должны срабатывать,
    // если регистрационные данные подверглись изменениям
};
 
// Подсистема реализации защитных функций 
class DefendSystem
{
public:
    // Блок идентификации параметров 
    bool ParamsIdentificationBlock() {
        // -- Проверка идентифицирующего элемента
        // Параметры считываются в данные класса DefendSystem
        return true;
    }
    
    // Блок принятия решений
    bool DecisionMakingBlock() {
        // -- Сравнение считанных параметров с эталоном
        // Самое обычное сравнение
        return true;
    }
    
    // Блок ответной реакции
    void ResponseBlock() {
        // -- Срабатывает при наличии факта несанкционированного копирования
        // Например выдается соответствующее предупреждение
        std::cout << "ResponseBlock message" << std::endl;
    }
    
    // Комбинатор
    void Run() {
        // Если параметры считаны и проверены, то запускается основная программа
        // Иначе управление передается блоку ответной реакции
        if(!(ParamsIdentificationBlock() && DecisionMakingBlock())) {
            ResponseBlock();
            mp.SetDemoMode();
        }
        
        mp.Run();
    }
    
    // Класс основной программы
    MainProgram mp;
    ReactionSystem rs;
};
 
int main()
{
    DefendSystem d;
    d.Run();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru