Что нового?

Пишем шифровальщика на С++

barboskin

Выдающийся
ДРУЗЬЯ ФОРУМА
ЮБИЛЕЙНАЯ ЛЕНТА

barboskin

Выдающийся
ДРУЗЬЯ ФОРУМА
ЮБИЛЕЙНАЯ ЛЕНТА
Регистрация
3 Июл 2018
Сообщения
1,172
Симпатии
1,068
eRUB
45
#1
Привет, сегодня я расскажу как сделать простой криптор на C++ БЕЗ использования .NEТ и прочей чепухи.

Из чего состоит любой криптор, как проект:

1) Стаб - это шаблон с готовыми функциями
2) Билдер - та программ, которая заполняет шаблон


Функционал билдера:

- Шифрование файла (вируса) с помощью XOR
- Pump файла. Реализован будет через "factor".
- Заполнения шаблона


Функционал стаба:

- Распаковка и запуск файла в памяти
- Защита от виртуальной машины
- Мутация (рандомная) кода (кривая)

1. Начнем с общей подготовки:


1) Для начала создадим проект (на C++, никакого шарпа):



(нажимаем "ок")

2) Далее создаем еще один проект и общий хедер (в котором будет зашифрованный ключ):




3) Теперь подключаем хедер, исходный код, которого можно найти здесь:

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.



Данный хедер отвечает за шифрование данных. Таким образом реверсер не сможет просмотреть содержание (константных) строк.

*Использование:

Код:

C++:
#include "xor.h" //сверху
XorStr("Тут ваш текст");

Подключаем наш хедер и объявляем переменную-ключ:





4) Чтобы определится какой ключ нам нужен воспользуемся онлайн хешатором:



5) В итоге хедер должен выглядеть вот так:



2. Далее билдер:

1) Определимся как будет работать билдер:

Запись байтов файла для крипта в переменную -> Памп, если надо -> XOR ресурсов -> Запись настроек в ресурсы -> Запись байтов в ресурсы

2) Создадим Main.cpp для билдера и подключим заголовки:




3) Шаг 1 - Запись байтов файла для крипта в ресурсы:

1. Сделаем так, чтобы стаб копировался и не приходилось делать кучу однотипной работы все время:




2. Считаем байты в vector<unsigned char>



 

Вложения

barboskin

Выдающийся
ДРУЗЬЯ ФОРУМА
ЮБИЛЕЙНАЯ ЛЕНТА

barboskin

Выдающийся
ДРУЗЬЯ ФОРУМА
ЮБИЛЕЙНАЯ ЛЕНТА
Регистрация
3 Июл 2018
Сообщения
1,172
Симпатии
1,068
eRUB
45
#2
4) Шаг 2 - Памп, если надо:



5) Шаг 3 - XOR байтов (написал отдельную функцию, которую потом скопирую в стаб):





6) Шаг 4 - Записываем настройки:



7) Шаг 5 - Записываем байты:

 

Вложения

barboskin

Выдающийся
ДРУЗЬЯ ФОРУМА
ЮБИЛЕЙНАЯ ЛЕНТА

barboskin

Выдающийся
ДРУЗЬЯ ФОРУМА
ЮБИЛЕЙНАЯ ЛЕНТА
Регистрация
3 Июл 2018
Сообщения
1,172
Симпатии
1,068
eRUB
45
#3
3. Теперь перейдем к стабу:

Оформим Main.cpp:



Добавим RunPe.h с этим содержимом

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.




1) Определимся, как будет работать стаб:

Определение настроек -> Определение ВМ (опционально) -> Раскриптовка файла -> Инжект в себя же или в attrib.exe -> Мутация кода

2) Начнем с определения настроек, для этого нам понадобится функция для чтения байтов из ресурсов:




Теперь загрузим настройки:



3) Проверяем на ВМ:



4) Завершающий код, где мы дешифируем и инжектим файл:



*Я не забыл про мутацию кода, она будет в проекте, который можно скачать в конце темы.

===========================================================


Проверим работоспособность криптора:



Отлично, все работает!


Скачать проект:

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

 

Вложения

skrill

Новичок

skrill

Новичок
Регистрация
17 Дек 2018
Сообщения
1
Симпатии
0
eRUB
0
#4
Отличная тема. Можно ключ от исходников?
 

rekurt

Участник

rekurt

Участник
Регистрация
4 Июн 2019
Сообщения
6
Симпатии
0
eRUB
39
#5
Не указали пароль для файлообменника(
 

Kertis138

Новичок

Kertis138

Новичок
Регистрация
8 Июл 2019
Сообщения
1
Симпатии
0
eRUB
11
#6
Пароль для файлообменника?
 
Сверху Снизу