Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Выполнение подгружаемого кода - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Магический квадрат http://www.cyberforum.ru/cpp-beginners/thread1107285.html
Задана матрица целых чисел. Определить является ли она магическим квадратом, т.е. такой, в которой суммы элементов во всех строках и столбцах одинаковы. Использовать процедуры. #include <iostream> ...
C++ Копирование дерева каталогов в несколько потоков Есть задача скопировать дерево каталогов в несколько потоков,количество потоков равно количеству количеству каталогов,средство синхронизации семафор. Синхронизировать вывод в терминал скопированных... http://www.cyberforum.ru/cpp-beginners/thread1107271.html
Подправьте код, чтобы норм компилировался, просто у меня старый источник примеров по C++ C++
Подправьте код, чтобы норм компилировался, просто у меня старый источник примеров по C++ #include <iostream> #include <conio.h> #include <string.h> using namespace std; class book { public:...
Дана матрица B(8,5). Составить массив, содержащий произведения элементов строки матрицы? C++
Вот я сделал - это дана матрица A(5,6). Составить массив содержащий минимальные элементы каждого столбца. А как переделать в - Дана матрица B(8,5). Составить массив, содержащий произведения...
C++ Оставить только то что после разделителя (знака = ) http://www.cyberforum.ru/cpp-beginners/thread1107244.html
Здравствуйте, есть файл с кучей мусора и небольшими крупицами нужной информации, которая находится после знака = и начинается обязательно на число пример: IdMerchant=532541837 CARD_TYPE=CB...
C++ Класс Quadrangle (четырехугольник). Класс хранит Декартовы координаты четырех углов четырехугольника Класс Quadrangle (четырехугольник). Класс хранит Декартовы координаты четырех углов четырехугольника. Конструктор принимает четыре группы координат. Должны быть предусмотрены функции-элементы,... подробнее

Показать сообщение отдельно
headcrab
0 / 0 / 0
Регистрация: 24.03.2013
Сообщений: 19
17.03.2014, 20:10
Присоединяюсь. Нужно, чтобы на всех системах моя программа могла грузить код в стек и там выполнять его. Компилирую через msvc. Можно ли параметрами компиляции, ну или правкой секций бинаря гарантированно сделать стек исполняемым? Вызывать из него планирую только внутренние функции программы. Или обязательно надо выставлять права на страницы стека VirtualProtect'ом? Хотелось бы без этого.

C
1
asm("jmp %0" : : "r"(code));
%0 - означает, что на это место подставляется первый по счету аргумент. После первого ':' перечисляются аргументы-примники, после второго ':' аргументы-источники.
"r" означает, что аргумент в скобках это регистр, "m" - что это память. Их много разных есть.
Не уверен, но вроде при указании абсолютного адреса для jmp или call нужно перед %0 добавлять символ '*'.
А вообще можно без асм вставки привести массив к типу функция и вызвать ее. Тут главное не забыть восстановить указатель стека перед ret, иначе нормального возврата не будет.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru