日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

VC++生成序列号和注册机总结

發(fā)布時間:2025/4/14 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VC++生成序列号和注册机总结 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
VC++生成序列號和簡單注冊機實例

在成品軟件中,軟件注冊是必需的,在VC++中,如何實現(xiàn)程序注冊功能呢?今天發(fā)一下VC++生成程序序

列號和注冊機程序的代碼,或許是個參考
一、生成程序序列號的具體實現(xiàn):
HCURSOR CJiemishuoDlg::OnQueryDragIcon()
{
? ? return (HCURSOR) m_hIcon;
}


void CJiemishuoDlg::OnButton1()
{
? ? DWORD num;
? ? UpdateData(1);
? ? num=m_jms;
? ? num^=0x1999aa98;
? ? if(num==m_gkh)
? ? ? ? MessageBox("ok"); ? //提示解密正確


? ? CFile ff;
? ? if(!ff.Open("play.exe",CFile::modeWrite))
? ? ? ? return;
? ? CString str;
? ? str.Format("%10d",m_jms);
? ? MessageBox(str);
? ? ff.Seek(-10,CFile::end);
? ? ff.Write(str,10);//添加到play.exe尾部
? ? ff.Close();
}


void CJiemishuoDlg::OnButton2()
{
? ? //功能:得到解密匙.
? ? UpdateData(1);
? ? long aa=m_gkh^0x1999aa98;
? ? m_jms=aa;
? ? UpdateData(0);
}


void CJiemishuoDlg::OnAdd()
{
? ? DWORD num;
? ? UpdateData(1);
? ? num=m_jms;
? ? num^=0x1999aa98;


? ? if(num==m_gkh)
? ? ? ? MessageBox("ok"); ? //提示解密匙正確


? ? CFile ff;
? ? if(!ff.Open("play.exe",CFile::modeWrite))
? ? ? ? return;


? ? CString str;
? ? str.Format("%10d",m_jms);
? ? MessageBox(str);
? ? ff.SeekToEnd();
? ? ff.Write(str,10);//改寫解密匙
? ? ff.Close();
}
二、簡單注冊機的實現(xiàn):
void CZhuCeJiDlg::OnJieMi()
{
? ? //在你要加密的文件play.exe末部改寫解密匙.
? ? long num;
? ? UpdateData(1);
? ? num=m_jms;
? ? num^=0x1999aa98;
? ? if(num==m_gkh)
? ? ? ? MessageBox("ok");//提示解密匙正確?
? ? CFile ff;
? ? if(!ff.Open("play.exe",CFile::modeWrite))
? ? ? ? return;
? ? CString str;
? ? str.Format("%10d",m_jms);
? ? MessageBox(str);
? ? ff.Seek(-10,CFile::end);
? ? ff.Write(str,10); ? //改寫解密匙
? ? ff.Close();
}
http://www.codefans.net/articles/1437.shtml
========
http://www.newxing.com/Code/VC/zfcl/1386.html
VC 根據(jù)序列號生成注冊碼示例
========
http://blog.csdn.net/A8572785/article/details/7644342
加密解密-TraceMe—注冊機


寫了個TraceMe的注冊機
unsigned char Table[8] = {0xC, 0xA, 0x13, 0x9,0xC,0xB,0xA,0x8}; ?
?unsigned long GenRegCode(CHAR * name, int len) ?
{ ?
? ? CString temp; ?
? ? int i, j; ?
? ? unsigned long ID =0; ?
? ? for(i=3,j=0; i<len; i++,j++) ?
? ? { ?
? ? ? ? if(j>7) ?
? ? ? ? ? ? j=0; ?
? ? ? ? ID+=name[i]*Table[j]; ?
? ? } ?
? ? return ID; ?
} ?
void CTraceMeDlg::OnRegist() ??
{ ?
? ? // TODO: Add your control notification handler code here ?
? ? CString str1; ?
? ? CString test; ?
? ? unsigned long str2; ?
? ? char* buf; ?
? ? GetDlgItemText(IDC_Name,str1); ?
? ? buf = (LPSTR)(LPCTSTR)str1; ?
? ? str2 = GenRegCode(buf,strlen(str1)); ?
? ? test.Format("%ld",str2); ?
? ? SetDlgItemText(IDC_ID, test); ?
}

========

程序初始化時調(diào)用

BOOL CMySoftApp::InitInstance()
{
AfxEnableControlContainer();


if(!IsRegisterOK())
return FALSE;

......


BOOL CMySoftApp::IsRegisterOK() {DWORD dwVolumeSerialNumber,dwUserID,dwDecodeNumber; DWORD dwMask=87654321; //運算子,隨便設(shè)定DWORD dwKey=0x20080808; //密鑰碼,設(shè)成自己好記、別人不知的CString strUserID,strRegCode;char str[200];int str_len=200;// 將硬盤序列號與運算子異或后做為用戶號::GetVolumeInformation("C:\\",NULL,NULL,&dwVolumeSerialNumber,NULL,NULL,NULL,NULL); dwUserID=dwVolumeSerialNumber^dwMask; strUserID.Format("%8d",dwUserID);// 正確的注冊碼應為16進制形式=(10進制的dwUserID轉(zhuǎn)16進制后)^(16進制的密鑰碼)// 開發(fā)者可利用科學型計算器,根據(jù)用戶報知的用戶號直接算出注冊碼返回給用戶// 先直接從操作系統(tǒng)的win.ini讀取注冊碼if( ::GetProfileString("MySoft","RegCode","",str,str_len)!=0 ){strRegCode=str;// 驗證注冊碼dwDecodeNumber=strtoul(strRegCode,NULL,16); dwDecodeNumber^=dwKey; //解密鑰dwDecodeNumber^=dwMask; //還原硬盤序列號if(dwDecodeNumber==dwVolumeSerialNumber) //注冊成功return TRUE;}// 如果上面讀取的注冊碼不對或沒有,再通過對話框取注冊碼for(;;){CDlgRegister dlg;dlg.m_strUserID=strUserID;if(dlg.DoModal()==IDOK){strRegCode=dlg.m_strRegCode;delete dlg;// 驗證注冊碼dwDecodeNumber=strtoul(strRegCode,NULL,16); dwDecodeNumber^=dwKey; //解密鑰dwDecodeNumber^=dwMask; //還原硬盤序列號if(dwDecodeNumber==dwVolumeSerialNumber) //注冊成功{// 將通過的注冊信息保存到操作系統(tǒng)的win.ini,以備以后直接讀取::WriteProfileString("MySoft","UserID",strUserID);::WriteProfileString("MySoft","RegCode",strRegCode);return TRUE;}elseAfxMessageBox("注冊碼錯誤! 請重試輸入或向開發(fā)者索取本機注冊碼!");}else{delete dlg;break; }}return FALSE; //注冊失敗 }
http://download.csdn.net/download/dancer8th/1862601

《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的VC++生成序列号和注册机总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。