U盘在windows下有个很好玩的特性。除非不能分区,否则一旦经过分区,windows永远只认第一个分区。也就是说如果U盘映射到sda,那么windows只认sda1。很多隐藏数据或者特殊功能就是利用这个特点来实现的。

现在我们要自己用这个特性,那么就需要自己去操作U盘的数据。也许很多人会想到U盘驱动或者IFS上去。没措,通过那个你可以使用U盘所有特性。但是要操作分区根本不需要这么复杂。根据我的测试,U盘接入后会成为PDn。例如我这里就是PD2,PD0是启动盘,PD1是第二硬盘。利用CreateFile的文件读写机制就可以直接读写U盘的底层数据。

通过这个特性,U盘在我们眼里就变成了一个文件。然后就是如何编辑分区表的问题了。这个嘛,写个程序吧,让他可以通过这种形式来编辑特定分区表,filedisk “.PhysiceDiskn”,就如同linux下的fdisk命令形式,fdisk /dev/sda一样。

下面就是格式化磁盘,给我们自己的盘一个特殊的类型标示,然后通过我们自己程序的直接读写来定位和操作这个分区。为了保证安全性,我们最好还利用某种方式来进行加密。一般来说我推荐使用PD0(这个肯定存在)的SN和用户键入的密码形成密钥块。