Debugging 程序集,从磁盘加载,不带INT13 AH02

Debugging 程序集,从磁盘加载,不带INT13 AH02,debugging,assembly,interrupt,disk,bochs,Debugging,Assembly,Interrupt,Disk,Bochs,我正在用Bochs和IDA Pro调试一个16位引导程序 我正在讨论引导加载程序将de main程序从磁盘加载到内存的点。我已将此代码段本地化到硬盘中,后来又将其本地化到内存中。我的意思是,我知道磁盘上有一段代码,我知道稍后会加载它,因为我看到它是如何运行的 我在内存中搜索INT 13(0xCD13),并在所有这些中断上设置了一个断点。我第一次到达断点是因为Bochs BIOS正在从磁盘加载MBR, 到目前为止一切正常 我再次搜索INT 13,并在新位置设置了新断点。继续执行后,未到达断点,代码

我正在用Bochs和IDA Pro调试一个16位引导程序

我正在讨论引导加载程序将de main程序从磁盘加载到内存的点。我已将此代码段本地化到硬盘中,后来又将其本地化到内存中。我的意思是,我知道磁盘上有一段代码,我知道稍后会加载它,因为我看到它是如何运行的

我在内存中搜索INT 13(0xCD13),并在所有这些中断上设置了一个断点。我第一次到达断点是因为Bochs BIOS正在从磁盘加载MBR, 到目前为止一切正常

我再次搜索INT 13,并在新位置设置了新断点。继续执行后,未到达断点,代码已执行

我在从磁盘加载二进制文件的内存区域中放置了一个写观察点,以了解加载该二进制文件的代码的哪一部分。令人惊讶的是,它是BIOS代码的一个片段(大约是物理内存的0x5B)


我不知道这里发生了什么,谁在加载代码?在哪里?我需要帮助:)

如果它是模糊代码,除了使用实际的
int
指令之外,肯定可以调用int 13处理程序。您应该在回溯中看到调用方,因此请查看调用堆栈。是否有可能使此引导加载程序可供查看?观察。您希望在内存中查找int 0x13,即字节0xcd,0x13。由于0x13cdI无法共享引导加载程序,但Jester是对的,代码是通过友好方式加载的,我无法通过执行设置断点如果引导加载程序中的代码正在使用BIOS,并且让我们说他们没有直接使用
int 13h
,但仍在使用BIOS-为什么不在int 13h处理程序开始的BIOS区域设置断点。通过查看内存中从0x0000:0x0000开始的中断表,可以找到该位置。Int 13h位于0x0000:0x004C(0x4c/4=0x13)。在该地址处是Int 13h向量的偏移量(16位字),之后是段(也是字)。取这些值并在那里设置断点?