Windows作系统学习之——启动引导过程调试.docVIP

Windows作系统学习之——启动引导过程调试.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Windows作系统学习之——启动引导过程调试

Windows操作系统学习之——启动引导过程调试 ?关于Windows的启动引导过程,相信很多大牛都了如指掌,这里只是将自己的学习过程分享,文章中肯定有很多理解的不是很到位的地方,还望各位牛指点。 ? ? ? ? 一、MBR调试 ? ? ? 关于MBR的调试,网上也有好多帖子了,这个帖子也只是把我的学习过程分享出来,如果可以,我会从MBR开始,一步一步的去调试,去学习Windows操作系统,同时也把这个过程分享出来。闲话不多说了,开始进入主题。 ? ? ? 目前用到的工具: ? ? ? 虚拟机:VMware ? ? ? 系统:ReactOS.0.3.15(安装win7 32位或者XP系统也可以用这个方法调试,这里选择ReactOS是为了后面的调试做准备) ? ? ? 调试工具:IDA ? ?首先设置虚拟机。在VMware创建的系统文件夹下找到.vmx文件,用记事本打开,添加如下配置信息 ? ? ?? 代码: debugStub.listen.guest32 = TRUE debugStub.hideBreakpoints = TRUE bios.bootDelay = 3000 ? ? ? ?然后设置IDA。打开IDA,Debugger--Attach--Remote GDB debugger,在弹出的对话框进行如下设置 ? ? ? ? 启动虚拟机后,再点击IDA弹出的对话框的OK按钮,选择第一个进程,点OK,如下图 ? ? ? ? 进入调试窗口后,转到0x7c00处,按F2下断点,然后按F9运行程序,当程序断下来之后,按Alt+s,选择16位编码,这时反汇编可能会变成一堆数据,我们只要将其选中(446个字节),然后按“C”,选择“Force”,将数据强行转换成代码即可。 ? ? ? ? ?接下来就开始我们的调试了,先看下面的代码 代码: MEMORY:7C00 loc_7C00: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ; CODE XREF: MEMORY:loc_7CAEJ MEMORY:7C00 ? ? ? ? ? ? ? ? cli MEMORY:7C01 ? ? ? ? ? ? ? ? cld MEMORY:7C02 ? ? ? ? ? ? ? ? xor ? ? ax, ax MEMORY:7C04 ? ? ? ? ? ? ? ? mov ? ? ss, ax MEMORY:7C06 ? ? ? ? ? ? ? ? mov ? ? ds, ax MEMORY:7C08 ? ? ? ? ? ? ? ? mov ? ? bp, 7C00h MEMORY:7C0B ? ? ? ? ? ? ? ? lea ? ? sp, [bp-20h] MEMORY:7C0E ? ? ? ? ? ? ? ? sti MEMORY:7C0F ? ? ? ? ? ? ? ? mov ? ? ax, 1FE0h MEMORY:7C12 ? ? ? ? ? ? ? ? mov ? ? es, ax MEMORY:7C14 ? ? ? ? ? ? ? ? assume es:nothing MEMORY:7C14 ? ? ? ? ? ? ? ? mov ? ? si, bp MEMORY:7C16 ? ? ? ? ? ? ? ? mov ? ? di, bp MEMORY:7C18 ? ? ? ? ? ? ? ? mov ? ? cx, 100h MEMORY:7C1B ? ? ? ? ? ? ? ? rep movsw ? ? ? ? ? ? ? ; 把MBR移动到1FE0h:7C00h处 MEMORY:7C1D ? ? ? ? ? ? ? ? jmp ? ? far ptr 1FE0h:7C22h ? ? ? 这段代码很简单,就是把MBR拷贝到1FE0h:7C00h处,然后跳转到1FE0h:7C22h继续执行。接下来是在分区表中查找活动分区,看代码 代码: MEMORY:27A22 loc_27A22: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?; CODE XREF: MEMORY:7C1DJ MEMORY:27A22 ? ? ? ? ? ? ? ? mov ? ? ds, ax MEMORY:27A24 ? ? ? ? ? ? ? ? assume ds:MEMORY MEMORY:27A24 ? ? ? ? ? ? ? ? mov ? ? ss, ax MEMORY:27A26 ? ? ? ? ? ? ? ? assume ss:MEMORY MEMORY:27A26 ? ? ? ? ? ? ? ? xor ? ? ax, ax MEMORY:27A28 ? ? ? ? ? ? ? ? mov ?

文档评论(0)

yuerang3062 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档