劫持系统调用

HOOK(劫持) API的思路就是修改原API的入口,使其跳转到我们的假API入口,

然后执行我们的假API函数,为什么说是假API函数呢?

因为我们的假API,除了函数名称和真实API的名称不一样之外,其它都是相同的,即

它们的函数参数和返回值和调用形式都是一样的。

下面举例说明如何hook系统调用或者c语言中的库函数。

#include <stdlib.h>
#include <stdio.h>

void *malloc(size_t size)
{
    printf("hooked malloc \n");
    return NULL;
}

int main()
{
    malloc(1);
    return 0;
}
以上代码hook了malloc函数,执行的实际上是我们自定义的函数。用nm命令可以看到malloc函数是自定义函数。

nm ./a.out | grep malloc
00000000004004e4 T malloc

如果是glibc的库函数,则会在函数后有glic字样。

nm a.out | grep malloc
                 U malloc@@GLIBC_2.2.5

为什么可以hook库函数呢?因为程序在运行时是动态加载库函数的,malloc在动态库中,所以在查找malloc函数,找到我们自定义的函数后,就会忽略glibc的库函数,最后执行的是自定义函数。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值