-
-
关于物理硬盘序列号做机器码
-
发表于:
2006-6-25 22:14
12024
-
小弟我现在分析一个别Ice License(http://www.ionworx.com/IceLicense.html)保护的软件
Ice License很变态也很专业,用了很多加密算法,特别使用了公钥算法,并用MD5进行代码保护防止爆破,目前看来很难有注册机出来了。
但是我目前发现Ice License生成机器码的一个小漏洞。
Ice License获得方法如下(函数我都转成Delphi并自己封装了一下)
for I:=1 to 4 do
begin
case I of
1: //1: DeviceIoControl( CreateFile"\\.\C:"
begin
DiskSerialNumber := DeviceIoInfor.GetDiskCSerialNumber();
end;
2: //2: DeviceIoControl( CreateFile"\\.\Scsi0:"
begin
DiskSerialNumber := DeviceIoInfor.GetSCSIDiskSerialNumber();
ShowMessage('Scsi0 '+ DiskSerialNumber);
end;
3: //3: GetVolumeInformationA "c:\"
begin
DiskSerialNumber := DeviceIoInfor.GetVolumeInforID();
ShowMessage('c:\ '+ DiskSerialNumber);
end;
else
DiskSerialNumber := 'Error';
end;
if DiskSerialNumber <> '' then
begin
break;
end;
end;
现在有个想法就是,既然不能修改物理硬盘编号(能修改就好了)就阻止以上低码不能使用CreateFile"\\.\C:"和CreateFile"\\.\Scsi0:"获得物理硬盘编号,迫使系统采用GetVolumeInformationA "c:\",大家知道逻辑盘号是随便改的。
可惜到现在还不成功,有高手有兴趣一起搞Ice License吗?我对它的算法分析基本完成了,仅仅剩下公钥算法部分了。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课