Преобразовать стандартные файлы ELF в автономные обороты. Пожалуйста, прочитайте следующую документацию и просмотрите примеры для правильной работы этого проекта
GitHub
Пипи
pip install py_shelfБиблиотека Python анализирует эльф и создает простой перемещаемый формат файла с именем Shelf (ellcode Elf).
Мини -погрузчик вставляется в качестве точки входа для полки.
Мини -погрузчик загрузит и перенесет полку, а затем выполнит его. Нет особых требований, библиотека содержит скомпилированные мини -погрузчики и ресурсы.
Диаграмма ниже объясняет формат (только работа в браузерах)
ClassDiagram
ShellCodeEntryPoint -|> MiniLoader
ShellCodeEntryPoint: SheltCode, содержащий логику Pre Mini Loader
MiniLoader -|> Таблица переезда
MiniLoader: содержите всю логику для анализа таблицы переезда
MiniLoader: полностью ОС
Таблица переезда -|> Крюки.
Таблица перемещения: содержит таблицу, необходимая для переезда времени выполнения ShellCode
Крюки необязательно -|> полка
Крюки необязательно: Подробнее о крючках в документации ниже
Крюки Необязательно: этот раздел не является обязательным и существует только в случае использования крючков
Покрытие: ellcode elf - это составленный двоичный файл, который мы конвертируем в шоссе
Покрытие: этот бинарник разделен только в Opcodes
Полка: полностью перемещается с использованием таблицы переселения
Этот проект предназначен для преобразования ELF в независимые коды ОС. Поэтому загрузчик никогда не выделяет память, а формат ShellCode не упакован. Вы можете просто выполнить это, например ...
(( void ( * )()) shellcode )();Следуйте примерам ниже
Некоторые флаги компиляции необходимы для того, чтобы это работало должным образом. Вы должны составить двоичный файл с -fpie и -static взглянуть на приведенные примеры ниже (Makefile).
SheltCode - это разряженный двоичный файл без символов, а информация о эльфе - это только для ELF -коды, чтобы сделать ShellCode этой библиотеке, требуется бинарник с информацией ELF. Поэтому убедитесь, что вы не снимаете бинарное изображение перед использованием этой библиотеки
Упрощенная команда Make для MIPS Big Endian
gcc example . c - fno - stack - protector - fPIE - fpic - static - nostartfiles -- entry = main - o binary . out
python - m shelf -- input binary . out Makefile
Пример.c
Вы можете использовать предоставленный загрузчик ShellCode для проверки ваших Shellcodes
qemu-mips ./shellcode_loader ./myshellcode.outРекомендуется использовать библиотеку погрузчиков полки для тестирования вашего SheltCode здесь вы можете прочитать больше об этом: документация по загрузке полки
Для следующих ссылок работают только на странице GitHub