Слайд 2
![Темы Структура class файла. Средства работы с class файлами. Байт-код](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-1.jpg)
Темы
Структура class файла.
Средства работы с class файлами.
Байт-код java.
Стеганография и цифровые
водяные знаки.
Способы скрытого вложения информации class файлы.
Слайд 3
![Class файл Содержит байт-код, который выполняется на виртуальной машине. Содержит](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-2.jpg)
Class файл
Содержит байт-код, который выполняется на виртуальной машине.
Содержит информацию о классе.
Генерируется
компилятором из исходного кода (.java)
Jar файл – представляет собой zip архив class файлов.
Слайд 4
![Структура class файла class файл состоит из 1,2,4 байтовых значений.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-3.jpg)
Структура class файла
class файл состоит из 1,2,4 байтовых значений.
Введем обозначения:
u1
– byte ( 1 байт )
u2 – long ( 2 байта)
u4 – int ( 4 байта)
Слайд 5
![Структура class файла](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-4.jpg)
Слайд 6
![Структура class файла u4 magic Идентификатор формата файла класса. Позволяет](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-5.jpg)
Структура class файла
u4 magic
Идентификатор формата файла класса.
Позволяет идентифицировать .class файл.
Всегда принимает
значение: 0xCAFEBABE.
Слайд 7
![Структура class файла u2 minor_version u2 major_version Вспомогательная и основная версии class файла.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-6.jpg)
Структура class файла
u2 minor_version
u2 major_version
Вспомогательная и основная версии class файла.
Слайд 8
![Структура class файла u2 constant_pool_count Размер массива констант.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-7.jpg)
Структура class файла
u2 constant_pool_count
Размер массива констант.
Слайд 9
![Структура class файла cp_info constant_pool[constant_pool_count-1] Пул констант представлен в виде](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-8.jpg)
Структура class файла
cp_info constant_pool[constant_pool_count-1]
Пул констант представлен в виде массива структур
в которых содержится:
строковые константы, имена классов, интерфейсов и полей …
Слайд 10
![Формат каждого элемента пула констант определяется первым байтом (tag).](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-9.jpg)
Формат каждого элемента пула констант определяется первым байтом (tag).
Слайд 11
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-10.jpg)
Слайд 12
![Структура class файла u2 access_flags Значение элемента является маской флагов,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-11.jpg)
Структура class файла
u2 access_flags
Значение элемента является маской флагов, используемых таким образом,
чтобы обозначить права доступа и свойства этого класса.
Слайд 13
![Флаги доступа](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-12.jpg)
Слайд 14
![Структура class файла u2 this_class u2 super_class Ссылки на константу с названием класса и его суперкласса.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-13.jpg)
Структура class файла
u2 this_class
u2 super_class
Ссылки на константу с названием класса
и его суперкласса.
Слайд 15
![Структура class файла u2 interfaces_count Размер массива интерфейсов.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-14.jpg)
Структура class файла
u2 interfaces_count
Размер массива интерфейсов.
Слайд 16
![Структура class файла u2 interfaces[interfaces_count] Массив интерфейсов. Каждый элемент массива](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-15.jpg)
Структура class файла
u2 interfaces[interfaces_count]
Массив интерфейсов. Каждый элемент массива является индексом
таблицы пула констант, где указывается имя интерфейса.
Слайд 17
![Структура class файла u2 fields_count Размер массива полей.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-16.jpg)
Структура class файла
u2 fields_count
Размер массива полей.
Слайд 18
![Структура class файла field_info fields[fields_count] Массив полей.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-17.jpg)
Структура class файла
field_info fields[fields_count]
Массив полей.
Слайд 19
![Структура class файла u2 methods_count Размер массива методов.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-18.jpg)
Структура class файла
u2 methods_count
Размер массива методов.
Слайд 20
![Структура class файла method_info methods[methods_count] Массив методов.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-19.jpg)
Структура class файла
method_info methods[methods_count]
Массив методов.
Слайд 21
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-20.jpg)
Слайд 22
![Атрибут Code](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-21.jpg)
Слайд 23
![Структура class файла u2 attributes_count Размер массива атрибутов.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-22.jpg)
Структура class файла
u2 attributes_count
Размер массива атрибутов.
Слайд 24
![Структура class файла attribute_info attributes[attributes_count] Массив атрибутов.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-23.jpg)
Структура class файла
attribute_info attributes[attributes_count]
Массив атрибутов.
Слайд 25
![Структура class файла](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-24.jpg)
Слайд 26
![Средства работы с class-файлами JBE - Java Bytecode Editor –](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-25.jpg)
Средства работы с class-файлами
JBE - Java Bytecode Editor – программа, позволяющая
просматривать и редактировать class файлы.
javap – декомпилятор class файлов.
Слайд 27
![Исходный код Файл Main.java public class Main { public static](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-26.jpg)
Исходный код
Файл Main.java
public class Main
{
public static void main
(String [] args )
{
int a = 4;
int b = 5;
int c = a+b;
}
}
> javac Main.java
Слайд 28
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-27.jpg)
Слайд 29
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-28.jpg)
Слайд 30
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-29.jpg)
Слайд 31
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-30.jpg)
Слайд 32
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-31.jpg)
Слайд 33
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-32.jpg)
Слайд 34
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-33.jpg)
Слайд 35
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-34.jpg)
Слайд 36
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-35.jpg)
Слайд 37
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-36.jpg)
Слайд 38
![Исходный код Файл Main.java public class Main { public static](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-37.jpg)
Исходный код
Файл Main.java
public class Main
{
public static void main
(String [] args )
{
int a = 4;
int b = 5;
int c = a+b;
}
}
> javac Main.java
Слайд 39
![Просмотр байт-кода > javap -c Main.class](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-38.jpg)
Просмотр байт-кода
> javap -c Main.class
Слайд 40
![Байт-код Java Байт-код Java — набор инструкций, исполняемых виртуальной машиной](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-39.jpg)
Байт-код Java
Байт-код Java — набор инструкций, исполняемых виртуальной машиной Java. Каждый
код операции байт-кода имеет размер один байт.
Слайд 41
![Виды инструкций загрузка и сохранение; арифметические и логические операции; преобразование](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-40.jpg)
Виды инструкций
загрузка и сохранение;
арифметические и логические операции;
преобразование типов;
создание и преобразование объекта;
управление
стеком;
операторы перехода;
вызовы методов и возврат;
Слайд 42
![Формат инструкций](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-41.jpg)
Слайд 43
![Инструкции загрузки Загрузка типа int из локальной переменной: iload_0 =](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-42.jpg)
Инструкции загрузки
Загрузка типа int из локальной переменной:
iload_0 = 26 (0x1a)
iload_1 =
27 (0x1b)
iload_2 = 28 (0x1c)
iload_3 = 29 (0x1d)
Не имеют аргументов.
Слайд 44
![Инструкции загрузки Загрузка типа int из локальной переменной: iload = 21 (0x15) Имеет один аргумент.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-43.jpg)
Инструкции загрузки
Загрузка типа int из локальной переменной:
iload = 21 (0x15)
Имеет один
аргумент.
Слайд 45
![Инструкции загрузки Загрузка из локальной переменной iload — для типа](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-44.jpg)
Инструкции загрузки
Загрузка из локальной переменной
iload — для типа int
lload —
для типа long
fload — для типа float
dload — для типа double
Слайд 46
![Инструкции сохранения Сохранение локальной переменно типа int: istore_0 = 59](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-45.jpg)
Инструкции сохранения
Сохранение локальной переменно типа int:
istore_0 = 59 (0x3b)
istore_1 = 60
(0x3c)
istore_2 = 61 (0x3d)
istore_3 = 62 (0x3e)
Не имеют аргументов
Слайд 47
![Инструкции сохранения Сохранение локальной переменной типа int: istore = 54 (0x36) Имеет один аргумент](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-46.jpg)
Инструкции сохранения
Сохранение локальной переменной типа int:
istore = 54 (0x36)
Имеет один аргумент
Слайд 48
![Инструкции загрузки Сохранение в локальной переменной istore — для типа](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-47.jpg)
Инструкции загрузки
Сохранение в локальной переменной
istore — для типа int
lstore —
для типа long
fstore — для типа float
dstore — для типа double
Слайд 49
![Математические операции iadd = 96 (0x60) – сложение типа int](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-48.jpg)
Математические операции
iadd = 96 (0x60) – сложение типа int
ladd = 97
(0x61) – сложение типа long
fadd = 98 (0x62) – сложение типа float
dadd = 99 (0x63) – сложение типа double
imul = 104 (0x68) – умножение типа int
Слайд 50
![Примеры кода](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-49.jpg)
Слайд 51
![Примеры кода](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-50.jpg)
Слайд 52
![Java Virtual Machine Виртуальная машина java реализована в виде стековой](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-51.jpg)
Java Virtual Machine
Виртуальная машина java реализована в виде стековой машины.
Команды делятся
на два вида: аргументы и операции.
Аргументы расположены перед операциями.
Аргументы - добавляют элементы в стек.
Операции – извлекают элементы из стека.
Слайд 53
![Пример вычисления](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-52.jpg)
Слайд 54
![Пример вычисления](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-53.jpg)
Слайд 55
![Пример вычисления](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-54.jpg)
Слайд 56
![Пример вычисления](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-55.jpg)
Слайд 57
![Пример вычисления](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-56.jpg)
Слайд 58
![Пример вычисления](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-57.jpg)
Слайд 59
![Пример вычисления](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-58.jpg)
Слайд 60
![СТЕГАНОГРАФИЯ (В широком смысле). Англоязычный термин"Скрытие информации" (Information hiding (IH)).](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-59.jpg)
СТЕГАНОГРАФИЯ (В широком смысле).
Англоязычный термин"Скрытие информации" (Information hiding (IH)).
Определение. IH -
это семейство методов, при помощи которых некоторое дополнительное сведение погружается в основное
(покрывающее сообщение (ПС)) при сохранении хорошего качества ПС.
Две основные части IH:
1. Собственно стеганография (стеганография).
2. Цифровые "водяные знаки" (ЦВЗ).
Задачи стеганографии:
Погрузить дополнительное сообщение в ПС так, чтобы сам факт его присутствия в нем нельзя было бы обнаружить нелегитимным пользователям.
Задача ЦВЗ:
Погрузить дополнительные сведения (обычно идентификационный код автора) в ПС так, чтобы его нельзя было бы удалить, не ухудшив существенно качество ПС.
(Факт такого вложения может и обнаруживаться нелегитимными пользователями.)
Слайд 61
![Типичные ПС - неподвижное изображение - подвижное изображение (видео) -](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-60.jpg)
Типичные ПС
- неподвижное изображение
- подвижное изображение (видео)
- аудио файлы
- речь
- печатный
смысловой текст
- интернет - протоколы
- программы для компьютеров(исполняемые файлы).
Слайд 62
![Вложение в class файл Применяется для защиты авторских прав. Не](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-61.jpg)
Вложение в class файл
Применяется для защиты авторских прав.
Не должно нарушать работу
программы.
Не должно быть обнаружимо.
Слайд 63
![Методы вложения в исполняемый class файл Модификация class файла Перестановка](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-62.jpg)
Методы вложения в исполняемый class файл
Модификация class файла
Перестановка элементов массивов:
Интерфейсов
Полей
Методов
Атрибутов
Модификация
байт-кода
Вставка операций
Замена конструкций на эквивалентные
Перестановка операций
Слайд 64
![Количество бит, которые можно вложить за счет перестановки массивов. Имеется](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-63.jpg)
Количество бит, которые можно вложить за счет перестановки массивов.
Имеется массив из
N элементов.
Количество комбинаций равно N!
Число бит которые можно будет вложить равно
Слайд 65
![Файл Main.java public class Main { Integer integer = 4;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-64.jpg)
Файл Main.java
public class Main
{
Integer integer = 4;
String string = "123";
int number
= 5;
public static void main (String [] args )
{
}
}
> javac Main.java
Слайд 66
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-65.jpg)
Слайд 67
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-66.jpg)
Слайд 68
![Перестановка элементов массивов полей Количество бит, которые мы можем вложить](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-67.jpg)
Перестановка элементов массивов полей
Количество бит, которые мы можем вложить равно
Для массива
интерфейсов и атрибутов все аналогично.
Слайд 69
![Перестановка элементов массивов методов Файл Main.java public class Main {](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-68.jpg)
Перестановка элементов массивов методов
Файл Main.java
public class Main
{
public static void main
(String [] args )
{
}
void getX()
{}
void getY()
{}
void setZ()
{}
}
> javac Main.java
Слайд 70
![Перестановка элементов массивов методов](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-69.jpg)
Перестановка элементов массивов методов
Слайд 71
![Перестановка элементов массивов методов](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-70.jpg)
Перестановка элементов массивов методов
Слайд 72
![Перестановка элементов массивов методов Файл Main.java public class test {](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-71.jpg)
Перестановка элементов массивов методов
Файл Main.java
public class test
{
test()
{
}
void getX()
{}
void getY()
{}
void setZ()
{}
}
> javac test.java
Слайд 73
![Перестановка элементов массивов методов](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-72.jpg)
Перестановка элементов массивов методов
Слайд 74
![Перестановка элементов массивов методов](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-73.jpg)
Перестановка элементов массивов методов
Слайд 75
![Перестановка элементов массивов методов Количество бит которые можно вложить за](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-74.jpg)
Перестановка элементов массивов методов
Количество бит которые можно вложить за счет перестановки
массивов методов равно:
Если класс содержит функцию main, то k = 2 , если нет то k = 1.
Слайд 76
![Количество бит которые можно вложить за счет перестановки массивов в](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-75.jpg)
Количество бит которые можно вложить за счет перестановки массивов в class
файле равно:
Если класс содержит функцию main, то k = 2 , если нет то k = 1.
Слайд 77
![Перестановка элементов массивов методов Не меняют размер исполняемого файла. Объем вложения ограничен. Не обнаруживается](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-76.jpg)
Перестановка элементов массивов методов
Не меняют размер исполняемого файла.
Объем вложения ограничен.
Не обнаруживается
Слайд 78
![Модификация байт-кода Вставка операций Замена конструкций на эквивалентные Перестановка операций](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-77.jpg)
Модификация байт-кода
Вставка операций
Замена конструкций на эквивалентные
Перестановка операций
Слайд 79
![Вставка операций Размер вложенной информации 4*3 = 12 байт](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-78.jpg)
Вставка операций
Размер вложенной информации 4*3 = 12 байт
Слайд 80
![Вставка операций Увеличивает размер исполняемого файла. Объем вложения неограничен. Обнаруживается с помощью статистического анализа.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-79.jpg)
Вставка операций
Увеличивает размер исполняемого файла.
Объем вложения неограничен.
Обнаруживается с помощью статистического анализа.
Слайд 81
![Замена конструкций на эквивалентные Замена математических операций на эквивалентные Замена ветвлений кода в условиях](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-80.jpg)
Замена конструкций на эквивалентные
Замена математических операций на эквивалентные
Замена ветвлений кода
в условиях
Слайд 82
![Замена математических операций на эквивалентные a+b ⬄ a-(-b) a-b ⬄](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-81.jpg)
Замена математических операций на эквивалентные
a+b ⬄ a-(-b)
a-b ⬄ a+(-b)
a*b ⬄
(-a)*(-b)
a*(-b) ⬄ (-a)*(b)
Слайд 83
![Замена математических операций на эквивалентные](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-82.jpg)
Замена математических операций на эквивалентные
Слайд 84
![Замена математических операций на эквивалентные](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-83.jpg)
Замена математических операций на эквивалентные
Слайд 85
![Замена математических операций на эквивалентные](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-84.jpg)
Замена математических операций на эквивалентные
Слайд 86
![Замена математических операций на эквивалентные](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-85.jpg)
Замена математических операций на эквивалентные
Слайд 87
![Замена математических операций на эквивалентные Могут увеличить объём исполняемого файла](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-86.jpg)
Замена математических операций на эквивалентные
Могут увеличить объём исполняемого файла но не
значительно.
Объем вложения ограничен.
Обнаружение зависит от вложенного объёма информации.
Слайд 88
![Замена ветвлений кода в условиях](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-87.jpg)
Замена ветвлений кода в условиях
Слайд 89
![Замена ветвлений кода в условиях](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-88.jpg)
Замена ветвлений кода в условиях
Слайд 90
![Замена ветвлений кода в условиях Не меняют размер исполняемого файла.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-89.jpg)
Замена ветвлений кода в условиях
Не меняют размер исполняемого файла.
Объем вложения ограничен.
Обнаружение
зависит от вложенного объёма информации.
Слайд 91
![Перестановка операций Перестановка элементов, участвующих в операциях. Изменение порядка присваивания переменных.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-90.jpg)
Перестановка операций
Перестановка элементов, участвующих в операциях.
Изменение порядка присваивания переменных.
Слайд 92
![Перестановка элементов, участвующих в операциях a+b ⬄ b+a a+b+c ⬄](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-91.jpg)
Перестановка элементов, участвующих в операциях
a+b ⬄ b+a
a+b+c ⬄ a+c+b
a*b ⬄ b*a
a*b*c
⬄ a*c*b
Математические операции: сложение, умножение.
Логические операции: AND, OR, XOR
Слайд 93
![Количество, вкладываемых бит равно При условии что все элементы разные.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-92.jpg)
Количество, вкладываемых бит равно
При условии что все элементы разные.
Слайд 94
![Перестановка элементов, участвующих в операциях](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-93.jpg)
Перестановка элементов, участвующих в операциях
Слайд 95
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-94.jpg)
Слайд 96
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-95.jpg)
Слайд 97
![Перестановка элементов, участвующих в операциях. Не меняют размер исполняемого файла.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-96.jpg)
Перестановка элементов, участвующих в операциях.
Не меняют размер исполняемого файла.
Объем вложения ограничен.
Обнаружение
зависит от вложенного объёма информации.
Слайд 98
![Изменение порядка присваивания переменных. Перестановка не должна менять результат вычисления](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-97.jpg)
Изменение порядка присваивания переменных.
Перестановка не должна менять результат вычисления
Слайд 99
![Изменение порядка присваивания переменных. Не меняют размер исполняемого файла. Объем](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-98.jpg)
Изменение порядка присваивания переменных.
Не меняют размер исполняемого файла.
Объем вложения ограничен.
Обнаружение зависит
от вложенного объёма информации.
Слайд 100
![Можем вложить три бита](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/4908/slide-99.jpg)
Можем вложить три бита