全站数据
8 4 2 0 5 8 1

api劫持是什么

我妈是药师 | 简单学习,快乐成才!         
问题更新日期:2024-10-13 12:03:33

问题描述

api劫持是什么,麻烦给回复
精选答案
最佳答案

api劫持就是如果A程序调用了B.cll里面的C函数。

我们可以做到当A调用C函数执行的时候,直接执行我们自己事先准备好的函数,之后我们在执行真正的C。

当然我们可以不执行C或者更改C的参数等等,实现的核心思路就是:mov eax, pNewAddr[/size][size=3] jmp eax。

具体原理:

我们首先获取要劫持函数的地址,然后我们在自己组装一个数据结构,数据结构的内容是执行汇编:

把新函数地址拷到寄存器里,然后再jmp到新函数地址位置执行新函数,然后我们把自己组装这个数据结构拷贝到之前获取的需要劫持的函数地址指向的内存的位置。

这样当我们再次调用该函数的时候,程序走到函数地址处发现是执行我们刚刚写好的汇编命令,直接jmp到了我们自己定义的函数地址的位置,也就相当于直接运行了我们自己写好的函数地址了。

当然自己写的函数必须要和原函数参数和返回值一样,自己写的函数里面也可以调用原函数(达到过滤的目的)。

但是前提是调用之前要先关闭劫持,也就是把我们替换的内容给人家替换回去,执行完之后再次替换我们的地址。

如果不替换回去我们就会进入无限递归了这个不解释,当然我们也可以修改参数什么的,给调用者进行一个“加工”。