gpt4 book ai didi

.net - 将代码注入(inject)正在运行的 WPF 应用程序的最佳方法

转载 作者:行者123 更新时间:2023-12-04 01:12:07 24 4
gpt4 key购买 nike

这是我的任务:

  • 将自定义托管代码注入(inject)
    运行托管 WPF 应用程序(即我的代码应该在其他 AppDomain 中运行)
  • 注入(inject)的代码必须在 UI 上执行
    线程

  • 当我说“最好”时,我的意思是:
  • 注入(inject)过程必须尽可能稳定
    尽可能(没有线程死锁,
    等)
  • 代码应该在 x86 和 x64 上运行
    平台没有问题(尤其是
    在 Vista x64 上)

  • 最小用例
  • 选择正在运行的 WPF 程序
  • 注入(inject)自定义代码
  • 注入(inject)代码更改主标题
    目标进程窗口到“代码
    注入(inject)”

  • 我正在评估的解决方案:
    1) 通过 windows 钩子(Hook)注入(inject) (如 Snoop )
    优点:
  • 注入(inject)的代码在 UI 线程上运行

  • 缺点:
  • 需要混合 (c++/cli) 外部 dll
  • 难以调试

  • 2) 通过 EasyHook 注入(inject)图书馆
    优点:
  • 库看起来可靠且经过充分测试

  • 缺点:
  • 没有找到在 UI 上运行代码的方法
    线程
  • 注入(inject)库必须签名并且
    安装在广汽

  • 3) 通过 WriteProcessMemory/CreateRemoteThreadEx/LoadLibrary 注入(inject)
    优点:
  • 简单

  • 缺点:
  • 非常不稳定(必须执行代码
    在 DllMain 中,需要 CLR 托管,
    等)

  • 我将使用方法#1。你能推荐一个更好的方法吗?
    是否有任何基于 CLR 托管在非托管 DLL 中的体面技术?
    请注意,我知道这些问题:
  • Code Injection With C#
  • Can I inject a thread in a remote appdomain from C#
  • 最佳答案

    在我的旧项目中,我使用的是 CECIL(为单声道完成),它允许我在任何代码中注入(inject)性能跟踪代码。示例太大,无法在此处粘贴,但请查看项目 ReflectionStudio尤其是 this injector class - 。始终可在 mono/cecil web site 上获得- 唯一要做的就是处理您对主 UI 线程的请求。

    关于.net - 将代码注入(inject)正在运行的 WPF 应用程序的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/477441/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com