Внедрение DLL в целевой процесс VB.NET - PullRequest
2 голосов
/ 22 февраля 2011

Недавно я написал быстрое приложение для VB.NET, которое внедряет DLL в работающий процесс.Чтобы проверить это, я создавал свой собственный проект библиотеки классов vb.net, который просто порождает окно сообщения «Hello World» в надежде, что оно появится в целевом процессе после того, как я внедрил свой HelloWorld.DLL.

Моя проблемаявляется то, что окно сообщения никогда не появляется после того, как я внедряю HelloWorld.DLL.Я уверен, что причина этого в том, что, как только мой HelloWorld.DLL введен (так как это VB.NET DLL), он не имеет DllMain и, следовательно, не знает, что выполнить, и ничего не происходит.

Нужно ли мне делать инъекцию DLL в C ++, чтобы он имел DllMain?Есть ли что-нибудь, что я могу сделать, чтобы обойти?Или я совершенно не прав во всем.

Любое понимание будет с благодарностью.Спасибо.

1 Ответ

3 голосов
/ 22 февраля 2011

Хотя .NET DLL технически является расширением формата PE, именно это расширение делает его принципиально отличным от DLL, которая содержит чистый скомпилированный собственный код.Для запуска .NET-кода (управляемого кода) необходимо выполнить интерпретатор .NET и в контексте контекста AppDomain.

По сути, существует масса вещей, которые .NET будет выполнятьсделать, чтобы этот код был запущен и запущен.

Microsoft (благослови их!) написала и статья с описанием того, что вам нужно сделать здесь http://support.microsoft.com/kb/828736

Другой вариант - не писать на чистом C ++код, но вместо этого, чтобы создать управляемый проект C ++, который будет намного легче заставить их играть хорошо вместе.Кстати, наличие управляемого проекта C ++ не означает, что весь код должен управляться либо AFAIK

...