Содержание
- 2. Темы Структура class файла. Средства работы с class файлами. Байт-код java. Стеганография и цифровые водяные знаки.
- 3. Class файл Содержит байт-код, который выполняется на виртуальной машине. Содержит информацию о классе. Генерируется компилятором из
- 4. Структура class файла class файл состоит из 1,2,4 байтовых значений. Введем обозначения: u1 – byte (
- 5. Структура class файла
- 6. Структура class файла u4 magic Идентификатор формата файла класса. Позволяет идентифицировать .class файл. Всегда принимает значение:
- 7. Структура class файла u2 minor_version u2 major_version Вспомогательная и основная версии class файла.
- 8. Структура class файла u2 constant_pool_count Размер массива констант.
- 9. Структура class файла cp_info constant_pool[constant_pool_count-1] Пул констант представлен в виде массива структур в которых содержится: строковые
- 10. Формат каждого элемента пула констант определяется первым байтом (tag).
- 12. Структура class файла u2 access_flags Значение элемента является маской флагов, используемых таким образом, чтобы обозначить права
- 13. Флаги доступа
- 14. Структура class файла u2 this_class u2 super_class Ссылки на константу с названием класса и его суперкласса.
- 15. Структура class файла u2 interfaces_count Размер массива интерфейсов.
- 16. Структура class файла u2 interfaces[interfaces_count] Массив интерфейсов. Каждый элемент массива является индексом таблицы пула констант, где
- 17. Структура class файла u2 fields_count Размер массива полей.
- 18. Структура class файла field_info fields[fields_count] Массив полей.
- 19. Структура class файла u2 methods_count Размер массива методов.
- 20. Структура class файла method_info methods[methods_count] Массив методов.
- 22. Атрибут Code
- 23. Структура class файла u2 attributes_count Размер массива атрибутов.
- 24. Структура class файла attribute_info attributes[attributes_count] Массив атрибутов.
- 25. Структура class файла
- 26. Средства работы с class-файлами JBE - Java Bytecode Editor – программа, позволяющая просматривать и редактировать class
- 27. Исходный код Файл Main.java public class Main { public static void main (String [] args )
- 38. Исходный код Файл Main.java public class Main { public static void main (String [] args )
- 39. Просмотр байт-кода > javap -c Main.class
- 40. Байт-код Java Байт-код Java — набор инструкций, исполняемых виртуальной машиной Java. Каждый код операции байт-кода имеет
- 41. Виды инструкций загрузка и сохранение; арифметические и логические операции; преобразование типов; создание и преобразование объекта; управление
- 42. Формат инструкций
- 43. Инструкции загрузки Загрузка типа int из локальной переменной: iload_0 = 26 (0x1a) iload_1 = 27 (0x1b)
- 44. Инструкции загрузки Загрузка типа int из локальной переменной: iload = 21 (0x15) Имеет один аргумент.
- 45. Инструкции загрузки Загрузка из локальной переменной iload — для типа int lload — для типа long
- 46. Инструкции сохранения Сохранение локальной переменно типа int: istore_0 = 59 (0x3b) istore_1 = 60 (0x3c) istore_2
- 47. Инструкции сохранения Сохранение локальной переменной типа int: istore = 54 (0x36) Имеет один аргумент
- 48. Инструкции загрузки Сохранение в локальной переменной istore — для типа int lstore — для типа long
- 49. Математические операции iadd = 96 (0x60) – сложение типа int ladd = 97 (0x61) – сложение
- 50. Примеры кода
- 51. Примеры кода
- 52. Java Virtual Machine Виртуальная машина java реализована в виде стековой машины. Команды делятся на два вида:
- 53. Пример вычисления
- 54. Пример вычисления
- 55. Пример вычисления
- 56. Пример вычисления
- 57. Пример вычисления
- 58. Пример вычисления
- 59. Пример вычисления
- 60. СТЕГАНОГРАФИЯ (В широком смысле). Англоязычный термин"Скрытие информации" (Information hiding (IH)). Определение. IH - это семейство методов,
- 61. Типичные ПС - неподвижное изображение - подвижное изображение (видео) - аудио файлы - речь - печатный
- 62. Вложение в class файл Применяется для защиты авторских прав. Не должно нарушать работу программы. Не должно
- 63. Методы вложения в исполняемый class файл Модификация class файла Перестановка элементов массивов: Интерфейсов Полей Методов Атрибутов
- 64. Количество бит, которые можно вложить за счет перестановки массивов. Имеется массив из N элементов. Количество комбинаций
- 65. Файл Main.java public class Main { Integer integer = 4; String string = "123"; int number
- 68. Перестановка элементов массивов полей Количество бит, которые мы можем вложить равно Для массива интерфейсов и атрибутов
- 69. Перестановка элементов массивов методов Файл Main.java public class Main { public static void main (String []
- 70. Перестановка элементов массивов методов
- 71. Перестановка элементов массивов методов
- 72. Перестановка элементов массивов методов Файл Main.java public class test { test() { } void getX() {}
- 73. Перестановка элементов массивов методов
- 74. Перестановка элементов массивов методов
- 75. Перестановка элементов массивов методов Количество бит которые можно вложить за счет перестановки массивов методов равно: Если
- 76. Количество бит которые можно вложить за счет перестановки массивов в class файле равно: Если класс содержит
- 77. Перестановка элементов массивов методов Не меняют размер исполняемого файла. Объем вложения ограничен. Не обнаруживается
- 78. Модификация байт-кода Вставка операций Замена конструкций на эквивалентные Перестановка операций
- 79. Вставка операций Размер вложенной информации 4*3 = 12 байт
- 80. Вставка операций Увеличивает размер исполняемого файла. Объем вложения неограничен. Обнаруживается с помощью статистического анализа.
- 81. Замена конструкций на эквивалентные Замена математических операций на эквивалентные Замена ветвлений кода в условиях
- 82. Замена математических операций на эквивалентные 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+c+b a*b ⬄ b*a a*b*c ⬄
- 93. Количество, вкладываемых бит равно При условии что все элементы разные.
- 94. Перестановка элементов, участвующих в операциях
- 97. Перестановка элементов, участвующих в операциях. Не меняют размер исполняемого файла. Объем вложения ограничен. Обнаружение зависит от
- 98. Изменение порядка присваивания переменных. Перестановка не должна менять результат вычисления
- 99. Изменение порядка присваивания переменных. Не меняют размер исполняемого файла. Объем вложения ограничен. Обнаружение зависит от вложенного
- 100. Можем вложить три бита
- 102. Скачать презентацию