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

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

As for C ++ malwares, there is none in public. I don't want to release an example. When I retire, I will throw off one for friends in mother Russia))
Сама мальварь никому тут не впёрлась, твоё - это твоё. Просто приведи кусок кода, чтобы было понятно :)

Ну а если ты запилишь статью про обфускацию темплейтами, то я обещаю тебе что переведу её лично, без Гугла. И ты наконец-то, может быть, сможешь найти понимание мемберов, касаемо твоей фанатичной любви к Плюсам и шаблонам.
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
DildoFagins ты же вроде раньше тролил цешников со стороны с++?
Или тебе непринципиально кого и за что?)
Я тролю только неадекватов, а до плюсового нациста, как и собственно до цешного нациста, просто грех не докопаться.
 
Dependencies are my friend. Obfuscation is easy to do with templates.
Пост выше про статью прошу считать недействительным. Моё мнение - обфускация темплейтами это easy и dummy.

Погуглил всякое, прочитал:
1) ADVobfuscator. Тут мы видим презенташку и white paper (чёрт, как это по-русски, чистовик?) в каталоге Docs\ (ещё и видео есть!), в которой автор просто раздувает код при помощи темплейтов во время компиляции.
2) Binary code obfuscation through c++ template meta programming. Эта статья тоже о раздувании кода, плюс затронуты идеи об арифметической обфускации, которые уже описаны в одной из статей прошлого (или позапрошлого) Конкурса статей. Приватное решение для Си уже давно написано, продано REvil/etc и было в эксплуатации в дикой природе (ух, как мну это слово бесит, хз почему).
3) Attacking the licensing problems with C++. Статья на любителя, мне как-то не очень понравилась идея переписать весь код на макросах в ручном режиме. Но темплейты используются, угу :D

Про 1) и 2) теоретически могу сказать, что написать скрипт для IDA по деобфускации - скорее всего проще простого, т.к. одни и те же паттерны используются для всего. По 3) - никто в здравом уме такой подход в целом для программы использовать не будет, а если же вручную перелопатить какую-нибудь функцию, то битхак наш помощник.

В целом, по состоянии на то время, идея выглядела интересной и даже жизнеспособной. Показывало всю мощь нового стандарта C++! Но, смотрю, народ побаловался и выкинул всё это на помоечку.
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
В целом, по состоянии на то время, идея выглядела интересной и даже жизнеспособной. Показывало всю мощь нового стандарта C++! Но, смотрю, народ побаловался и выкинул всё это на помоечку
Гуглил-гуглил, а то, что под носом лежало не нагуглил:
https://xss.pro/threads/42944/
https://xss.pro/threads/38409/
 
Супер!
Но я специально гуглил, для буржуя же буржуйский текст и буржуйские авторы более авторитетны :) Вторую статью не читал, сейчас прочитаю! Спасибо.
 
You are the ape then, as std :: string and all other container types allocate heap memory.
Depends, but I don't care what abstraction do internally. The programmer should always embrace RAII and prefer stack.
Pahhahaah you are tough Jap, nenad so pzh, think about the pluses fanatically and wrong (arguments are shit), he will change his mind, he will still know (perhaps), he has fired up nonsense here, rofel-daaaaa, but others (those who have the same in their heads) can read and they will click in the convolutions and they will make a conclusion for themselves.
I made a mistake, a huge one. I hated C ++. I was the most vocal critic of C ++ than any of you. Guess what, hate sometimes become love))
 
[USER = 203582] DildoFagins [/ USER] You seem to have trolled the c ++ clerks before?
Or do you not fundamentally who and for what?))
I trolled C++ than him. I trolled it for years, because I was blind.
 
Последнее редактирование:
Please consider the post above about the article invalid. My opinion is that template obfuscation is easy and dummy.

Googled everything, read:
1) ADVobfuscator . Here we see a presentation and a white paper (damn, how is it in Russian, clean copy?) In the Docs \ directory (there is also a video !), In which the author simply inflates the code with templates during compilation.
2) Binary code obfuscation through c ++ template meta programming . This article is also about code bloating, plus ideas about arithmetic obfuscation, which have already been described in one of the articles of the past (or before last) Contest, are touched upon. A private solution for C has been written for a long time, sold to REvil / etc, and has been in operation in the wild (wow, this word pisses me off, xs why).
3) Attacking the licensing problems with C ++ . This article is not for everyone, I somehow did not really like the idea of rewriting all the code in macros in manual mode. But templates are used, uh-huh: D

About 1) and 2), theoretically, I can say that writing a script for IDA for deobfuscation is most likely as easy as shelling pears. the same patterns are used for everything. According to 3) - no one in their right mind will use this approach as a whole for the program, but if you manually shove over any function, then Bithak is our assistant.

In general, in terms of its condition at the time, the idea looked interesting and even viable. Showed all the power of the new C ++ standard! But, I see, the people pampered and threw it all in the trash.
All of them are basic obsufucation done with C ++ templates. I have done the advanced ones. Basically, turned whole thing into a VM. You can do even more ...

Of course, Writing an IDA de obfuscation script is easy because they all are OPEN SOURCE. it become hard to write a one for private obsufucation system.

But I don't understand why everyone here needs a sample code to start something novel. When you start something based on a sample code, your mind become fixed. Your mind cannot come up with anything new, so no innovation. If the example code has limitations, your mind will become dependent on it.

You see this is the cause of some uncivilized creatures of this forum who accuse me being a Nazi. Their mind is fixed and can't move forward))

I've done genetic programming for years and I'm more humanist than inventor of DNA))
 
Пожалуйста, обратите внимание, что пользователь заблокирован
clerks
Гугл транслейт сам не знал, насколько окажется прав, именно Клерка я троллил годами... Инде Клерка...

But I don't understand why everyone here needs a sample code to start something novel
Yeah, why do people need to post a sample code when you can just post tons of useless shit.

You see this is the cause of some uncivilized creatures of this forum who accuse me being a Nazi.
Uncivillized creatures that call you nazi has quite a lot of articles and useful info written and posted here and you have done nothing here, only being a cpp-nazi. So you are called cpp-nazi, that is what to be expected, when you are a cpp-nazi.
 
Google translate itself did not know how right it would be, it was the Clerk that I trolled for years ... Inde Clerk ...


Yeah, why do people need to post a sample code when you can just post tons of useless shit.


Uncivillized creatures that call you nazi has quite a lot of articles and useful info written and posted here and you have done nothing here, only being a cpp-nazi. So you are called cpp-nazi, that is what to be expected, when you are a cpp-nazi.
 
Here is a blog post from a man in Mother Russia

Sergey Ignatchenko


"template- and inline-ridden C++ without DLLs and with limited standard libraries – can easily decrease a number of people who can break it, by orders of magnitude."

"C++ is by far the king when it comes to producing obfuscated code. At high optimization settings, assembler generated by C++ compiler takes a lot of time to read even when you know the source. And things such as inlines and templates tend to obfuscate things further."

"In theory, C can be made as obfuscated as C++; however, usually, C programs don’t use as many inlines as C++ ones (and lack template code bloat too) – so it is a bit easier to break."


"For C++, if you’re after obfuscation – you SHOULD try disabling RTTI; while doing so will disallow dynamic_cast<>6 – is still a rather small price to pay. As long as you can modify base classes (and you SHOULD be able to do it easily within your own code) and you’re not using multiple inheritance (which you SHOULDN’T anyway), writing a DIY analogue of dynamic_cast<> is trivial."

"One less-known reverse-engineering attack vector is based on reverse-engineering techniques such as FLIRT. The idea behind the FLIRT is that they have a database of how-standard-functions-look-after-they’re-compiled. And with such a database, they can identify these standard functions within your executable – and tell “hey, whoever calls this address – is actually calling strcpy()”; this effectively serves as a way to carve a bit out of our monolith – and to simplify reverse engineering too."


"Compile statically whatever-you-can, but even MSVCRT.DLL can (and SHOULD) be compiled statically (that is, if you’re trying to obfuscate your code)."


"From practical perspective – inlines and C++ templates are helping to obfuscate things very efficiently. C++ code with lots of inlines and templates becomes extremely difficult to reverse engineer (which in turn means that STL – unlike non-template parts of std:: – is our friend(!))."


"The one compiled with –O3, as a Big Fat Rule of Thumb™, will be still more obfuscated.

Note, however, that when re-compiling 3rd-party libraries, the requirement to use not-so-standard compiler settings (in an attempt to bypass FLIRT-like attacks, as discussed above) is usually more important than throwing –O3 –funroll-loops at all your code. Which means that you’re likely to compile different parts of your program using different compiler settings – and will need to make sure that they still interoperate properly (and this is going to be quite a headache)."
 
Последнее редактирование:
А не поздно ли в 2020 учить малварекодинг под винду?
Не удел ли это прошлого поколения выращенного на книгах Криса Касперски.
Я ничего не имею против языка Си и С++. Но вот изучать по началу пугающе сложный, непонятный - засоренный огромной кучей разнообразных функций WinAPI по книгам 2006 года - честно говоря страшновато. Страшно что знания потеряют актуальность.
Может же случиться, что через 5 лет Microsoft выпустит Windows 11 на новом ядре и примет решение - убрать обратную совместимость, ради того что-бы почистить немного MSDN от мусора.
А мы с вами, только закончили изучать WinAPI и PE формат итд, которые не настолько фундаментальны, как скажем алгоритмы и структуры данных.
Ну и тем более, что мобильные девайсы вытясняют десктопы с огромной скоростью.

Спасибо за статью, очень полезна. Но уверенное изучение материала в с татье, понадобиться 2-3 года)
Если бы у меня была вторая жизнь, я бы посвятил ее малваре-кодингу)
Windows выпустила 11 версию, держу вкурсе)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Решил запилить некий "roadmap" из статьи Кваки, приправив своими никому не нужными пунктами. На мой взгляд, получилось миленько.
Помимо документа здесь, я закинул еще на мегу, может кому-то пригодится без ватермарки.

Посмотреть вложение 30729
Имеет место быть. Thank you
 
Быстрый простой пример,

std::vector<int> numbers { 1, 2, 3, 4 ,5 };

for(auto &i : numbers) {
std::cout << i << "\n";
}
Лишняя аллокация. Есть же std::array<>. Великолепный пример - почему начинать с плюсов не надо.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Лишняя аллокация.
Странный подход к разработке - аллокации считать. Я помню на презентации Джона Кармака (разработчик движка и серии Doom вроде бы) он говорил, что он вполне готов пожертвовать 10% производительности кода в пользу увеличения продуктивности программистов на 10%. Обращаясь ко всем, выбирайте язык и платформу под задачу, пишите код, профилируйте код, ищите ботлнеки, потом оптимизируйте. Не нужно дрочить на отсутствие одной лишней аллокации в вашем коде, по факту вы ни 1 одну лишнюю аллокацию в работе вашего кода не заметите, ни сотни лишних аллокаций.
 
Странный подход к разработке - аллокации считать. Я помню на презентации Джона Кармака (разработчик движка и серии Doom вроде бы) он говорил, что он вполне готов пожертвовать 10% производительности кода в пользу увеличения продуктивности программистов на 10%.
std::array аналогичен массиву на стеке и транслируется в sub sp, NN. std::vector помимо аллокации на стеке места под указатель и размер (в данном случае не нужная информация) вызовет malloc(), которая будет искать свободное место в куче. Тут и близко нет 10%, скорее замена O(1) на O(n). Банально человек не знает библиотеку и выбрал некорректный контейнер, либо тупо троллил. Про мелочи вроде int, где по смыслу положено const int, можно даже не начинать. :)
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
std::array аналогичен массиву на стеке и транслируется в sub sp, NN. std::vector помимо аллокации на стеке места под указатель и размер (в данном случае не нужная информация) вызовет malloc(), которая будет искать свободное место в куче. Тут и близко нет 10%, скорее замена O(1) на O(n). Банально человек не знает библиотеку и выбрал некорректный контейнер, либо тупо троллил. Про мелочи вроде int, где по смыслу положено const int, можно даже не начинать
Я в курсе, я о том, что при разработке нужно в первую очередь думать о корректной работе софта, а не о скорости исполнения или количестве аллокаций. Для конкретно этого кода нет существенной разницы, выделяет он что-то на куче или нет.
 


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