Внедрение DLL, которая запускает .NET runtime повреждает clr.dll - PullRequest
0 голосов
/ 07 июля 2011

Я пытался загрузить среду выполнения .NET, используя некоторый код из MSDN Community Goodies и мой собственный код для инъекции C ++. Я ввожу C ++ DLL, которая вызывает код загрузки .NET из MSDN. Оба эти компонента (DLL-инъекция и .NET-загрузка) прекрасно работают по отдельности. Однако, когда я их соединяю, я не могу возобновить удаленный процесс впоследствии. Просмотр событий показывает, что clr.dll является «неисправным модулем». Смещение ошибки всегда 0x001acfa2, а код исключения - 0xc0000005. Мой метод внедрения C ++ - это метод codecave.

Есть ли у кого-нибудь идеи о том, почему происходит сбой удаленного процесса? Удаленный процесс был написан на C #, FYI (следовательно, clr.dll поврежден = сбой).

Process Explorer сообщает, что clr.dll не загружается при первом создании целевого удаленного процесса. Я могу загрузить clr.dll и запустить код C # нормально. Затем, когда я выхожу и пытаюсь возобновить, я заметил, что clr.dll все еще загружен.

...