• XSS.stack #1 – первый литературный журнал от юзеров форума

Вопрос по C++ CRT

Махронов

CD-диск
Пользователь
Регистрация
22.01.2022
Сообщения
16
Реакции
2
Всем привет, не давно решил начать писать малвари на c++, без использования crt, инфу о том как писать без crt не нашел, на поиски потратил ~5 часов, и отчаевшись прошу вас о помощи.

Что мне надо конкретно?
1. Чем можно заменять crt функции.
2. Где можно найти гайды/статьи.
3. С чего стоит начать?
4. Может какие либо сурсы с гитхаба для ознакомления, если таковы имеются.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
1. Чем можно заменять crt функции.
CRT - это по сути абстракция над функциями операционной системы. Оператор new, например, выделит память с помощью malloc и вызовет соответствующий конструктор для типа. Функция malloc на Венде по сути абстракция над HeapAlloc с дефолтной кучей процесса. На Линуксах в glibc или musl реализован аллокатор, который malloc вызовет, а сам аллокатор - абстракция над системными вызовами. То есть, отвечая на твой вопрос, чем заменить - заменить сервисами и апи функциями операционной системы.

Вопрос в том, зачем тебе это нужно в принципе? Уменьшить размер экзешника в 2022 году то? Или зачем еще?
 
Редефин всяческих маллоков, перегрузка нью в классах, отказ от стл и всего что испльзует эксепшены, отказ от эксепшенов в своем коде, понимание что размещение в глобальном пространсве классов имеющих конструктор\деструктор так же потянет рантайм. Ну это если есть прицел на то что бы твой код собирался в шеллкод и мог инжектится куда угодно, если такой прицел есть то это сразу надо закладывать в архитектуру, потому что потом переделать код под эти условия будет адовой попоболью.
Сразу заботься об собственном рантайме, менеджменте ресурсов, уровнях абстракции от всего насвете - если у тебя вызывается одна и так же ос апи в двух и более местах в коде - это косяк.
И еще сразу заботься о креш дампах, так что бы их мог получать с таргетов и так что бы юзер этого не замечал, не самая простая задача но локально тебе код не отладить а учитывая какой вопрос ты задал и каким путем собрался идти то крешей тебе ловить не переловить.
 
Последнее редактирование:
Вопрос в том, зачем тебе это нужно в принципе? Уменьшить размер экзешника в 2022 году то? Или зачем еще?
Не раз слышал, что в малваре не желательно использовать crt.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
как писать без crt не нашел, на поиски потратил ~5 часов
/threads/35932/
1. Чем можно заменять crt функции.
Системными функциями. WinAPI можно использовать
2. Где можно найти гайды/статьи.
Не ясно, что вам нужно. По отключению CRT я скинул, а дальше просто мсдн.
3. С чего стоит начать?
Видимо с Hello World на WinAPI :) Начать стоит с изучения WinAPI
Не раз слышал, что в малваре не желательно использовать crt.
Если вы используете CRT, то функции будут динамически линковаться. Может быть, что на системе нет нужной либы, соответственно ПО не запустится.
Чтобы этого избежать, используют статическую линковку (/MT), но это раздует файл очень сильно.
А без CRT он отработает везде и будет маленький вес. Хотя уже действительно не ясно, зачем маленький вес. Разве только если склеивать малварь с чем-то.
 
Црт подразумевает "нормальную загрузку модуля" вне зависимости вкомпилили вы его в свой модуль или нет. Используете црт = забываете про инжекты.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Црт подразумевает "нормальную загрузку модуля" вне зависимости вкомпилили вы его в свой модуль или нет. Используете црт = забываете про инжекты.
DLL собирай и инжектируй как хочешь, CRT тут не помешает.
 
DLL собирай и инжектируй как хочешь, CRT тут не помешает.
Во первых не как хочешь, а через загрузчик, каким образом у вас заработает сэх в шеллкоде?
Во вторых не куда хочешь.
В третьих не нужен вам в малваре такой ботл-нек.
 
Про сехи добавлю что, на вех что он будет везде работать тоже полагатся не стоит, он почти всегда и везде вас выручит - но именно почти.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Во первых не как хочешь, а через загрузчик, каким образом у вас заработает сэх в шеллкоде?
Причем тут шеллкод? Причем тут SEH/VEH?
 
Причем тут шеллкод? Причем тут SEH/VEH?
При чем тут- "инжектируй как хочешь"?
Инжектировать как хочешь, и уж тем более куда хочешь, это совсем не про црт.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Инжектировать как хочешь, и уж тем более куда хочешь, это совсем не про црт.
Если используешь системный загрузчик или самописный, но нормальный загрузчик, то тебе абсолютно не важно, есть ли в загружаемой длл црт или нет.
 
Ну мой скромный совет малваро писателю, делай свой код так что бы его можно было простым врайт мемори кинуть в любой процесс где из длл есть только нтдлл, делай так что бы он заводился просто получая управние на свой энтри, то есть дальше сам себя настраивал и обеспечивал себе работу. Избегайте любого кода в вашем модуле который вы не контролируете на уровне исходника, избегайте любого кода который хочет что то кроме нтдлл в процессе настройки рабочего пространства. Не ставьте себе ограничения в виде нужен нормальный загрузчик, нужен нормальный процесс где можно то это и другое, просто не юзайте то что не контролируете.
 
Еще в качестве объяснения подобного подхода к написанию малвары, как я сказал в посте выше.
Обычный белый код ходит в дверь, малваро код ходит в окна, эти окна переодически закрываются и открываются новые, а это значит что ваш код должен быть максимально гибким.
Вы должны учитывать что политика некоторых процессов не позволить вам сменить атрибуты выполнимой секции и вам эти изменения придется заказывать из другого процесса, где то вам не позволят установить вех обработчик, где то у вас будет крешится какая то системная длл потому что политика процесса не позволит ей нормально работать. Готовьтесь к борьбе короче.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
инфу о том как писать без crt не нашел,
Неизвестно до конца, что вы вкладываете в понятие "писать без crt" и зачем. Одно дело инжект и подобное, там действительно смешно видеть "мусор" из стандартного рантайма. Другое - какой-то "обычный" стиллер-локер, где как бы не особо важно (наверное). Писать без црт, вообще, достаточно просто - указать опцию /NODEFAULTLIB в линкере ("игнорировать стандартные библиотеки" в русской студии в меню), и указать свою точку входа там где (/ENTRY:ваша_точка_входа). Ну и еще выключить проверку стековых куки (GS- в настройках С++ ) и эксепшны там же (не помню опцию).
 
Пожалуйста, обратите внимание, что пользователь заблокирован
как по мне сам с++ не подходит для написания вредоносного ПО. Я юзал с# на нем все гораздо лучше и легче как по мне.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
О, давайте еще срач начнем С++ vs C# ) . Как давно не было подобных тем!
Это мое мнения , если будет срач я его буду держать на нейтральном уровне .
 
Пожалуйста, обратите внимание, что пользователь заблокирован
если будет срач я его буду держать на нейтральном уровне
просто тут таких тем было штук 100, лень искать.
на шарпе ты не напишешь шеллкод например.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
просто тут таких тем было штук 100, лень искать.
на шарпе ты не напишешь шеллкод например.
Ну на с++ не напишешь ахуенный криптор или же ботнет
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх