Easyhook 引发 System.NotSupportedException
Posted
技术标签:
【中文标题】Easyhook 引发 System.NotSupportedException【英文标题】:Easyhook raises a System.NotSupportedException 【发布时间】:2011-01-05 16:23:39 【问题描述】:我仍在尝试完全了解 hooking 以及 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);
我真的看不出问题出在哪里,有人可以帮帮我吗?
【问题讨论】:
第一次机会例外并不意味着什么。按 F5。它真的会轰炸未处理的异常吗? 不,当我运行程序时,网络浏览器工作得很好,但我什么都不能钩。 【参考方案1】:在 RemoteHooking 类的 Inject 方法的文档中说:
即使技术上可以将用于调试目的的库注入当前进程,它也会抛出一个 例外。这是因为它在很大程度上取决于您注入的库 当前进程是否会损坏。任何形式的交流 如果挂钩错误的 API,可能会导致死锁。只需使用 Visual Studio 调试多个进程的能力 同时这将允许您调试您的库,就好像它 将被注入当前进程而不会遇到任何 副作用。
这似乎是设计使然。您可能需要将项目拆分为两个应用程序,或者使用 shell 或线程来启动(至少)当前进程之外的事物的实例。
【讨论】:
以上是关于Easyhook 引发 System.NotSupportedException的主要内容,如果未能解决你的问题,请参考以下文章