2011-01-05 10 views
0

私はまだフックを理解し、easyhookがどのように動作するのかを十分に理解しようとしています。 私は今簡単な例を書いています:webbrowser要素を含んでいるフォーム。それからrecv呼び出しをフックしようとしています。 46行でEasyhookはSystem.NotSupportedExceptionを発生させます

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 

、私はこのコードをしました:私は実際には問題がどこにあるか見ることができない

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

を、誰かが私を助けることができますコンパイルすると、プログラムがこのエラーを返しますか? RemoteHookingクラスの注入するメソッドのドキュメントで

+2

最初のチャンスの例外はあまり意味がありません。 F5キーを押します。それは実際には未処理の例外に爆弾か? –

+0

いいえ、私はプログラムを実行すると、Webブラウザはうまく動作しますが、私は何もフックできません。 – kaharas

答えて

1

それは言う:

それは技術的には、現在のプロセスにデバッグ目的のためにライブラリを注入することが可能であるとしても、それは例外がスローされます。これは、現在のプロセスが破損するかどうかは、注入されたライブラリに大きく依存するためです。間違ったAPIをフックすると、あらゆる種類の通信がデッドロックに陥る可能性があります。 Visual Studioの機能を使用して複数のプロセスを同時にデバッグするだけで、ライブラリーを現状のプロセスに注入するかのように副作用を起こさずにデバッグできます。

これは仕様によるものと思われます。プロジェクトを2つのアプリケーションに分割するか、シェルまたはスレッドを使用して、現在のプロセス外のインスタンス(少なくとも)を起動する必要があります。

関連する問題