【发布时间】:2020-12-30 19:39:14
【问题描述】:
我的问题如下:如果有更多具有不同进程 ID 的同名进程,例如 Spotify,我只能将我的 DLL 注入它们,但只有一个。没有任何功能失败。我监控exe的模块,我的dll在那个exe的情况下不显示。
我的注入器似乎适用于 64 位和 32 位进程。我在我编写的两个程序(一个 64,另一个 32 位)和 notepade.exe 上对其进行了测试。它也注入到 Spotify 和部分其他应用程序。
对于我实际尝试注入的进程来说,这个 exe 属于同一类别:更多的 exe 文件,相同的名称,可以注入所有这些文件,但只有一个 - 我真正需要的那个到。它也不会注入 Calculator.exe。
旁注:我尝试了 dll 注入器。他们也会在我无法注入的地方失败,而在我也能注入的地方成功。
我错过了什么?
示例代码:
HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, false, processID);
void* location = VirtualAllocEx(hProc, 0, MAX_PATH, MEM_COMMIT | MEM_RESERVE , PAGE_READWRITE);
WriteProcessMemory(hProc, location, dllPath, strlen(dllPath) + 1, 0);
HANDLE hThread = CreateRemoteThread(hProc, 0, 0, (LPTHREAD_START_ROUTINE)LoadLibraryA, location, 0, 0);
(为了简单起见,我删除了错误处理和关闭处理,这是有效的代码,如上所述)
【问题讨论】:
-
“不起作用”包括什么?我看到 4 个函数,哪一个失败了? (信不信由你,错误是有意义的!)
-
感谢您指出问题中缺少的内容。添加了所需的信息。现在有什么想法吗?
-
您确实意识到要使其工作,注入器和您注入的 dll 必须与目标进程的位数相匹配?
-
当然。我怀疑答案不太明显。
标签: c++ dll code-injection