Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Лекция. Исполняемые файлы java

Содержание

Темы Структура class файла.Средства работы с class файлами. Байт-код java.Стеганография и цифровые водяные знаки. Способы скрытого вложения информации class файлы.
Лекция Исполняемые файлы java Темы Структура class файла.Средства работы с class файлами. Байт-код java.Стеганография и цифровые Class файлСодержит байт-код, который выполняется на виртуальной машине.Содержит информацию о классе.Генерируется компилятором Структура class файла class файл состоит из 1,2,4 байтовых значений.Введем обозначения: u1 Структура class файла Структура class файлаu4 magicИдентификатор формата файла класса.Позволяет идентифицировать .class файл.Всегда принимает значение: 0xCAFEBABE. Структура class файлаu2 minor_versionu2 major_versionВспомогательная и основная версии class файла. Структура class файлаu2 constant_pool_countРазмер массива констант. Структура class файла cp_info constant_pool[constant_pool_count-1]Пул констант представлен в виде массива структур в Формат каждого элемента пула констант определяется первым байтом (tag). Структура class файлаu2 access_flagsЗначение элемента является маской флагов, используемых таким образом, чтобы Флаги доступа Структура class файлаu2 this_classu2 super_class Ссылки на константу с названием класса и его суперкласса. Структура class файлаu2 interfaces_count Размер массива интерфейсов. Структура class файлаu2 interfaces[interfaces_count] Массив интерфейсов. Каждый элемент массива является индексом таблицы Структура class файлаu2 fields_countРазмер массива полей. Структура class файлаfield_info fields[fields_count]Массив полей. Структура class файлаu2 methods_countРазмер массива методов. Структура class файлаmethod_info methods[methods_count]Массив методов. Атрибут Code Структура class файлаu2 attributes_countРазмер массива атрибутов. Структура class файлаattribute_info attributes[attributes_count]Массив атрибутов. Структура class файла Средства работы с class-файламиJBE - Java Bytecode Editor – программа, позволяющая просматривать Исходный код    Файл Main.javapublic class Main {  public Исходный код    Файл Main.javapublic class Main {  public Просмотр байт-кода> javap -c Main.class Байт-код JavaБайт-код Java — набор инструкций, исполняемых виртуальной машиной Java. Каждый код Виды инструкцийзагрузка и сохранение;арифметические и логические операции;преобразование типов;создание и преобразование объекта;управление стеком;операторы перехода;вызовы методов и возврат; Формат инструкций Инструкции загрузкиЗагрузка типа int из локальной переменной:iload_0 = 26 (0x1a)iload_1 = 27 Инструкции загрузкиЗагрузка типа int из локальной переменной:iload = 21 (0x15)Имеет один аргумент. Инструкции загрузкиЗагрузка из локальной переменнойiload — для типа int lload — для Инструкции сохраненияСохранение локальной переменно типа int:istore_0 = 59 (0x3b)istore_1 = 60 (0x3c)istore_2 Инструкции сохраненияСохранение локальной переменной типа int:istore = 54 (0x36)Имеет один аргумент Инструкции загрузкиСохранение в локальной переменнойistore — для типа int lstore — для Математические операцииiadd = 96 (0x60) – сложение типа intladd = 97 (0x61) Примеры кода Примеры кода Java Virtual MachineВиртуальная машина java реализована в виде стековой машины.Команды делятся на Пример вычисления Пример вычисления Пример вычисления Пример вычисления Пример вычисления Пример вычисления Пример вычисления СТЕГАНОГРАФИЯ (В широком смысле). Англоязычный термин Типичные ПС - неподвижное изображение - подвижное изображение (видео) - аудио файлы Вложение в class файлПрименяется для защиты авторских прав.Не должно нарушать работу программы.Не должно быть обнаружимо. Методы вложения в исполняемый class файлМодификация class файлаПерестановка элементов массивов:ИнтерфейсовПолей МетодовАтрибутовМодификация байт-кодаВставка Количество бит, которые можно вложить за счет перестановки массивов.Имеется массив из N Файл Main.javapublic class Main{	Integer integer = 4;	String string = Перестановка элементов массивов полейКоличество бит, которые мы можем вложить равноДля массива интерфейсов и атрибутов все аналогично. Перестановка элементов массивов методовФайл Main.javapublic class Main{  public static void main Перестановка элементов массивов методов Перестановка элементов массивов методов Перестановка элементов массивов методовФайл Main.javapublic class test{  test()  { Перестановка элементов массивов методов Перестановка элементов массивов методов Перестановка элементов массивов методовКоличество бит которые можно вложить за счет перестановки массивов Количество бит которые можно вложить за счет перестановки массивов в class файле Перестановка элементов массивов методовНе меняют размер исполняемого файла.Объем вложения ограничен.Не обнаруживается Модификация байт-кодаВставка операцийЗамена конструкций на эквивалентные Перестановка операций Вставка операцийРазмер вложенной информации 4*3 = 12 байт Вставка операцийУвеличивает размер исполняемого файла.Объем вложения неограничен.Обнаруживается с помощью статистического анализа. Замена конструкций на эквивалентные  Замена математических операций на эквивалентныеЗамена ветвлений кода в условиях Замена математических операций на эквивалентные a+b   ⬄  a-(-b)a-b Замена математических операций на эквивалентные Замена математических операций на эквивалентные Замена математических операций на эквивалентные Замена математических операций на эквивалентные Замена математических операций на эквивалентные Могут увеличить объём исполняемого файла но не Замена ветвлений кода в условиях Замена ветвлений кода в условиях Замена ветвлений кода в условияхНе меняют размер исполняемого файла.Объем вложения ограничен.Обнаружение зависит от вложенного объёма информации. Перестановка операцийПерестановка элементов, участвующих в операциях.Изменение порядка присваивания переменных. Перестановка элементов, участвующих в операцияхa+b ⬄ b+aa+b+c ⬄ a+c+ba*b ⬄ b*aa*b*c ⬄ Количество, вкладываемых бит равноПри условии что все элементы разные. Перестановка элементов, участвующих в операциях Перестановка элементов, участвующих в операциях.Не меняют размер исполняемого файла.Объем вложения ограничен.Обнаружение зависит от вложенного объёма информации. Изменение порядка присваивания переменных.Перестановка не должна менять результат вычисления Изменение порядка присваивания переменных.Не меняют размер исполняемого файла.Объем вложения ограничен.Обнаружение зависит от вложенного объёма информации. Можем вложить три бита Сравнение методов вложения
Слайды презентации

Слайд 2 Темы
Структура class файла.
Средства работы с class файлами.
Байт-код

Темы Структура class файла.Средства работы с class файлами. Байт-код java.Стеганография и

java.
Стеганография и цифровые водяные знаки.
Способы скрытого вложения информации

class файлы.


Слайд 3 Class файл
Содержит байт-код, который выполняется на виртуальной машине.
Содержит

Class файлСодержит байт-код, который выполняется на виртуальной машине.Содержит информацию о классе.Генерируется

информацию о классе.
Генерируется компилятором из исходного кода (.java)
Jar файл

– представляет собой zip архив class файлов.





Слайд 4 Структура class файла
class файл состоит из 1,2,4 байтовых

Структура class файла class файл состоит из 1,2,4 байтовых значений.Введем обозначения:

значений.

Введем обозначения:
u1 – byte ( 1 байт )
u2

– long ( 2 байта)
u4 – int ( 4 байта)



Слайд 5 Структура class файла

Структура class файла

Слайд 6 Структура class файла
u4 magic

Идентификатор формата файла класса.

Позволяет идентифицировать

Структура class файлаu4 magicИдентификатор формата файла класса.Позволяет идентифицировать .class файл.Всегда принимает значение: 0xCAFEBABE.

.class файл.

Всегда принимает значение: 0xCAFEBABE.


Слайд 7 Структура class файла
u2 minor_version
u2 major_version

Вспомогательная и основная версии

Структура class файлаu2 minor_versionu2 major_versionВспомогательная и основная версии class файла.

class файла.


Слайд 8 Структура class файла
u2 constant_pool_count

Размер массива констант.

Структура class файлаu2 constant_pool_countРазмер массива констант.

Слайд 9 Структура class файла
cp_info constant_pool[constant_pool_count-1]
Пул констант представлен в

Структура class файла cp_info constant_pool[constant_pool_count-1]Пул констант представлен в виде массива структур

виде массива структур в которых содержится:
строковые константы, имена

классов, интерфейсов и полей …


Слайд 10




Формат каждого элемента пула констант определяется первым байтом

Формат каждого элемента пула констант определяется первым байтом (tag).

(tag).



Слайд 12 Структура class файла
u2 access_flags

Значение элемента является маской флагов,

Структура class файлаu2 access_flagsЗначение элемента является маской флагов, используемых таким образом,

используемых таким образом, чтобы обозначить права доступа и свойства

этого класса.

Слайд 13
Флаги доступа

Флаги доступа

Слайд 14 Структура class файла
u2 this_class
u2 super_class

Ссылки на константу

Структура class файлаu2 this_classu2 super_class Ссылки на константу с названием класса и его суперкласса.

с названием класса и его суперкласса.


Слайд 15 Структура class файла
u2 interfaces_count

Размер массива интерфейсов.

Структура class файлаu2 interfaces_count Размер массива интерфейсов.

Слайд 16 Структура class файла
u2 interfaces[interfaces_count]

Массив интерфейсов. Каждый элемент

Структура class файлаu2 interfaces[interfaces_count] Массив интерфейсов. Каждый элемент массива является индексом

массива является индексом таблицы пула констант, где указывается имя

интерфейса.


Слайд 17 Структура class файла
u2 fields_count

Размер массива полей.

Структура class файлаu2 fields_countРазмер массива полей.

Слайд 18 Структура class файла
field_info fields[fields_count]

Массив полей.

Структура class файлаfield_info fields[fields_count]Массив полей.

Слайд 19 Структура class файла
u2 methods_count

Размер массива методов.

Структура class файлаu2 methods_countРазмер массива методов.

Слайд 20 Структура class файла
method_info methods[methods_count]

Массив методов.

Структура class файлаmethod_info methods[methods_count]Массив методов.

Слайд 22
Атрибут Code

Атрибут Code

Слайд 23 Структура class файла
u2 attributes_count

Размер массива атрибутов.

Структура class файлаu2 attributes_countРазмер массива атрибутов.

Слайд 24 Структура class файла
attribute_info attributes[attributes_count]

Массив атрибутов.

Структура class файлаattribute_info attributes[attributes_count]Массив атрибутов.

Слайд 25 Структура class файла

Структура class файла

Слайд 26 Средства работы с class-файлами
JBE - Java Bytecode Editor

Средства работы с class-файламиJBE - Java Bytecode Editor – программа, позволяющая

– программа, позволяющая просматривать и редактировать class файлы.
javap –

декомпилятор class файлов.

Слайд 27 Исходный код
Файл Main.java
public class

Исходный код  Файл Main.javapublic class Main { public static void

Main
{
public static void main (String []

args )
{
int a = 4;
int b = 5;
int c = a+b;
}
}

> javac Main.java


Слайд 38 Исходный код
Файл Main.java
public class

Исходный код  Файл Main.javapublic class Main { public static void

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


Просмотр байт-кода> javap -c Main.class

Слайд 40 Байт-код Java
Байт-код Java — набор инструкций, исполняемых виртуальной

Байт-код JavaБайт-код Java — набор инструкций, исполняемых виртуальной машиной Java. Каждый

машиной Java. Каждый код операции байт-кода имеет размер один

байт.

Слайд 41 Виды инструкций
загрузка и сохранение;
арифметические и логические операции;
преобразование типов;
создание

Виды инструкцийзагрузка и сохранение;арифметические и логические операции;преобразование типов;создание и преобразование объекта;управление стеком;операторы перехода;вызовы методов и возврат;

и преобразование объекта;
управление стеком;
операторы перехода;
вызовы методов и возврат;


Слайд 42 Формат инструкций

Формат инструкций

Слайд 43 Инструкции загрузки
Загрузка типа int из локальной переменной:

iload_0 =

Инструкции загрузкиЗагрузка типа int из локальной переменной:iload_0 = 26 (0x1a)iload_1 =

26 (0x1a)
iload_1 = 27 (0x1b)
iload_2 = 28 (0x1c)
iload_3 =

29 (0x1d)

Не имеют аргументов.

Слайд 44 Инструкции загрузки
Загрузка типа int из локальной переменной:


iload =

Инструкции загрузкиЗагрузка типа int из локальной переменной:iload = 21 (0x15)Имеет один аргумент.

21 (0x15)


Имеет один аргумент.


Слайд 45 Инструкции загрузки
Загрузка из локальной переменной

iload — для типа

Инструкции загрузкиЗагрузка из локальной переменнойiload — для типа int lload —

int
lload — для типа long
fload — для типа

float
dload — для типа double

Слайд 46 Инструкции сохранения
Сохранение локальной переменно типа int:

istore_0 = 59

Инструкции сохраненияСохранение локальной переменно типа int:istore_0 = 59 (0x3b)istore_1 = 60

(0x3b)
istore_1 = 60 (0x3c)
istore_2 = 61 (0x3d)
istore_3 = 62

(0x3e)
Не имеют аргументов

Слайд 47 Инструкции сохранения
Сохранение локальной переменной типа int:


istore = 54

Инструкции сохраненияСохранение локальной переменной типа int:istore = 54 (0x36)Имеет один аргумент

(0x36)

Имеет один аргумент


Слайд 48 Инструкции загрузки
Сохранение в локальной переменной

istore — для типа

Инструкции загрузкиСохранение в локальной переменнойistore — для типа int lstore —

int
lstore — для типа long
fstore — для типа

float
dstore — для типа double

Слайд 49 Математические операции

iadd = 96 (0x60) – сложение типа

Математические операцииiadd = 96 (0x60) – сложение типа intladd = 97

int
ladd = 97 (0x61) – сложение типа long
fadd =

98 (0x62) – сложение типа float
dadd = 99 (0x63) – сложение типа double

imul = 104 (0x68) – умножение типа int


Слайд 50 Примеры кода



Примеры кода

Слайд 51 Примеры кода



Примеры кода

Слайд 52 Java Virtual Machine
Виртуальная машина java реализована в виде

Java Virtual MachineВиртуальная машина java реализована в виде стековой машины.Команды делятся

стековой машины.
Команды делятся на два вида: аргументы и операции.
Аргументы

расположены перед операциями.
Аргументы - добавляют элементы в стек.
Операции – извлекают элементы из стека.



Слайд 53 Пример вычисления

Пример вычисления

Слайд 54 Пример вычисления

Пример вычисления

Слайд 55 Пример вычисления

Пример вычисления

Слайд 56 Пример вычисления

Пример вычисления

Слайд 57 Пример вычисления

Пример вычисления

Слайд 58 Пример вычисления

Пример вычисления

Слайд 59 Пример вычисления

Пример вычисления

Слайд 60 СТЕГАНОГРАФИЯ (В широком смысле). Англоязычный термин"Скрытие информации" (Information hiding

СТЕГАНОГРАФИЯ (В широком смысле). Англоязычный термин

(IH)). Определение. IH - это семейство методов, при помощи которых

некоторое дополнительное сведение погружается в основное (покрывающее сообщение (ПС)) при сохранении хорошего качества ПС. Две основные части IH: 1. Собственно стеганография (стеганография). 2. Цифровые "водяные знаки" (ЦВЗ). Задачи стеганографии: Погрузить дополнительное сообщение в ПС так, чтобы сам факт его присутствия в нем нельзя было бы обнаружить нелегитимным пользователям. Задача ЦВЗ: Погрузить дополнительные сведения (обычно идентификационный код автора) в ПС так, чтобы его нельзя было бы удалить, не ухудшив существенно качество ПС. (Факт такого вложения может и обнаруживаться нелегитимными пользователями.)

Слайд 61 Типичные ПС - неподвижное изображение - подвижное изображение (видео) - аудио

Типичные ПС - неподвижное изображение - подвижное изображение (видео) - аудио

файлы - речь - печатный смысловой текст - интернет - протоколы - программы

для компьютеров(исполняемые файлы).

Слайд 62 Вложение в class файл
Применяется для защиты авторских прав.
Не

Вложение в class файлПрименяется для защиты авторских прав.Не должно нарушать работу программы.Не должно быть обнаружимо.

должно нарушать работу программы.
Не должно быть обнаружимо.


Слайд 63 Методы вложения в исполняемый class файл
Модификация class файла
Перестановка

Методы вложения в исполняемый class файлМодификация class файлаПерестановка элементов массивов:ИнтерфейсовПолей МетодовАтрибутовМодификация

элементов массивов:
Интерфейсов
Полей
Методов
Атрибутов
Модификация байт-кода
Вставка операций
Замена конструкций на эквивалентные
Перестановка

операций



Слайд 64 Количество бит, которые можно вложить за счет перестановки

Количество бит, которые можно вложить за счет перестановки массивов.Имеется массив из

массивов.
Имеется массив из N элементов.
Количество комбинаций равно N!


Число бит которые можно будет вложить равно











Слайд 65
Файл Main.java
public class Main
{
Integer integer = 4;
String string

= "123";
int number = 5;
public static void main (String

[] args )
{
}

}
> javac Main.java

Слайд 68 Перестановка элементов массивов полей

Количество бит, которые мы можем

Перестановка элементов массивов полейКоличество бит, которые мы можем вложить равноДля массива интерфейсов и атрибутов все аналогично.

вложить равно


Для массива интерфейсов и атрибутов все аналогично.




Слайд 69 Перестановка элементов массивов методов
Файл Main.java

public class Main
{

Перестановка элементов массивов методовФайл Main.javapublic class Main{ public static void main

public static void main (String [] args )

{
}
void getX()
{}
void getY()
{}
void setZ()
{}
}
> javac Main.java



Слайд 70 Перестановка элементов массивов методов

Перестановка элементов массивов методов

Слайд 71 Перестановка элементов массивов методов

Перестановка элементов массивов методов

Слайд 72 Перестановка элементов массивов методов
Файл Main.java

public class test
{

Перестановка элементов массивов методовФайл Main.javapublic class test{ test() {

test()
{
}


void getX()
{}
void getY()
{}
void setZ()
{}
}
> javac test.java



Слайд 73 Перестановка элементов массивов методов

Перестановка элементов массивов методов

Слайд 74 Перестановка элементов массивов методов

Перестановка элементов массивов методов

Слайд 75 Перестановка элементов массивов методов
Количество бит которые можно вложить

Перестановка элементов массивов методовКоличество бит которые можно вложить за счет перестановки

за счет перестановки массивов методов равно:


Если класс содержит функцию

main, то k = 2 , если нет то k = 1.


Слайд 76
Количество бит которые можно вложить за счет перестановки

Количество бит которые можно вложить за счет перестановки массивов в class

массивов в class файле равно:



Если класс содержит функцию main,

то k = 2 , если нет то k = 1.


Слайд 77 Перестановка элементов массивов методов
Не меняют размер исполняемого файла.
Объем

Перестановка элементов массивов методовНе меняют размер исполняемого файла.Объем вложения ограничен.Не обнаруживается

вложения ограничен.
Не обнаруживается


Слайд 78 Модификация байт-кода
Вставка операций
Замена конструкций на эквивалентные
Перестановка операций

Модификация байт-кодаВставка операцийЗамена конструкций на эквивалентные Перестановка операций

Слайд 79 Вставка операций







Размер вложенной информации 4*3 = 12 байт

Вставка операцийРазмер вложенной информации 4*3 = 12 байт

Слайд 80 Вставка операций
Увеличивает размер исполняемого файла.
Объем вложения неограничен.
Обнаруживается с

Вставка операцийУвеличивает размер исполняемого файла.Объем вложения неограничен.Обнаруживается с помощью статистического анализа.

помощью статистического анализа.




Слайд 81 Замена конструкций на эквивалентные
Замена математических операций на

Замена конструкций на эквивалентные Замена математических операций на эквивалентныеЗамена ветвлений кода в условиях

эквивалентные
Замена ветвлений кода в условиях


Слайд 82 Замена математических операций на эквивалентные
a+b ⬄

Замена математических операций на эквивалентные a+b  ⬄ a-(-b)a-b  ⬄

a-(-b)
a-b ⬄ a+(-b)


a*b ⬄ (-a)*(-b)
a*(-b) ⬄ (-a)*(b)


Слайд 83 Замена математических операций на эквивалентные

Замена математических операций на эквивалентные

Слайд 84 Замена математических операций на эквивалентные

Замена математических операций на эквивалентные

Слайд 85 Замена математических операций на эквивалентные

Замена математических операций на эквивалентные

Слайд 86 Замена математических операций на эквивалентные

Замена математических операций на эквивалентные

Слайд 87 Замена математических операций на эквивалентные
Могут увеличить объём исполняемого

Замена математических операций на эквивалентные Могут увеличить объём исполняемого файла но

файла но не значительно.
Объем вложения ограничен.
Обнаружение зависит от вложенного

объёма информации.


Слайд 88 Замена ветвлений кода в условиях

Замена ветвлений кода в условиях

Слайд 89 Замена ветвлений кода в условиях

Замена ветвлений кода в условиях

Слайд 90 Замена ветвлений кода в условиях
Не меняют размер исполняемого

Замена ветвлений кода в условияхНе меняют размер исполняемого файла.Объем вложения ограничен.Обнаружение зависит от вложенного объёма информации.

файла.
Объем вложения ограничен.
Обнаружение зависит от вложенного объёма информации.


Слайд 91 Перестановка операций
Перестановка элементов, участвующих в операциях.
Изменение порядка присваивания

Перестановка операцийПерестановка элементов, участвующих в операциях.Изменение порядка присваивания переменных.

переменных.


Слайд 92 Перестановка элементов, участвующих в операциях
a+b ⬄ b+a
a+b+c ⬄

Перестановка элементов, участвующих в операцияхa+b ⬄ b+aa+b+c ⬄ a+c+ba*b ⬄ b*aa*b*c

a+c+b
a*b ⬄ b*a
a*b*c ⬄ a*c*b

Математические операции: сложение, умножение.
Логические операции:

AND, OR, XOR






Слайд 93



Количество, вкладываемых бит равно


При условии что все элементы

Количество, вкладываемых бит равноПри условии что все элементы разные.

разные.




Слайд 94 Перестановка элементов, участвующих в операциях

Перестановка элементов, участвующих в операциях

Слайд 97 Перестановка элементов, участвующих в операциях.
Не меняют размер исполняемого

Перестановка элементов, участвующих в операциях.Не меняют размер исполняемого файла.Объем вложения ограничен.Обнаружение зависит от вложенного объёма информации.

файла.
Объем вложения ограничен.
Обнаружение зависит от вложенного объёма информации.


Слайд 98 Изменение порядка присваивания переменных.





Перестановка не должна менять результат

Изменение порядка присваивания переменных.Перестановка не должна менять результат вычисления

вычисления


Слайд 99 Изменение порядка присваивания переменных.
Не меняют размер исполняемого файла.
Объем

Изменение порядка присваивания переменных.Не меняют размер исполняемого файла.Объем вложения ограничен.Обнаружение зависит от вложенного объёма информации.

вложения ограничен.
Обнаружение зависит от вложенного объёма информации.


Слайд 100







Можем вложить три бита

Можем вложить три бита

  • Имя файла: lektsiya-ispolnyaemye-fayly-java.pptx
  • Количество просмотров: 136
  • Количество скачиваний: 0