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

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

2021-6-3 14:45
14835

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

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

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

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

image-20210330131637315

WDK_7600.iso:https://cloud.189.cn/t/iE7FZfIBB3Mj (访问码:y20m)

VirtualKD-Redux:https://cloud.189.cn/t/NRJvMnqyYV7v (访问码:1thh)

XP符号包:https://cloud.189.cn/t/3YR3U3QJfIby (访问码:yz0m)

XP纯净镜像:https://cloud.189.cn/t/fm2ymm2eANna (访问码: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镜像:https://cloud.189.cn/t/i6beYfrIJnay (访问码:0xyt)

VisualStudio2008(镜像内安装):https://cloud.189.cn/t/2aeyuyEZbuEj (访问码:e34z)

WDK_1803:https://cloud.189.cn/t/MBvmuafYNNze (访问码:kmd0)

VisualStudio2017_1803(实体机安装):https://cloud.189.cn/t/Aj6nieQbaUru (访问码: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*http://msdl.microsoft.com/download/symbols -b -k com:port=//./pipe/com_1,baud=115200,pipe

image-20210603141131658

增加名为_NT_SYMBOL_PATH的变量,值为SRV*C:\symbol* https://msdl.microsoft.com/download/symbols

image-20210603134806180

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

image-20210603141520390

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

image-20210603141837381

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

image-20210603143027117

 

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

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