double arrow

Понятие высказывания


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

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

Таким образом, защищаемая от исследования программа должна включать следующие компоненты:

– инициализатор;

– зашифрованную секретную часть;

– деструктор (деициниализатор).

Инициализатор должен обеспечивать выполнение следующих функций:

– сохранение параметров операционной среды функционирования (векторов прерываний, содержимого регистров процессора и т.д.);




– запрет всех внутренних и внешних прерываний, обработка которых не может быть запротоколирована в защищаемой программе;

– загрузка в оперативную память и дешифрование кода секретной части программы;

– передача управления секретной части программы.

Секретная часть программы предназначена для выполнения основных

целевых функций программы и защищается шифрованием для предупреждения внесения в нее программной закладки.

Деструктор после выполнения секретной части программы должен выполнить следующие действия:

– обнуление секретного кода программы в оперативной памяти;

– восстановление параметров операционной системы (векторов прерываний, содержимого регистров процессора и т.д.), которые были установлены до запрета неконтролируемых прерываний;

– выполнение операций, которые невозможно было выполнить при запрете неконтролируемых прерываний;

– освобождение всех незадействованных ресурсов компьютера и завершение работы программы.

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

Для повышения эффективности защиты программ от исследования необходимо внесение в программу дополнительных функций безопасности, направленных на защиту от трассировки. К таким функциям можно отнести:



– периодический подсчет контрольной суммы области оперативной
памяти, занимаемой защищаемым исходным кодом; сравнение
текущей контрольной суммы с предварительно сформированной
эталонной и принятие необходимых мер в случае несовпадения;

– проверку количества занимаемой защищаемой программой оперативной памяти; сравнение с объемом, к которому программа адаптирована, и принятие необходимых мер в случае несоответствия;

– контроль времени выполнения отдельных частей программы;

– блокировку клавиатуры на время отработки особо секретных алгоритмов.

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

Основным (неопределяемым) понятием математической логики является понятие простого высказывания..



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

Приведем примеры высказываний.

1) Новгород стоит на Волхове.

2) Париж - столица Англии.

3) Карась не рыба.

4) Число 6 делится на 2 и на 3.

5) Если юноша окончил среднюю школу, то он получает аттестат зрелости.

Высказывания 1), 4), 5) истинны. а высказывания 2) и 3) ложны.

Очевидно, предложение Да здравствуют наши спортсмены!,» не является высказыванием.

Высказывание, представляющее собой одно утверждение, принято называть простым или элементарным. Примерами элементарных высказываний могут служить высказывания 1) и 2).

Высказывания, которые получаются из элементарных с помощью грамматических связок НЕ, И, ИЛИ., .ЕСЛИ .... ТО ..... ТОГДА И ТОЛЬКО ТОГДА.. принято называть сложными или составными. Так, высказывание 3) получается из простого высказывания Карась - рыба. с помощью

отрицания НЕ, высказывание 4) образовано из элементарных высказываний Число 6 делится на 2., 4 Число 6 делится на 3, соединенных союзом И.. Высказывание 5) получается из простых высказываний Юноша окончил среднюю школу, .Юноша получает аттестат зрелости. с помощью грамматической связки .ЕСЛИ ..., ТО ..... Сложные высказывания могут быть получены из простых высказываний с помощью грамматических связок .ИЛИ., .ТОГДА И ТОЛЬКО ТОГДА..

В алгебре логики все высказывания рассматриваются только С точки зрения их логического значения, а от их житейского содержания отвлекаются. Считается, что каждое высказывание либо истинно. либо ложно и ни одно высказывание не может быть одновременно истинным и ложным.

В дальнейшем будем элементарные высказывания обозначать малыми буквами латинского алфавита: х. у, z, .... а, b. с, ...; истинное значение высказывания цифрой 1, а ложное значение цифрой 0.

Если высказывание а истинно. то будем писать а = 1 , а если а ложно, то а = 0 .







Сейчас читают про: