利用Jtag技术调试Grub的一次尝试

前言

通常而言,调试应用程序是很简单的,调试驱动要复杂的多,而调试BIOS / Boot Loader则要复杂的多。JTag技术由于其独立于OS,拥有更强大的能力。GDK7是基于英特尔Skylake微架构研发的一套调试套件,通过DCI(Direct Connect Interface)协议实现对目标机的高速调试。本文尝试探索利用GDK7套件实现对Grub的调试。

本文用到如下工具:

  • GDK7套件 (GDK7-100)
  • Nano Code v1.0.8
  • Ubuntu上的hexedit
  • PEViewer

本文用到的环境是Ubuntu 19.04 x64,GPT分区,EFI模式boot,boot loader为grub2 64位(v2.04)。

背景

阅读本文需要读者具备Grub2,EFI,GPT等相关背景知识。相关知识很容易搜索到,所以本文不在赘述。

本文所用到的调试对象为GDK7,分区如下:

sda2分区即为EFI 分区,已经被mount到/boot/efi:

/boot/efi/EFI/下有三个文件,bootx64.efi即是bootloader的stage2的主image,也是本文的主目标:

我们现来看看efi文件

文件头两个字节, “MZ”以及0x80位置的“PE”说明这是一个PE32+格式文件。下面我们用PEviewer看一下它的更多信息:

 

准备环境

连接USB线,启动Nano Code

USB线很好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值