Вот моя задача:- Введите пользовательский управляемый код в выполнение управляемого приложения WPF (т.е. мой код должен работать в другом AppDomain),
- Введенный код должен быть выполнен на потоке UI
Когда я говорю 'лучше всего', что подразумеваю что:
- Инжекционный процесс должен быть максимально стабильным (никакие мертвые блокировки потока, и т.д.)
- Код должен работать на x86 и x64 платформах без проблемы (особенно на Vista x64)
Минимальный пример использования
- выберите выполнение программа WPF
- введите пользовательский код
- введите заголовок изменений кода главного окна целевого процесса для "Кодирования Введенный"
Решения я оцениваю:
1) Инжекция через рычаги окон (как в Ищейке)
профессионалы:
- введенный код работает на потоке UI
недостатки:
- требует смешанный (c ++/cli) внешний dll
- трудно отлаживать
2) Инжекция через библиотеку EasyHook
профессионалы:
- библиотека выглядит солидной и хорошо протестированной
недостатки:
- не нашел способ выполнить код потока UI
- инжекционная библиотека должна быть подписана и установлена в GAC
3) Инжекционная Виа WriteProcessMemory/CreateRemoteThreadEx/LoadLibrary
профессионалы:
недостатки:
- очень нестабильный (код должен быть выполнен в DllMain, требуемый хостинг CLR, и т.д.),
Я собираюсь использовать метод № 1. Можно ли рекомендовать лучший подход?
Есть ли какие-либо достойные методы на основе хостинга CLR в неуправляемом DLLs?
Обратите внимание на то, что я знаю об этих вопросах:
задан Funk 3 April 2018 в 15:38
поделиться