
Empacotador de binário ELF que criptografa seções de código e injeta um stub de descriptografia em tempo de execução para executáveis Linux de 64 bits, demonstrando técnicas de injeção de código e manipulação de binários.
Um projeto da escola 42 que implementa um empacotador binário para executáveis ELF de 64 bits. O empacotador criptografa as seções de código do executável e injeta uma rotina de descriptografia que é executada em tempo de execução.
Woody-Woodpacker é um programa que recebe um binário ELF de 64 bits como entrada e cria uma nova versão criptografada chamada woody. Quando executado, o binário woody:
Este projeto explora:
Original Binary → [Woody-Woodpacker] → Encrypted Binary (woody)
Binário Original → [Woody-Woodpacker] → Binário Criptografado (woody)
woody./woody → Decrypt code → Print "....WOODY...." → Execute original program
./woody → Descriptografar código → Imprimir "....WOODY...." → Executar programa original
# Clone the repository
git clone https://gitlab.com/Aurh1l/woody-woodpacker.git
cd woody-woodpacker
# Compile the project
make
# The woody_woodpacker executable is now ready
./woody_woodpacker
./woody_woodpacker <binary_file>
Isso cria um novo arquivo chamado woody no diretório atual.
# Pack a binary
./woody_woodpacker /bin/ls
# Execute the packed binary
./woody
# Output: ....WOODY....
# [then normal ls output]
# Compare original and packed binary behavior
/bin/ls -la
./woody -la
# Both should produce the same output (after "....WOODY....")
O empacotador manipula os seguintes componentes ELF:
.text contendo código executávelO projeto normalmente usa um método de criptografia simples como:
Infecção por Preenchimento de Segmento (método Silvio Cesare):
┌─────────────────────────┐
│ ELF Header │
├─────────────────────────┤
│ Program Headers │
├─────────────────────────┤
│ Decryption Stub │ ← Injected code
├─────────────────────────┤
│ Encrypted .text │ ← Original code (encrypted)
├─────────────────────────┤
│ Other sections │
├─────────────────────────┤
│ Section Headers │
└─────────────────────────┘
Este projeto faz parte do currículo da escola 42 e é destinado apenas para fins educacionais.
Esta ferramenta foi criada para fins educacionais como parte do currículo da escola 42. Use com responsabilidade e apenas em binários que você possui ou tem permissão para modificar. Os autores não são responsáveis por qualquer uso indevido deste software.