避免程序检测到正在使用的线程

逆向工程 部件 x86 C++ dll注入 线
2021-06-17 00:58:14

我正在为需要在无限循环中运行的程序编写一个 DLL(当然有延迟)。例如:

while (true) {
    std::cout << "I am running.\n";
    Sleep(1000);
}

我不确定如何但无论我如何执行此操作,目标程序都会在几分钟后自行关闭。我知道它不是 DLL 的存在,因为如果我没有无限循环并且它“完成”(但保留在内存中)它不会检测到任何东西。

我正在使用 Cheat Engine 注入 DLL。当我正常注入它时以及当我在单独的函数中具有循环并为其创建线程时都会检测到它。

如果没有一些简单且易于修补的方法来检测这样的事情,还有什么替代方法?我把它写成一个 DLL,因为我需要在进程中调用函数(CreateRemoteThread-ing 基础并不容易,因为它们中的大多数都有不止一个参数)。

1个回答

您是否考虑过仅使用 DLL 来提供“存根”方法,您可以使用 CreateRemoteThread 调用这些方法,并让 DLL 方法将参数转换为您最终想要调用的方法?

我知道这并不是程序如何检测其他线程正在运行的真正解决方案。但幸运的是,在此提议下,您的线程只会运行几分之一秒,因此程序检测到它们的可能性要小得多。