调试 vista 启动

发布于 2022-09-23 14:44:12 字数 3686 浏览 7 评论 0

由机器上电到 vista 加载完毕,大致分为 6 大部分:

流程如下:

POST(INT 19h)---> 0x7c00 ---> 0x20000 ---> bootmgr ---> winload ---> nt(kernel)加载完华

第一部分:
  机器上电做自检 POST 后,最后一步工作是调用 INT 19h,进行加载 MBR 到 0x7c00,并转入 0x7c00 执行,Int 19h 是永不返回,Int 19h 加载完 MBR 后,直接跳转到 0x7c00 处执行,它不会返回到 POST 自检代码。

第二部分:
  进入 0x7c00 后,它会自己复制到 0x6000 然后执行,此时它将 Boot Sector 重新加载到 0x7c00,再跳回到 0x7c00 执行,在这个加载过程中,它遍历检查 4 个磁盘分区,遇到第一个可启动分区时,就将这个分区的 Boot Sector 加载到 0x7c00 执行,最后,转入到 0x20000 领域继续执行。

第三部分:
  进入 0x20000 领域,这个领域主要是负责环境的初步建立,开启保护模式,加载更多的模块及驱动程序。此间后进行反复多次的模式转换,即:real mode --> protection mode ---> real mode ....
  再进入 vista 的 boot 管理模块时,已经建立了保护模式,但分页机制尚未开启。
  这个部分的最后工作是转入 bootmgr 的入口函断 bootmgr!BmMain()

第四部分:
  进入 vista 的 bootmgr 模块,此时屏幕上仍旧是黑屏。这个模块经由 bootmgr!BmMain() 入口函数转入。

1、下面是 windbg 在 bootmgr 响应断点时的信息:

Microsoft (R) Windows Debugger Version 6.9.0003.113 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.

Opened \\.\pipe\com_1
Waiting to reconnect...
BD: Boot Debugger Initialized
Connected to Windows Boot Debugger 6000 x86 compatible target, ptr64 FALSE
Kernel Debugger connection established.  (Initial Breakpoint requested)
Symbol search path is: *** Invalid ***
****************************************************************************
* Symbol loading may be unreliable without a symbol search path.           *
* Use .symfix to have the debugger choose a symbol path.                   *
* After setting your symbol path, use .reload to refresh symbol locations. *
****************************************************************************
Executable search path is:
*********************************************************************
* Symbols can not be loaded because symbol path is not initialized. *
*                                                                   *
* The Symbol Path can be set by:                                    *
*   using the _NT_SYMBOL_PATH environment variable.                 *
*   using the -y <symbol_path> argument when starting the debugger. *
*   using .sympath and .sympath+                                    *
*********************************************************************
*** ERROR: Module load completed but symbols could not be loaded for bootmgr
Windows Boot Debugger Kernel Version 6000 UP Free x86 compatible
Primary image base = 0x00400000 Loaded module list = 0x004ffff8
System Uptime: not available
Break instruction exception - code 80000003 (first chance)
bootmgr+0x37ea4:
00437ea4 cc              int     3

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文