(WIN32和Kernel)直接读写硬盘扇区.

本文是作者学习《基于硬盘保留扇区的软件保护方法》的心得记录,详细介绍了如何读写硬盘的保留扇区,特别是第2个保留扇区,通常用于软件保护。文中引用了原文中关于硬盘总体结构的表格,并提及了实现这一操作的代码片段。
摘要由CSDN通过智能技术生成

第一篇写技术的文章哦,以前好少写文章,我的文字表达很差劲,大家不要笑哦.
前几天仙剑4通关了,感觉好惆怅,什么都不想去做.今天看了一下书发现一篇比较好玩的文章,于是自己静静地实践一番.文章是<基于硬盘保留扇区的软件保护方法(作者:熊志勇)>,内容是介绍了怎么读写硬盘保留扇区.以下是我的学习日记.

这里是摘自文章里的一个表:硬盘的总体结构
***********************************************************************
编号       名称                                     备注
1         
主引导扇区(含硬盘分区表)            占用一个扇区空间(一个扇区空间为512字节)
2         
保留扇区(操作系统不使用的扇区)    占用62个扇区空间
3         
第一个分区                              C:
4         
扩展主引导扇区(含扩展分区表)       一个扇区空间(只有存在扩展分区是才存在)
5         
保留扇区                                占用62个扇区空间
6         
2个分区                               D:
7         
下一个扩展主引导扇区                 只有分区链没结束才存在
8          ......                                    ......
***********************************************************************

通常的软件保护都会向编号为2的保留扇区写一些软件注册信息呀,等等的东西.
而要读写这个没被操作系统利用的部分作者已经给出了代码(幸福呀,不用自己找).

//以下是已经做好的一个函数

BOOL ReadPhysicalSector(unsigned long SectorStart, unsigned long SectorCount, unsigned char *p)

{

    unsigned long BytesPerSector = 512;

    unsigned long nBytes;

    char Drive[] = ".//PHYSICALDRIVE0";

    BOOL result = FALSE;

    HANDLE hDeviceHandle = CreateFile(Drive,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,0,0);

    if(hDeviceHandle)

    {

        long pointer;

        long phigh;

        pointer = SectorStart;

        pointer = pointer*BytesPerSector;

        phigh = pointer>>32;

        SetFilePointer(hDeviceHandle,(unsigned long)pointer,&phigh,FILE_BEGIN);

        if(ReadFile(hDeviceHandle,p,SectorCount*BytesPerSector,&nBytes,NULL))

            result = TRUE;

        CloseHandle(hDeviceHandle);

    }

    return result;

}

 

//调用就这样

int main(int argc, char* argv[])

{

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值