注入错误EEFileLoadException * __ptr64

时间:2013-01-25 15:24:36

标签: c# c++ code-injection fileloadexception

以下项目: AssemblyA.dll(包含核心元素) AssemblyB.dll(注入) app.exe(启动注入的GUI)

我启动应用程序,搜索特定的运行进程(用于测试简单的wpf应用程序)。启动这些应用程序后,我会开始我的dll注入。为此,我循环遍历每个进程。找到一个搜索后,我开始注射我的组件。到目前为止一切正常。 当它被注入时,我通过

发送消息
::SendMessage((HWND)handle.ToPointer(), MESSAGE, (WPARAM)assemblyPath, 0);

path参数包含有关我的AssemblyB(程序集名称,类型名称,方法名称)的信息,message参数仅包含“invoke”,以检查应该执行的操作程序。

最后,我将通过

开始一个特定的方法
methodInfo->Invoke(nullptr, nullptr);

但是这个调用不起作用,导致我的目标程序集引用assemblyA.dll,并且我得到以下异常:

  EEFileLoadException * __ptr64 at position 0x00309940..
  [...]  [rethrow] at position 0x00000000..
  

检测到“path \ WpfApplication1.exe”中非托管调试“BindingFailure”的助手。   装配名称:“AssemblyA”不能加载到“匿名”绑定上下文中   ID为1的AppDomain错误:   System.IO.FileNotFoundException:file或Assembly“AssemblyA,   Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null“或找不到依赖项。

所以我认为,WpfApplication需要引用我的AssemblyA,因为如果我将副本放入Applications执行路径,它就可以正常工作。 是否有可能在构建它时将assemblyA“存储”到AssemblyB中?或者是另一个错误?我应该改变什么?

0 个答案:

没有答案