windows – 如何拦截dll方法调用?

前端之家收集整理的这篇文章主要介绍了windows – 如何拦截dll方法调用?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何拦截dll方法调用

>可用的技术是什么?
>只能在C/C++中完成?
>如何拦截来自所有运行进程的方法调用到给定的dll?
>如何拦截给定进程的方法调用给给定的dll?

有两种方法可以想到这样做

> DLL导入表钩.
为此,您需要解析DLL的PE标题,找到导入表,并写入自己的函数的地址,而不是已经在那里编写的地址.您可以保存原始功能的地址,以便稍后调用.这个wikipedia article的外部链接中的引用应该给你所需要的所有信息,以便能够做到这一点.
>直接修改代码.找到要钩住的函数的实际代码,并修改其第一个操作码以跳转到您自己的代码.您需要保存那里的操作码,以便最终执行.这比它听起来更简单,因为它已经以Detours library的形式已经实现了不少于微软本身.
这是一个非常整洁的事情.只需几行代码,您可以从outlook.exe中将所有调用替换为GetSystemMetrics(),并观察发生的奇迹.

一种方法的优点是另一种方法的缺点.第一种方法允许您将一个外科钩子完全添加到您想要的DLL中,其他所有其他DLL都通过未挂钩.第二种方法允许你最全局的钩子拦截所有调用做的功能.

猜你在找的Windows相关文章