加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

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

发布时间:2020-12-14 04:31:35 所属栏目:Windows 来源:网络整理
导读:如何拦截dll方法调用? 可用的技术是什么? 只能在C/C++中完成? 如何拦截来自所有运行进程的方法调用到给定的dll? 如何拦截给定进程的方法调用给给定的dll? 有两种方法可以想到这样做 DLL导入表钩. 为此,您需要解析DLL的PE标题,找到导入表,并写入自己的函
如何拦截dll方法调用?

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读