Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
VMPacker — Sistema de protección de máquina virtual para ELF ARM64 | Kitploit
Herramientas/GitHubGitHub/leochen-coremind/vmpacker
Seguridad de Sistemas EmbebidosFrameworks de ExploitsSeguridad IoTAnálisis de VulnerabilidadesIngeniería InversaFuzzingPruebas de PenetraciónSeguridad MóvilSeguridad de HardwareAnálisis de BinariosAnti-Bot
47717022hace 6 mesesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
GitHub
leochen-coremind/vmpacker

VMPacker

Sistema de protección de máquina virtual para ELF ARM64

Ver Repositorio

🛡️ VMPacker

Sistema de Protección de Máquina Virtual para ARM64 ELF

Traduce instrucciones nativas ARM64 a bytecode de VM personalizado para protección de código a nivel de función

🇨🇳 中文文档 • Características • Arquitectura • Inicio rápido • Uso • Licencia


Descripción general

VMPacker es un sistema de Protección de Máquina Virtual (VMP) para binarios ARM64 (AArch64) Linux ELF. Decodifica las instrucciones nativas ARM64 de la función objetivo en una representación intermedia, las traduce a bytecode de VM personalizado e inyecta un intérprete de VM embebido en el archivo ELF. En tiempo de ejecución, las funciones protegidas son ejecutadas por el intérprete de VM en lugar de forma nativa.

Concepto central

Código nativo ARM64  →  Decodificar  →  Traducir  →  Bytecode de VM personalizado
                                                              ↓
                    ELF original  ←  Inyectar  ←  Stub del intérprete de VM

Características

🔄 Motor de traducción de instrucciones

  • 63 instrucciones de VM — que cubren ALU, memoria, bifurcación, llamadas al sistema y más
  • Decodificador basado en tablas — coincidencia de patrones según el Manual de Referencia de Arquitectura ARM
  • 121 instrucciones ARM64 compatibles (cobertura 100% de A64 base), incluyendo:
    • Aritmética/Lógica (ADD, SUB, MUL, AND, ORR, EOR, LSL, LSR, ASR, MVN, BIC, ORN, EON...)
    • Multiplicar-Extender (MADD, MSUB, SMADDL, SMSUBL, UMADDL, UMSUBL, SMULH, UMULH, UDIV, SDIV)
    • Movimiento de datos (MOV, MOVZ, MOVK, MOVN)
    • Acceso a memoria (LDR, STR, LDP, STP, LDPSW, LDADD, CAS, LDAR, STLR, LDAXR, STLXR — varios anchos y modos de direccionamiento)
    • Control de bifurcación (B, BL, BR, BLR, RET, B.cond, CBZ/CBNZ, TBZ/TBNZ)
    • Selección condicional (CSEL, CSINC, CSINV, CSNEG, CCMP, CCMN)
    • Campos de bits (UBFM, SBFM, BFM, EXTR)
    • Manipulación de bits (CLZ, CLS, RBIT, REV, REV16, REV32)
    • Aritmética con acarreo (ADC, ADCS, SBC, SBCS)
    • Carga/Almacenamiento SIMD (LD1, ST1)
    • Sistema/Barreras (SVC, MRS, MSR, ADRP/ADR, DMB, DSB, ISB, HLT, BRK, PRFM)

🔐 Protección multicapa

CapaTécnicaDescripción
Protección VMISA personalizadaOpcodes mapeados aleatoriamente — los ingenieros inversos no pueden identificar directamente la semántica de las instrucciones
OpcodeCryptorCifrado de opcodes por instrucciónenc[pc] = op[pc] ^ (key ^ (pc * 0x9E3779B9))
Inversión de bytecodeInversión del orden de ejecuciónLas instrucciones se almacenan en orden inverso; el intérprete recorre hacia atrás
Entrada tokenizadaTrampolín de 3 instruccionesLa función original se reemplaza con una entrada tokenizada, ocultando la ubicación real del bytecode
Despacho indirectoTabla de saltos de punteros a funciónSe llena en tiempo de ejecución en la pila, rompiendo las referencias cruzadas de IDA

🖥️ Interfaz gráfica (GUI)

  • Aplicación de escritorio multiplataforma construida con Wails v2 (Go + Vue 3)
  • Componentes de interfaz Element Plus
  • Selección de funciones simbólicas + entrada manual de funciones (proteger por rango de direcciones)
  • Protección con un solo clic y registro de salida en tiempo real
Interfaz principal Análisis de funciones Opciones de protección
Lista de funciones Análisis y selección Opciones de protección
Ejecución de protección Protección completada
Registros en tiempo real Protección completada

Arquitectura

vmp/
├── cmd/vmpacker/          # Punto de entrada CLI
│   ├── main.go            # Análisis de argumentos CLI + orquestación
│   └── vm_interp.bin      # Intérprete de VM compilado (GCC, go:embed)
│
├── pkg/                   # Biblioteca central Go
│   ├── arch/arm64/        # Soporte de arquitectura ARM64
│   │   ├── decoder.go     # Decodificador de instrucciones basado en tablas (implementa vm.Decoder)
│   │   ├── decode_*.go    # Tablas de patrones de decodificación (DP-IMM/DP-REG/Branch/LdSt)
│   │   ├── translator.go  # Traductor ARM64 → bytecode de VM
│   │   ├── tr_alu.go      # Traducción de instrucciones ALU
│   │   ├── tr_branch.go   # Traducción de instrucciones de bifurcación
│   │   ├── tr_loadstore.go # Traducción de instrucciones de memoria
│   │   ├── tr_bitfield.go # Traducción de instrucciones de campo de bits
│   │   └── tr_special.go  # Instrucciones especiales (ADRP/ADR)
│   ├── vm/                # Definiciones de ISA de VM
│   │   ├── types.go       # Tipos compartidos + interfaces (Decoder/Translator/Packer)
│   │   ├── opcodes.go     # Definiciones de 58+ opcodes de VM (valores mapeados aleatoriamente)
│   │   └── disasm.go      # Desensamblador de bytecode de VM
│   └── binary/elf/        # Manipulación de binarios ELF
│       ├── packer.go      # Inyección de VMP en ELF (secuestro PT_NOTE, generación de trampolín)
│       └── trampoline.go  # Generación de código de trampolín
│
├── stub/                  # Intérprete de VM en C (compilado a binario plano PIC)
│   ├── vm_interp_clean.c  # Bucle principal del intérprete + puntos de entrada
│   ├── vm_types.h         # Contexto de CPU de VM (vm_ctx_t)
│   ├── vm_opcodes.h       # Definiciones de opcodes en C (sincronizados con opcodes.go)
│   ├── vm_decode.h        # Utilidades de lectura de bytecode
│   ├── vm_token.h         # Codificación/decodificación de tokens + tabla de descriptores
│   ├── vm_dispatch.h      # Tabla de saltos de despacho indirecto
│   ├── vm_crc.h           # Verificación de integridad CRC32
│   ├── vm_sections.h      # Macros de dispersión de secciones de manejadores
│   ├── vm_interp.lds      # Script de enlace
│   └── vm_handlers/       # Manejadores de instrucciones modulares
│       ├── h_alu.h        # Operaciones aritméticas/lógicas
│       ├── h_mem.h        # Acceso a memoria
│       ├── h_branch.h     # Bifurcación/salto
│       ├── h_cmp.h        # Comparación/condicional
│       ├── h_mov.h        # Movimiento de datos
│       ├── h_stack.h      # Pila (PUSH/POP)
│       └── h_system.h     # Sistema (SVC/MRS/BLR/BR/RET)
│
├── vmp-gui/               # Interfaz gráfica Wails
│   ├── frontend/          # Vue 3 + Element Plus
│   └── backend/           # Enlaces del backend Go
│
└── build/                 # Herramientas precompiladas + artefactos de prueba

Diseño modular

Descargar herramienta