2010-11-25 85 views
0

我想在c#中做一些鉤子(我寧願不使用Detours或C++),所以我一直在使用EasyHook。如何使用Easyhook與非託管可執行文件

http://easyhook.codeplex.com/

但是當我這樣做

Config.Register("This description can be anything.", @"SomePathToAnExecutable.exe", "MyInjectionDll.dll"); 

我得到的錯誤:

There was an error while connecting to target: System.BadImageFormatException: Unable to load given assembly [SomePathToAnExecutable.exe] for reflection.

Is this a valid NET assembly? ---> System.BadImageFormatException: Could not load file or assembly [SomePathToAnExecutable.exe] or one of its dependencies. The module was expected to contain an assembly manifest.

問題1)我是正確的思維是SomePathToAnExecutable是過程,你想勾入?

問題2)可執行文件是否必須被託管代碼呢?

我也問過codeplex項目網站,但沒有迴應。

http://easyhook.codeplex.com/Thread/View.aspx?ThreadId=235616

回答

1

回答1)號Config.Register寄存器管理組件與GAC。因此你註冊了你的代碼中的所有程序集。這包括您要注入的dll以及爲IPCServer提供通用接口的程序集。對於我,它看起來像這一個例子:

 Config.Register("MyHook", 
      Path.Combine(startupPath, "HookManager.dll"), 
      Path.Combine(startupPath, "NetworkIncomingHook.dll"), 
      Path.Combine(startupPath, "NetworkOutgoingHook.dll") 
     ); 

的HookManager.dll包含我用它來創建IPCServer(和所有消息從掛鉤函數發送到)的接口。 NetworkIncomingHook.dll和NetworkOutgoingHook.dll都是我注入我的程序的dll。這由RemoteHooking.Inject完成。

2)不可以。您也可以掛鉤非託管程序集。

+0

你可以請我指向一些簡單的C#示例掛鉤託管程序集到非託管可執行文件的方向嗎? – 2010-12-05 03:06:12

相關問題