代码之家  ›  专栏  ›  技术社区  ›  Emerion

Dll注入-它有什么可能?

  •  16
  • Emerion  · 技术社区  · 14 年前

    我最近在浏览互联网时,偶然发现了Dll注入。

    我读过,它可以用来破解/黑客游戏和软件,但它也有可能做一些积极的事情吗?

    如果是的话,它可以用来做什么?

    什么语言支持这一点?

    作为记录,我不会尝试破解/破解任何游戏与知识获得,无意做一些非法的!

    附言:网站/书籍,这方面的主题将不胜感激!

    3 回复  |  直到 14 年前
        1
  •  21
  •   Gilgames    5 年前

    我想到了几个用途:

    • 热修补 :允许您在不关闭进程或重新启动的情况下更新/修补部分代码。微软自己通过在函数前面加上一个5字节的NOP块来确保Windows的大部分是热补丁的。为什么?因为您可以用5个字节将JMP映射到代码的任何其他部分,所以热补丁基本上会用JMP覆盖前缀字节到更新/修补的代码,瞧,您的代码做了一些全新的事情。这通常与DLL注入一起用于将新代码加载到目标进程中,虽然不是强制性的,但这是它的用途之一。

    • :本着同样的精神,迂回代码通常用于为函数添加前缀,以便进行日志记录,即查看调用函数的参数。另外,一些记录DirectX应用程序的屏幕输出的应用程序通过绕过DirectX调用来实现这一点,这同样涉及将DLL注入到监视调用的进程中。

    • 子类别化 SetWindowLongPtr ,限制因素是函数需要驻留在目标进程地址空间中。这就是注入再次出现的地方:在DLL中提供一个新的实现,将其注入目标进程并调用 SetWindowLongPtr

    在过去,我个人必须在常规业务应用程序中处理上述所有用例,从使用热补丁来确保医疗服务中关键通知系统的正常运行时间,到使用迂回/日志来允许专有记录管理(由当时已经死了的软件商店)与成熟的CRM解决方案进行通信实时的。

    一如往常,它只是你盒子里的一个工具,它本身没有什么“邪恶”。不管你用它做什么用途,它都是重要的。

        2
  •  7
  •   slugster Joey Cai    14 年前

    微软在这方面做了一个很好的研究项目,重点是通过dll注入拦截对WinAPI函数的调用。

    这是一个链接,它会让你忙碌一段时间: Detours

        3
  •  3
  •   anthares    14 年前

    在计算机编程中,DLL注入是一种通过强制另一进程加载动态链接库来在另一进程的地址空间中运行代码的技术。[1]第三方开发人员经常使用DLL注入以其作者没有预料到或打算的方式影响程序的行为。例如,注入的代码可能会捕获系统函数调用,或者读取密码文本框的内容,而这不是通常的方法。

    来源和更多信息请点击此处: http://en.wikipedia.org/wiki/DLL_injection