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

Статья Как правильно изучать malware-кодинг под Windows

Whisper, ООП действительно полезная вещь, но его ещё надо готовить правильно. Кодить на уровне абстракций по началу может быть слегка непривычно, а для тех, кто сильно увлечётся - чревато раздутием кода ненужными абстракциями.
По этому и топят, за то что привычно и что умеется. Я так в своё время доказывал о том, что говнокод на php, с организацией бекенда, как например в Azorult/Anubis - говнокод редкостный.
Docker, кстати, так же не наблюдается. Как по мне, большинство разрабов малвари отстало от жизни и осталось в 2007.
 
Whisper, ООП действительно полезная вещь, но его ещё надо готовить правильно. Кодить на уровне абстракций по началу может быть слегка непривычно, а для тех, кто сильно увлечётся - чревато раздутием кода ненужными абстракциями.
По этому и топят, за то что привычно и что умеется. Я так в своё время доказывал о том, что говнокод на php, с организацией бекенда, как например в Azorult/Anubis - говнокод редкостный.
Docker, кстати, так же не наблюдается. Как по мне, большинство разрабов малвари отстало от жизни и осталось в 2007.
Ну я как то стараюсь аргументировано, даже примеры какие то, инфу к размышлению и тд. Ну ладно отдельные личности уперлись, черт бы с ними, но они же советуют, а это же беда, кто то может потерять много времени и сил и преобрести малополезный навык. А вот реально пусть те кто еще не умеет готовить ооп рефакторят избыточные абстракции, они поймут золотоую середину в процессе, чем они будут костылять на ц, в результате из них выйдут опытные костыляторы на ц которые уже 10 лет как нах никому не нужны. И где же эти эксперты форума которые с высоты своей репутации кинули бы свое веское слово. А то один я тут как нудный мудила против хекирных тенденций и трушного кода.
 
Whisper, на хабре есть довольно занятная статья, называлась вроде как «объясняем современный JavaScript динозавру», даже мем оттуда схоронил.

36E69A34-95D9-4BB1-80CE-808B8C79887B.png

Вот думаю, было бы прикольно, если бы ты на примерах написал статью/заметку подобную, с компиляцией своих мыслей на этот счёт, только о малварокодинге на плюсах, для динозавров этой индустрии, for fun and profit =)
На шутках и забаве информация бы воспринималась не в штыки. Ну это конечно если есть желание такое и время на это..
 
Пожалуйста, обратите внимание, что пользователь заблокирован
А то один я тут как нудный мудила против хекирных тенденций и трушного кода.
Мудила ты лишь потому (заметь, мудилой ты себя сам назвал), что в теме про малварекодинг начинаешь затирать про ЫинтЫрпрайз. Но вот незадача: как они связанны ? Я у тебя уже в который раз спрашиваю: чем C++ лучше C ? Костыли ? Покажи мне этот костыль. ООП ? А зачем ООП в ВПО? То, что на нём сейчас мало кто кодит ? А как это связанно ?
Жду аргументов, товарищ. И харе уже про свой ЫнТЫрпрайз :)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Whisper, на хабре есть довольно занятная статья, называлась вроде как «объясняем современный JavaScript динозавру», даже мем оттуда схоронил.

Посмотреть вложение 31235
Вот думаю, было бы прикольно, если бы ты на примерах написал статью/заметку подобную, с компиляцией своих мыслей на этот счёт, только о малварокодинге на плюсах, для динозавров этой индустрии, for fun and profit =)
На шутках и забаве информация бы воспринималась не в штыки. Ну это конечно если есть желание такое и время на это..
Вот-вот. Я у него спрашиваю, чем лучше плюсы от Ц, а он камнями кидается. Не надо так :confused:
 
Есть товарищи которым вот это

https://xssforum7mmh3n56inuf2h73hvh...xdnyd.onion/threads/39427/page-14#post-411182

https://xssforum7mmh3n56inuf2h73hvh...xdnyd.onion/threads/39427/page-15#post-411238

не аргументы а камни. И позиция у них, что дескать я не собираюсь кодить ничего кроме малвары, хотя какая это к черту позиция, это поза не приличная. Если человек ищет аргументы что бы только не учить ц++ и не осваивать современные методики программирования...хотя им ~70 лет, то зачем его насильно тащить в сегодняшние реалии, ему и в 2013м комфортно пусть там сидит. Если даже просто по постам пройтись и выписать в одну колонку аргументы за ц а в другую за ц++, уже адекватному человеку станет понятно что учить. Неадекватов которые не видят а главное из за всех сил стараются не видеть очевидного вразумлять дело не благодарное, ибо тупых любить - только конец тупить. Аргументы приводил, примеры простейшие приводил, разумный новичок поймёт что ему нужно а что нет.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Есть товарищи которым вот это

https://xssforum7mmh3n56inuf2h73hvh...xdnyd.onion/threads/39427/page-14#post-411182

https://xssforum7mmh3n56inuf2h73hvh...xdnyd.onion/threads/39427/page-15#post-411238

не аргументы а камни. И позиция у них, что дескать я не собираюсь кодить ничего кроме малвары, хотя какая это к черту позиция, это поза не приличная. Если человек ищет аргументы что бы только не учить ц++ и не осваивать современные методики программирования...хотя им ~70 лет, то зачем его насильно тащить в сегодняшние реалии, ему и в 2013м комфортно пусть там сидит. Если даже просто по постам пройтись и выписать в одну колонку аргументы за ц а в другую за ц++, уже адекватному человеку станет понятно что учить. Неадекватов которые не видят а главное из за всех сил стараются не видеть очевидного вразумлять дело не благодарное, ибо тупых любить - только конец тупить. Аргументы приводил, примеры простейшие приводил, разумный новичок поймёт что ему нужно а что нет.
Ну, вообщем, с тобой всё ясно :)
ООП - это наше всё. Обязательно набью себе такое тату с твоим ником в дополнении.
И позиция у них, что дескать я не собираюсь кодить ничего кроме малвары, хотя какая это к черту позиция, это поза не приличная
Ну, наверное, потому что тема здесь про малварь, не ?)))

Ля, знаешь Whisper, ты мне даже нравишься, вот прям прикольный ты чел, весёлый, буду рассказывать о тебе друзьям своим. Искренне желаю тебе всего самого лучше в жизни :)
 
пойдите расскажите майкам что ооп на ц можно, что бы они херней не страдали.
Микрософт и так знает. Даже термин есть такой - объект ядра. IRP - сообщения. С другой стороны, авторы Qt не знают, как классический ООП можно реализовать на Си++. Во всяком случае, они пока не смогли обойтись без генерации промежуточных файлов, которые потом и компилируют. Самое интересное в этой истории, что вышел Rust (его сейчас подозрительно активно пихают в ядро Linux) и его адепты постановили, что ООП не надо, рулят трейтсы, а любители плюсов - старпёры, луддиты и вообще тормозят прогресс.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Quake3 жду твоё мнение также.
Я свое мнение написал в первом посте темы. Новичку нужно учиться с "чистого" кода - это Паскаль либо Си (ну либо Асм для гениев). Если человек начнется учиться с ООП , то там и закончит. Потому что свой код надо изучить в отладчике, дизассемблере, посмотреть что и куда. Понять, как устроена память, стек, как идет вызов функций. Для этого нужен язык без лишнего мусора. Если начинать с плюсов , причем повторюсь - под "плюсами" надо понимать именно всю эту мощь ООП и современных стандартов - новичок никогда не поймет что там на низком уровне.
Многие пишут "малварь на С++", но на деле там "Си с классами", т.е. с плюсов юзают какие-то неймспейсы , те же классы , может изредка STL. Ради чего? Это можно и структурами в Си эмулировать, если уж так хочется.

Тебе извини ооп и того что постоянно выходят новые стандарты мало?
А зачем оно надо? Новые стандарты..нафига они нужны? Это как в РНР или JS, которые тут выше упоминали. Каждую неделю новый стандарт, офигеть. Зачем они нужны? Код, написанный лет 5 назад для веба нужно уже переписывать с 0, а учебники 10летней давности можно выбрасывать на свалку. Какой толк в таком прогрессе?
Кстати, к сожалению в Си тоже есть новые стандарты, в которые суют не пойми что , типа массивов переменной длины. Были попытки даже ООП сунуть.

Whisper Haunt
напишите , как будет время и желание, свою статью. Я бы очень хотел посмотреть, как можно полному новичку (как бы изначально речь идет об этом, см. первый пост) объяснить все эти инкапсуляции и фабрики. А потом , плавно перевести к лоу левелу.
 
Я свое мнение написал в первом посте темы. Новичку нужно учиться с "чистого" кода - это Паскаль либо Си (ну либо Асм для гениев). Если человек начнется учиться с ООП , то там и закончит. Потому что свой код надо изучить в отладчике, дизассемблере, посмотреть что и куда. Понять, как устроена память, стек, как идет вызов функций. Для этого нужен язык без лишнего мусора. Если начинать с плюсов , причем повторюсь - под "плюсами" надо понимать именно всю эту мощь ООП и современных стандартов - новичок никогда не поймет что там на низком уровне.
Многие пишут "малварь на С++", но на деле там "Си с классами", т.е. с плюсов юзают какие-то неймспейсы , те же классы , может изредка STL. Ради чего? Это можно и структурами в Си эмулировать, если уж так хочется.


А зачем оно надо? Новые стандарты..нафига они нужны? Это как в РНР или JS, которые тут выше упоминали. Каждую неделю новый стандарт, офигеть. Зачем они нужны? Код, написанный лет 5 назад для веба нужно уже переписывать с 0, а учебники 10летней давности можно выбрасывать на свалку. Какой толк в таком прогрессе?
Кстати, к сожалению в Си тоже есть новые стандарты, в которые суют не пойми что , типа массивов переменной длины. Были попытки даже ООП сунуть.

Whisper Haunt
напишите , как будет время и желание, свою статью. Я бы очень хотел посмотреть, как можно полному новичку (как бы изначально речь идет об этом, см. первый пост) объяснить все эти инкапсуляции и фабрики. А потом , плавно перевести к лоу левелу.
Что такое лоу левел непонимаю, если это про то что использование ооп потянет за собой какие то дллки и неявные вызовы каких то апи в проект то это не так. Ц с классами уже сильно лучше чем ц без классов.

Но вот что я скажу из своего опыта. Пишем малвару и сапортим ее несколько лет, сорцы разрастаются и моного файлов, несколько мегов. В процессе сапорта нам постоянно надо что то добавлять и изменять. Без на ооп это превращается в тот еще ад. Приходится добавлять в функции новые флаги для коррекции поведения, добавлять новые параметры вызова при чем с расчётом что функция А передаст новый параметр функции Б, что бы функция Б перепередала его функции Ц что бы она на его основе как то меняла свое поведение. В результате всь код начинает походить на какой то мусорник костылей и заплаток, ты либо лепишь заплатку с костылём либо переписываешь большие куски кода, а раз переписываешь то и перетестить надо, хотя перетестить надо в любом случае, в результате какая то мелочь которая не вписывается в архитектуру превращает поддержку в ад, и это просто абсурдно, вам нужно добавить сущую мелочь, или немного что то изменить а вы понимаете что вас ждет адовый звиздец, что это реализовать в архитектуре которая к этому не готова будет стоить много времени и нервов. Так что да, абстракции, фабрики.
Да ооп достаточно сложно, но тут так - ты либо сложно начинаешь а дальше тебе проще, или ты начинаешь легче, теряешь годы в производственном аду, переучиваешся.
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
Что такое лоу левел непонимаю, если это про то что использование ооп потянет за собой какие то дллки и неявные вызовы каких то апи в проект то это не так.
лоу левел это то, какой выхлоп будет в конечном итоге на уровне машинного кода. Допустим, давай возьмем код на Си
C:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    srand((int)time(0));
    const int n = 10;
    int a[n];

    for(int i=0; i<n; i++)
    {
        a[i]=rand()%33-12;
        printf("%d ",a[i]);
    }
    puts("");

    for(int i=0; i<n; i++)
    {
        if(a[i]<0) a[i]=a[i]*100;
        else if(a[i]>0) a[i]=1;
        printf("%d ",a[i]);
    }
     puts("");
return 0;
}

Простой код с какого-то задачника, все понятно во что преобразуется. Теперь возьмем код на плюсах
C++:
#include <iostream>
#include <random>
#include <algorithm>
 
int main()
{
    std::default_random_engine generator;
    std::uniform_int_distribution<int> distribution(-12,21);

    const int n = 10;
    int a[n];
    
    std::generate(std::begin(a), std::end(a), [&](){return distribution(generator);});
    std::for_each(std::begin(a), std::end(a), [&](int x){std::cout<<x<<" ";});
    std::cout << std::endl;
    std::for_each(std::begin(a), std::end(a), [&](int x){std::cout<<(x<=0?x*100:1)<<" ";});
    std::cout << std::endl;
    
    system("pause");
    return 0;
}

вот мне лично нифига непонятно, во что развернутся эти STL вызовы, сколько ассемблерного кода будет, и как это дебажить вот пошагово (еще раз повторюсь, мы говорим об обучении с 0). Возможно, оно удобней, не знаю. Но в плане понятности Си-вариант явно выигрывает. В плане компактности - да, меньше вызовов, да проще взять готовый вектор и лист, чем самому кодить списки. Но по такой логике, можно взять сишарп или питон, там еще проще будет, там не надо про память думать и т.д.


Без на ооп это превращается в тот еще ад. Приходится добавлять в функции новые флаги для коррекции поведения, добавлять новые параметры вызова при чем с расчётом что функция А передаст новый параметр функции Б, что бы функция Б перепередала его функции Ц что бы она на его основе как то меняла свое поведение.
а в ООП не надо менять? Раз спроектировал и все, на века? Или там проще менять?
Мне ООП не зашло даже в РНР, хз. Использовать готовые классы мб и удобнее, если не думать что там под капотом, создавать самому - хз, сомнительное удовольствие.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Haunt касаемо динозавров и жс. Когда динозавры были большими, была такая либа JQUERY , которую почему-то многие хейтили. Хотя я лично считаю, что jquery это лучшее, что могло случится с жабоскриптом. Но был хейт что тяжелая, что ее адепты не знают обычного жс и так далее и т.п. И к чему мы пришли спустя несколько лет? На каждом сайте теперь висят монструозные реакты и прочие vue, для загрузки сайта визитки нужно секунд 10 на слабом 3g.
Посмотрел ту статью. Вот зачем огород городить? Вместо того, чтобы написать два инклуда index.js нужно ставить ноду, grunt,babel и еще х пойми что. Нет, я понимаю если это энтырпрайз, где 100 библиотек, и их надо обновлять, то это лучше оптимизировать. Но если это простая админка с той же jquery или вообще ванилла жс, зачем все это? Почему и чем плохо писать по старинке, какая разница для конечного пользователя, будет там модный реакт или немодный жквери? Правда интересно.
 
лоу левел это то, какой выхлоп будет в конечном итоге на уровне машинного кода. Допустим, давай возьмем код на Си
C:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    srand((int)time(0));
    const int n = 10;
    int a[n];

    for(int i=0; i<n; i++)
    {
        a[i]=rand()%33-12;
        printf("%d ",a[i]);
    }
    puts("");

    for(int i=0; i<n; i++)
    {
        if(a[i]<0) a[i]=a[i]*100;
        else if(a[i]>0) a[i]=1;
        printf("%d ",a[i]);
    }
     puts("");
return 0;
}

Простой код с какого-то задачника, все понятно во что преобразуется. Теперь возьмем код на плюсах
C++:
#include <iostream>
#include <random>
#include <algorithm>
 
int main()
{
    std::default_random_engine generator;
    std::uniform_int_distribution<int> distribution(-12,21);

    const int n = 10;
    int a[n];
   
    std::generate(std::begin(a), std::end(a), [&](){return distribution(generator);});
    std::for_each(std::begin(a), std::end(a), [&](int x){std::cout<<x<<" ";});
    std::cout << std::endl;
    std::for_each(std::begin(a), std::end(a), [&](int x){std::cout<<(x<=0?x*100:1)<<" ";});
    std::cout << std::endl;
   
    system("pause");
    return 0;
}

вот мне лично нифига непонятно, во что развернутся эти STL вызовы, сколько ассемблерного кода будет, и как это дебажить вот пошагово (еще раз повторюсь, мы говорим об обучении с 0). Возможно, оно удобней, не знаю. Но в плане понятности Си-вариант явно выигрывает. В плане компактности - да, меньше вызовов, да проще взять готовый вектор и лист, чем самому кодить списки. Но по такой логике, можно взять сишарп или питон, там еще проще будет, там не надо про память думать и т.д.



а в ООП не надо менять? Раз спроектировал и все, на века? Или там проще менять?
Мне ООП не зашло даже в РНР, хз. Использовать готовые классы мб и удобнее, если не думать что там под капотом, создавать самому - хз, сомнительное удовольствие.
А стл не обязательно использовать. Я больше говорю за Архитектуру проекта которая позволит быстро и легко добавлять новое, и что то изменять. А не про сугубо тактические моменты, типа какие апи или либы юзаем. Нет я про то что нужно уметь проектировать что бы проект легко можно переводить например с кернелдлл на сисколлы не перепахивая сотни функций. Тактические моменты не суть важны, боль приходит когда возникшая надобность не вписывается в архитектуру, когда изза мелочи приходится переделать 20 функций.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Почему и чем плохо писать по старинке, какая разница для конечного пользователя, будет там модный реакт или немодный жквери?
Тем, что невозможно поддерживать большой проект на этих ссаных коллбеках. Тебе, как человеку, не разрабатывающему больших проектов, ничего из этого не нужно, включая ооп или паттерны проектирования. Что опять холивар развели?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
А стл не обязательно использовать. Я больше говорю за Архитектуру проекта которая позволит быстро и легко добавлять новое, и что то изменять.
Тогда о чем речь, о каком именно С++? Можно пример или общее описание. Т.е. просто юзать классы и неймпейсы с шаблонами? А умные указатели, auto и вот это все? А буст, стл, мфц?

Просто если посмотреть малварь на рынке (начиная от слитых сорцев Зевса и заканчивая тем, что иногда присылают на проверку при покупке сорцев), на таком вот идеальном С++ (как в белых проектах) никто не пишет. Обычно это то, что называют "Си с классами" - т.е. может 1-2 классы для управление памятью, какой-то шаблон для логирования ошибок и неймпейсы для функций вида Str:: Mem:: или еще что. Никаких инноваций хотя бы с С++11 не видел ни разу. Понятно, что за всю малварь говорить не могу.

Тебе, как человеку, не разрабатывающему больших проектов, ничего из этого не нужно, включая ооп или паттерны проектирования
Ну вот. А если работать на фрилансе (берем сюда и условную малварь, и просто standalone кодинг), то врядли и понадобится чето больше. Мы уже как то обсуждали эту тему на васме - конечному заказчику все равно, ООП там или лямбды, работает и отлично.
 
Тогда о чем речь, о каком именно С++? Можно пример или общее описание. Т.е. просто юзать классы и неймпейсы с шаблонами? А умные указатели, auto и вот это все? А буст, стл, мфц?

Просто если посмотреть малварь на рынке (начиная от слитых сорцев Зевса и заканчивая тем, что иногда присылают на проверку при покупке сорцев), на таком вот идеальном С++ (как в белых проектах) никто не пишет. Обычно это то, что называют "Си с классами" - т.е. может 1-2 классы для управление памятью, какой-то шаблон для логирования ошибок и неймпейсы для функций вида Str:: Mem:: или еще что. Никаких инноваций хотя бы с С++11 не видел ни разу. Понятно, что за всю малварь говорить не могу.


Ну вот. А если работать на фрилансе (берем сюда и условную малварь, и просто standalone кодинг), то врядли и понадобится чето больше. Мы уже как то обсуждали эту тему на васме - конечному заказчику все равно, ООП там или лямбды, работает и отлично.
Буст стл и поко это библиотеки, а ооп это принципы воплощенные во всторенных возможностях языка, в его синтаксисе.

Библиотеки решают тактические задачи, принципы кодинга типа ооп решают архитектурыне.

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

Серьезные опытные разрабы как правило малварь не пишут, а если пишут сорцы не сливают. Притока опытных и грамотных кодеров из интерпрайза в малварь не ожидается. Потому все как то так.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Ну вот. А если работать на фрилансе (берем сюда и условную малварь, и просто standalone кодинг), то врядли и понадобится чето больше. Мы уже как то обсуждали эту тему на васме - конечному заказчику все равно, ООП там или лямбды, работает и отлично.
Условная малварь - условной малвари рознь. Для какого-нить лоудера или рансомвари - похер, но какой-нибудь ратник, который все делает, да может еще и кросс платформенный, а не только под венду - будет десятки тысяч строк. Даже если ты кодишь один, а не в команде, десяток тысяч строк уже невозможно поддерживать без хорошей архитектуры и абстракций. Если у тебя в команде несколько человек, то как бы ты не старался их отбирать, всех сеньеров помидоров ты не наберешь, а если и наберешь, то они пересруться между собой. А как только у тебя в команде появляется джун, то любые разговоры о сишечке и тем более асме отпадают сами собой, он тебе багов накодит таких, что ты до усрачки будешь их искать и сразу полюбишь и ООП, и GC, и все, что угодно, лишь бы не подтирать за ним его косяки постоянно.
 
Серьезные опытные разрабы как правило малварь не пишут, а если пишут сорцы не сливают. Притока опытных и грамотных кодеров из интерпрайза в малварь не ожидается. Потому все как то так.
Основная проблема Плюсов заключается в том, что изучить их в одно лицо по видосам из Ютуба маловероятно. Напомню, что помидором в Плюсах можно считать чела с 10+ годами опыта (общепринятая оценка, не настаиваю).
Грамотно нарисовать архитектуру проекта - отдельный скилл и кодер с этим скорее всего не справится.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Основная проблема Плюсов заключается в том, что изучить их в одно лицо по видосам из Ютуба маловероятно
Меня еще забавит, когда говорят, мол Раст сложный, поэтому на Плюсах код пишу. Блет, если копать во все узкие места Плюсов, то с ума сойдешь. Я, например, в одном старом проекте по плохому узнал, что из деструкторов нельзя выкидывать исключения. Потому, что в случае, когда рантайм разматывает стек при исключении и вызывает деструкторы, то повторное исключение нахер все ломает и процесс выходит. И никакие Индусы на ютюбе и многие книги по плюсам тебе об этом не раскажут, ты узнаешь об этом после нескольких часов в отладчике.
 
Основная проблема Плюсов заключается в том, что изучить их в одно лицо по видосам из Ютуба маловероятно. Напомню, что помидором в Плюсах можно считать чела с 10+ годами опыта (общепринятая оценка, не настаиваю).
Грамотно нарисовать архитектуру проекта - отдельный скилл и кодер с этим скорее всего не справится.
А я о том и говорю что можно проебать годы с Ц и стать опытным помидором костылятором, или с Ц++ и стать тем самым сеньором который таки могёт. Прежде чем вписываться в долгосрок и изучение чего то стоит подумать с чем ты в итоге окажешься.

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


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