Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
VMPacker — Sistema de Proteção de Máquina Virtual ARM64 ELF | Kitploit
Ferramentas/GitHubGitHub/leochen-coremind/vmpacker
Segurança de Sistemas EmbarcadosFrameworks de ExploraçãoSegurança IoTAnálise de VulnerabilidadesEngenharia ReversaFuzzingTestes de PenetraçãoSegurança MóvelSegurança de HardwareAnálise de BináriosAnti-Bot
47717022há 6 mesesRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
GitHub
leochen-coremind/vmpacker

VMPacker

Sistema de Proteção de Máquina Virtual ARM64 ELF

Ver Repositório

🛡️ VMPacker

Sistema de Proteção de Máquina Virtual ARM64 ELF

Traduza instruções nativas ARM64 para bytecode VM personalizado para proteção de código em nível de função

🇨🇳 中文文档 • Funcionalidades • Arquitetura • Início Rápido • Uso • Licença


Visão Geral

O VMPacker é um sistema de Proteção por Máquina Virtual (VMP) para binários ARM64 (AArch64) Linux ELF. Ele decodifica instruções ARM64 nativas da função alvo em uma representação intermediária, traduz-as em bytecode VM personalizado e injeta um interpretador VM embarcado no arquivo ELF. Em tempo de execução, as funções protegidas são executadas pelo interpretador VM em vez de nativamente.

Conceito Principal

Código Nativo ARM64  →  Decodificar  →  Traduzir  →  Bytecode VM Personalizado
                                                      ↓
                    ELF Original  ←  Injetar  ←  Stub do Interpretador VM

Funcionalidades

🔄 Motor de Tradução de Instruções

  • 63 instruções VM — cobrindo ALU, memória, desvio, chamadas de sistema e mais
  • Decodificador orientado por tabela — correspondência de padrões baseada no Manual de Referência de Arquitetura ARM
  • 121 instruções ARM64 suportadas (cobertura de 100% da base A64), incluindo:
    • Aritmética/Lógica (ADD, SUB, MUL, AND, ORR, EOR, LSL, LSR, ASR, MVN, BIC, ORN, EON...)
    • Multiplicação-Extensão (MADD, MSUB, SMADDL, SMSUBL, UMADDL, UMSUBL, SMULH, UMULH, UDIV, SDIV)
    • Movimento de Dados (MOV, MOVZ, MOVK, MOVN)
    • Acesso à Memória (LDR, STR, LDP, STP, LDPSW, LDADD, CAS, LDAR, STLR, LDAXR, STLXR — várias larguras e modos de endereçamento)
    • Controle de Desvio (B, BL, BR, BLR, RET, B.cond, CBZ/CBNZ, TBZ/TBNZ)
    • Seleção Condicional (CSEL, CSINC, CSINV, CSNEG, CCMP, CCMN)
    • Campos de Bits (UBFM, SBFM, BFM, EXTR)
    • Manipulação de Bits (CLZ, CLS, RBIT, REV, REV16, REV32)
    • Aritmética com Carry (ADC, ADCS, SBC, SBCS)
    • Carga/Descarga SIMD (LD1, ST1)
    • Sistema/Barreiras (SVC, MRS, MSR, ADRP/ADR, DMB, DSB, ISB, HLT, BRK, PRFM)

🔐 Proteção em Multi-Camadas

CamadaTécnicaDescrição
Proteção VMISA PersonalizadaOpcodes mapeados aleatoriamente — engenheiros reversos não podem identificar diretamente a semântica das instruções
Criptografia de OpcodeCriptografia de opcode por instruçãoenc[pc] = op[pc] ^ (key ^ (pc * 0x9E3779B9))
Reversão de BytecodeInversão da ordem de execuçãoInstruções armazenadas em ordem inversa; interpretador percorre para trás
Entrada TokenizadaTrampolim de 3 instruçõesFunção original substituída por entrada tokenizada, ocultando a localização real do bytecode
Despacho IndiretoTabela de ponteiros de funçãoPreenchida em tempo de execução na pilha, quebrando referências cruzadas do IDA

🖥️ Interface Gráfica (GUI)

  • Aplicativo de desktop multiplataforma construído com Wails v2 (Go + Vue 3)
  • Componentes de interface Element Plus
  • Seleção de funções por símbolo + entrada manual de função (proteger por intervalo de endereços)
  • Proteção com um clique e saída de logs em tempo real
Interface Principal Análise de Funções Opções de Proteção
Lista de Funções Análise e Seleção Opções de Proteção
Execução da Proteção Proteção Concluída
Logs em Tempo Real Proteção Concluída

Arquitetura

vmp/
├── cmd/vmpacker/          # Ponto de entrada da CLI
│   ├── main.go            # Análise de argumentos da CLI + orquestração
│   └── vm_interp.bin      # Interpretador VM compilado (GCC, go:embed)
│
├── pkg/                   # Biblioteca central Go
│   ├── arch/arm64/        # Suporte à arquitetura ARM64
│   │   ├── decoder.go     # Decodificador orientado por tabela (implementa vm.Decoder)
│   │   ├── decode_*.go    # Tabelas de padrões de decodificação (DP-IMM/DP-REG/Branch/LdSt)
│   │   ├── translator.go  # Tradutor ARM64 → bytecode VM
│   │   ├── tr_alu.go      # Tradução de instruções ALU
│   │   ├── tr_branch.go   # Tradução de instruções de desvio
│   │   ├── tr_loadstore.go # Tradução de instruções de memória
│   │   ├── tr_bitfield.go # Tradução de instruções de campos de bits
│   │   └── tr_special.go  # Instruções especiais (ADRP/ADR)
│   ├── vm/                # Definições da ISA VM
│   │   ├── types.go       # Tipos compartilhados + interfaces (Decoder/Translator/Packer)
│   │   ├── opcodes.go     # Definições de 58+ opcodes VM (valores mapeados aleatoriamente)
│   │   └── disasm.go      # Desmontador de bytecode VM
│   └── binary/elf/        # Manipulação de binários ELF
│       ├── packer.go      # Injeção VMP em ELF (sequestro de PT_NOTE, geração de trampolim)
│       └── trampoline.go  # Geração de código de trampolim
│
├── stub/                  # Interpretador VM em C (compilado para binário PIC flat)
│   ├── vm_interp_clean.c  # Loop principal do interpretador + pontos de entrada
│   ├── vm_types.h         # Contexto de CPU VM (vm_ctx_t)
│   ├── vm_opcodes.h       # Definições de opcodes do lado C (sincronizadas com opcodes.go)
│   ├── vm_decode.h        # Utilitários de leitura de bytecode
│   ├── vm_token.h         # Codificação/decodificação de token + tabela descritora
│   ├── vm_dispatch.h      # Tabela de despacho indireto
│   ├── vm_crc.h           # Verificação de integridade CRC32
│   ├── vm_sections.h      # Macros de dispersão de seções de handlers
│   ├── vm_interp.lds      # Script do linker
│   └── vm_handlers/       # Handlers modulares de instruções
│       ├── h_alu.h        # Operações aritméticas/lógicas
│       ├── h_mem.h        # Acesso à memória
│       ├── h_branch.h     # Desvio/salto
│       ├── h_cmp.h        # Comparação/condicional
│       ├── h_mov.h        # Movimento de dados
│       ├── h_stack.h      # Pilha (PUSH/POP)
│       └── h_system.h     # Sistema (SVC/MRS/BLR/BR/RET)
│
├── vmp-gui/               # Frontend da GUI Wails
│   ├── frontend/          # Vue 3 + Element Plus
│   └── backend/           # Ligações do backend em Go
│
└── build/                 # Ferramentas pré-compiladas + artefatos de teste

Design Modular

O projeto usa uma arquitetura modular orientada por interfaces, facilitando a extensão para novas ISAs e formatos binários:

// Interface do decodificador de arquitetura — extensível para x86, RISC-V
type Decoder interface {
    Decode(raw uint32, offset int) Instruction
    InstName(op int) string
}
Baixar ferramenta