by fanxiushu 2023-03-21 转载或引用请注明原始作者,
接上文,
这篇文章其实主要就是讲述上文中 Int13HookEntry 这个C函数的实现过程,
看起来就一个函数,可实现起来一点也不轻松。
首先得准备编译环境,因为是16位程序,所以得去找以前那种比较老的编译器,比如turboC,
当然,如果在linux下找到合适的16位编译环境,也是可以的。
传统BIOS的引导程序并不是windows的一部分,它可以在其他任何能支持16位交叉编译的操作系统上编译。
从上文的asm汇编代码片段,在调用 Int13HookEntry 函数之前,压栈了一堆的寄存器,ax,bx。。。cs,ds等等。
而在C代码中,总归是需要换算成对应的结构体,
如下,就是上文汇编代码压栈对应的结构体描述:
///INT13 的入口参数
struct int13_e