Вы должны быть уверены, что байты, которые вы собираетесь выполнить, действительно являются допустимой последовательностью инструкций ЦП, иначе «функция» обязательно вылетит, например, вызовет исключения «недопустимая инструкция», «нарушение доступа» и т. Д.
Следующее, что нужно сделать, это убедиться, что рассматриваемые байты находятся в памяти, которая имеет привилегию выполнения. VirtualProtect
с PAGE_EXECUTE
получите это.
Тогда вы фактически должны передать управление своей функции. Это может быть ассемблерный код, например push <address>; ret;
или вызов стиля C ++ статической функции с адресом в переменной.