MalMemDetect 开源项目使用教程
1. 项目的目录结构及介绍
MalMemDetect 项目的目录结构如下:
MalMemDetect/
├── README.md
├── Source
│ └── cpp
│ └── main.cpp
├── LICENSE
└── .gitignore
- README.md: 项目的基本介绍和使用说明。
- Source/cpp/main.cpp: 项目的主要源代码文件。
- LICENSE: 项目的开源许可证文件,采用 GPL-3.0 许可证。
- .gitignore: 用于指定 Git 版本控制系统忽略的文件和目录。
2. 项目的启动文件介绍
项目的启动文件是 Source/cpp/main.cpp
。该文件包含了项目的主要逻辑和功能实现。以下是 main.cpp
文件的部分关键代码:
// 加载 ntdll.dll 库
HMODULE libntdll = LoadLibraryA("ntdll.dll");
if (libntdll) {
// 获取 KiUserExceptionDispatcher 函数的地址
FARPROC addr = GetProcAddress(libntdll, "KiUserExceptionDispatcher");
if (addr != 0) {
// 修改内存保护属性并进行 Hook
char* moduleChar = (char*)addr;
_VirtualProtect(GetCurrentProcess(), (PVOID*)&addr, (PSIZE_T)1, PAGE_EXECUTE_READWRITE, &oldProtect);
moduleChar[0] = 0xC3;
_VirtualProtect(GetCurrentProcess(), (PVOID*)&addr, (PSIZE_T)1, oldProtect, &oldProtect);
}
}
// 检测任何 DLL 或 EXE 的空心化和内联 Hooks
std::string Monitor = DetectHollowingAndHooks(GetCurrentProcessId());
if (Monitor != "NULL") {
dllMonitor = Monitor;
}
// 启动自己的 Hooks 并记录失败
CHAR* log = (CHAR*)malloc(256);
// 初始化 MinHook
if (MH_Initialize() != MH_OK) {
snprintf(log, 255, "Failed to initialize minhook. Try again running as Admin.\n\n");
Log(&log);
return 1;
}
3. 项目的配置文件介绍
MalMemDetect 项目没有显式的配置文件。项目的配置主要通过代码中的硬编码参数和逻辑来实现。例如,输出文件的路径默认设置为 C:\drive
,可以在 main.cpp
文件中找到相关代码:
// 默认情况下,结果将输出到 C:\drive 中的文件
// 样本输出
// Suspicious Malloc() from thread with id:12780 LPVOID:000002C38082B1D0
如果需要修改输出路径或其他配置,可以直接在 main.cpp
文件中进行相应的修改。
以上是 MalMemDetect 开源项目的使用教程,涵盖了项目的目录结构、启动文件和配置文件的介绍。希望这份文档能帮助您更好地理解和使用该项目。