2. miasm
✤ Фреймворк для reverse engineering написаный на Python
✤ Реализованы ассемблер, дизассемблер, транслятор в
промежуточное представление, символьное выполнение
и симулятор c JIT
✤ Умеет упрощать выражения (деобфускация)
✤ Умеет генерировать запросы к STP
✤ Жутко медленный :(
3. Текущие задачи RE. Почему не IDA?
✤ Анализ новых архитектур со всем существующим набором
инструментов и методов
✤ Нужна деобфускация
✤ Нужно анализировать связку библиотек в одном адресном
пространстве
✤ Нужно анализировать разные версии одной библиотеки (bindiff)
✤ Нужно декомпилировать в С (большие проекты)
✤ Нужно проверять какие значения могут быть у переменных
✤ Data mining
4. Что такое дизассемблер?
✤ декодирование бинарных данных в
соответсвующие имеющие смыслы поля (опкоды,
аргументы и т.п.)
✤ визуальное представление этих полей
5. Что такое ассемблер?
✤ синтаксический анализ текста
✤ выделение из нее идентификаторов
✤ кодирование их в двоичную форму
6. Что такое симулятор?
✤ хранение контекста выполнения (регистры,
память)
✤ обновление контекста (выполнение команды)
✤ while True:
inst = get_instruction(PC)
execute_instruction(inst, context)
7. Что такое символическая запись?
✤ Запись в виде математической формулы
✤ add R1, R2
mul R1, 4
add R1, 0x100
✤ R1: ((R1_init+R2_init)*4)+0x100
9. Самый минимум
✤ Добавить запись об архитектуре в
miasm2/analysis/machine.py
✤ Определить регистры в
miasm2/arch/hc16/regs.py
✤ в miasm2/arch/hc16/arch.py
class instruction_hc16(cpu.instruction)
class mn_hc16(cpu.cls_mn)
✤ Зарегистрировать дизасемблер (прослойка к дефолтному)
miasm2/arch/hc16/disasm.py
✤ Зарегистрировать транслятор в IR
miasm2/arch/hc16/sem.py
✤ Тесты!