我知道如何将 DLL 注入正在运行的进程中,以及如何利用进程内部使用的函数,例如
void__stdcall remoteMethod(unsigned short id)
{
typedef void (__stdcall *pFunctionAddress)(unsigned short);
pFunctionAddress pMyFunction = (pFunctionAddress)(0xCAFEBABE);
pMyFunction(id);
}
现在我想将 sleep() 添加到正在运行的进程中的现有方法中 - 这是程序的主循环,不会停止一秒钟并耗尽所有处理能力。
我知道使用 detours 之类的框架,我可以创建一个蹦床函数,它调用我的函数,然后调用原始函数 - 但是我的问题是 while(1) 循环在外部进程的函数中的某个位置。所以我知道循环开始的偏移量 - 之后我想先调用 sleep() 然后继续循环的正常路线。
到目前为止,我看到的唯一选择是二进制编辑程序,但这不是一个好的解决方案。
有什么建议吗?谢谢