私は c# で dll インジェクション ソフトに取り組んでいます。注入された dll も c# にあり、特定のシステム機能に pinvoke を使用しています。
extTextOut を使用すると、文字列がスクランブルされ、行が混ざり合ってしまいます。何が間違っていますか?
次のように、codeplex.com の EasyHook を使用して extTextOut をフックしました。
try
{
CreateFileHook = LocalHook.Create(
LocalHook.GetProcAddress("gdi32.dll", "ExtTextOutW"),
new DExtTextOutW(ExtTextOutW_Hooked),
this);
CreateFileHook.ThreadACL.SetExclusiveACL(new Int32[1]);
}
そして私のextTextOutメソッドは
[DllImport("gdi32.dll", CharSet = CharSet.Auto, SetLastError = true, CallingConvention = CallingConvention.StdCall)]
static extern bool ExtTextOutW(IntPtr hdc,
int X,
int Y,
uint fuOptions,
[In] ref RECT lprc,
string lpString,
uint cbCount,
[In] IntPtr lpDx);
static bool ExtTextOutW_Hooked(
IntPtr hdc,
int X,
int Y,
uint fuOptions,
[In] ref RECT lprc,
string lpString,
uint cbCount,
[In] IntPtr lpDx)
{
try
{
DemoInjection This = (DemoInjection)HookRuntimeInfo.Callback;
lock (This.Queue)
{
This.Queue.Push(lpString);
}
}
catch
{
}
return ExtTextOutW(
hdc,
X,
Y,
fuOptions,
ref lprc,
lpString,
cbCount,
lpDx
);
}
そして、もしよろしければ別の質問です。焦点が合っていない、または最小化されているウィンドウを常に監視するにはどうすればよいですか (このアプローチを使用すると、正しく機能しません)
どうもありがとう!