IDA Pro切换到16bit模式,分析BootLoader

本文详细介绍了如何从BIOS映像中提取BootBlock,并使用UEFITool进行分析。在过程中,作者发现在IDAPro中BootBlock被错误地解析为32位代码,而非预期的16位。通过手动调整IDAPro的段设置,最终成功将代码视图更正,并进行了重新分析,确保了代码的正确呈现。内容涉及Intel处理器的启动流程、BootLoader、模式切换及反汇编工具的使用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近想写一篇关于Intel开机上电执行Reset Vector指令的文章,遂提取了公司笔记本芯片上的Bootloader,并用UEFITool提取其中BootBlock部分(Reset Vector位于BootBlock内部):

[图1,UEFITool加载提取的Bios image]

[图2,从Bios Image中提取BootBlock]

BootBlock的任务之一是将CPU从实模式切换到保护模式(16Bit Mode切换到32Bit Mode)。因此,BootBlock最开始部分是16Bit程序。然而,当我将提取的BootBlock拖进IDA Pro后发现,IDA Pro竟然将.text段解析为32Bit程序:

[图3,从IDA加载SecCore.bin]

和EDKII project中SecCore模块的源码(IntelFsp2WrapperPkg\Library\SecFspWrapperPlatformSecLibSample\Ia32\SecEntry.nasm)对比,感觉IDA将代码变异了:

 研究了一下,可能是要将IDA切换到16Bit Mode:

1.IDA Pro--View--"Open subviews"--Segments打开段寄存器:

 记下.text段起止地址/Base/Class值

2.IDA Pro--"Edit"--Segments--"Create Segment",在弹出的Create a new segment对话框中,根据前一步记录的Segment的值修改新.text段的值:

3.勾选"Create a new segment"对话框中"16-bit segment"

4.创建新Segment后,".text"段更加不堪入目,此时需要重新分析代码段

5.重新分析代码段:框选需要分析的code--"Analyze seleced are"--在弹出的"Please Confirm"对话框中点击Force按钮.IDA将重新分析代码段,并生成下列代码:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值