Обзор проекта
Проект Windows шеллкода находится внутриshellcode/, он может быть встроен в PE-файл только в секции .text с и не имеет внешних зависимостей.
Затем мы можем сдампить секцию
.text и добавить некоторые патчи, чтобы сделать его независимым от позиции. Эта идея взята из проекта hasherezade masm_shc.Как build'ить
(Проверено на Win10 x64)Билдим бинарный shellcode
Код:
rustup default nightly-x86_64-pc-windows-msvc
cd shellcode/
cargo build --release
shellcode\target\x86_64-pc-windows-msvc\release\shellcode.exeСдампить секцию .text и сделать несколько патчей
Мы патчим начало секции.text, заставляем переходить к точке входа. Таким образом, мы можем хранить некоторые строки в объединенной секции, или мы должны использовать массив байтов u8 и u16 в стеке для представления строки.
Код:
cd ..
cargo run
shellcode\target\x86_64-pc-windows-msvc\release\shellcode.bin, это финальный файл шеллкода.Тестируем шеллкод
Протестируйте шеллкод, используя ваш любимый загрузчик шеллкода, лично я использую свой небольшой инструмент rs_shellcode.
Код:
git clone https://github.com/b1tg/rs_shellcode
cd rs_shellcode/
cargo build
./target/debug/rs_shellcode.exe -f "shellcode\target\x86_64-pc-windows-msvc\release\shellcode.bin"
OutputDebugStringA. Вы можете проверить это в debugview или windbg.