繁体   English   中英

Easyhook引发System.NotSupportedException

[英]Easyhook raises a System.NotSupportedException

我仍在尝试完全了解挂钩以及easyhook的工作原理。 现在,我写了一个简单的示例:包含webbrowser元素的表单,而我试图挂接由此产生的recv调用。 编译时,程序返回以下错误:

A first chance exception of type 'System.NotSupportedException' occurred in EasyHook.dll
System.NotSupportedException: STATUS_NOT_SUPPORTED:  (Code: 0)
   at EasyHook.NativeAPI.Force(Int32 InErrorCode)
   at EasyHook.RemoteHooking.InjectEx(Int32 InHostPID, Int32 InTargetPID, Int32 InWakeUpTID, Int32 InNativeOptions, String InLibraryPath_x86, String InLibraryPath_x64, Boolean InCanBypassWOW64, Boolean InCanCreateService, Object[] InPassThruArgs)
   at EasyHook.RemoteHooking.Inject(Int32 InTargetPID, InjectionOptions InOptions, String InLibraryPath_x86, String InLibraryPath_x64, Object[] InPassThruArgs)
   at Hook_Test.Form1.Run() in I:\Documents and Settings\Meme\Desktop\SimpleHook\Hook Test\Hook Test\Form1.cs:line 46

在第46行,我有以下代码:

            RemoteHooking.Inject(
                Process.GetCurrentProcess().Id,
                InjectionOptions.Default,
                "TestInject.dll",
                "TestInject.dll",
                ChannelName);

我真的看不出问题出在哪里,有人可以帮我吗?

在RemoteHooking类的Inject方法的文档中说:

即使从技术上来说可以将用于调试目的的库注入当前进程,也将引发异常。 这是因为在很大程度上取决于您注入的库是否会破坏当前进程。 如果您钩错了API,则任何形式的通信都可能导致死锁。 只需使用Visual Studio的功能即可同时调试多个进程,这将使您可以调试库,就像将库注入到当前进程中一样,而不会产生任何副作用。

看来这是设计使然。 您可能需要将项目分成两个应用程序,或者使用外壳程序或线程启动(至少)启动当前流程之外的事物实例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM