WD1X.COM - 问答一下,轻松解决,电脑应用解决专家
主板显卡CPU内存显示器
硬盘维修显卡维修显示器维修
注册表系统命令DOS命令Win8
存储光存储鼠标键盘
内存维修打印机维修
WinXPWin7Win11Linux
硬件综合机箱电源散热器手机数码
主板维修CPU维修键盘鼠标维修
Word教程Excel教程PowerPointWPS
网络工具系统工具图像工具
数据库javascript服务器
PHP教程CSS教程XML教程

AMI BIOS模块结构详解 完整版

更新时间:2009-12-10 09:08 作者:fjr115点击:

首先在讲AMI BIOS模块结构前
需要向大家说一样东西
就是逻辑地址
逻辑地址的形式如:XXXX:XXXX
其中前四位是段地址   后四位是偏移地址
比如ABCD:1234
物理地址=段地址*10H+偏移地址
所以ABCD:1234的物理地址=ABCDH*10H+1234H=ACF04H
而ACF04H这个物理地址是相对于1M噶地址空间的
如果你的BIOS大小是1M噶话 那么物理地址就是ACF04H
如果BIOS不是1M的话 那么就要对物理地址进行换算
好 有条公式: BIOS文件在WINHEX中的地址 =  BIOS文件相对于1M空间的地址 - 常数
注:常数是根据每个BIOS的大小而确定的   常数=(1024-你BIOS的大小(KB))*1024
比如你的BIOS是512KB的话  那么常数就是  常数=(1024-512)*1024=524288D=80000H
所以ABCD:1234在512KB的BIOS中 BIOS文件在WINHEX中的地址就=ABCDH*10H+1234H-80000H=2CF04H
OK  现在各位应该明白逻辑地址转化为物理地址的方法了

 

用WINHEX打开AMI BIOS可以搜索到AMIBIOSC的字符串
这里隐含很多秘密
如下:(这个BIOS 512KB的)

 

用WINHEX打开AMI BIOS可以搜索到AMIBIOSC的字符串
这里隐含很多秘密
如下:(这个BIOS 512KB的)
Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F
00067FE0   00 00 00 00 00 00 00 00  08 0A 41 4D 49 42 49 4F   ..........AMIBIO
00067FF0   53 43 30 38 30 30 06 CE  21 40 BC 75 0C 00 83 E7   SC0800.?@紆..冪

这里一共20H
具体结构如下:
0-2H                保留供将来使用
3H                   一般都是00 如果不是00的话 发BIOS给我
4-5H                BIOS映像版本
8H                   都是08的
9H                   都是0A的 (AMIBIOSC08的长度)
A-13H              AMIBIOSC
14-17H            BIOS 核心版本
18-1BH            BIOS校验位
1C-1DH            第一个模块的偏移地址
1E-1FH             第一个模块的段地址

由此可知 在这个BIOS里面第一个模块的逻辑地址是 E783:000C
所以物理地址=E7830H+000CH-80000H=6783CH
6783CH-8H就是第一个模块的地址了  至于为什么要-8H 你自己看一下就知道了
OK 第一个模块的地址找到了
继续研究一下第一个模块的头部 看看有什么秘密
Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F
00067830   00 FF FF FF 98 07 00 00  F3 C3 B9 AA 10 00 1B E2
00067840   98 07 08 80 00 00 00 00  01 00 0C 00 20 35 01 00

其中 红色部分的14H就是模块头了
单独提取出来
Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F
00000000   98 07 00 00 F3 C3 B9 AA  10 00 1B E2 98 07 08 80
00000010   00 00 00 00


0-3H                   模块大小
4-7H                   校验位
8-9H                   下一个模块的偏移地址
A-BH                   下一个模块的段地址
C-DH                   模块大小
EH                       模块ID
FH                       模块属性

由此可知该模块的模块大小是0798H  校验位AAB9C3F3  下一个模块的地址为E21B:0010  模块ID为08
从此可以得知下一个模块的位置
如此类推
......................
直到最后一个模块

Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F
00000FD0   44 00 00 00 92 9F 03 15  FF FF FF FF 44 00 80 80
00000FE0   00 00 00 00 07 00 10 02  01 00 00 14 00 20 08 01

红色的就是模块头
最后一个模块的模块头的8-BH都是FF FF FF FF的  表示是最后一个模块了
OK    AMI BIOS模块机构详解到此完毕

顶一下
(2)
100%
踩一下
(0)
0%
------分隔线----------------------------
你可能感兴趣的内容