如何获取 dll 注入到的进程的名称



我有一个用C++写的DLL。我想要它,所以注射它检测它被注射的过程。即它获取进程名称。怎么能做到这一点呢?

您可以使用GetModuleFileName().

在将其hModule参数设置为 NULL 的情况下调用它将为您提供用于创建进程的文件的名称。

由于 DLL 在加载 DLL 的进程的上下文中运行,因此它应提供相应的文件名。

要从 GetModuleFileName(( 返回的路径中获取文件名,这里有 2 种方法:

使用 char 数组和 _splitpath((

HMODULE hExe = GetModuleHandle(NULL);
char fullPath[MAX_PATH]{ 0 };
char fname[MAX_PATH] = { 0 };
char ext[MAX_PATH] = { 0 };
char procName[MAX_PATH] = { 0 };
GetModuleFileName(hExe, fullPath, MAX_PATH);
_splitpath(fullPath, 0, 0, fname, ext);
strcpy(procName, fname);
strcat(procName, ext);

使用 std::文件系统

#include <filesystem>
namespace fs = std::experimental::filesystem;
HMODULE hExe = GetModuleHandle(NULL);
WCHAR fullPath[MAX_PATH]{ 0 };
GetModuleFileName(hExe, fullPath, MAX_PATH);
fs::path path(fullPath);
fs::path filename = path.filename();

两者都适用于注入的 DLL 或任何进程。

最新更新