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,595
Реакции[?]
603
Поинты[?]
44K
char str [] = {'s', 't', 'r', 'i', 'n', 'g', '\0' } вместо const char* str = "string";
эти вещи равны


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


ассемблер должен быть таким же как для массива символов?
ты в любом случае получишь push rax, string....
 
Начинающий
Статус
Оффлайн
Регистрация
30 Сен 2023
Сообщения
5
Реакции[?]
1
Поинты[?]
1K
Эксперт
Статус
Оффлайн
Регистрация
29 Мар 2021
Сообщения
1,595
Реакции[?]
603
Поинты[?]
44K
Пожалуйста, авторизуйтесь для просмотра ссылки.
ебаный позорник скидывает мне 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,595
Реакции[?]
603
Поинты[?]
44K
как сгенерить шелкод
ты не понимаешь ни слова из тех что ты выдал и я имею это ввиду в самом буквальном смысле

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

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

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

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

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