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

Выполнение кода в стеке - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вывести максимальное число из файла http://www.cyberforum.ru/cpp-beginners/thread300818.html
Приветик помогите плиз - завтра нада задачку сдать - оч нада Вывести максимальное число из файла in.txt. плиз помогите!!!
C++ Скромный вопрос Подскажите пожалуйста, как можно в строке содержащей буквы и цифры определить количество цифр? http://www.cyberforum.ru/cpp-beginners/thread300817.html
C++ Определить количество слов в файле
Приветик всем помогите плиз решить задачку - оч нужно! Создать текстовый файл, состоящий из 2-3 предложений. Определить количество слов в нем. помогите плиз
C++ Дан,файл содержащий текст на русском языке.Определить...
Ребят,мне посоветовали вас как классный сайт,выручайте! В программировании вообще не шарю,специальность другая,а зачет получить надо....Помогите а кому не сложно? Вот задачи: 1) Дан,файл содержащий...
C++ Обработка массивов данных http://www.cyberforum.ru/cpp-beginners/thread300786.html
Помогите решить контрольную, часть кода сделана помогите доделать. Она должна быть в Borland Developer Studio 2006. Размерность:_______5*5 Тип данных :_______вещественный Исходные...
C++ Получить названия всех файлов с данным расширением в данной директории Мне нужно, чтобы моя программа при запуске получала имена всех файлов с расширением .mmf, лежащих в директории /Files. Как это можно реализовать на C++? подробнее

Показать сообщение отдельно
sysluck
Сообщений: n/a
28.05.2011, 23:53
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
void Demo(int (*_printf) (const char *,...) )
{
    _printf("Hello, Word!\n");
    return;
}
 
int main(int argc, char* argv[])
{
    char buff[1000];
    int (*_main) (int, char **);
    int (*_printf) (const char *,...);
    void (*_Demo) (int (*) (const char *,...));
 
    _printf = printf;
    _main = main;     // Было пропущено
    _Demo = Demo;   // Было пропущено
 
    int func_len = (unsigned int) _main - (unsigned int) _Demo; // функции должны располагаются
    // в памяти последовательно, сначала "Demo"(младший аддр) потом "main"(старший аддр) =>
    // старший аддр - младший аддр == размеру кода функции "Demo"
 
    for (int a = 0; a < func_len; a++) buff[a] = ((char *) _Demo)[a]; // Копируем код функции в буфер
 
    _Demo = (void (*) (int (*) (const char *,...)))  &buff[0]; // _Demo теперь указывает на буффер
    // с кодом функции
 
    _Demo(_printf); // Запускаем копию функции "Demo" из буфера и получаем Exception
    // проблема решается путем VirtualProtect либо WriteProcessMemory
    // почитай:
    // [url]http://www.insidepro.com/kk/277/277r.shtml[/url]
    // [url]http://citforum.ru/book/cook/selfmod.shtml[/url]
 
    return 0;
}
Добавлено через 9 часов 1 минуту
Хотя VirtualProtect на 7-ке не работает
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru