
Упаковщик ELF-бинарных файлов, который шифрует секции кода и внедряет заглушку для дешифровки во время выполнения для 64-битных исполняемых файлов Linux, демонстрируя методы внедрения кода и манипуляции бинарными файлами.
Школьный проект 42, реализующий упаковщик бинарных файлов для 64-битных ELF-исполняемых файлов. Упаковщик шифрует секции кода исполняемого файла и внедряет процедуру дешифрования, которая выполняется во время выполнения.
Woody-Woodpacker — это программа, которая принимает 64-битный ELF-бинарный файл и создаёт новую зашифрованную версию с именем woody. При выполнении бинарный файл woody:
В этом проекте исследуются:
Original Binary → [Woody-Woodpacker] → Encrypted Binary (woody)
woody./woody → Decrypt code → Print "....WOODY...." → Execute original program
# Клонировать репозиторий
git clone https://gitlab.com/Aurh1l/woody-woodpacker.git
cd woody-woodpacker
# Скомпилировать проект
make
# Исполняемый файл woody_woodpacker готов
./woody_woodpacker
./woody_woodpacker <binary_file>
Это создаёт новый файл с именем woody в текущем каталоге.
# Упаковать бинарный файл
./woody_woodpacker /bin/ls
# Запустить упакованный бинарный файл
./woody
# Вывод: ....WOODY....
# [затем обычный вывод ls]
# Сравнить поведение исходного и упакованного бинарных файлов
/bin/ls -la
./woody -la
# Оба должны давать одинаковый вывод (после "....WOODY....")
Упаковщик манипулирует следующими компонентами ELF:
.text, содержащая исполняемый кодВ проекте обычно используется простой метод шифрования, например:
Инфицирование дополнения сегмента (метод Silvio Cesare):
┌─────────────────────────┐
│ ELF Header │
├─────────────────────────┤
│ Program Headers │
├─────────────────────────┤
│ Decryption Stub │ ← Внедрённый код
├─────────────────────────┤
│ Encrypted .text │ ← Исходный код (зашифрован)
├─────────────────────────┤
│ Other sections │
├─────────────────────────┤
│ Section Headers │
└─────────────────────────┘
Этот проект является частью учебной программы школы 42 и предназначен только для образовательных целей.
Этот инструмент создан в образовательных целях в рамках учебной программы школы 42. Используйте его ответственно и только для тех бинарных файлов, которыми вы владеете или на изменение которых имеете разрешение. Авторы не несут ответственности за любое неправомерное использование данного программного обеспечения.