Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
VMPacker — ARM64 ELF Система защиты виртуальной машины | Kitploit
Инструменты/GitHubGitHub/leochen-coremind/vmpacker
Безопасность встроенных системФреймворки для эксплойтовБезопасность IoTАнализ уязвимостейОбратная инженерияФаззингТестирование на ПроникновениеМобильная безопасностьАппаратная БезопасностьАнализ Бинарных ФайловАнти-Бот
477170206 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
GitHub
leochen-coremind/vmpacker

VMPacker

ARM64 ELF Система защиты виртуальной машины

Репозиторий

🛡️ VMPacker

Система защиты ARM64 ELF на основе виртуальной машины

Преобразует нативные инструкции ARM64 в пользовательский байт-код ВМ для защиты кода на уровне функций

🇨🇳 中文文档 • Возможности • Архитектура • Быстрый старт • Использование • Лицензия


Обзор

VMPacker — это система защиты с помощью виртуальной машины (VMP) для ARM64 (AArch64) Linux ELF-бинарных файлов. Она декодирует нативные инструкции ARM64 целевой функции в промежуточное представление, преобразует их в пользовательский байт-код ВМ и внедряет встроенный интерпретатор ВМ в ELF-файл. Во время выполнения защищённые функции исполняются интерпретатором ВМ вместо нативного выполнения.

Основная концепция

ARM64 Native Code  →  Decode  →  Translate  →  Custom VM Bytecode
                                                      ↓
                    Original ELF  ←  Inject  ←  VM Interpreter Stub

Возможности

🔄 Движок трансляции инструкций

  • 63 инструкции ВМ — охватывают ALU, память, ветвления, системные вызовы и другое
  • Таблично-управляемый декодер — сопоставление с образцом на основе справочника архитектуры ARM
  • Поддерживается 121 инструкция ARM64 (100% покрытие базового A64), включая:
    • Арифметика/Логика (ADD, SUB, MUL, AND, ORR, EOR, LSL, LSR, ASR, MVN, BIC, ORN, EON...)
    • Умножение с расширением (MADD, MSUB, SMADDL, SMSUBL, UMADDL, UMSUBL, SMULH, UMULH, UDIV, SDIV)
    • Перемещение данных (MOV, MOVZ, MOVK, MOVN)
    • Доступ к памяти (LDR, STR, LDP, STP, LDPSW, LDADD, CAS, LDAR, STLR, LDAXR, STLXR — различной ширины и режимов адресации)
    • Управление ветвлениями (B, BL, BR, BLR, RET, B.cond, CBZ/CBNZ, TBZ/TBNZ)
    • Условный выбор (CSEL, CSINC, CSINV, CSNEG, CCMP, CCMN)
    • Битовые поля (UBFM, SBFM, BFM, EXTR)
    • Битовые операции (CLZ, CLS, RBIT, REV, REV16, REV32)
    • Арифметика с переносом (ADC, ADCS, SBC, SBCS)
    • Загрузка/сохранение SIMD (LD1, ST1)
    • Системные/барьерные инструкции (SVC, MRS, MSR, ADRP/ADR, DMB, DSB, ISB, HLT, BRK, PRFM)

🔐 Многоуровневая защита

УровеньТехникаОписание
Защита ВМПользовательская ISAСлучайное отображение опкодов — обратные инженеры не могут напрямую определить семантику инструкций
OpcodeCryptorШифрование опкода для каждой инструкцииenc[pc] = op[pc] ^ (key ^ (pc * 0x9E3779B9))
Реверсирование байт-кодаОбратный порядок выполненияИнструкции хранятся в обратном порядке; интерпретатор обходит их в обратную сторону
Токеновый входТрамплин из 3 инструкцийИсходная функция заменяется токенизированным входом, скрывающим фактическое местоположение байт-кода
Косвенная диспетчеризацияТаблица переходов по указателям на функцииЗаполняется во время выполнения в стеке, нарушая перекрёстные ссылки IDA

🖥️ Графический интерфейс

  • Кроссплатформенное десктопное приложение на Wails v2 (Go + Vue 3)
  • Компоненты UI Element Plus
  • Выбор функций по символам + ручной ввод функции (защита по диапазону адресов)
  • Защита одной кнопкой с выводом логов в реальном времени
Главный интерфейс Анализ функций Параметры защиты
Список функций Анализ и выбор Параметры защиты
Выполнение защиты Защита завершена
Логи в реальном времени Защита завершена

Архитектура

vmp/
├── cmd/vmpacker/          # Точка входа CLI
│   ├── main.go            # Разбор аргументов CLI + оркестровка
│   └── vm_interp.bin      # Скомпилированный интерпретатор ВМ (GCC, go:embed)
│
├── pkg/                   # Основная библиотека Go
│   ├── arch/arm64/        # Поддержка архитектуры ARM64
│   │   ├── decoder.go     # Таблично-управляемый декодер инструкций (реализует vm.Decoder)
│   │   ├── decode_*.go    # Таблицы шаблонов декодирования (DP-IMM/DP-REG/Branch/LdSt)
│   │   ├── translator.go  # Транслятор ARM64 → байт-код ВМ
│   │   ├── tr_alu.go      # Трансляция ALU-инструкций
│   │   ├── tr_branch.go   # Трансляция инструкций ветвления
│   │   ├── tr_loadstore.go # Трансляция инструкций работы с памятью
│   │   ├── tr_bitfield.go # Трансляция инструкций битовых полей
│   │   └── tr_special.go  # Специальные инструкции (ADRP/ADR)
│   ├── vm/                # Определения ISA ВМ
│   │   ├── types.go       # Общие типы + интерфейсы (Decoder/Translator/Packer)
│   │   ├── opcodes.go     # 58+ определений опкодов ВМ (случайно отображаемые значения)
│   │   └── disasm.go      # Дизассемблер байт-кода ВМ
│   └── binary/elf/        # Манипуляции с ELF-бинарными файлами
│       ├── packer.go      # Внедрение VMP в ELF (перехват PT_NOTE, генерация трамплина)
│       └── trampoline.go  # Генерация кода трамплина
│
├── stub/                  # Интерпретатор ВМ на C (скомпилирован в PIC плоский бинарник)
│   ├── vm_interp_clean.c  # Основной цикл интерпретатора + точки входа
│   ├── vm_types.h         # Контекст ЦП ВМ (vm_ctx_t)
│   ├── vm_opcodes.h       # Определения опкодов на C (синхронизированы с opcodes.go)
│   ├── vm_decode.h        # Утилиты чтения байт-кода
│   ├── vm_token.h         # Кодирование/декодирование токена + таблица дескрипторов
│   ├── vm_dispatch.h      # Таблица косвенной диспетчеризации
│   ├── vm_crc.h           # Проверка целостности CRC32
│   ├── vm_sections.h      # Макросы разброса секций обработчиков
│   ├── vm_interp.lds      # Скрипт компоновщика
│   └── vm_handlers/       # Модульные обработчики инструкций
│       ├── h_alu.h        # Арифметические/логические операции
│       ├── h_mem.h        # Доступ к памяти
│       ├── h_branch.h     # Ветвления/переходы
│       ├── h_cmp.h        # Сравнения/условные операции
│       ├── h_mov.h        # Перемещение данных
│       ├── h_stack.h      # Стек (PUSH/POP)
│       └── h_system.h     # Системные операции (SVC/MRS/BLR/BR/RET)
│
├── vmp-gui/               # Фронтенд GUI Wails
│   ├── frontend/          # Vue 3 + Element Plus
│   └── backend/           # Привязки бэкенда на Go
│
└── build/                 # Предварительно скомпилированные инструменты + тестовые артефакты

Модульная конструкция

Проект использует интерфейсно-ориентированную модульную архитектуру, что упрощает расширение на новые ISA и бинарные форматы:

// Интерфейс архитектурного декодера — расширяемый для x86, RISC-V
type Decoder interface {
    Decode(raw uint32, offset int) Instruction
    InstName(op int) string
}

// Интерфейс транслятора байт-кода
type Translator interface {
    Translate(instructions []Instruction) (*TranslateResult, error)
}
Скачать инструмент