开源
功能说明: 本程序是一个基于易语言开发的系统底层工具,主要功能是直接对计算机物理硬盘的主引导记录(MBR)进行读取、查看以及写入操作。程序通过调用 Windows API 实现了对物理驱动器的直接访问,属于高风险的系统级操作工具,通常用于系统维护、引导修复或底层数据研究。
程序主要功能模块分析如下:
1. MBR 读取功能
核心子程序为“读取 MBR"。该功能利用 Windows API 中的 CreateFile 函数打开物理驱动器句柄,目标路径设置为“\\.\physicaldrive0”,代表第一块物理硬盘。打开后,通过 SetFilePointer 将文件指针移动到起始位置,再调用 ReadFile 函数读取首个扇区的数据(标准 MBR 大小为 512 字节)到内存字节集变量中。如果打开设备失败(返回 -1),则读取操作终止。
2. MBR 查看与解析功能
核心事件为"_按钮 1_被单击”。当用户触发此操作时,程序首先调用读取功能获取 MBR 数据,随后通过“字节集到十六进制”子程序将二进制数据转换为可视化的十六进制文本。
程序具备智能分段显示逻辑,通过循环遍历 512 个字节的 MBR 数据,并根据索引范围将数据分发到三个不同的编辑框中,符合 MBR 的标准结构定义:
- 编辑框 2:显示第 0 到 446 字节,这部分通常是引导代码区(Boot Code)。
- 编辑框 3:显示第 447 到 510 字节,这部分是分区表区(Partition Table),包含四个主分区的信息。
- 编辑框 4:显示第 511 到 512 字节,这部分是引导签名区,正常值应为 0x55AA。
这种分段显示有助于用户快速定位引导代码、分区表或签名是否损坏。
3. MBR 写入功能
核心子程序为“写入 MBR",触发事件为"_按钮 4_被单击”。该功能允许将修改后的字节集数据写回硬盘。它同样使用 CreateFile 打开物理驱动器,但访问权限设置为写权限(参数中包含写操作标志)。随后调用 WriteFile 函数将准备好的 MBR 数据写入硬盘起始扇区。代码中包含判断逻辑,根据写入结果返回成功或失败的状态。注意,源代码中按钮 4 事件内部分数据准备代码被注释,实际使用时需确保“MBR 待写数据”已正确填充。
4. 数据转换辅助工具
程序包含多个公开子程序用于处理数据格式转换,确保二进制数据与文本之间的正确交互:
- “十六进制到字节集”:将分隔的十六进制文本字符串转换回字节集,用于写入前的数据准备。
- “字节集到十六进制”:将字节集转换为带分隔符的十六进制文本,用于界面显示。
- “到十六进制”与“到十进制”:处理单个数值格式的转换,支持大小写十六进制文本解析。
- “取整型指针”:用于获取变量的内存地址,属于底层内存操作辅助。
技术特点与风险提示:
该程序直接操作物理磁盘句柄, bypass 了文件系统层,能够直接修改硬盘最关键的引导区域。代码中使用了标准的 Windows API 调用方式,包括权限设置、指针操作和重叠结构(_OVERLAPPED)的定义。
由于该程序具备直接写入硬盘 MBR 的能力,误操作可能导致系统无法引导、分区表丢失或数据永久损坏。因此,这是一个高危工具,使用时需具备极高的谨慎性,通常需要在管理员权限下运行才能成功访问物理驱动器。此代码适合作为系统维护工具的核心逻辑参考,或用于学习易语言调用 Windows API 进行底层开发的案例。
======窗口程序集1
| |
| |------ _按钮1_被单击
| |
| |------ 十六进制到字节集
| |
| |------ 到十六进制
| |
| |------ 字节集到十六进制
| |
| |------ 读取MBR
| |
| |------ 取整型指针
| |
| |------ 到十进制
| |
| |------ _按钮4_被单击
| |
| |------ 写入MBR
| |
| |------ __启动窗口_创建完毕
| |
| |
======调用的Dll
| |
| |---[dll]------ WriteFile
| |
| |---[dll]------ ReadFile
| |
| |---[dll]------ CreateFile
| |
| |---[dll]------ SetFilePointer
| |
| |---[dll]------ 取整型指针_
| |
| |---[dll]------ CloseHandle
| |
| |---[dll]------ StrToInt64ExA
注:本站源码主要来源于网络收集。如有侵犯您的利益,请联系我们,我们将及时删除!
部分源码可能含有危险代码,(如关机、格式化磁盘等),请看清代码在运行。
由此产生的一切后果本站均不负责。源码仅用于学习使用,如需运用到商业场景请咨询原作者。
使用本站源码开发的产品均与本站无任何关系,请大家遵守国家相关法律。