阅读:7148回复:12
nt4源码剖析之ntldr篇nt4源码ntldr模块剖析目录: 第一章 启动流程……………………………………………………………………………………………………………………5 一 启动……………………………………………………………………………………………………………………………5 1 FAT系统的启动代码…………………………………………………………………………………………………………5 2 NTFS系统的启动代码………………………………………………………………………………………………………11 3 MBR………………………………………………………………………………………………………………………… 42 二 Startup………………………………………………………………………………………………………………………46 1初始化视频子系统………………………………………………………………………………………………………… 52 2关闭软驱马达……………………………………………………………………………………………………………… 58 3 修正软盘参数表……………………………………………………………………………………………………………59 4 获取机器类型………………………………………………………………………………………………………………60 5 构造内存描述符……………………………………………………………………………………………………………62 6 内存大小检测………………………………………………………………………………………………………………79 7 启用A20地址线…………………………………………………………………………………………………………… 81 8 重定位X86结构…………………………………………………………………………………………………………… 85 9 启动保护模式………………………………………………………………………………………………………………86 10 重定位OS Loader Section………………………………………………………………………………………………93 11 跳转到OS Loader…………………………………………………………………………………………………………97 三 NtProcessStartup函数…………………………………………………………………………………………………… 100 1 全局初始化…………………………………………………………………………………………………………………100 2 初始化系统参数……………………………………………………………………………………………………………130 3 获取启动分区名称…………………………………………………………………………………………………………132 4 内存初始化…………………………………………………………………………………………………………………137 5 初始化os loader的IO系统……………………………………………………………………………………………… 146 四 BlStartup函数………………………………………………………………………………………………………………151 1 图形模式初始化……………………………………………………………………………………………………………157 2 读取boot.ini文件…………………………………………………………………………………………………………162 3 初始化ABIOS……………………………………………………………………………………………………………… 162 4 关闭软驱马达………………………………………………………………………………………………………………198 5 选择启动内核名称…………………………………………………………………………………………………………199 6 运行NTDETECT………………………………………………………………………………………………………………216 7 调用BlOsLoader函数………………………………………………………………………………………………………234 五 BlOsLoader函数…………………………………………………………………………………………………………… 235 1 配置树………………………………………………………………………………………………………………………256 2 日志系统……………………………………………………………………………………………………………………266 3 加载系统注册表……………………………………………………………………………………………………………267 4 非X86构造ARC启动设备名称和NT路径名称 …………………………………………………………………………351 5 获取NTFT设备标识…………………………………………………………………………………………………………360 6 配置CPU ……………………………………………………………………………………………………………………365 第二章 内存管理……………………………………………………………………………………………………………………373 一 内存分布…………………………………………………………………………………………………………………… 373 二 内存管理…………………………………………………………………………………………………………………… 373 三 内存描述符操作…………………………………………………………………………………………………………… 375 1 寻找制定页的内存描述符…………………………………………………………………………………………………375 2 构造新的内存描述符………………………………………………………………………………………………………376 3 插入描述符…………………………………………………………………………………………………………………381 4 移除描述符…………………………………………………………………………………………………………………383 四 内存操作…………………………………………………………………………………………………………………… 383 1 申请内存……………………………………………………………………………………………………………………383 2 申请新的堆…………………………………………………………………………………………………………………388 第三章 显示…………………………………………………………………………………………………………………………391 一 显卡操作…………………………………………………………………………………………………………………… 391 二 文本模式…………………………………………………………………………………………………………………… 393 1 设置文本模式………………………………………………………………………………………………………………394 2 显示字符……………………………………………………………………………………………………………………394 3 设置光标位置………………………………………………………………………………………………………………396 4 清屏…………………………………………………………………………………………………………………………397 5 滚屏显示……………………………………………………………………………………………………………………398 三 图形模式…………………………………………………………………………………………………………………… 399 1 设置图形模式………………………………………………………………………………………………………………400 2 设置属性……………………………………………………………………………………………………………………400 3 显示字符……………………………………………………………………………………………………………………403 4 设置光标位置………………………………………………………………………………………………………………406 5 清屏…………………………………………………………………………………………………………………………407 四 统一接口函数……………………………………………………………………………………………………………… 408 1 显示字符……………………………………………………………………………………………………………………408 2 设置光标位置………………………………………………………………………………………………………………408 3 设置属性……………………………………………………………………………………………………………………409 4 清屏…………………………………………………………………………………………………………………………410 5 标准打印字符函数…………………………………………………………………………………………………………411 第四章 磁盘…………………………………………………………………………………………………………………………418 一 扩展服务表(ExportEntryTable) …………………………………………………………………………………………418 二 SU模块……………………………………………………………………………………………………………………… 424 1 重置磁盘……………………………………………………………………………………………………………………424 2 读磁盘………………………………………………………………………………………………………………………425 3 写磁盘………………………………………………………………………………………………………………………427 三 BIOS磁盘…………………………………………………………………………………………………………………… 430 1 打开磁盘……………………………………………………………………………………………………………………430 2 读磁盘………………………………………………………………………………………………………………………435 3 写磁盘………………………………………………………………………………………………………………………441 四 BIOS分区…………………………………………………………………………………………………………………… 446 1 打开分区……………………………………………………………………………………………………………………447 2 读分区………………………………………………………………………………………………………………………451 3 写分区………………………………………………………………………………………………………………………453 五 ARC函数………………………………………………………………………………………………………………………454 1 函数数组……………………………………………………………………………………………………………………454 2 打开…………………………………………………………………………………………………………………………456 3 读……………………………………………………………………………………………………………………………458 4 写……………………………………………………………………………………………………………………………460 第五章 文件系统……………………………………………………………………………………………………………………463 一 FAT文件系统…………………………………………………………………………………………………………………463 1 判断是否是FAT文件系统………………………………………………………………………………………………… 463 2 读文件………………………………………………………………………………………………………………………467 3 写文件………………………………………………………………………………………………………………………470 4 读磁盘………………………………………………………………………………………………………………………474 5 写磁盘………………………………………………………………………………………………………………………476 6 刷缓存到磁盘………………………………………………………………………………………………………………478 7 FAT的VBO转换成LBO……………………………………………………………………………………………………480 二 NTFS文件系统……………………………………………………………………………………………………………… 483 1 判断是否是NTFS文件系统…………………………………………………………………………………………………483 2 读文件………………………………………………………………………………………………………………………490 3 写文件………………………………………………………………………………………………………………………492 4 读磁盘………………………………………………………………………………………………………………………493 5 写磁盘………………………………………………………………………………………………………………………495 6 读取常驻的属性值…………………………………………………………………………………………………………495 7 读取且解析文件记录………………………………………………………………………………………………………497 8 读取非常驻的属性值………………………………………………………………………………………………………500 9 NTFS的VBO转化成LBO…………………………………………………………………………………………………506 第六章 PE文件………………………………………………………………………………………………………………………511 一 文件格式…………………………………………………………………………………………………………………… 511 二 PE文件操作………………………………………………………………………………………………………………… 512 1 加载镜像……………………………………………………………………………………………………………………512 2 获取NT头的地址……………………………………………………………………………………………………………522 3 获取目录项地址……………………………………………………………………………………………………………522 4 重定位………………………………………………………………………………………………………………………524 5 引用DLL文件 …………………………………………………………………………………………………………528 6 绑定导入表…………………………………………………………………………………………………………………533 7 校验和………………………………………………………………………………………………………………………540 8 镜像文件数据表项…………………………………………………………………………………………………………541 第七章 检测硬件NTDETECT……………………………………………………………………………………………………545 一 主函数DetectionMain………………………………………………………………………………………………………545 二 检测硬件HardwareDetection………………………………………………………………………………………………548 1 总线类型……………………………………………………………………………………………………………………567 2 鼠标类型……………………………………………………………………………………………………………………569 3 日期…………………………………………………………………………………………………………………………569 4 PCI总线组件……………………………………………………………………………………………………………… 573 5 APM总线组件……………………………………………………………………………………………………………… 578 6 PNP BIOS总线组件…………………………………………………………………………………………………………579 7 MCA槽信息………………………………………………………………………………………………………………… 583 8 磁盘参数……………………………………………………………………………………………………………………587 9 ROM块……………………………………………………………………………………………………………………… 590 10 键盘组件………………………………………………………………………………………………………………… 610 11 COM组件……………………………………………………………………………………………………………………627 12 并口组件………………………………………………………………………………………………………………… 643 13 鼠标组件………………………………………………………………………………………………………………… 647 14软驱组件……………………………………………………………………………………………………………………695 15 显示字体信息…………………………………………………………………………………………………………… 709 16 EISA配置数据…………………………………………………………………………………………………………… 711 第八章 注册表………………………………………………………………………………………………………………………722 一 注册表结构………………………………………………………………………………………………………………… 722 1 磁盘上的注册表文件结构…………………………………………………………………………………………………722 2 内存中的注册表结构………………………………………………………………………………………………………725 二 注册表操作………………………………………………………………………………………………………………… 728 1 初始化注册表………………………………………………………………………………………………………………729 2 加载注册表…………………………………………………………………………………………………………………740 3 写注册表文件………………………………………………………………………………………………………………746 4 BitMap操作…………………………………………………………………………………………………………………754 5 MAP操作…………………………………………………………………………………………………………………… 757 6 校验注册表…………………………………………………………………………………………………………………769 7 按名称查找注册表…………………………………………………………………………………………………………773 8 覆盖日志文件中的修正到内存镜像………………………………………………………………………………………787 9 CELL操作……………………………………………………………………………………………………………………791 10 设置文件大小…………………………………………………………………………………………………………… 798 11 注册表头………………………………………………………………………………………………………………… 800 12 寻找注册表的dirty logical sectors的最大的RUN…………………………………………………………………… 806 Ntldr剖析.rar |
|
禁止发言
|
沙发#
发布于:2011-10-09 17:43
用户被禁言,该主题自动屏蔽! |
板凳#
发布于:2011-11-07 10:52
这么好的帖子不顶 简直没天理
|
|
|
地板#
发布于:2012-09-13 14:34
现在才发现,谢谢楼主的分析。
|
|
地下室#
发布于:2012-09-29 13:49
好东西,多谢分享
|
|
5楼#
发布于:2012-11-19 18:23
s神器~
|
|
6楼#
发布于:2012-12-16 01:46
下下来研究下,看看咋样
|
|
7楼#
发布于:2013-02-20 10:32
下载学习一下。。
|
|
8楼#
发布于:2013-03-29 16:51
...
|
|
9楼#
发布于:2013-07-17 20:49
下载了,多谢大牛
|
|
10楼#
发布于:2014-01-03 21:09
good
|
|
11楼#
发布于:2016-08-29 11:40
大牛顶你
|
|
12楼#
发布于:2017-09-12 11:13
为啥我点了下载 也没反应 。。。
|
|