
Простое приложение dotnet Native AOT, использующее LibObjectFile для преобразования shellcode в ELF
Простое dotnet-приложение Native AOT, которое использует [LibObjectFile] для преобразования shellcode в ELF.
Поддерживается как 32-битный, так и 64-битный (x86, x64) shellcode -> в результате получается 32-битный или 64-битный ELF.
[Релизы] скомпилированы для linux-x64 и win-x64.
Он скомпилирован в формат Native AOT, чтобы продемонстрировать, насколько это круто (хотя это было мучительно, так как некоторые зависимости используют reflection, который вырезается, если его не обмануть :D). Доступные для скачивания [release] бинарники являются нативными и не требуют dotnet-зависимостей! (так что просто запускайте и наслаждайтесь)
Скомпилировано с Native AOT с использованием dotnet SDK 8.0.100-preview.3.23178.7
Dotnet SDK 8+ был выбран, потому что он позволяет создавать гораздо меньшие бинарники.
Компиляция Native AOT поддерживается начиная с версии dotnet 7.
Если вы хотите использовать dotnet 7 для сборки, измените файл проекта, чтобы он нацеливался на net7.0 -> для dotnet 7 сборка гораздо проще.
Довольно просто:
-p, --path [Обязательно. Путь к файлу shellcode]
-a, --architecture [Обязательно. Архитектура: 32 или 64 (в зависимости от shellcode)]
-o, --offset [Необязательно. Начальное смещение shellcode (по умолчанию 0)]
--help [Показать эту справку]
--version [Показать информацию о версии]
Преобразование shellcode в 32-битный ELF (начальное смещение shellcode установлено на 66-й байт):
sc2elf -a 32 -o 66 -p C:\shellcode.bin