2011-01-05 3 views
0

Я все еще пытаюсь полностью понять, как подключиться и как работает easyhook. Теперь я написал простой пример: форма, содержащая элемент webbrowser, и я пытаюсь подключить вызовы recv, сделанные из этого. При компиляции, программа возвращает эту ошибку: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 

в строке 46, у меня этот код:

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

Я не могу видеть, где проблема, может кто-нибудь помочь мне?

+2

Первый случай исключений не означает много. Нажмите F5. Действительно ли это бомба на необработанном исключении? –

+0

Нет, когда я запускаю программу, веб-браузер работает отлично, но я ничего не могу зацепить. – kaharas

ответ

1

В документации для метода Inject класса RemoteHooking он говорит:

Даже если это будет технически возможно внедрить библиотеку для отладки в текущий процесс, он будет бросать исключение. Это связано с тем, что он сильно зависит от вашей внедренной библиотеки, будет ли текущий процесс поврежден. Любое общение может привести к взаимоблокировкам, если вы подключите неправильные API. Просто используйте возможность Visual Studio для одновременного отладки нескольких процессов, которые позволят вам отлаживать вашу библиотеку так, как если бы она была введена в текущий процесс без каких-либо побочных эффектов.

Кажется, что это по дизайну. Возможно, вам придется разделить проект на два приложения, или же использовать оболочку или потоки для запуска экземпляров (по крайней мере) вещей вне текущего процесса.

Смежные вопросы