如何获取 dll 注入到的进程的名称
How to get the name of the process your dll was injected into
我有一个用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 或任何进程。
相关文章:
- Windows 将标准的 C 文件结构注入到正在运行的进程中
- 读取进程内存多级指针(DLL 注入)
- 当我将 DLL 注入现有进程时,DLLMain 不执行任何操作
- 如何获取 dll 注入到的进程的名称
- 如何使用 std::in 和 getline() 检测后台进程中从 bash 注入的输入
- 使用参数调用远程进程中的函数(注入的 DLL)
- 是否可以注入一个进程并获取给定的句柄,然后使用它们注入另一个进程
- 从注入进程的 DLL 调用函数并更改指针函数的地址
- Dll 注入 - 在另一个进程中编写本机代码
- 注入的DLL主循环使进程崩溃
- 将x86代码注入x64进程
- 如何将dll注入另一个进程
- 将托管 dll 注入本机进程
- 是否可以从外部进程注入和执行应用程序
- 如何执行注入到进程中的应用程序
- 检测窗口上的进程内存注入(反黑客)
- 进程执行前的 DLL 注入
- 从运行的进程注入DLL后弹出
- 向远程进程注入DLL并显示信息
- dll只向某些进程注入