Декомпеляция

Содержание

Слайд 2

Декомпиляция и обфускация

Декомпиляция и обфускация

Слайд 3

Декомпиляция

Трансляция исполняемого кода в исходный.
Возможна благодаря:
Массе лишней информации об оригинальном коде в

Декомпиляция Трансляция исполняемого кода в исходный. Возможна благодаря: Массе лишней информации об
скомпилированной проге
Однотипности языков в\у
Информации о компиляторе
Наличию промежуточных кодов

Слайд 4

Цели декомпиляции

- Поддержка кода
- Обеспечение безопасности
- Обратная разработка

Цели декомпиляции - Поддержка кода - Обеспечение безопасности - Обратная разработка

Слайд 5

Декомпиляторы Java

“Jad” Java-декомпилятор
“Cavaj” Java-декомпилятор
“Mocha” Java-декомпилятор
“DeCafePro” от DeCafe, Франция

Декомпиляторы Java “Jad” Java-декомпилятор “Cavaj” Java-декомпилятор “Mocha” Java-декомпилятор “DeCafePro” от DeCafe, Франция
“SourceTech Java-декомпилятор” от SourceTech Corp
“SourceAgain” от Ahpah Сorp
“Class Cracker” от Mayon Software, Австралия
“IceBreaker” от BreakerTech corp, Великобритания
“NMI Java-декомпилятор” от NMI
DJ Java Decompiler - декомпилятор Java-классов.

Слайд 6

Обфускация

Запутывание кода программы с целью осложнения декомпиляции.
Возможна на уровнях:
Алгоритма
Исходного текста
Машинных кодов

Обфускация Запутывание кода программы с целью осложнения декомпиляции. Возможна на уровнях: Алгоритма Исходного текста Машинных кодов

Слайд 7

Обоснованность обфускации

Время на понимание > времени актуальности алгоритма
Цена обфускации > цены продукта

Обоснованность обфускации Время на понимание > времени актуальности алгоритма Цена обфускации > цены продукта

Слайд 8

Методы обфускации

- Переименование методов, переменных и т.д. в набор бессмысленных символов.
Например: метод

Методы обфускации - Переименование методов, переменных и т.д. в набор бессмысленных символов.
GetPassword() после обфускации будет иметь имя KJHS92DSLKaf().
Проблема: многие декомпиляторы, встречая на своем пути подобного рода имена, заменяют их наболее осмысленные (method_1, method_2), тем самым сводя всю работу обфускатора на нет.

Слайд 9

- Переименование в более краткие имена или использование порядковых номеров вместо имён
Например:

- Переименование в более краткие имена или использование порядковых номеров вместо имён
метод GetConnectionString() -> 0().
- Использование для имен переменных нечитаемых символов.
- Использование имен, меняющих смысл.
Например, класс SecurityInformation с методом GetInformation станет классом Car с методом Wash.

Слайд 10

- Изменение местоположения данных: объединение нескольких сущностей в одну или разделение одной

- Изменение местоположения данных: объединение нескольких сущностей в одну или разделение одной
сущности на несколько. Например: две строки могут быть объединены в массив строк.
- Замена статических членов на вызовы методов.
- Добавление неиспользуемых данных.
- Изменение способа хранения данных.
- Выполнение финализации (finalization).

Слайд 11

- Преобразование вычислений, вставка в алгоритмы ложных условий.
- Удаление или добавление абстракций

- Преобразование вычислений, вставка в алгоритмы ложных условий. - Удаление или добавление
кода
Например: замена вызова какой-либо функции непосредственно телом функции, или наоборот – замена одной функции на несколько маленьких функций.
- Перемешивание случайным образом линейных участков.
Таким образом, обфускатор часто является оптимизирующим компилятором.
Имя файла: Декомпеляция-.pptx
Количество просмотров: 144
Количество скачиваний: 0