Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
thematrix — загрузчик PE и трассировщик Windows API. Полезен при анализе вредоносного ПО. | Kitploit
Инструменты/GitHubGitHub/enkomio/thematrix
Динамический анализ (песочница)Обратная инженерияОтладчикиАнализ вредоносных программБезопасность API
GitHubenkomio/thematrix

thematrix

загрузчик PE и трассировщик Windows API. Полезен при анализе вредоносного ПО.

Репозиторий
143193 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

TheMatrix

Этот проект был создан для упрощения процесса анализа вредоносного ПО. Цель — создать бинарник-активатор, который загружает заданный пользователем бинарник и отслеживает его выполнение с помощью хуков Win32 API. Соответствующие данные сохраняются на диск. Код поддерживает как x86, так и x64 бинарники.

Doc

Я написал пост в блоге, объясняющий, как это работает: http://antonioparata.blogspot.com/2022/06/thematrix-process-inspection-tool-aimed.html

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

Для мониторинга нового бинарника необходимо создать активатор. Активатор загружает и отслеживает заданный пользователем бинарник. Для создания активатора используйте опцию -add. Пример использования:

root@kitploit:~
c:\>TheMatrix.exe -add c:\path\to\my\binary.dll
Файл активатора создан
c:\>regsvr32.exe TheMatrix.build.dll

Эта команда создаст новый PE-файл, представляющий активатор. Активатор будет иметь тот же формат (DLL или EXE), что и исходный бинарник.

После создания вы можете запустить его любым удобным способом (для DLL рекомендуется использовать утилиту rundll32.exe).

Во время выполнения данные, сгенерированные отслеживаемыми функциями, сохраняются в ./Desktop/thematrix/[ID процесса]/ (это зависит от функции log_data, реализованной в utility.c).

Ограничения:

  • Проект изменяет структуру PEB.Ldr, чтобы некоторые API (например, GetModuleHandle, ...) работали корректно. Если запустить активатор в системе WOW64 (x86 бинарник на x64 ОС), изменяется только x86 PEB.Ldr (в процессах WOW64 существуют как x86, так и x64 PEB). Когда процессор переключается на x64, нативные Windows API (ntdll.dll) используют x64 версию PEB.Ldr. Это означает, что активатор может работать некорректно. Чтобы гарантировать правильную работу x86, запускайте бинарник на x86 ОС.

  • Созданный файл не экспортирует все методы и не содержит ресурсы исходного файла. Это может вызвать ошибки, например, если DLL вызывает GetModuleFileName -> LoadLibrary -> FindResource. Этот код загрузит оригинальную DLL TheMatrix, которая не содержит нужного ресурса.

Настройка

Добавление новых функций для мониторинга — простая задача. Посмотрите на файл hooks.c для примеров хуков Kernel32.dll и bcrypt.dll. Чтобы добавить новый хук, достаточно вызвать функцию hook_add. Ниже показан пример создания хука:

root@kitploit:~
LPVOID __stdcall hook_BCryptEncrypt(BCRYPT_KEY_HANDLE hKey, PUCHAR pbInput, ULONG cbInput, VOID* pPaddingInfo, PUCHAR pbIV, ULONG cbIV, PUCHAR pbOutput, ULONG cbOutput, ULONG* pcbResult, ULONG dwFlags)
{
   // сохранить открытые данные
   if (cbInput) {
   	char name[MAX_PATH] = { 0 };
   	snprintf(name, sizeof(name), "BCryptEncrypt_%llx_%d", (uint64_t)pbInput, cbInput);
   	log_data(cbInput, pbInput, name);
   }	

   LPVOID ret = call_original(
   	hKey,
   	pbInput,
   	cbInput,
   	pPaddingInfo,
   	pbIV,
   	cbIV,
   	pbOutput,
   	cbOutput,
   	pcbResult,
   	dwFlags
   );
   return ret;
}
 
hook_add("Bcrypt.dll", "BCryptEncrypt", hook_BCryptEncrypt);

Функция должна иметь ту же сигнатуру, что и перехватываемая функция. Функция call_original используется для вызова оригинальной функции. Достаточно передать ей те же входные параметры, что и у оригинальной функции — фреймворк сам выполнит всю сложную работу, чтобы вызвать правильную функцию ;) Вызов call_original должен выполняться в том же потоке, который исполняет хук, иначе процесс упадёт.

TODO

  • Перехватывать CreateProcessInternalW вместо CreateProcessW
  • Изменять PEB64 при выполнении процесса в WOW64
Скачать инструмент