- 博客(8)
- 收藏
- 关注
原创 网桥驱动与二层数据转发
监听IGMP协议包,形成组播成员关系表。判断skb协议是否为8021Q 8021AD,若是vlan包,则调用skb_vlan_untag()函数,该函数读出数据流中的vlan_id,并填写入skb->vlan_tci中,然后删除vlan_head,从而实现对上层的透明。将vlan信息存在skb字段后,调用lan_do_receive,该函数由skb->vlan_tci得到该skb包所要发往的vlan_dev,并且重定向skb->dev为该vlan_dev,最后消除skb中的vlan_tci标志。
2023-08-10 14:30:48
543
1
原创 如何用ptrace拦截系统调用并替换为自定义代码
如何用ptrace拦截系统调用并替换为自定义代码tracer能够改变系统调用参数,改变系统调用的返回值,甚至屏蔽特定的系统调用,将特定系统调用替换为自定义的helloworld函数。ptrace系统调用的拦截替换原理为:利用ptrace函数使父进程跟踪子进程,当子进程在执行系统调用时,断住子进程,获取并保存当前系统调用的寄存器信息。然后备份ip寄存器指向的指令块A,替换为我们要执行的code指令块B,B执行后ip地址值恢复为指令块A及寄存器内容。下面用例子实现上面的系统调用拦截替换功能。首先我们的目标
2021-11-19 17:20:48
907
原创 交叉编译 出现-sh: a.out not found的问题
在host机上编译了一个简单的helloworld,然后将生成的a.out文件放到target端,执行报错-sh: a.out not foundhost端编译使用的默认工具链:x86_64-linux-gnu-gcc。使用静态编译,可以执行。ldd查看a.out发现于是我把后两个库复制到文件系统下的/lib中(第一个网上搜了一下说vdso是虚拟链接库,所以不知道该怎么处理),执行,仍然不行,报not found的错。这个问题,大家有好的主意吗?...
2021-09-08 17:26:53
569
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人