API拦截技术总结

本文深入介绍了API拦截技术的原理及实现方法,包括直接在内存中覆盖代码进行拦截和通过修改模块导入段两种主要方式,并提供了具体实施步骤。

        自接触计算机技术以来,就听到和了解了API Hook的相关知识,但是总是浅尝辄止,深感惭愧。今日痛定思痛,决意走技术流派,努力学习,不求问答于诸侯,但求能养家糊口,聊以自慰。It is never to late to learn.

        API拦截技术,顾名思义,其实就是拦截对某API的调用,拦截后改变程序流程,执行自己的代码,最后回归原调用函数的过程。

        现有手段大致有:

       一、覆盖代码拦截API

        1、内存中定位API地址

        2、将该API函数入口处的数个字节保存

        3、使用跳转指令覆盖API函数入口,指向目标代码段(自己编写的API)

        限制条件:代替函数签名与原函数相同:参数相同、返回值相同、调用约定相同

        4、恢复原来的API入口数据,返回原函数执行

        二、通过修改模块的导入段来拦截API

        一个可执行模块,可加载数个DLL,模块的导入表一般包含DLL基地址、相关API相对于基地址的偏移等。当模块调用一个导入函数的时候,线程会先从模块的导入表中得到相应导入函数的地址,然后再跳转执行。

        因此,拦截API,我们需要修改模块导入段之函数地址。

        使用ReplaceIATEntryInOneMod()即可完成以上功能。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值