【发布时间】:2013-11-24 21:16:48
【问题描述】:
我正在将一个 DLL 注入目标进程以在玩 MMORPG 时充当助手(目前的功能是将按键转换为鼠标点击,因为 MMORPG 要求用户移动鼠标来实现某些功能,这是我鄙视的。 )
假设出于某种原因我想取消注入我的 DLL,我该怎么做呢?这个方法干净吗?
bool running = true;
while (running) // This is the only thread I'm using, and it is running in "realtime"
{
// Do keyboard handing stuff in switch statement
case keys.EscapeKey: // If the escape key is pressed
running = false; // Set the running bool to false, and break the loop
break;
}
这干净吗?线程结束了,我的 dll 本身是否“未注入”?还是它仍然徘徊并继续消耗我在注入时分配的内存?
谢谢 乔什
【问题讨论】:
-
首先如何注入 DLL?
-
使用 CreateRemoteThread
-
嗯...如果你使用CreateRemoteThread“trick”,即:以LoadLibrary为起始地址启动一个线程,然后为你的代码启动一个新线程,我看不到HOW离开第二个线程将卸载您的 DLL。您应该使用 Process Explorer 进行检查...我猜 DLL 将永远存在...
-
这就是我的想法,尽管人们可能期望主线程会像简单的控制台应用程序那样退出,如果它使用 void 而不是 int 作为 main 方法。 Shahriyar 的帖子符合我目前的期望,我还没有机会调试它,但希望今晚能这样做。如果你有兴趣,我会确认它。谢谢:)
-
我很感兴趣,是的,但很确定 Shahriyar 的答案不是您需要的。 “在主线程结束时从进程中分离”对我来说是无稽之谈。
标签: c++ memory-management dll inject code-injection