Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
thematrix — 一个 PE 加载器和 Windows API 跟踪器。在恶意软件分析中有用。 | Kitploit
工具/GitHubGitHub/enkomio/thematrix
动态分析 (沙盒)逆向工程调试器恶意软件分析API 安全
GitHubenkomio/thematrix

thematrix

一个 PE 加载器和 Windows API 跟踪器。在恶意软件分析中有用。

查看仓库
1431953年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

TheMatrix

本项目旨在简化恶意软件分析过程。目标是创建一个激活器二进制文件,其作用是加载用户定义的二进制文件,并通过使用 Win32 API 钩子监视执行过程。相关数据随后保存到磁盘。代码支持 x86 和 x64 二进制文件。

文档

我写了一篇博客文章解释其工作原理: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
Activator file created
c:\>regsvr32.exe TheMatrix.build.dll

该命令将创建一个新的 PE 文件,代表激活器。激活器将具有与输入二进制文件相同的格式(DLL 或 EXE)。

创建后,您可以按首选方式运行它(对于 DLL,建议使用 rundll32.exe 工具)。

在运行过程中,被监视函数生成的数据将保存到 ./Desktop/thematrix/[进程 ID]/(这取决于 utility.c 中实现的 log_data 函数)。

限制:

  • 该项目修改了 PEB.Ldr 结构,以使特定 API 正常工作(例如 GetModuleHandle、……)。如果在 WOW64 系统(x64 操作系统上的 x86 二进制文件)上运行激活器,则仅修改了 x86 的 PEB.Ldr(WOW64 进程同时具有 x86 和 x64 的 PEB)。当 CPU 切换到 x64 时,Windows 原生 API(ntdll.dll)将使用 x64 版本的 PEB.Ldr。这意味着激活器可能无法正常工作。为确保 x86 版本正常工作,请在 x86 操作系统上运行二进制文件。

  • 新创建的文件不导出所有方法,也不包含原始文件的资源。这可能导致错误,例如,如果 DLL 调用 GetModuleFileName -> LoadLibrary -> FindResource。此代码路径将加载原始的 TheMatrix DLL,该 DLL 不包含所需的资源。

自定义

添加新函数到监视器很容易,查看 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
  • 当进程在 WOW64 中执行时,修改 PEB64
下载工具