首页
社区
课程
招聘
[原创]X86内核笔记_0_配置双机调试环境
发表于: 2021-6-3 14:45 15395

[原创]X86内核笔记_0_配置双机调试环境

2021-6-3 14:45
15395

当我们调试用户层程序时,调试器会将线程挂起,此时目标程序处于一种“卡死”的状态。

若目标是操作系统,那么被挂起的将是整个操作系统。Windows为了可以与调试器交互,设计了一个调试子系统。在调试时,除了调试子系统以外的所有线程全部被挂起,仅剩调试子系统仍可运行。用来与调试器进行信息交互。

信息交互需要通道,操作系统被挂起,声卡网卡等设备无法使用。但可以通过串口来向外发送数据。

调试器通过串口与调试子系统建立连接来进行信息交互。

image-20210330131637315

WDK_7600.iso:79dK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6U0L8r3!0#2k6q4)9J5k6e0p5^5z5g2)9J5k6h3y4F1i4K6u0r3N6q4)9J5c8X3W2q4y4@1k6K9k6V1W2n7b7U0y4y4K9R3`.`. (访问码:y20m)

VirtualKD-Redux:b5cK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6U0L8r3!0#2k6q4)9J5k6e0p5^5z5g2)9J5k6h3y4F1i4K6u0r3N6q4)9J5c8V1&6d9d9Y4k6y4L8Y4q4&6h3g2j5%4N6R3`.`. (访问码:1thh)

XP符号包:d67K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6U0L8r3!0#2k6q4)9J5k6e0p5^5z5g2)9J5k6h3y4F1i4K6u0r3N6q4)9J5c8U0y4k6f1U0y4g2x3#2q4v1k6V1W2T1P5b7`.`. (访问码:yz0m)

XP纯净镜像:728K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6U0L8r3!0#2k6q4)9J5k6e0p5^5z5g2)9J5k6h3y4F1i4K6u0r3N6q4)9J5c8X3k6E0x3Y4W2E0L8e0u0W2b7f1&6F1j5b7`.`. (访问码:hgr8)

XP系统激活码:HTXH6-2JJC4-CDB6C-X38B4-C3GF3

这里使用XP作为目标系统来学习内核。因此我安装了一个XP的镜像。推荐安装itellyou上的XP镜像

之前随便找了一个XP镜像,结果符号包解析不了,又重新安装了一个itellyou的镜像。

开机后进入C盘根目录,有一个boot.ini文件,这是个隐藏文件,记得去控制面板里设置显示隐藏

image-20210402150203880

打开ini文件,加入下面这一行:

image-20210402150258673

然后就可以关机了,镜像就配置完了

为镜像添加一个串口

image-20210402150620232

设置为使用命名的管道该端是服务器另一端是应用程序,管道命名填写:

image-20210402150750148

然后点击确定。

windbg的安装使用WDK_7600.ISO来安装WDK,这样就会附带windbg。不要自己装windbg,否则可能出现一些错误。

双击ISO文件,等待DVD驱动器挂载成功后,管理员运行KitSetup.exe,然后一直下一步。

image-20210402151847737

安装完成后,找到WDK的安装目录(安装的时候会让你选),Debugger目录下就是windbg的组件,将windbg.exe发送到桌面快捷方式。

image-20210402152127812

双击运行windowsxp-kb936929-sp3-x86-symbols-full-enu.exe,什么都不要改,直接下一步等待安装成功。然后你的C:\Windows会多出一个Symbols文件夹,结构如下图,如果不对那就重新安装。这步绝对不能出错。

image-20210402152343078

右键windbg.exe - 快捷方式,点击属性,在目标那里后面加一段话(记得-b前面有个空格别忘记加):

image-20210402152532054

右键此电脑->属性->高级系统设置->环境变量,在Path里新建一条记录,内容为WDK安装路径下的debugger文件夹

image-20210402152859496

在上面的用户变量处新建一个记录,变量名和变量值直接复制下面的,一定不能错,不然后面windbg命令用不了。

image-20210402153056391

都弄完后点击确定,保存退出。

XP开机后选择DEBUG系统,按回车进入。

image-20210402153227748

然后双击windbg - 快捷方式,等待windbg连接串口。

如果出现nt!RtlpBreakWithStatusInstruction:那就是配置没问题了。如果出现的是BreakWithPoint那就说明你的符号包配置的有问题。

image-20210402153334506

输入!process 0 0查看进程,如果可以成功查看,那么双机调试就已经完美配置成功了。如果不可以,那就还是符号包配置有问题。

image-20210402153645842

此处以win7x86演示

WIN7-X86-SP1镜像:24aK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6U0L8r3!0#2k6q4)9J5k6e0p5^5z5g2)9J5k6h3y4F1i4K6u0r3N6q4)9J5c8X3V1$3j5X3g2k6k6Y4u0u0d9X3&6S2P5b7`.`. (访问码:0xyt)

VisualStudio2008(镜像内安装):fd1K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6U0L8r3!0#2k6q4)9J5k6e0p5^5z5g2)9J5k6h3y4F1i4K6u0r3N6q4)9J5c8U0u0S2k6i4W2#2P5f1g2K9j5Y4g2q4K9R3`.`. (访问码:e34z)

WDK_1803:b36K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6U0L8r3!0#2k6q4)9J5k6e0p5^5z5g2)9J5k6h3y4F1i4K6u0r3N6q4)9J5c8V1#2n7N6X3#2#2j5h3k6k6e0V1&6*7k6b7`.`. (访问码:kmd0)

VisualStudio2017_1803(实体机安装):3beK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6U0L8r3!0#2k6q4)9J5k6e0p5^5z5g2)9J5k6h3y4F1i4K6u0r3N6q4)9J5c8V1q4B7y4X3&6A6k6g2q4T1j5g2g2J5N6b7`.`. (访问码:4ocr)

在XP系统中我们在C盘目录下修改了boot.ini文件即可开启调试模式。但在win7及以后的版本中,windows为我们提供了一个可视化工具来配置引导模式。

以管理员身份运行cmd,可以搜索cmd,然后右键以管理员运行。image-20210603105700789

在CMD中输入bcdedit /copy {current} /d debug来添加名为debug的引导模式,回车执行后记下ID。我这里的ID是e7fee4cf-c3b4-11eb-9a3d-82405acb2d2e,后面的命令要用到这个ID。image-20210603105850449

执行bcdedit /displayorder {e7fee4cf-c3b4-11eb-9a3d-82405acb2d2e} /addlast让新加的模式显示出来。image-20210603110029839

执行bcdedit /dbgsettings SERIAL DEBUGPORT:1 BAUDRATE:115200设置调试端口及波特率。

image-20210603140354490

执行bcdedit /bootdebug {e7fee4cf-c3b4-11eb-9a3d-82405acb2d2e} ON启用该模式

image-20210603110254776

执行bcdedit /debug {e7fee4cf-c3b4-11eb-9a3d-82405acb2d2e} ON启用该模式

image-20210603110330004

执行bcdedit /timeout 30设置选择引导模式时的超时时间。写30就够了。

image-20210603110410441

重启虚拟机镜像,一定要点虚拟机内的重启,否则设置不会被更新,

image-20210603110459596

添加成功后在开机时会看到多出来的debug选项

image-20210603110547820

如图添加一个串行端口,如果有的话就不用填加了。

image-20210603144255491

点击新添加的串行端口,设置一下管道名//./pipe/com_1,点击确定保存。

image-20210603140953324

如果你的镜像里面有个打印机,记得删除,否则会占用com1串口。

image-20210603141046867

我们这里使用VS2017专业版+WDK1803。

VS需要安装的组件如下图所示,路径按自己喜好即可。:

image-20210603113126447

WDK安装时建议一路默认。

在WinDbg快捷方式的目标选项中追加-y SRV*C:\symbol*e6dK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3#2K6k6r3I4Q4x3X3g2E0K9h3y4J5L8%4y4G2k6Y4c8Q4x3X3g2U0L8$3#2Q4x3V1k6V1L8%4N6F1L8r3!0S2k6q4)9J5c8Y4y4&6L8h3u0G2L8s2x3`. -b -k com:port=//./pipe/com_1,baud=115200,pipe

image-20210603141131658

增加名为_NT_SYMBOL_PATH的变量,值为SRV*C:\symbol* 4e5K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6E0M7$3c8D9i4K6u0W2L8h3W2U0M7X3!0K6L8$3k6@1i4K6u0W2j5$3!0E0i4K6u0r3k6r3!0%4L8X3I4G2j5h3c8Q4x3V1k6K6P5h3#2T1L8$3I4K6

image-20210603134806180

选择Debug系统,管理员运行windbg,如下图断下就说明双机调试已经配置成功了。

image-20210603141520390

接下来windbg输入lm验证符号配置,如下图则说明符号配置成功

image-20210603141837381

输入ld *可以强制加载所有符号,包括目前暂未使用的符号也会被事先加载。第一次加载时需要从网络上下载符号文件,因此会加载的慢一点,耐心等待全部加载完毕即可。

image-20210603143027117

 

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

最后于 2021-6-3 14:51 被SSH山水画编辑 ,原因:
收藏
免费 16
支持
分享
最新回复 (4)
雪    币: 64
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
可以搭建成功,但是xp尽管用了激活工具,每个月还是会提示激活失败,要重新安装,有什么解决方法吗
2021-9-12 09:15
0
雪    币: 1223
活跃值: (14987)
能力值: ( LV12,RANK:380 )
在线值:
发帖
回帖
粉丝
3
wx_清茶染烟月 可以搭建成功,但是xp尽管用了激活工具,每个月还是会提示激活失败,要重新安装,有什么解决方法吗
打快照
2021-9-12 09:25
0
雪    币: 228
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
想询问一下,进入debug模式后,当windbg开始内核调试(没打开windbg是正常被中断),系统就自己跑起来了,没有遇到断点,是windbg设置有问题吗
2021-11-6 17:58
0
雪    币: 5162
活跃值: (4123)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
不错
2022-9-11 08:01
0
游客
登录 | 注册 方可回帖
返回