Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
76 / 50 / 26
Регистрация: 22.02.2015
Сообщений: 306
1

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

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

Author24 — интернет-сервис помощи студентам
C++
1
2
3
4
5
char shellcode[]="hello worl\n"
int main()
{
    (* (int(*)()) shellcode) ();    // и что тут ?
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.07.2016, 22:18
Ответы с готовыми решениями:

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

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

Не могу понять как исправить эту ошибку
Каждый раз мне выдает такую ошибку. Не знаю как ее исправить. П.5.18.Правил Запрещено размещать...

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

3
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
25.07.2016, 22:29 2
Лучший ответ Сообщение было отмечено DUMP как решение

Решение

DUMP, приведение массива к типу указателя на функцию (возвращает int, не принимает параметров) и вызов.
1
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
25.07.2016, 22:32 3
массив символов приводится к типу "указатель на функцию,
которая возвращает int, и не имеет параметров".

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

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

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

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

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

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

и потом, в наши дни привести массив к функции - не достаточно.
нужно ещё попросить операционную систему,
что бы она разрешила исполнять кусок памяти расположенный в секции "данных",
а не "исполняемого кода".
7
Заблокирован
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.08.2016, 08:03
Помогаю со студенческими работами здесь

Как понять эту формулу (более проще записать) для того чтобы написать программу
Формула: \prod_{x=1}^{4}\sum_{z=2}^{10}(\sqrt{x}+lg(z)) hz=2, hx=1

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

Как написать эту строчку на C#?
Как написать это k1 = (int)sqrt((double)N); на С#?

Как переписать эту C++ строчку в C#?
(0 == count(a, a + i, a))


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru