C++ Вопрос Stack string array compile time encryption

Начинающий
Статус
Оффлайн
Регистрация
30 Сен 2023
Сообщения
5
Реакции[?]
1
Поинты[?]
1K
Все знают что можно форсить msvc запушить строку на стек вместо .rdata как это делается со строковым литералом. Это нужно например для того чтобы сгенерить шеллкод.
char str [] = {'s', 't', 'r', 'i', 'n', 'g', '\0' } вместо const char* str = "string";
Достаточно неудобно для больших строк

Как с помощью макросов или constexpr/consteval функций сделать синтаксис позволяющий использовать обычные строковые литералы, но в рантайме ассемблер должен быть таким же как для массива символов?

Более того, хотелось бы ещё заксорить или сделать любую другую обфускацию строк во время комплияции
 
Последнее редактирование:
Эксперт
Статус
Онлайн
Регистрация
29 Мар 2021
Сообщения
1,523
Реакции[?]
572
Поинты[?]
8K
char str [] = {'s', 't', 'r', 'i', 'n', 'g', '\0' } вместо const char* str = "string";
эти вещи равны


Достаточно неудобно для больших функций
что блядь


ассемблер должен быть таким же как для массива символов?
ты в любом случае получишь push rax, string....
 
Начинающий
Статус
Оффлайн
Регистрация
30 Сен 2023
Сообщения
5
Реакции[?]
1
Поинты[?]
1K
Эксперт
Статус
Онлайн
Регистрация
29 Мар 2021
Сообщения
1,523
Реакции[?]
572
Поинты[?]
8K
Пожалуйста, авторизуйтесь для просмотра ссылки.
ебаный позорник скидывает мне xor rax, rax / ret и ещё за знания какие то смеет говорить

мне будет очень смешно наблюдать за тем как мсвц будет по одной буковке толкать в регистр (и палить всю твою proper asm bytecode credits platina cheef keef обфусикацию по мужицки, по тупому, прямо в регистрах)...

прекрати заниматься хуйней, дядь
 
Начинающий
Статус
Оффлайн
Регистрация
30 Сен 2023
Сообщения
5
Реакции[?]
1
Поинты[?]
1K
ебаный позорник скидывает мне xor rax, rax / ret и ещё за знания какие то смеет говорить

мне будет очень смешно наблюдать за тем как мсвц будет по одной буковке толкать в регистр (и палить всю твою proper asm bytecode credits platina cheef keef обфусикацию по мужицки, по тупому, прямо в регистрах)...

прекрати заниматься хуйней, дядь
Впринцыпе с тобой и так всё понятно по твоей аватарке что у тебя бог не сильно одарил.
Тема вопроса - как сгенерить шелкод, а не о том как попытаться угадать мои интересы и доказать что это не работает и не поможет.

Вот две ссылки для новичков как писать шелкод, изучай если базовых вещей не знаешь.

Пожалуйста, авторизуйтесь для просмотра ссылки.
Пожалуйста, авторизуйтесь для просмотра ссылки.

Последний раз тебе отвечаю, далее только оплачиваемое менторство и только при условии что ты будешь признавать моё превосходство как учителя, а не оправдываться и уходить от темы как сейчас. Иначе из нашего общения только ты выгоду получаешь в виде знаний и внимания. И это уж не говоря что у тебя стоимость времени нулевая.

По поводу менторства пиши в лс.
 
Участник
Статус
Оффлайн
Регистрация
15 Янв 2021
Сообщения
492
Реакции[?]
289
Поинты[?]
79K
Ты не разбираешься в теме, не стоит отвечать более.
Пожалуйста, авторизуйтесь для просмотра ссылки.
Какая разница как ты заносишь в свою строку ( что является массивом aka указателем на первый символ ) символы, если при вызове функции параметр будет всё равно передаваться как lea rcx, str1.
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Эксперт
Статус
Онлайн
Регистрация
29 Мар 2021
Сообщения
1,523
Реакции[?]
572
Поинты[?]
8K
как сгенерить шелкод
ты не понимаешь ни слова из тех что ты выдал и я имею это ввиду в самом буквальном смысле

указателем на первый символ
иммутабельность и расположение в бинаре

sizeof(char[N]) == N / sizeof(const char*) == 4 (имплементешн дефайнед)

но к теме опа это не относится вовсе, чувачок макросами собрался генерить какие угодно инструкции после 7 пассов компилятора над его пастой.. тут бесполезно я боюсь
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
30 Сен 2023
Сообщения
5
Реакции[?]
1
Поинты[?]
1K
Какая разница как ты заносишь в свою строку ( что является массивом aka указателем на первый символ ), если при вызове функции параметр будет всё равно передаваться как lea rcx, str1.
Пожалуйста, авторизуйтесь для просмотра ссылки.
Ещё один пользователь на оплачиваемое менторство.

разница в том что у тебя код не требует резолвов/фиксов и является позиционно независимым, может работать находясь на любом адресе. Не нужно таскать .rdata секцию с собой.
 
Эксперт
Статус
Онлайн
Регистрация
29 Мар 2021
Сообщения
1,523
Реакции[?]
572
Поинты[?]
8K
является позиционно независимым
тебе лечиться нужно

я не знаю где ты прочитал этот мусор, но спешу тебе сообщить: весь код сгенерированный под вин бекенд позишн индепендент. -fPIC это онли линуксовский флаг.
резолвов/фиксов
БЛЯДЬ
 
Сверху Снизу