在第五章加载内核时,读盘的函数 read_disk_m_32 ,小弟在学习大佬代码的时候发现在调用返回时 call read_disk_m_32 压入的返回地址老是被覆盖为 0x0000!造成 ret 指令回跳错误 最后发现是调用时用 ebx 存着目标缓冲区地址,但 .go_on_head 的还是用了 bx,所以 32 位的 ebx 被丢弃了高 16 位,在 cx 循环时刚好[bx] 覆盖了栈对应的内存区域