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

Статья Пишем ратник с нуля и навека

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

Или тот-же Rust, не думаю что на кодеров раста прям такой спрос.
На Расте очень много вакансий последнее время, самому даже удивительно это.

Просто хочу сказать, что так прям заморачиваться знаниями языка смысла вообще нет, важнее понимать то-что нужно в работе, везде своя специфика, короче предметную часть всегда важнее знать, чем язык.)
Ну ты это можешь сказать HR'ам, которые сливают сосискателей без опыта конкретной технологии. Например, ты фронтэндщик и знаешь Vue, а тебе говорят, мол хер, нужно иметь 2+ лет опыта в React'е.

Думаю и на Делфи найти можно, я помню когда учился в универе, никак не мог доказать преподу чем си лучше паскаля.
А я бы и не сказал, что Сишечка лучше Паскаля. В Паскале хотя бы есть стандартное представление для строк и каждая библиотека на нем не переизобретает строки в своем хитросделанном формате.

А-так всё меняется стремитильно, лет пять назад все дрочили на ООП, сейчас вроде-как от него отходят, завтро опять что-то появится, за всем не угнаться.)
После ООП немного удивляет, насколько простыми и красивыми бывают архитектуры на функциональных языках. У меня есть сертификат с отличием по Хаскеллу, но приминить свои знания я так до сих пор и не смог.
 
А я бы и не сказал, что Сишечка лучше Паскаля. В Паскале хотя бы есть стандартное представление для строк и каждая библиотека на нем не переизобретает строки в своем хитросделанном формате.
В си вообще нет строк, там строка по сути это массив байт с концём символа "\0", незнаю из всех языков мне си очень нравится, он простой без наворотов, я говорю именно про си, не плюсы, его отлаживать легко, если какие проблемы можно в дизассемблере легко глянуть что получилось, в плюсах например там какие-то навороты постоянно, попробуй найди ещё нужное место в дизассемблере, возможно конечно у меня опыта нет.

К тому-же си есть практически для любой платфоры.

Про Аду, если мне не изменяет память, там тоже есть бегин и енд, но незнаю что-то незашёл он мне, нужно было модифицировать программу, как-то долго разбирался с ней, код какой-то непонятный был.

Раст понравился, но т.к. не было проектов, перестал изучать его, питон нравится, но опять-же нужна задача какая-то, так просто особо смысла изучать нет, забывается быстро.

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

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

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

Было в моем опыте, когда компилятор тупо выкидывал нужную функцию, из-за этого ничего и не работало, либо бывает что оптимизация изменит алгоритм работы функции.

Благо все это видно в дизассемблере и можно все это отследить, в современных языках, это сложнее сделать, наверное.

Про кеширование, я и говорить не буду, гемор там еще тот.)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
После ООП немного удивляет, насколько простыми и красивыми бывают архитектуры на функциональных языках. У меня есть сертификат с отличием по Хаскеллу, но приминить свои знания я так до сих пор и не смог.
Никогда не мог понять и привыкнуть к ООП. Видя малварь на плюсах, который сделан по ООП я закрывал комп и спрыгивал с балкона
не вижу ни каких плюсов плюса перед чистым Си. Использование stl в малваре лишь говорит о том, что кодер не компетентен в своем вопросе, а если вырезать stl, то перед нами чистый Си. ООП как по мне нагромождает код.

И хз, в чем трудность работы с char? У меня лично никогда не возникало. Я юзал кастом реализацию векторов на винапи, но никак строк. Хз, лишь дело вкуса или привычки.

И что самый сок в Си и плюсах, так это вставлять асм коды. Например, можно генерировать на питоне асм код, который по сути делает бесполезные действия в любом объеме и это выйдет лишь на пару строк петон кода. Например, просто обнуляя данные регистров, заносить значения и т.д.
Код:
__asm {
pushad
sub edx, 6
sub edx, 6
sub eax, 9
mov edx, 8
add ebx, 5
sub edx, 1
add ebx, 8
add eax, 2
sub ecx, 4
sub ebx, 1
popad
}
Наше такой генератор трешгена на петоне, в пару строк кода. Да-да, помогает убрать сигнатурный детект. Это не совсем морфер на уровне дерева или llvm. Но как кастом реализация, такого трешгена можно написать уйму при умении писать на асме. И при каждой генерации значения и операции абсолютно рандомные

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

И хз, в чем трудность работы с char? У меня лично никогда не возникало. Я юзал кастом реализацию векторов на винапи, но никак строк. Хз, лишь дело вкуса или привычки.

И что самый сок в Си и плюсах, так это вставлять асм коды. Например, можно генерировать на питоне асм код, который по сути делает бесполезные действия в любом объеме и это выйдет лишь на пару строк петон кода. Например, просто обнуляя данные регистров, заносить значения и т.д.
Код:
__asm {
pushad
sub edx, 6
sub edx, 6
sub eax, 9
mov edx, 8
add ebx, 5
sub edx, 1
add ebx, 8
add eax, 2
sub ecx, 4
sub ebx, 1
popad
}
Наше такой генератор трешгена на петоне, в пару строк кода. Да-да, помогает убрать сигнатурный детект. Это не совсем морфер на уровне дерева или llvm. Но как кастом реализация, такого трешгена можно написать уйму при умении писать на асме. И при каждой генерации значения и операции абсолютно рандомные

А вообще, чего тут развелись-то, профи на асме без макросов пишут. (да-да, не юзая даже иновки и т.д.)
Причём ООП к STL?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Причём ООП к STL?
да не причем. Я в целом мнением хотел поделиться. Выше же обсуждали про ООП, плюсы и т.д. А мне лень было цитировать сообщения...
 
ООП это основа построения грамотной архитектуры, которую просто будет поддерживать и дорабатывать. Был опыт поддержки больших проектов, написанных в процедурном стиле, и это такое себе, скажу я вам.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
ООП это основа построения грамотной архитектуры, которую просто будет поддерживать и дорабатывать. Был опыт поддержки больших проектов, написанных в процедурном стиле, и это такое себе, скажу я вам.
не отрицаю. Тоже приходилось когда-то иметь дело с ООП на джаве, когда нужно было работать с БД, api etc.
В вайтхате - да, в больших проектах - да. Тут ооп нужен. Но на средних проектах в процедурном стиле легче. Главное понять и поймать баланс, где ООП поможет в структурированностии эффективности кода, а где будет просто лишним и громоздким кодом.

В концепции малваринга - думаю не нужен ООП. Я никогда не писал и мало сталкивался. ИМХО.
 
не отрицаю. Тоже приходилось когда-то иметь дело с ООП на джаве, когда нужно было работать с БД, api etc.
В вайтхате - да, в больших проектах - да. Тут ооп нужен. Но на средних проектах в процедурном стиле легче. Главное понять и поймать баланс, где ООП поможет в структурированностии эффективности кода, а где будет просто лишним и громоздким кодом.

В концепции малваринга - думаю не нужен ООП. Я никогда не писал и мало сталкивался. ИМХО.
В малвари ООП нужен, как не всегда. Вот, допустим, делаешь ты не какой-то проект, который пилится за вечер при учёте наличия скилла, а что-то масштабное. Без достаточного уровня абстракции ты погрязнешь в куче кода, с которым будет отвратительно работать.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
В малвари ООП нужен, как не всегда. Вот, допустим, делаешь ты не какой-то проект, который пилится за вечер при учёте наличия скилла, а что-то масштабное. Без достаточного уровня абстракции ты погрязнешь в куче кода, с которым будет отвратительно работать.
я хз что ты там собрался на ООП писать. Но 90% малваре не нуждаются в ООП. Хватает структур и разделить по файлам. Что там так нужно раскладывать, чтоб по ООП пилить? В конце концов малварь мы пишем, а сорцами никто не делится. Думаешь, будут 5 прогеров сидеть и локбит пилить? Это даркнет, любой может скрысить. И морфить ооп не удобно.

Если пишешь банкбот, то может быть тут как-то нужно с ооп морочиться. Но я бы прост все компоненты выделил бы в dll И грузил в рантайме.
 
я хз что ты там собрался на ООП писать. Но 90% малваре не нуждаются в ООП. Хватает структур и разделить по файлам. Что там так нужно раскладывать, чтоб по ООП пилить? В конце концов малварь мы пишем, а сорцами никто не делится. Думаешь, будут 5 прогеров сидеть и локбит пилить? Это даркнет, любой может скрысить. И морфить ооп не удобно.

Если пишешь банкбот, то может быть тут как-то нужно с ооп морочиться. Но я бы прост все компоненты выделил бы в dll И грузил в рантайме.
Видимо, ты никогда не поддерживал больших проектов. Причём структуры и файлы к ООП? ООП нужен не для разбивки кода по частям, а для создания должного уровня абстракции, предоставляющего удобные интерфейсы для работа с определенным функционалом. И причем ООП к морфингу? Какая разница, что морфить, если морфинг упирается в работу с инструкциями? Если ты говоришь про "морфинг" текста (исходников), то это плохая идея для натива.
 
Кстати абстракции можно делать и без ООП, например в си можно использовать для этого указатели на функции и еще много чего.

Вообще классная тема, тут обсуждается что угодно, но не ратник.)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Видимо, ты никогда не поддерживал больших проектов. Причём структуры и файлы к ООП? ООП нужен не для разбивки кода по частям, а для создания должного уровня абстракции, предоставляющего удобные интерфейсы для работа с определенным функционалом. И причем ООП к морфингу? Какая разница, что морфить, если морфинг упирается в работу с инструкциями? Если ты говоришь про "морфинг" текста (исходников), то это плохая идея для натива.
ну, если на llvm, ast морфить - несложно. По сорцам - да.
Что ты такое должен кодить, чтоб его по стилю ООП писать? Я вижу хорошее применение ООП в больших комерс проектах, как банковские системы. А например в Си все это отлично заменяет структуры. Как я уже ранее сказал, 90% малваре (стилеры, клиперы, кейлогеры, лоадеры, раты) могут спокойно без этой хуиты обходится и чтоб понять как все работает мне например нужен один вечер, под пивасик и мальборо. Да и всех кодеров, которых знал прогали без ООП, на чистом Си и Асме.

Я прогал разного уровня малвари и по опыту не сталкивался и не прогал на ооп. Так уж случилось, мб в твоих словах есть доля правды. Но я привык, и не хочу отвыкать. Мне так комфортно и у меня так хорошо получается.

Каждый дрочет, как он хочет.
 
ну, если на llvm, ast морфить - несложно. По сорцам - да.
Что ты такое должен кодить, чтоб его по стилю ООП писать? Я вижу хорошее применение ООП в больших комерс проектах, как банковские системы. А например в Си все это отлично заменяет структуры. Как я уже ранее сказал, 90% малваре (стилеры, клиперы, кейлогеры, лоадеры, раты) могут спокойно без этой хуиты обходится и чтоб понять как все работает мне например нужен один вечер, под пивасик и мальборо. Да и всех кодеров, которых знал прогали без ООП, на чистом Си и Асме.

Я прогал разного уровня малвари и по опыту не сталкивался и не прогал на ооп. Так уж случилось, мб в твоих словах есть доля правды. Но я привык, и не хочу отвыкать. Мне так комфортно и у меня так хорошо получается.

Каждый дрочет, как он хочет.
Морфинг при помощи построения дерева AST, описанный в статье Rel'a, и есть морфингом сорцов, к слову)
Да что угодно. Приведу пример. Например, у тебя есть функционал для работы с сетью, и в зависимости от определённых условий тебе нужно стучать либо с использованием винсок, либо с использованием WinInet.
Как тебе будет удобнее, сделать что-то типо:

Код:
pNetwork->setData(data);
pNetwork->useWinsock = false;
pNetwork->execute();

Или громодить ужасные конструкции с процедуркой? ООП очень удобная вещь и она сильно помогает с разработкой. Можно делать и с процедуркой, но несомненно разработка программного комплекса с "красивой" архитектурой без ООП - удовольствия тебе не доставит.
 
я хз что ты там собрался на ООП писать. Но 90% малваре не нуждаются в ООП. Хватает структур и разделить по файлам. Что там так нужно раскладывать, чтоб по ООП пилить? В конце концов малварь мы пишем, а сорцами никто не делится. Думаешь, будут 5 прогеров сидеть и локбит пилить? Это даркнет, любой может скрысить. И морфить ооп не удобно.

Если пишешь банкбот, то может быть тут как-то нужно с ооп морочиться. Но я бы прост все компоненты выделил бы в dll И грузил в рантайме.
Он говорит о том, что парадигмы придуманы чтобы тебе, человеку, было проще поддерживать и развивать проект. ООП или функциональщина, компилятору похер.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Морфинг при помощи построения дерева AST и есть морфингом сорцов, к слову)
Да что угодно. Приведу пример. Например, у тебя есть функционал для работы с сетью, и в зависимости от определённых условий тебе нужно стучать либо с использованием винсок, либо с использованием WinInet.
Как тебе будет удобнее, сделать что-то типо:

Код:
pNetwork->setData(data);
pNetwork->useWinsock = false;
pNetwork->execute();

Или громодить ужасные конструкции с процедуркой? ООП очень удобная вещь и она сильно помогает с разработкой. Можно делать и с процедуркой, но несомненно разработка программного комплекса с "красивой" архитектурой без ООП - удовольствия тебе не доставит.
парсить ast я понимаю. Это работать на уровне сорцов. Но я выше имел ввиду писать подобное сам (пистаь свой парсер по своим сорцам). Т.е. некоторые как делают:
int i = 5
// trashgan
char a = 'a';
и питоном читают cpp файл по строчно и вместо комментов ставят код. Не могу сказать, что прям бесполезно, но один знакомый таким образом успешно чистил стаб криптора.

То, что ты привел с примером wininet можно и наплодить на чистых структурах)))

Он говорит о том, что парадигмы придуманы чтобы тебе, человеку, было проще поддерживать и развивать проект. ООП или функциональщина, компилятору похер.
Но 90% малваре не нуждаются в ООП. Хватает структур и разделить по файлам. Что там так нужно раскладывать, чтоб по ООП пилить? В конце концов малварь мы пишем, а сорцами никто не делится. Думаешь, будут 5 прогеров сидеть и локбит пилить? Это даркнет, любой может скрысить.
Я имею ввиду в контексте малвари.

В контексте белых проектов - да, ООП.

Читайте выше посты внимательно пожалуйста!
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Насчет ООП в плюсах - в частности использовать RAII и defer-выражения (как в моей статье про хуки) делает жизнь программиста куда проще. Без ООП и функциональщины это не реализовать по сути, тк там лямбда (функциональщина) вызывается в деструкторе (ООП и RAII). В стандарте Си такого пока нет (вроде собираются завести, но пока это существует только в виде GCC-расширений под названием cleanup, которые не особо то и удобны: https://fdiv.net/2015/10/08/emulating-defer-c-clang-or-gccblocks и работают само собой только в GCC/MinGW).
 
Я имею ввиду в контексте малвари.
Написал ты свою реализаю string и наследуешь её. Тебе же самому проще будет.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Написал ты свою реализаю string и наследуешь её. Тебе же самому проще будет.
ну блин, братан, почитай выше, что я писал.
У меня есть свои реализации mm, string, vector на чистом винапи. Но я не привык работать со stl::string, мне комфортнее с char. Дело вкуса.
 


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