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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
DUMP
57 / 31 / 7
Регистрация: 22.02.2015
Сообщений: 261
#1

Как понять эту строчку - C++

25.07.2016, 22:18. Просмотров 229. Ответов 3
Метки нет (Все метки)

C++
1
2
3
4
5
char shellcode[]="hello worl\n"
int main()
{
    (* (int(*)()) shellcode) ();    // и что тут ?
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.07.2016, 22:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как понять эту строчку (C++):

Как описать/объяснить Эту строчку? - C++
size_t k = 0; Что Это означает? Как описать/объяснить Эту строчку?

Объясните, как понять строчку в коде - C++
#include <stdio.h> #include <conio.h> #include <windows.h> #include <locale.h> #define M 1000 int versh, ves, nov_ves,...

Как получить номер(или какой нить индифиактор) текущей строки в открытом файле и перейти затем на эту строчку? - C++
открываю файл так: ifstream input("morf.txt"); перехожу на следующие строчки так: input.getline(buffer, 1024);

Преобразуйте эту строчку так, чтобы сначала в ней шли цифры, а потом - все буквы исходной строчки... - C++
Условие: дана строчка, которая содержит буквы и цифры. Преобразуйте эту строчку так, чтобы сначала в ней шли цифры, а потом - все буквы...

Стек на основе массива структур - эт как понять читаю литературу и не могу понять! - C++
Стек статически (на основе массива структур). Пример структура "Товар" которая включает в себя: № по каталогу(ключ), Название, цена, срок...

Как в файле перейти на новую строчку? - C++
Как в файле перейти на новую строчку? Пробовал так fstream sc("Save\\1.txt");//Открыл файл sc.getline(infscore,'endl'); //Считал инфу...

3
DrOffset
7376 / 4453 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
25.07.2016, 22:29 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
DUMP, приведение массива к типу указателя на функцию (возвращает int, не принимает параметров) и вызов.
1
hoggy
6701 / 2883 / 494
Регистрация: 15.11.2014
Сообщений: 6,480
Завершенные тесты: 1
25.07.2016, 22:32 #3
массив символов приводится к типу "указатель на функцию,
которая возвращает int, и не имеет параметров".

после чего этот указатель на функцию разыменовывается,
а через полученную таким образом ссылку на функцию выполняется запуск самой функции.

при этом содержимое массива интерпритируется,
как машинный исполняемый код функции.

и поскольку там бред - приложение падает.

--------------------------

в старину, отцы-основатели запихивали в массив цыферки реального машинного кода.
и приводя к указателю-на-функцию в рантайме генерировали исполняемый нативный код.

в настоящее время так уже никто не делает.
обычно юзают тормозные скрипты.

и потом, в наши дни привести массив к функции - не достаточно.
нужно ещё попросить операционную систему,
что бы она разрешила исполнять кусок памяти расположенный в секции "данных",
а не "исполняемого кода".
7
MansMI
1292 / 1070 / 299
Регистрация: 08.01.2012
Сообщений: 4,070
01.08.2016, 08:03 #4
C++
1
2
3
4
5
6
7
8
9
10
    int code=0xC348C031;//xor eax,eax; dec eax; ret
    int n=25;
    int (*func)()=(int(*)())&code;
    _asm
    {
        lea ebx,code
        call ebx
        mov n,eax
    }
    cout<<((int(*)())&code)()<<"  "<<func()<<"  "<<n<<endl;
0
01.08.2016, 08:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.08.2016, 08:03
Привет! Вот еще темы с ответами:

Как заполнить целочисленный массив введя с клавиатуры строчку из чисел - C++
Здравствуйте! Взялся за изучение с++, столкнулся с проблемой, не могу понять как заполнить целочисленный массив введя с клавиатуры просто...

Включить массив B как новую строчку матрицы А с сохранением упорядоченности - C++
Задано массив А(N;N) и вектор B(N). Элементы 1 столбика массива А упорядоченные по убыванию. Включить массив B как новую строчку в массив А...

Как опустить строчку "Press and key to continue' вниз? - C++
// training4.1.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using...

как зделать эту программу - C++
народ есть задания: 1. Мастям игральных карт условно присвоены слеующие порядковые номера: масти &quot;пики&quot; — 1,.масти &quot;трефы&quot; — 2, масти...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru