Привет!
С момента выхода второй части прошло несколько месяцев, и я готов поделится новым опытом.
В данном посте мы более углубленно изучим Self-code injection, как детектят, как обходят и в конце напишем свой собственный стейджер. Будет код на Си, чуть-чуть ассемблера и много ссылок на исходники и первоисточники.
Существуют нормативно-правовые акты, запрещающие распространять вредоносное ПО. Я не играю в хакеров, а лишь хочу в образовательных целях показать, что антивирус не всесильный.
Вернемся ненадолго в прошлое, во вторую часть, в которой не очень опытный малварьщик говорит что-то про реверс-шеллы
1. Реверс шеллы?

Моя ошибка № 1
В данном случае я хотел показать, что простой реверс шелл детектится всем подряд. Но, как оказалось, детекты шли не на сам реверс-шелл, а на бинарь, из которого он запускался. Подробный разбор ниже.
2. Обфускация?
Еще одна тема, которая при перечитывании вызывает у меня испанский стыд, это то, как я обфусцировал код:

Моя ошибка № 2
За такое конечно нужно увольнять 😟
Никакой обфускацией тут и не пахнет. Названия переменных не сохраняются в скомпилированном файле (если, конечно, не указать компилятору сохранение отладочной информации)

Моя ошибка № 3
А вот такие действия могут сработать, так как тут идёт изменение машинного кода путем добавления операции сложения, хотя в данном случае это не сильно повлияет на детект. И стоит не забывать про оптимизацию компилятора, которая включена по умолчанию, поэтому что конкретно за машинный код получится в результате, известно одному лишь дизассемблеру.
Ну вроде и всё, с основными ляпами разобрались, идем дальше.