Генерация и исполнение функций RunTime

Доброго времени суток!

Вот допустим имеется программно сгенерированный x86 (или x64) код, предположим хранится в массиве байт (TBytes).

Если описать прототип функции, создать соответствующую переменную и присвоить ей адресс 0 байта массива - все это дело не работает.

Как в этом случае делается? Может быть я генерирую не правильно (в том смысле, что память не там выделяю или не там). Может быть еще что-то предварительно сделать надо?

Подскажите пожалуйста)

Заранее спасибо!

P.S.
Использую Delphi, конкретно xE6.
  • Вопрос задан
  • 2420 просмотров
Решения вопроса 2
Выделять в сегменте кода не нужно, нужно выделить область с модифкатором PAGE_EXECUTE
более детально
область выделяют VirtualAlloc
пример использования
Ответ написан
@vic85
Как уже говорили выше выделять память с VirtualAlloc + PAGE_EXECUTE, либо на уже готовую память выставить флаг PAGE_EXECUTE с помощью VirtualProtect
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Может быть из-за того, что Ваша переменная находится в сегменте данных, а код - в сегменте кода ?
Не видя код, трудно оценивать проблему.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы