假设我想将一个 DLL 注入一个想要每 250 毫秒编辑一次地址 A 的值的进程。我需要使用 DllMain,对吗?问题是我不允许在 DllMain 内等待。所以我必须创建一个线程?还是没有绕过限制?我该怎么做呢?
此外,使用 DLL 注入来编辑应用程序的内存比使用 EXE 有什么好处吗?
另外,CreateThread 中的堆栈大小应该是多少?如果它太小或太大怎么办?我怎么知道我需要多少?
假设我想将一个 DLL 注入一个想要每 250 毫秒编辑一次地址 A 的值的进程。我需要使用 DllMain,对吗?问题是我不允许在 DllMain 内等待。所以我必须创建一个线程?还是没有绕过限制?我该怎么做呢?
此外,使用 DLL 注入来编辑应用程序的内存比使用 EXE 有什么好处吗?
另外,CreateThread 中的堆栈大小应该是多少?如果它太小或太大怎么办?我怎么知道我需要多少?
根据您的描述,您似乎已经知道如何让目标进程加载您的 DLL。如果我的假设是正确的,那么答案很简单:从 DLLMain 创建一个线程并在线程中实现您的逻辑。只要您的代码遵守下面列出的规则,就可以了。
本文档描述了在 DLLMain 中可以做什么和不可以做什么以及为什么。
如文档所述,您永远不应在 DllMain 中执行以下任务:
在 DllMain 中可以安全地执行以下任务:
你的第二个问题对我来说不太清楚。要将代码注入另一个进程,您必须从某个地方(浏览器、exe 等)开始,然后写入目标进程内存以使其加载您的 DLL。