基于硬盘序列号的软件加密与解密
前几天在QQ群里看到一则招聘信息,有关软件加密的。要求加密方法为基于硬盘序列号的,这样能够保证软件只授权给一台机器。出于好奇心和求知的欲望,抽空去了趟图书馆查阅资料,找到了有关软件加密的文章。现在把源代码与大家分享,看了源代码,你能计算出你的电脑的登陆密钥吗?如果你认为你能,那么就下载源代码自己破解下,如果破解成功,会显示如下所示的消息框。祝你好运!
示例程序下载地址:http://download.csdn.net/source/1684349
部分源代码如下所示:
//在OnInitDialog()函数中初始化客户号
DWORD VolumeSerialNumber;
GetVolumeInformation("c://",NULL,12,&VolumeSerialNumber,NULL,NULL,NULL,10);
char pNum[10];
itoa(VolumeSerialNumber,pNum,16);
VolumeSerialNumber^=0x12345678;
m_khh=VolumeSerialNumber;
UpdateData(0);
//判断输入的登陆密钥是否正确
long num;
UpdateData(1);
num=m_dlmy;
num^=0x1999aa98;
if(num==m_khh)
MessageBox("恭喜你,解密正确!");
CFile ff;
if(!ff.Open("play.exe",CFile::modeWrite))
return;
CString str;
str.Format("%10d",m_dlmy);
MessageBox(str);
ff.Seek(-10,CFile::end);
ff.Write(str,10);
ff.Close();