実行中のプロセスにDLLを挿入する方法と、プロセスによって内部的に使用される関数を利用する方法を知っています。
void__stdcall remoteMethod(unsigned short id)
{
typedef void (__stdcall *pFunctionAddress)(unsigned short);
pFunctionAddress pMyFunction = (pFunctionAddress)(0xCAFEBABE);
pMyFunction(id);
}
今、実行中のプロセスの既存のメソッドに sleep() を追加したいと思います。これはプログラムのメインループであり、1 秒も停止せず、すべての処理能力を使い果たします。
回り道のようなフレームワークを使用すると、関数を呼び出してから元の関数を呼び出すトランポリン関数を作成できることはわかっていますが、while(1) ループが外部プロセスの関数内のどこかにあるという問題があります。だから私はループが始まるオフセットを知っています - そしてその後、最初に sleep() を呼び出してから、ループの通常のルートを続けたいと思います。
これまでに見た唯一の代替手段は、プログラムをバイナリ編集することですが、これは良い解決策ではありません。
なにか提案を?ありがとう