0
Deviare2はMS WindowsのプロフェッショナルなAPIフックライブラリです。使いやすく強力ですが、C#ダミーライターを使用してWrtieFileをフックしたい場合は、WriteFileを2回フックしました。フックダミーライターにAPIモニターを提訴しようとすると、私はAPIモニターが各書き込みコールのフックを見つけたことを発見しました。それは有線です!Deviare2フックWriteFile APIを1回だけ書き込む
フックコード:
spyMgr = new NktSpyMgr();
NktProcess _process = GetProcess("DummyWriter.exe");
while (_process == null)
{
Console.WriteLine("wait for process start...");
System.Threading.Thread.Sleep(10);
_process = GetProcess("DummyWriter.exe");
}
hookDllGetClassObj = spyMgr.CreateHook("kernel32.dll!WriteFile", (int)(eNktHookFlags.flgOnlyPreCall));
hookDllGetClassObj.Attach(_process, true);
hookDllGetClassObj.Hook(true);
hookDllGetClassObj.OnFunctionCalled += OnDllGetClassObjectCalled;
ダミーライト:
string key = "";
Task.Factory.StartNew(() => {
int index=1;
while (key == "")
{
using (StreamWriter sw = new StreamWriter("d:\\dummy.txt",true))
{
string str = string.Format("{0}:oh gotcha!", index);
Console.WriteLine(str);
sw.WriteLine(str);
index++;
}
Thread.Sleep(500);
}
});
key = Console.ReadLine();
フックを作成するときにeNktHookFlags.flgOnlyPreCallフラグを追加しました。hookDllGetClassObj = spyMgr.CreateHook( "kernel32.dll!WriteFile"、(int)(eNktHookFlags.flgOnlyPreCall));フックコールバックで再度チェックする必要がありますか? –
私はそれをチェックしました、二度フックされたのはすべてpreCallです –