Малварь как искусство MemoryModule - Загрузка DLL из ОЗУ


X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 145
Репутация
8 273
1715586834252.png


Всем привет!

Когда-то давно писал свой загрузчик DLL, но сейчас на гитхабе наткнулся на более взрослый загрузчик:

Для чего это может-быть нужно:

Стандартные функции Windows API для загрузки внешних библиотек в программу (LoadLibrary, LoadLibraryEx) работают только с файлами на файловой системе. Поэтому невозможно загрузить DLL прямо из памяти.

Но иногда нужно загрузить dll из памяти, вот зачем:

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

2. Таким образом можно делать криптования длл.

Вот как пользоваться кодом выше, вот пример:

C:
 handle = MemoryLoadLibrary(data, size);
    if (handle == NULL)
    {
        _tprintf(_T("Can't load library from memory.\n"));
        goto exit;
    }

    addNumber = (addNumberProc)MemoryGetProcAddress(handle, "addNumbers");
    _tprintf(_T("From memory: %d\n"), addNumber(1, 2));

В общем-то всё просто, есть интерфейсные функции:

handle=MemoryLoadLibrary(data, size) - Загрузка самого образа длл из памяти, где data это адрес в ОЗУ куда dll уже загружена (Например скачена с сети), size размер образа.

Далее уже вызывается MemoryGetProcAddress для получения адреса функции.)
 

HMCoba

Активный пользователь
Активный
Регистрация
22.04.2023
Сообщения
207
Репутация
157
Посмотреть вложение 61254

Когда-то давно писал свой загрузчик DLL, но сейчас на гитхабе наткнулся на более взрослый загрузчик:

Получается в итоге ботнет активируется с дэлки, с помощью команды от сервера...
Забавно, беру на вооружение!
 
Последнее редактирование:

CodeVendor

Пользователь
Форумчанин
Регистрация
13.09.2023
Сообщения
2
Репутация
1
столько лет библиотеке, и только сейчас решили вспомнить про неё
 
Верх Низ