当年写u盘绑定程序时候的笔记,留个纪念。
U盘的可利用的特性
1、VID&PID以及序列号等
可以实现,但是可以利用量产工具修改复制。
2、物理磁盘的总字节数
总字节数=扇区数×每扇区字节数,可以利用,弊端是同一批次的相同容量U盘扇区数相等。注意,是物理磁盘的总字节数,并非逻辑磁盘的。
3、WinHex打开的前几个扇区的内容
比较难利用,还需要研究。有部分U盘第一个扇区的内容可以修改,而且格式化的结果不影响第一个扇区内容,有些U盘格式化则影响第一个扇区,甚至有U盘前面部分扇区不可写。
4、制造隐蔽扇区
比如利用苹果系统,还需要研究U盘存储结构。
设计思路:
1、USB Binder.exe
绑定程序。
用来提取需要绑定的U盘的pid vid以及序列号等信息,还有它的物理磁盘容量大小作为判断的标识,具体有
TCHAR DevDesc[MAX_PATH] = {0};//USBSTOR的磁盘描述,包含设备序列号等信息,形如
USBSTOR\Disk&Ven_SanDisk&Prod_Cruzer_Blade&Rev_1.00\200422046007F622015A&0,作为验证内容一
TCHAR szDis[MAX_PATH] = {0};//绑定设备序列号的USB信息,含有pid&vid等内容,作为验证内容二
LARGE_INTEGER DiskSize = {0};//物理磁盘总字节数,作为验证内容三
修改需要绑定的程序,将程序入口开始的1000字节做一个异或加密。防止释放后被人拷贝走直接运行。
将要绑定的程序作为资源写入USB Check.exe。
将三个验证内容MD5加密后放入USB Check.exe作为配置文件。
2、USB Check.exe
遍历所有硬盘信息对比验证内容,判断是否存在特定U盘,如果不存在直接退出,如果存在,释放资源到临时目录,创建暂停进程,修改内存,将第一区段异或解密,恢复线程运行。
发表评论