Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2015_лекции / Лекция №8_2015

.pdf
Скачиваний:
72
Добавлен:
22.03.2016
Размер:
3.05 Mб
Скачать

Дизассемблер: рекурсивное прослеживание информационных потоков (1) VS линейный анализ (2)

1

2

Дизассемблер: рекурсивное прослеживание информационных потоков (1) VS линейный анализ (2)

Дизассемблер: рекурсивное прослеживание

информационных потоков (1) VS линейный анализ (2)

Анти-дизассемблирование

Идея: использовать особенности реализации и принципов функционирования дизассемблеров

Например,

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

(для линейного анализа)

E8 <адрес> = call

E9 <адрес> = jmp

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

Анти-дизассемблирование:

Использование операций передачи управления

1. Jmp переход на один и тот же адрес

Анти-дизассемблирование:

Использование операций передачи управления

1. Jmp переход на один и тот же адрес

Анти-дизассемблирование:

Использование операций передачи управления

Jmp c постоянным условием

Анти-дизассемблирование:

Ачто если байт входит в состав сразу нескольких инструкций ?

→ преобразовать последовательность

INC EAX

==

NOP , ZF = 1

DEC EAX

 

 

Анти-дизассемблирование:

Ачто если байт входит в состав сразу нескольких инструкций ?

ОТСЛЕЖИВАНИЕ ФЛАГОВ И ИЗМЕНЕНИЕ РЕГИСТРОВ

Анти-дизассемблирование:

Использование одних и тех же блоков кода в разных функциях

1)Обфуцирование кода (распределение совместно используемых блоков кода по всей коду программы)

2)Уменьшение объема кода (в упаковщиках)

Armadillo packer

Соседние файлы в папке 2015_лекции