2012-04-22 1 views
2

Я использую ключ «запуска» реестра для автоматического выполнения моей программы каждый раз, когда пользователь входит в Windows (с использованием HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Run путь к реестру).
Мое приложение начинается с ввода DLL в explorer.exe с использованием Command Line DLL-Injector.Explorer.exe зашел в тупик при запуске при вводе DLL

Эффект должен быть: Каждый раз после входа пользователя в систему (после перезагрузки Windows) - Мое приложение выполняется, и моя DLL вводится в explorer.exe

В некоторых случаях это работает, но в некоторых случаях (вопрос времени, редко воспроизводится), процессы инжектора и explorer.exe зашли в тупик и не реагируют.
Я не уверен, но я считаю, что это происходит потому, что инжектор пытается внедрить DLL в процесс (и приостанавливать его при этом), в то время как процесс уже загружает другую DLL (поэтому он заблокирован). Таким образом, оба процесса заблокированы ==> тупик.

Я знаю, что тупик достигнут до того, как DLL была фактически введена в процесс.

Кто-нибудь знает, как этого избежать? Может быть, запрос на состояние explorer.exe перед введением в него? Может быть, подождите, пока исследователь будет стабилизирован? Если да - как я могу это сделать?

Благодаря

+8

Инъекция принципиально опасна, так как вы не скоординированы с целью. Лучше всего переделать решение, чтобы оно не требовало инъекции. –

+1

Вероятно, вы найдете его в своем приложении после его запуска. – Deanna

ответ

0

Вы всегда можете избежать использования DLL и избежать подвешиваний целевого процесса перебазирования раздела .reloc вашего исполняемый файла для инъекций.