С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 24.10.2013
Сообщений: 89

Как можно считать динамическую переменную и выполнить shell code?

22.04.2015, 14:02. Показов 3052. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть переменная которая содержит шел код, необходимо ее считать так чтобы он выполнился, при этом нужно чтобы это происходила не в явном виде(то есть не через специальные функции для этого)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.04.2015, 14:02
Ответы с готовыми решениями:

Как в C++ можно считать время с компьютера и записать в переменную ?
У меня класс часы, в который я передаю час, минуты, секунды и формат времени. Мне нужно считать время с компьютера и занести его в класс....

Как можно выполнить команду sql, записанную в переменную?
Здравствуйте, как запустить на выполнение sql команду, которая выводится через переменную. Например, есть переменная $k='echo...

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

10
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
22.04.2015, 14:05
C
1
2
char *shell_code = "rm -rf /";
system(shell_code);
Оно?
0
0 / 0 / 0
Регистрация: 24.10.2013
Сообщений: 89
22.04.2015, 14:28  [ТС]
Цитата Сообщение от Kastaneda Посмотреть сообщение
C
1
2
char *shell_code = "rm -rf /";
system(shell_code);
Оно?
мой шел код \x31\xF6 (обнуление esi) как мне его туда вписать?
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
22.04.2015, 14:34
а, ну тогда выделять под него память, выставлять флаг execute и передавать управление этой памяти. Только в конце еще ret надо дописать, чтоб вернуться оттуда. Сейчас пример найду, относительно недавно писал.

Добавлено через 3 минуты
вот, там есть примеры под Windows и Linux
2
0 / 0 / 0
Регистрация: 24.10.2013
Сообщений: 89
22.04.2015, 17:50  [ТС]
Добавлено через 52 секунды
Цитата Сообщение от Kastaneda Посмотреть сообщение
а, ну тогда выделять под него память, выставлять флаг execute и передавать управление этой памяти. Только в конце еще ret надо дописать, чтоб вернуться оттуда. Сейчас пример найду, относительно недавно писал.

Добавлено через 3 минуты
вот, там есть примеры под Windows и Linux
а так нельзя?)
C++
1
2
3
4
char *d = (char *)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, 10);
strcpy(d, "\x31\xF6\xc3");
DWORD oldProtect;
VirtualProtect(&d, 128, PAGE_EXECUTE_READWRITE, &oldProtect);
Добавлено через 2 часа 39 минут
Цитата Сообщение от Kastaneda Посмотреть сообщение
а, ну тогда выделять под него память, выставлять флаг execute и передавать управление этой памяти. Только в конце еще ret надо дописать, чтоб вернуться оттуда. Сейчас пример найду, относительно недавно писал.

Добавлено через 3 минуты
вот, там есть примеры под Windows и Linux
просто у меня в вопросе сказано ж про динамическую переменную)
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
22.04.2015, 19:10
Цитата Сообщение от rjrf Посмотреть сообщение
просто у меня в вопросе сказано ж про динамическую переменную
без разницы, главное, чтоб память была помечена как исполняемая. Иначе будет исключение.
Цитата Сообщение от rjrf Посмотреть сообщение
а так нельзя?)
Не работаю с WinAPI, не могу сказать без гугла. Самый простой способ узнать - просто проверить.
0
0 / 0 / 0
Регистрация: 24.10.2013
Сообщений: 89
23.04.2015, 10:25  [ТС]
Цитата Сообщение от Kastaneda Посмотреть сообщение
а, ну тогда выделять под него память, выставлять флаг execute и передавать управление этой памяти. Только в конце еще ret надо дописать, чтоб вернуться оттуда. Сейчас пример найду, относительно недавно писал.

Добавлено через 3 минуты
вот, там есть примеры под Windows и Linux
Извините, но я не понял где передается управление памяти в вашем коде?
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
23.04.2015, 10:29
Цитата Сообщение от rjrf Посмотреть сообщение
Извините, но я не понял где передается управление памяти в вашем коде?
Я так понимаю речь все же о Windows. Вот из примера под Windows
C++
1
int res = ((int (*)(int, int))&opcodes[op_pos][0])(a, b);
т.е. указатель на память приводится к указателю на функцию и вызывается как функция. Поэтому в вашем shell коде в конце должная быть инструкция ret, чтоб из функции вернуться.
1
0 / 0 / 0
Регистрация: 24.10.2013
Сообщений: 89
23.04.2015, 12:15  [ТС]
Цитата Сообщение от Kastaneda Посмотреть сообщение
Я так понимаю речь все же о Windows. Вот из примера под Windows
C++
1
int res = ((int (*)(int, int))&opcodes[op_pos][0])(a, b);
т.е. указатель на память приводится к указателю на функцию и вызывается как функция. Поэтому в вашем shell коде в конце должная быть инструкция ret, чтоб из функции вернуться.
Я с таким еще не работал и не понимаю как это изменить для 1 переменной)
сделал вот так вот
__asm
{

call e
}
но хотедось бы конечно без асемблера)
и кстати, в куче все отлично выполнилось и без изменения памяти на исполняемую
а рет мне не нужен так как в конце шел кода вставил exitprocess)
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
23.04.2015, 12:19
Лучший ответ Сообщение было отмечено rjrf как решение

Решение

Цитата Сообщение от rjrf Посмотреть сообщение
Я с таким еще не работал и не понимаю как это изменить для 1 переменной)
Если отталкиваться от кода из 5 поста, то
C++
1
((void(*)())d)();
Цитата Сообщение от rjrf Посмотреть сообщение
и кстати, в куче все отлично выполнилось и без изменения памяти на исполняемую
очень странно на самом деле.
1
0 / 0 / 0
Регистрация: 24.10.2013
Сообщений: 89
23.04.2015, 12:33  [ТС]
Цитата Сообщение от Kastaneda Посмотреть сообщение
Если отталкиваться от кода из 5 поста, то
C++
1
((void(*)())d)();
очень странно на самом деле.
да, заработало

ну я dep в vs отключил и норм)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.04.2015, 12:33
Помогаю со студенческими работами здесь

Как прочесть в переменную динамическую страницу?
Мнен нужно считать в переменную динамическую страницу. Я так понимаю, что для этого нужно воспользоваться сокетами. Но я точно не знаю как...

Как найти указатель на динамическую переменную
Здравствуйте уважаемые. Ищу с помощью АртМани значение в памяти чужого процесса. АртМани находит то что мне нужно. Далее я пытаюсь в...

Как передать переменную из исполняемого файла в динамическую библиотеку
Имеется два проекта первый это исполняемый файл второй библиотека. В исполняемом файле имеется булевая переменная которая может изменится в...

Как запихнуть переменную типа string в Shell Execute?
Собственно все описано в заголовке.. Не получается, потому что жалуется, что мол нужен тип PChar, а мне нужно string Переменную в...

Как можно динамическую структуру стек преобразовать в класс со стеком?
Добрый день, у меня возник вопрос. как можно динамическую структуру стэк преобразовать в классы со стэк? вот пример кода стэк. я не пойму...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru