Полагаю, абсолютное большинство из нас при упоминании ROP (Return Oriented Programming) сразу подумает, что речь пойдет об эксплуатации, oб обходе DEP (Data Execution Prevention). Но сейчас будет о другом. ROP позволяет представить ряд высокоуровневых операций через несколько более простых. Ряд исследователей решили таким образом скрывать шелл-коды в чужих программах и написали ROPInjector.
Инструмент написан на си (win32) и как раз предназначен для конвертирования шелл-кода в ROP-последовательность с дальнейшим встраиванием в какой-либо исполняемый PE-файл. Инструмент поддерживает только 32-битные файлы и набор инструкций x86. Но распространяется он с открытым исходным кодом, так что при желании поддержку других архитектур можно добавить самому.
ROPInjector показал очeнь хорошие результаты при сканировании полученных файлов различными AV, так что это можно взять на вооружение.
Инструмент впервые был представлен на конференции Black Hat USA 2015. За более подробным описанием устройства инструмента можно обратиться к слайдам «ROPInjector: Using Return Oriented Programming for Polymorphism and AV Evasion».