LOAD_DLL_DEBUG_EVENT 时读取 DllName

 这句话是说 lpImageName 和 hFile 存在关联(associated),不是一定指向!

继续读后面那句,“这个数字可能为NULL,或者包含着被调试进程空间中的一个字符串地址.这个地址,相反,也可能给空或者指向真正的文件名”

因此:必须从目标进程中读取两次,第一次读取字符串内存地址,第二次才是真正的读取文件名字符串。

1 case LOAD_DLL_DEBUG_EVENT: // DLL加载事件
2     ReadProcessMemory(pi.hProcess, de.u.LoadDll.lpImageName, &dwAddrImageName, sizeof(dwAddrImageName), &nNumberOfBytesRead);
3     ReadProcessMemory(pi.hProcess, (void*)dwAddrImageName, DllName, sizeof(DllName), &nNumberOfBytesRead);
4     if (de.u.LoadDll.fUnicode) {
5         wprintf(L"DLLNAME: %s
", DllName);
6     }
7     else {
8         printf("DLLNAME: %s
", DllName);
9     }
原文地址:https://www.cnblogs.com/onetrainee/p/11960075.html