Для создания базовых независимых шеллкодов можно использовать следующий метод: 1
- Подготовка Си-проекта. 1 При этом нужно не использовать импорты напрямую (получать их динамически через PEB), не использовать статические библиотеки, использовать только локальные переменные, а строки прописать прямо в коде. 1
- Рефакторинг проекта. 1 Он нужен, чтобы загрузить все импорты и избавиться от зависимости от таблицы импорта. 1
- Использование Си-компилятора для генерации ассемблерного кода. 1
- Рефакторинг ассемблерного кода. 1 Он позволяет получить валидный шеллкод (избавиться от оставшихся зависимостей, добавить встроенные строки, переменные). 1
- Компиляция MASM. 1
- Компоновка в валидный PE-файл и проверка, запускается ли он корректно. 1
- Дамп кодовой секции (например, при помощи PE-bear) — это и будет шеллкод. 1
Также для создания шеллкодов можно использовать инструменты, например, Msfvenom, которые позволяют делать код по шаблону и даже закодировать его. 2