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

Вопрос дня, как облегчить питон билд?

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

2 ЯП одновременно учить не имеет смысла, тебе сначала нужно выработать в себе "мышление программиста", умения "выражать свои мысли в код", для этого подойдет любой из языков.
Поэтому не торопись, сначала укрепись в одном языке, который тебе ближе всего, потом можешь переходить на другой и выбирать нужный в зависимости от своих целей (как пример указал выше, малварь удобнее писать на расте, а бота для отправки малвари в лс, к примеру, на питоне).
Два ЯП не имеет смысла учить только если ты начинающий программист, а если у тебя за плечами уже изучены 2-3 языка на уровне мидла-сеньора, то ты спокойно можешь браться за 2 новых языка так как единственное, что тебе потребуется изучить - это особенности самого языка и его синтаксис
Не знаю с каких пор стало писать модно малварь на расте, ошибочное мнение заключается в том, что он выступает как замена Си\С++, но он лишь является аналогом, причем не полным, так как малварь не ограничивается лишь стиллерами или чем-то подобным, это верхушка айсберга, большинство серьезной малвари пишется с учетом проникновения в ядро через сплойт и закрепления там, а это подразумевает наличие драйвера, для этого лучше всего использовать Си с примесями ассемблера местами, даже плюсы не рекомендуются по причине их "динамичной" и классовой природы
 
Два ЯП не имеет смысла учить только если ты начинающий программист, а если у тебя за плечами уже изучены 2-3 языка на уровне мидла-сеньора, то ты спокойно можешь браться за 2 новых языка так как единственное, что тебе потребуется изучить - это особенности самого языка и его синтаксис
Не знаю с каких пор стало писать модно малварь на расте, ошибочное мнение заключается в том, что он выступает как замена Си\С++, но он лишь является аналогом, причем не полным, так как малварь не ограничивается лишь стиллерами или чем-то подобным, это верхушка айсберга, большинство серьезной малвари пишется с учетом проникновения в ядро через сплойт и закрепления там, а это подразумевает наличие драйвера, для этого лучше всего использовать Си с примесями ассемблера местами, даже плюсы не рекомендуются по причине их "динамичной" и классовой природы
Что я и написал выше, сначала чуваку нужно выработать "умение программировать", видимо теперь ты плохо прочитал сообщение.
Типичную малварь на расте стало популярно писать только от того, что язык не настолько распространенный как остальные, и изначально детектов было куда меньше, чем на остальных языках. Та же самая причина, почему еще можно встретить в привате малварь на том же D.
За самые низы я и не говорил, то, что это всего-лишь верхушка айсберга. А для всяких ратов, стиллаков, клипперов и ляля тополя раст прекрасно подходит, чего и требует большая часть комьюнити.
 
Что я и написал выше, сначала чуваку нужно выработать "умение программировать", видимо теперь ты плохо прочитал сообщение.
Типичную малварь на расте стало популярно писать только от того, что язык не настолько распространенный как остальные, и изначально детектов было куда меньше, чем на остальных языках. Та же самая причина, почему еще можно встретить в привате малварь на том же D.
За самые низы я и не говорил, то, что это всего-лишь верхушка айсберга. А для всяких ратов, стиллаков, клипперов и ляля тополя раст прекрасно подходит, чего и требует большая часть комьюнити.
Прочитал я внимательнейшим образом, основной посыл был про малварь, про изучение языков написал в дополнение, но следуя порядку твоего сообщения, поэтому вначале
Популярно != эффективно, при должном подходе, качественно написанный на Си\ассемблере рат\стиллер не будет иметь детектов изначально и проживет дольше чем аналог на расте, объяснение очень простое - на этих языках ты имеешь очень много контроля буквально за каждым винтиком в твоем механизме, такого контроля на расте ты не достигнешь, там больше абстракций в этом плане, и для избавления от детектов это не хорошо
Возможно свеженаписанная малварь\криптор на расте не будет так же иметь детектов вначале, скорее всего так и будет, если автор не осел и хоть что-то соображает в написании малвари, но когда они появятся избавиться тебе от них будет непросто, а на сишке и ассемблере это делается проще в разы
 
У меня мечта сейчас писать червяков, какой язык для этого сейчас лучше всего подходит?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
ты имеешь очень много контроля буквально за каждым винтиком в твоем механизме, такого контроля на расте ты не достигнешь
#![no_std] и пишешь без любых навязанных абстракций и с таким же "уровнем контроля" как в Цэ, хотя этот термин очень странно звучит. И кстати, в Дэ тоже можно подобное сделать, используя флаг -betterC.

По сабжу: помимо Nuitka есть компиляторы Cython, Pythran, RPython, и даже IronPython (Петон для дотнетов) - выбирать и пробовать в зависимости от уровня собственной упоротости. Но вряд ли можно сделать Петон легковесным, может выиграешь от несколько сот килобайт до мегабайта, но суть останется прежней. Можно помимо компиляторов попробовать собрать какой-нибудь интерпретатор, типа MicroPython, в исполняемый файл и запихать туда байткод во внутрь, но это тоже скорее всего будет жирно, надо пробовать.
 
Ребята, я как раз питон начал изучать, а вы тут пишете что на нём лучше не писать, вот засада)))
Писать на питоне можно и даже иногда нужно. Вопрос что писать. :)
 
Писать на питоне можно и даже иногда нужно. Вопрос что писать. :)
Выше я задал вопрос про червяков, какой язык для этого лучше спросил ;)
 
про червяков
черви сейчас для линукс в основоном делаются, так что посмотри исходники мирай на чем сделаны. обычно на golang делают потому что кросс-компиляция для разных архитектур и операционных систем
 
черви сейчас для линукс в основоном делаются, так что посмотри исходники мирай на чем сделаны. обычно на golang
Спасибо! Именно под линукс и хотелось кстати, написать забыл про ось, под какую хочу писать...
 
написать забыл про ось
я хз, изучай го, там богатая сетевая библиотека по умолчанию, нет проблем с портабельностью (из коробки, не только потому что компилированный, но и потому что носит все зависимости в себе). Компилировать можно под любую ось, архитектуру проца и тд.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
обычно на golang делают потому что кросс-компиляция для разных архитектур и операционных систем
Кстати, Zig, как это не парадоксально, довольно неплохо умеет в кросс компиляцию Сишечки и Плюсов, поддерживает много архитектур и для Линуксов позволяет выбрать между Glibc и Musl в качестве CRT. Я даже с Венды и Линукса с его помощью Mach-o исполняемые файлы собирал (под Mac OS), но для них пока не завезли strip (когда я последний раз смотрел). Также у меня получилось таким образом код на Nim собирать (компиляция из Nim в С код, дальше сборка с помощью Zig cc), в теории это должно аналогично работать с D (компиляция с помощью LDC и использование Zig в качестве кросс линкера), но я не пробовал пока.
 
Zig
Я если честно пока не слышал про него ничего. Очень интересно что ты он нем рассказал. Сохраню, обязательно посмотрю.
Но в контексте темы для новичков (ведь кто будет делать еще вирусы на питоне для расспространения?), то лучше всего людям конечно начинать с голанга, потому что на нем действительно будет удобно (в плане удобства) делать червяки или что то подобное с легкостью питона, потому что там действительно гоферы много наделали кросс-платфоремнных библиотек, которые могут работать как и под виндой, как и под фрёй, как и под линуксом, маком и тд, но при этом компилироваться на хосте, который вроде бы не совпадает во всем с архитектурой.
Могут в процессе ознакомиться (в перекате с питона) с си-подобным синтаксисом и возможно поймут, что лучше самим уже копать в ту сторону, чем флудить на тему а можно ли уменьшить размер билда на питоне.
 
#![no_std] и пишешь без любых навязанных абстракций и с таким же "уровнем контроля" как в Цэ, хотя этот термин очень странно звучит. И кстати, в Дэ тоже можно подобное сделать, используя флаг -betterC.
Я описал как делаю я, если еще более развернуто, то максимальное количество функционала я пишу на ассемблере, какие-то здоровенные функции я пишу на Си, затем линкую все это до кучи, либо иногда компилирую необходимые функции на Си, затем выдираю их дизасм и конвертирую в FASM, далее морфлю получившийся листинг, обфусцирую control flow, затем повторно морфлю и компилирую, на выходе получаю каждый раз уникальный файл, на который невозможно составить сигнатуру, таким образом я вообще избавляю себя от головняков по поводу статики( конечно же все остальное типа ресурсов тоже генерируется, не подумай что морфится только код ), и это удобно, когда-то я делал это руками, потом написал утилиты и сейчас полная пересборка занимает у меня минут 5
Ну а если начинает докучать динамика - тут уже в любом случае ручная переработка кода, если не считать всякие генераторы правдоподобного кода, который похож на легитимное приложение.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
максимальное количество функционала я пишу на ассемблере, какие-то здоровенные функции я пишу на Си, затем линкую все это до кучи, либо иногда компилирую необходимые функции на Си, затем выдираю их дизасм и конвертирую в FASM, далее морфлю получившийся листинг
Ну ты, я вижу, не фанат искать легкие пути. Все тоже самое можно сделать на уровне почти любого нативного языка, получая от него ассемблерный листинг, или LLVM IR, или GIMPLE (GCC), или даже абстрактное синтаксическое дерево. Ну да ладно, любишь FASM - люби, кто я такой, чтобы между вами вставать.

сейчас полная пересборка занимает у меня минут 5
У меня с морфингом на уровне AST самый большой проект на С++ собирается секунд за 30.
 
на который невозможно составить сигнатуру
кыдай сюды парочку своих одинковых морфов
 
Ну ты, я вижу, не фанат искать легкие пути
Ну обычно у самоучек именно вот так. По другому никак. Если начал уж разбираться самостоятельно, то годика 3 ты будешь создавать свои решения не оглядываясь на накопленный человечеством опыт.
 
У меня с морфингом на уровне AST самый большой проект на С++ собирается секунд за 30.
Да, ты вроде статейку даже писал, крутая штука, у меня пока такой нет, но есть в планах реализовать что-то подобное
Ну обычно у самоучек именно вот так. По другому никак. Если начал уж разбираться самостоятельно, то годика 3 ты будешь создавать свои решения не оглядываясь на накопленный человечеством опыт.
А у нас разве открылись государственные университеты по написанию малвари ? дайте мне тогда одно место, даже на платку пойду)))) В этой теме все самоучки
А про накопленный людьми опыт - он полезен только в теоретическом плане, возьми морфер от зомбы и заморфи им бинарь, он будет сверкать на VT как салют на новый год
Поэтому теорию изучай - но не забывай писать новые вещи, это двигает прогресс
А вот велосипеды изобретать - в любом случае плохо
кыдай сюды парочку своих одинковых морфов
Что конкретно тебя интересует ? Готовые бинари или вид исходного кода ? Логический морфер еще пилится, так как старая версия его была очень простой и охват команд не так велик, а вот дизасм обфускатора control flow прилагаю прямо сюда здесь и сейчас
вот точки входа, код всегда разный, все регистры\локальная память на стеке и ее количество, а так же количество задействованных локальных переменных и регистров генерируется случайно, при этом это не мусорный код, каждая инструкция выполняет свою роль и если одну из них не выполнить поток исполнения улетит к праотцам
так же вставляются фейковые условные переходы, до которых идет математика, которая выставляет флаги так, что бы переход не совершился
после переходов которые должны выполниться вставляются мусорные байты составляющие начало одной из инструкций перехода\колла, таким образом от последующего дизасма отрывается один\несколько байт и весь код под этим местом дизассемблируется неверно, что сводит на ноль статический анализ, прыжки в середины инструкций, что так же ломает дизасм
присутствует шифрование адресов перехода (как на скринах 5-6), выбор либо xor либо sub\add, либо все вместе, либо ничего
переходы как условные с заранее разгаданным\просчитанным условием, так и безусловные, переходы через регистры, переходы через стек (push\mov [esp] + ret)
суммарное количество вариаций переходников более 50, каждый генерируется уникально, не шаблонно, регистры и локальная память выбираются случайным образом, порядок арифметики случаен
корректно обрабатываются всевозможные циклы\лупы, конструкции подобные свитч-кейсам с таблицами и без них
все перечисленные выше опции глубоко настраиваются, а так же есть возможность отключить ненужное
и это просто запутывание control flow, без логического морфинга, оригинальные инструкции остаются прежними, но исходник разрезается на блоки случайной длины, блоки перемешиваются и соединяются в нужном порядке сгенерированными переходниками, затем при необходимости делаются повторные пассы, которые подразбивают уже существующие переходники и еще глубже смешивают весь код, поэтому сигнатуры на такое поставить практически невозможно, а если она и будет поставлена каким-то чудесным образом - слегка меняем настройки генерации и получаем новые неповторимые комбинации + сверху все это можно накрывать логическим морфером
логическим морфингом я называю замену например инструкции add ecx, 5 на серию команд вроде
sub esp, 4
mov [esp], 1
sub eax, -3
add eax, [esp]
inc eax
add esp, 4
Но даже без логического морфинга мы получаем бинари запутанные на уровне виртуализации кода, и их анализ превращается в ад
Если же нужно просто побить сигнатуры отключаем 80% функционала и бинарь не будет отличаться по энтропии и другим признакам от обычного приложения
При определенных настройках позволяет запутывать так базонезависимый код, что позволяет творить все эти гнусные дела с шеллкодами
Ну и вишенка на торт (последние 4 скрина) - отключены все опции и оставлены только прямые преходы, что бы Ghidra могла показать граф кода, если использовать косвенные переходы, то Ghidra и IDA обсыкаются на первом же таком переходе, декомпиляторы HexRays и от Ghidra так же крутят пальцем у виска при попытке декомпилировать такой код, но все это очень даже логично
К слову - изначально исходник состоял из пяти команд
push 0 -> 4 раза
и call MessageBox
1.png2.png3.png4.pngxor_add.pngxor_add2.pngGhiGraph.pngGhiGraph2.pngGhiGraph3.pngGhiGraph4.png
 
Последнее редактирование:
Так же для "знатоков"ассемблера, которые захотят придраться
Вопрос : Зачем тебе после прыжка корректировка стека, она же никогда не выполнится
Ответ : Эта корректировка после другого прыжка, который не находится на скрине, но приведет в эту точку, а корректировки (если они нужны) от текущих переходов находятся в тех местах, куда ведут переходы1661305530723.png
 
Два ЯП не имеет смысла учить только если ты начинающий программист, а если у тебя за плечами уже изучены 2-3 языка на уровне мидла-сеньора, то ты спокойно можешь браться за 2 новых языка так как единственное, что тебе потребуется изучить - это особенности самого языка и его синтаксис
Извини что влезаю, но в моём понимании 90% работы и времени идут на библиотеки, фреймворки и доки по ним, которые на каждом яп будут иметь кардинальные отличия. И синтаксис - это только начало-начал. Я понимаю что есть общие концептуальные вещи типа winapi/posix, но держать это все в уме на 5ти языках - это будет такая каша в голове ...
 
А у нас разве открылись государственные университеты по написанию малвари
Если бы... Ах если бы:) Возможно в будущем построят типа Хогдварца но для малвари, если так то тебя бы туда точно Северусом Снейпом на факультет МалвареВарения и Темных Исскуств ;););)
Ну и вишенка на торт (последние 4 скрина)
Труда вложено беспрецендентно много. Но помоему все таки с LLVM-обфускатором было бы проще для большинства человеков на планете Земля
 


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