【问题标题】:Dll injection works on some processes, but not on others [duplicate]DLL注入适用于某些进程,但不适用于其他进程[重复]
【发布时间】: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


【解决方案1】:

您的问题可能是您尝试将 DLL 注入 UWP 应用。请参阅此线程以获取解决方案。 Inject a dll file to UWP

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-28
    • 2011-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-10
    相关资源
    最近更新 更多