Ошибка внедрения EEFileLoadException * __ptr64

Следующий проект: AssemblyA.dll (содержит основные элементы) AssemblyB.dll (стала внедрена) app.exe (графический интерфейс для запуска инъекции)

Я запускаю свое приложение для поиска конкретного работающего процесса (для тестирования простого wpf-приложения). После запуска этих приложений я бы начал свою инъекцию DLL. Для этого я зацикливаюсь на каждом процессе. Найдя искомый, я начинаю вводить свою сборку. До этого момента все в порядке. Когда он вводится, я отправляю сообщение через

::SendMessage((HWND)handle.ToPointer(), MESSAGE, (WPARAM)assemblyPath, 0);

Параметр path содержит информацию о моем AssemblyB(имя сборки, имя типа, имя метода), параметр сообщения содержит только "invoke", чтобы проверить, какую программу действий следует выполнить.

Наконец, я бы начал конкретный метод через

methodInfo->Invoke(nullptr, nullptr);

Но этот вызов не работает, потому что моя целевая сборка ссылается на assemblyA.dll, и я получаю следующее исключение:

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

Обнаружен помощник для неуправляемой отладки "BindingFailure" в "path\WpfApplication1.exe". Сборка с именем:"AssemblyA" не может быть загружена в "Anonymous"-связывающий контекст AppDomain с идентификатором 1. Ошибка: System.IO.FileNotFoundException: файл или Assembly "AssemblyA, версия =1.0.0.0, Culture= нейтральная, PublicKeyToken=null"или зависимость не найдена.

Поэтому я думаю, что WpfApplication нужна ссылка на мой AssemblyA, потому что, если я помещаю копию в путь выполнения Applications, он работает нормально. Есть ли возможность "сохранить" сборку A в сборке B при ее сборке? Или это другая ошибка? что я должен изменить?

0 ответов

Другие вопросы по тегам