gpt4 book ai didi

c++ - 如何正确处理注入(inject)的DLL线程?

转载 作者:行者123 更新时间:2023-11-30 04:12:07 34 4
gpt4 key购买 nike

我正在将一个 DLL 注入(inject)到目标进程中,以在玩 MMORPG 时充当助手(目前的功能是将按键转换为鼠标点击,因为 MMORPG 需要用户移动鼠标才能实现某些功能,这是我所鄙视的。 )

假设我出于某种原因想要取消注入(inject)我的 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 是否“取消注入(inject)”本身?或者它是否仍然游荡并继续消耗我在注入(inject)时分配的内存?

谢谢乔希

最佳答案

我假设您使用了起始地址设置为 LoadLibrary 的 CreateRemoteThread,并且您在注入(inject)的 DLL 的 DllMain 中启动了一个线程。

首先,在 DllMain DLL_PROCESS_ATTACH 中将 DLL 的 HMODULE 保存在一个全局变量中。

其次,当您希望线程退出并卸载 Dll 时,将此 HMODULE 传递给 FreeLibraryAndExitThread。

当心!你一定不能留下“活代码”,也就是说,没有回调地址传递给任何 API,如果回调在卸载后被触发,那将立即崩溃(或更糟)。

关于c++ - 如何正确处理注入(inject)的DLL线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19934000/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com