0. 简介
GDK7和NanoCode是由格蠹汇编及软件调试的作者张银奎老师研发的一款高端调试套件,本人趁着现在GDK7搞暑期活动入手了一台(价格为2980元+额外附赠的礼品),并记录了一下配置GDK7的过程,以供大家参考。
配置GDK7的过程相对容易,主要是因为GDK7已经是一台直接可使用的主机,大幅度的减少了在配置过程中所消耗的时间,并且在配置完GDK7之后我还尝试调了一下Linux内核,感觉还不错。
同样希望GDK7可以给我带来调试及逆向水平上的提高~~~~
详细的GDK7配置过程可以在后面的章节及附件中看到。
1. GDK7和Nano Code的简单介绍
1.1 GDK7的简单介绍
GDK7是一款针对英特尔架构开发的高端调试套件,为使用英特尔架构的技术人员解决英特尔平台上出现的各种技术问题;GDK7不仅包含了用于建立JTAG/DCI调试会话的连接设施,还为底层调试和调优需求提供了一种高效便捷的新方案;同时GDK7也是一台可以直接使用的主机,大幅度的减少了准备调试环境所需的时间,省去各种因为软件和硬件不兼容所带来的烦恼。
主要功能的简单介绍
1. 调试固件、调试操作系统的启动加载程序、调试操作系统的内核代码、调试驱动程序、调试具有反调试功能的软件等。
2. 通过英特尔CPU的处理器追踪功能采集CPU的事件。
3. 通过调试会话实现调试主机与目标主机之间的内存转储与加载。
4. 观察CPU和芯片组的硬件结构和逻辑结构。
5. 通过Nano Code/DAL工具的Python扩展包进行高级调试和调优的任务。
6. 开发定制的调试和调优工具。
GDK7更为详细的主要功能说明见链接:http://advdbg.org/gdk/features.aspx。
配置情况的简单介绍
1. 硬件配置:主要硬件配置的说明见图1.1。
图1.1 主要硬件配置说明
2. 软件配置:操作系统:Ubuntu-18.04-64位/Windows专业版-未激活、Nano Debugger内核调试引擎。
3. 外部接口:前、后面板的外部接口图片见图1.2和图1.3。
图1.2 前面板的外部接口
图1.3 后面板的外部接口
4. 内部接口:SATA硬盘接口、许多的串口。
GDK7更为详细的系统配置说明见链接:http://advdbg.org/gdk/bom.aspx。
1.2 Nano Code的简单介绍
Nano Code是一款基于Visual Studio Code二次开发的调试工具,调试指令兼容WinDBG。
功能的简单介绍
1. Nano调试:支持JTAG调试、内核调试、无源代码调试、跨模块调试等场景。
2. Nano提问:可提出问题,等待他人的解答。
3. Nano阅读:可购买格蠹出版的电子书籍。
4. Nano视频:可购买格蠹录制的视频课程。
5. Nano直播:可报名格蠹举办的直播课程或直播。
6. 格友货栈:可购买格蠹的周边商品。
2. GDK7调试原理的简单说明
GDK7基于英特尔Skylake微架构引入的SVT(Silicon View Technology)技术研发,通过一条定制的USB 3.0电缆把调试目标和主机连接起来,二者通过DCI(Direct Connect Interface)协议通信,电缆两端只要插在USB 3.0端口即可;不需要打开机箱,也不需要专用的ITP硬件就可以实现JTAG调试和系统追踪,调试主机与GDK7的连接示例见图2.1。
图2.1 调试主机与GDK7的连接示例
3. 配置前的准备工作
3.1 准备设备
1. 准备一台GDK7(GDK7即目标主机)。
2. 准备一根USB3.0专用电缆(GDK7套件中的蓝色USB3.0电缆)。
3. 准备一台调试主机(推荐使用64位Windows10操作系统的主机)。
3.2 准备GDK7
1. USB3.0专用电缆与GDK7及调试主机连接时所对应的接口说明。
调试主机端必须使用USB3.0接口与电缆连接;具体接口位置没有要求。
GDK7必须使用后面板中两个蓝色USB3.0接口的其中一个与电缆连接;蓝色USB3.0接口的位置见图3.1,图中用红色标出的部分即两个蓝色USB3.0接口的位置。
图3.1 GDK7后面板中两个蓝色USB3.0接口的位置
2. 给GDK7连接显示器、键盘及鼠标等其他设备,并插上电源。
3.3 准备调试主机
1. 下载并安装WinDBG调试器;通过下方链接进入WinDBG调试器的下载页面。
https://docs.microsoft.com/zh-cn/windows-hardware/drivers/debugger/debugger-download-tools
2. 参照fast_dci文档安装DCI的USB驱动及配置文件;注意第6步中的文件路径,所需文件源于前几步中的解压文件,因此路径也随解压文件的相应位置而来设定,故路径不应照搬原文(fast_dci文档中DCI的USB驱动及配置文件的说明见附录的4)。
4. 配置过程
4.1 配置GDK7的过程
1. 按下GDK7前面板的开机按钮;开机按钮的位置见图4.1,图中用红色标出的部位即开机按钮的位置;开机后选择Ubuntu/Windows操作系统,进入桌面。
图4.1 开机按钮的位置
4.2 配置调试主机的过程
1. 开机并选择Windows操作系统,进入桌面后右键左下角的 [微软图标] 后,点击设备管理器,打开设备管理器。
2. 下载并安装Nano Code;通过下方链接进入Nano Code的下载页面。
https://www.nanocode.cn/#/download
3. 登录Nano Code。
首次使用Nano Code的用户可选择的注册途径有:
Nano Code:打开Nano Code=>点击 [登录] =>点击 [注册] =>输入所要求填写的信息并同意《用户协议》=>点击 [注册] =>完成注册=>可登录Nano Code。
微信:微信小程序内搜索盛格塾=>进入盛格塾小程序=>点击 [我的] =>点击 [注册/登录] =>点击 [授权微信一键登录] =>点击 [创建新账号] =>输入所要求填写的信息=>点击 [绑定登录] =>完成注册=>可登录Nano Code。
4. 正常情况下可不用理会第4步,若一直未成功与GDK7取得连接,才应考虑第4步=>应保证调试主机BIOS面板内DCI相关选项全部处于关闭状态(即Disable状态);一般情况下的主机BIOS面板中的DCI相关选项默认处于关闭状态,GDK7的BIOS面板中DCI的相关选项默认处于开启状态。
4.3 确认调试主机与GDK7成功连接
1. 确保调试主机和GDK7处于开机状态。
2. 应注意到应用程序OpenIPC_x64.exe是否在调试主机机上运行,与调试主机有没有办法检测到DCI设备没有任何的关系;即使应用程序OpenIPC_x64.exe没有运行,也可以检查到DCI设备;能否检测到DCI设备取决于调试主机中DCI的USB驱动dcidrc.msi是否已经成功安装。
3. 调试主机端打开设备管理器(右键左下角 [微软图标] ,点击设备管理器),查看是否有DCI设备/未知设备。
图4.2 出现DCI设备
若没有出现DCI设备则代表调试主机与GDK7可能连接失败,可按以下顺序尝试解决。
(1) 尝试查看设备管理器中的通用串行总线控制器下是否有未知设备,禁用未知设备后再重新启用查看DCI设备是否出现;若有,则连接成功;若无,则见(2)。
(2) 尝试插拔USB3.0专用电缆及其他USB设备,看是否出现新设备;若出现DCI设备,则连接成功;若出现未知设备,则重复(1);若无,则见(3)。
(3) 禁用设备管理器中的通用串行总线控制器下USB3.0主控制器,然后在再启用USB3.0主控制器(可通过ALT+A=>A刷新设备管理器);若出现DCI设备,则连接成功;若出现未知设备,则重复(1);若无,则连接失败,检查DCI驱动是否已经安装好。
(4) 若实在是很肯定DCI驱动已经安装好,但仍无DCI设备出现,则应考虑4.2中的第4步;或不断插拔USB3.0专用电缆及其他USB设备直至DCI设备出现。
5. 中断GDK7(调试主机端操作)
只要使用DCI Exdi启动调试会话,就会导致调试会话直接介绍,详细情况见图5.1;NanoCode设置IPCAPI的路径时选择ExdiIpc.dll文件依然无效,暂不知道原因,因此暂时只能选择DCI Open启动调试会话。
图5.1 使用DCI Exdi启动调试会话导致调试会话直接结束
使用DCI Open启动调试会话的详细情况见5.1和5.2。
报错:Unable to perform operation because there are no GPC threads in this domain
(1) 重启Nano Code。
(2) 重启调试主机和GDK7。
(3) 关闭调试主机和GDK7并拔下电源,在等待一段时间后,插上电源再开机。
5.1 中断Ubuntu系统的GDK7
1. 第一次调试时Nano Code会下载调试符号,注意需要保证网络的畅通,等待下载完成。
2. 打开Nano Code并登录=>打开Nano调试并点击左侧栏中的 [糖果](鼠标放上去会提示Nano Debgguer)=>点击 [内核调试] =》点击 [USB3] => 点击[DCI Open] =>点击 [Reconnect] 、[Linux Kernel] 、 [Memory Shadow] => 点击[启动] ;Linux内核调试时应选择的选项详见图5.2。
图5.2 Linux内核调试时应选择的选项
3. 等待 [暂停](鼠标放在上去会提示中断 F6)从灰色变成其他颜色,然后点击;当出现图5.3的画面时代表GDK7已经成功的被断开,此时GDK7仍然处于开机状态,但键盘鼠标失灵。
图5.3 GDK7成功被断开时调试主机端Nano调试的反应
4. 输入G/按下F5/点击工具栏栏中的 [运行] 使GDK7恢复过来。
5. 成功中断并恢复Ubuntu操作系统的GDK7。
5.2 中断Windows系统的GDK7
1. 重启(仅第一次需要),并打开Nano Code并登录=>打开Nano调试并点击左侧栏中的 [糖果](鼠标放上去会提示Nano Debgguer)=>点击 [内核调试] =》点击 [USB3] => 点击[DCI Open] =>点击 [Reconnect] 、 [Memory Shadow] =>点击[启动] ;Windows内核调试时应选择的选项详见图5.4。
图5.4 Windows内核调试时应选择的选项
2. 等待 [暂停](鼠标放在上面会提示中断 F6);当出现图5.5的画面时代表GDK7已经成功的被断开,此时GDK7仍然处于开机状态,但键盘鼠标失灵。
图5.5 GDK7成功被断开时调试主机端Nano调试的反应
3. 输入G/按下F5/点击工具栏栏中的 [运行] 使GDK7恢复过来。
4. 成功中断并恢复Windows操作系统的GDK7。
参考文献
1. https://www.nanocode.cn/software/gdk7/GDK7-Startup.pdf
2. fast_dci文档 张银奎
3. https://www.intel.cn/content/www/cn/zh/embedded/products/quark/mcu/system-studio-getting-started-guide.html
4. http://advdbg.org/gdk/index.aspx
5. https://www.nanocode.cn/#/gdk7/features
6. https://www.nanocode.cn/#/gdk7/bom
7. https://blog.csdn.net/henly1217/category_10244945.html
8. https://blog.csdn.net/henly1217/article/details/107657070
附录
1. GDK7的官网链接:https://www.nanocode.cn/#/gdk7/index
2. NanoCode的官网链接:https://www.nanocode.cn/#/home
3. [XXX]的说明:代表主机的可视化按钮。
4. DCI的USB驱动及配置文件:DCI的USB驱动为dcidrc.msi;配置文件为exdi.zip、openipc.zip(fast_dci文档和其中所需文件的离线文件见下方百度网盘链接:
链接: https://pan.baidu.com/s/1UdOn7eIG5W-3mN9PphpnWg 提取码: 6hhe 复制这段内容后打开百度网盘手机App,操作更方便哦
补充说明
若您有问题咨询及出现链接失效等其他情况请联系邮箱:birdring_001@outlook.com。
[培训]《安卓高级研修班(网课)》月薪三万计划,掌
握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法
最后于 2021-8-10 16:22
被birdring编辑
,原因: