从虚拟化前端Bug学习分析Kernel Dump( 八 )
打印出的信息并结合之前的分析 , 可以知道:1. virtqueue_add 的前五个参数分别是 struct virtqueue、struct scatterlist、 unsigned int、 unsigned int、 unsigned int 类型的 , 对应的是 RDI RSI RDX RCX R8 这五个寄存器的值 。 2. 触发 bug 的语句是第 278 行的 BUG_ON(total_sg > vq->vring.num);
通过 struct virtqueue ffff917c6c67d000
可以解析出第一个参数的结构:
回到刚刚我们讨论的 %eax 和 [%rdi + 0x38
, [%rdi + 0x38
实际上就是 virtqueue 中偏移量为 0x38 的值 , 通过 struct -o virtqueue
可以打印出 virtqueue 各成员的偏移:
这里又出现了一个问题 , 0x38 是十进制的 56 , 而这个结构体的大小总共只有 56 个字节 , 难道是“溢出”了?仔细阅读代码后发现 , 代码里有一句 struct vring_virtqueue *vq = to_vvq(_vq);
, to_vvq 是一个宏 , 定义如下 #define to_vvq(_vq) container_of(_vq struct vring_virtqueue vq)
推荐阅读
- 仙剑2|经典游戏《仙剑2》苏媚的梦蛇才是最大BUG,效果叠加一招带走千叶
- 女孩|第五人格:小女孩堪称“BUG女王”,用她对战,你千万要小心!
- 炉石传说|炉石天梯平衡补丁曝光,任务法锁喉贼惨遭大削,BUG德无了!
- 精灵宝可梦|《宝可梦BDSP》偷跑,玩家发现游戏存在大量bug
- 谛听|梦幻西游:又出新BUG了,同一个角色能在两个客户端上同时登陆
- 集合啦动物之森|《集合啦动物之森》新增9千多个物品! DLC有BUG
- 炉石传说|玩游戏还是玩Bug?炉石新版本更出一堆BUG,玩家:暴雪毁灭吧!
- 炉石传说|炉石传说标准战士胜率第一,天梯开始硬碰硬,而bug是永恒的主题
- 磨刀石|魔兽怀旧服:美服盗贼新技巧!磨刀石BUG常驻300攻强,别上毒药了
- 李延年|米哈游进军Steam第一枪哑火!蓝屏、限服加BUG,崩坏3好评率仅13%