【发布时间】:2009-01-25 09:47:19
【问题描述】:
这是我的任务:
- 将自定义托管代码注入 运行托管 WPF 应用程序(即我的代码应该在其他 AppDomain 中运行)
- 注入的代码必须在 UI 上执行 线程
当我说“最好”时,我的意思是:
- 注入过程必须稳定 尽可能(没有线程死锁, 等)
- 代码应在 x86 和 x64 上运行 平台没有问题(尤其是 在 Vista x64 上)
最小用例
- 选择正在运行的 WPF 程序
- 注入自定义代码
- 注入代码更改主标题 目标进程窗口到“代码 注入”
我正在评估的解决方案:
1) 通过 windows 钩子注入(如Snoop)
优点:
- 注入的代码在 UI 线程上运行
缺点:
- 需要混合 (c++/cli) 外部 dll
- 难以调试
2) 通过EasyHook库注入
优点:
- 库看起来很可靠且经过充分测试
缺点:
- 没有找到在 UI 上运行代码的方法 线程
- 注入库必须经过签名并且 安装在 GAC 中
3) 通过 WriteProcessMemory/CreateRemoteThreadEx/LoadLibrary 注入
优点:
- 简单
缺点:
- 非常不稳定(代码必须执行 在 DllMain 中,需要 CLR 托管, 等)
我将使用方法#1。你能推荐一个更好的方法吗?
是否有任何基于 CLR 托管在非托管 DLL 中的体面技术?
请注意,我知道这些问题:
【问题讨论】:
-
这是怎么回事? Option 有什么缺点吗?
标签: .net wpf code-injection