• Уменьшение отступа

    Обратная связь

    (info@ru-sfera.pw)

Фреймворк криптора/протектора с антиэмуляцией


virt

Просветленный
Просветленный
Регистрация
24.11.2016
Сообщения
706
Репутация
228
Вчера опытным путем нашёл ещё один более менее действенный антиэмуль. Не знаю как точно сделать это на плюсах, но на асме довольно просто. Вобщем смысл такой, создаём цикл типа for, со знанием счётчика, например 16,000,000. Выход из цикла по 0. Но! В самом цикле, к примеру на каждых 500000 генерируем один байт из ключа и когда ключ создан, выходим из цикла досрочно.
Авер пропускает этот цикл и, соответственно, не рассчитывает ключ, и не может расшифровать полезную нагрузку. Также можно и точку входа в функцию рассчитывать.
Это и на си непроблема сделать.

У эмулятора лимиты на сканирование всего файла, а не функции целиком.

Так-что если делать большие задержки, он в принципе может и не дойти до функции.

Как пример, отключите всю антиэмуляцию и поставьте перед вызовом функции запуска в памяти while (1); эмулятор просто недойдет до функции.)))
 

virt

Просветленный
Просветленный
Регистрация
24.11.2016
Сообщения
706
Репутация
228
Надо было не заливать на ВТ... i'm crazy
Так и нужно сделать, либо максимально простую чистку, либо отсутствие детекта у следующих образцов.)

Иначе смысла крипта нет. Хотя-бы на скантайм такое сделать.
 

skales007

Пользователь
Форумчанин
Регистрация
26.03.2019
Сообщения
9
Это и на си непроблема сделать.
Я и не говорил, что это сложно сделать на сях, я имел ввиду, что не знаю точно как это будет выглядеть в ассемблерном листинге.

Как пример, отключите всю антиэмуляцию и поставьте перед вызовом функции запуска в памяти while (1); эмулятор просто не дойдет до функции.)))
Возможно ошибаюсь, но пробовал. Если взять бесконечный цикл, то да, авер дальше него не зайдет. А вот если цикл с выходом, пусть и с длинным, то он просто его пропускает (если не добавить туда полезных действий).Вышло два следствия, как мне показалось: либо делать расчеты в цикле, чтоб авер его не мог пропустить, либо если пропустит, то не расшифруется нагрузка. Но это мое ИМХО)) Я велосипедист)) любую критику приму))
 

virt

Просветленный
Просветленный
Регистрация
24.11.2016
Сообщения
706
Репутация
228
Для достижения метополиморфизма (каждый раз разный код, после сборки), можно использовать это:

На днях если будет время покажу, как это можно сделать на си, в этом проекте.

Это называется метапрограммирование.
 

Gerion

Пользователь
Форумчанин
Регистрация
12.05.2019
Сообщения
13
Репутация
2
Обидно только то,что проект начинает палиться еще на стадии разработки =(
Обновил проект:

1)Нод уже начал детектить, примечательно, что детектить стал модуль: modules/trash_gen_module:

Уж незнаю, кто задетектил автоматика, либо аналитик ?

Задетектил как-то странно, даже не объектник, а файл modules/trash_gen_module/fake_api.cpp, там связанные функции:
Код:
extern "C" {
    void __cdecl  debug_print(unsigned line) {
        std::cout << "debug: " << line << "\n";
    }
};

extern "C" {
    void __cdecl do_fake_instr(void);
}

extern "C" {
    uint32_t __stdcall do_Random_EAX(uint32_t min, uint32_t max);
}

Для лечения от жадности, просто убрал:
Код:
extern "C" {
    void __cdecl  debug_print(unsigned line) {
        std::cout << "debug: " << line << "\n";
    }
};

А как ты определил, что именно на файл? Прошелся ав по исходникам?
 

X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 068
Репутация
8 175
Обновление, добавил метаморфизм:

Для достижения метаморфизма, shell_gen генерирует заголовочный файл, со следующими дефайнами, пример (сами значения случайны):

#define START_MORPH_CODE 5

#define END_MORPH_CODE 14

На основе этих значений при сборки, генерируется "мусорный код" (Математичесие операции и т.д.), который будет случайным, после каждого вызова shell_gen и сборки.

При сборки, в main и в модулях:modules/run_pe/, modules/trash_gen_module/ генерируются функции в случайном порядке, функции берутся в modules/metamorph_code/morph.cpp (На данный момент там функции арифметических операций). Тем самым достигается полиморфность не только данных, но и кода каждого образца.)))

Поправлены ошибки, ну и новый модуль modules/metamorph_code/

Так ещё планирую сделать возможность крипта x64.
 

HopefuLXakir

Уважаемый пользователь
Форумчанин
Регистрация
14.11.2018
Сообщения
82
Репутация
9
Обновил проект:

1)Нод уже начал детектить, примечательно, что детектить стал модуль: modules/trash_gen_module:

Уж незнаю, кто задетектил автоматика, либо аналитик ?

Задетектил как-то странно, даже не объектник, а файл modules/trash_gen_module/fake_api.cpp, там связанные функции:
Код:
extern "C" {
    void __cdecl  debug_print(unsigned line) {
        std::cout << "debug: " << line << "\n";
    }
};

extern "C" {
    void __cdecl do_fake_instr(void);
}

extern "C" {
    uint32_t __stdcall do_Random_EAX(uint32_t min, uint32_t max);
}

Для лечения от жадности, просто убрал:
Код:
extern "C" {
    void __cdecl  debug_print(unsigned line) {
        std::cout << "debug: " << line << "\n";
    }
};
Dmeh-Smeh-Smeh!!!Можно автоматизировать, добавляя в модули похожим образом функции.Dmeh-Smeh-Smeh!!!

2)Добавил модуль /modules/antiemul

3)Теперь:

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

4)Поправил ошибку.
Чтобы антивирусы не детектили не нужно сканировать на вирустотале...
Вот вам беспалевный сканер уже более полугода сканирую на нем свои проекты не одного детекта от антивирусов не получил.
 

Edith Wooten

Уважаемый пользователь
Форумчанин
Регистрация
17.04.2019
Сообщения
108
Репутация
22
Чтобы антивирусы не детектили не нужно сканировать на вирустотале...
Вот вам беспалевный сканер уже более полугода сканирую на нем свои проекты не одного детекта от антивирусов не получил.
маловато сканеров
 
Верх Низ