⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 makekeyfile.cpp

📁 通过机器硬件设备加密软件的算法,支持反败为胜跟踪等.
💻 CPP
字号:
#include "stdafx.h"

void MakeKeyFile(CString strUser, CString strOrganization, CString strKeyNo, CString strRegCode)
{
	//UpdateData(true);
	char bufferlaji[3001];
	CString user,org,mach,sn;
	CString PacMe="A9ABA510543F3055651656BEF3EAE95055AF";
	strOrganization.MakeUpper();
	strUser.MakeUpper();
	strKeyNo.MakeUpper();
//处理用户信息
	char bufferuser[3001];
	
	BYTE userval=0;
	BYTE userval1=0;
	int i;
 
	for (i=0;i<strUser.GetLength();i++)
	{
		userval = strUser.GetAt(i);
		user.Format("%02x",userval);
		user.MakeUpper();
		//AfxMessageBox(user);
		userval1 = userval1 + userval;
		//AfxMessageBox(user);
		strcpy((char *)&bufferuser[2*sizeof(int)+9+i*2],user);
	}
	for (i=0;i<36;i++)
	{
		PacMe.SetAt(i,PacMe.GetAt(i)^userval1);
	}
	
	//TRACE();
	strcpy(bufferuser,"RETNUHMOT");
	int *datauser=(int *)&bufferuser[9];
	int m_lenuser=strUser.GetLength();
	datauser[0]=m_lenuser*2+1;
	datauser[1]=m_lenuser;
	strcpy((char *)&bufferuser[2*sizeof(int)+9+2*m_lenuser],PacMe);
	int temp1=(2*sizeof(int)+9);
	char * PW1="UWNEHC1981";
	int m_PWlen1=strlen(PW1);
	for(int j=9;j<= temp1;j++)
	bufferuser[j]^=PW1[j%m_PWlen1];
	
	for (i=0;i<strUser.GetLength();i++)
	{
		userval ^= strUser.GetAt(i);
		user.Format("%02x",userval);
		user.MakeUpper();
		//AfxMessageBox(sn);
		//AfxMessageBox(user);
		strcpy((char *)&bufferuser[2*sizeof(int)+9+2*m_lenuser+PacMe.GetLength()+20+i*2],user);
	}

	for(j=temp1+1;j<= 3000;j++)
	bufferuser[j]^=PW1[j%m_PWlen1];

	//AfxMessageBox(bufferuser);
	//memset(bufferuser,0,3001);

//处理组织信息
	char bufferorg[3001];
	
	BYTE orgval=0;
	BYTE orgval1=0;
	//int i;
 
	for (i=0;i<strOrganization.GetLength();i++)
	{
		orgval = strOrganization.GetAt(i);
		org.Format("%02x",orgval);
		org.MakeUpper();
		//AfxMessageBox(org);
		orgval1 = orgval1 + orgval;
		//AfxMessageBox(sn);
		strcpy((char *)&bufferorg[2*sizeof(int)+9+i*2],org);
	}

	PacMe="A9ABA510543F3055651656BEF3EAE95055AF";
	for (i=0;i<36;i++)
	{
		PacMe.SetAt(i,PacMe.GetAt(i)^orgval1);
	}
	
	//TRACE();
	strcpy(bufferorg,"RETNUHMOT");
	int *dataorg=(int *)&bufferorg[9];
	int m_lenorg=strOrganization.GetLength();
	dataorg[0]=m_lenorg*2+1;
	dataorg[1]=m_lenorg;
	strcpy((char *)&bufferorg[2*sizeof(int)+9+2*m_lenorg],PacMe);
	int temp2=(2*sizeof(int)+9);
	char * PW2="UWNEHC1981";
	int m_PWlen2=strlen(PW2);
	for(int k=9;k<= temp2;k++)
	bufferorg[k]^=PW2[k%m_PWlen2];
	

	for (i=0;i<strOrganization.GetLength();i++)
	{
		orgval ^= strOrganization.GetAt(i);
		org.Format("%02x",orgval);
		org.MakeUpper();
		//AfxMessageBox(org);
		orgval1 = orgval1 + orgval;
		//AfxMessageBox(sn);
		strcpy((char *)&bufferorg[2*sizeof(int)+9+2*m_lenorg+PacMe.GetLength()+30+i*2],org);
	}

	for(k=temp2+2;k<= 3000;k++)
	bufferorg[k]^=PW2[k%m_PWlen2];

	//AfxMessageBox(bufferorg);
	//memset(bufferorg,0,3001);

//处理机器码
	char buffermach[3001];
	
	BYTE machval=0;
	BYTE machval1=0;
	//int i;
 
	for (i=0;i<strKeyNo.GetLength();i++)
	{
		machval = strKeyNo.GetAt(i);
		mach.Format("%02x",machval);
		mach.MakeUpper();
		//AfxMessageBox(mach);
		machval1 = machval1 + machval;
		//sn.Format("%n",user);
		//AfxMessageBox(sn);
		strcpy((char *)&buffermach[2*sizeof(int)+9+i*2],mach);
	}

	PacMe="A9ABA510543F3055651656BEF3EAE95055AF";
	for (i=0;i<36;i++)
	{
		PacMe.SetAt(i,PacMe.GetAt(i)^machval1);
	}
	
	strcpy(buffermach,"RETNUHMOT");
	int *datamach=(int *)&buffermach[9];
	int m_lenmach=strKeyNo.GetLength();
	datamach[0]=m_lenmach*2+1;
	datamach[1]=m_lenmach;
	strcpy((char *)&buffermach[2*sizeof(int)+9+2*strKeyNo.GetLength()],PacMe);
	int temp3=(2*sizeof(int)+9);
	char * PW3="UWNEHC1981";
	int m_PWlen3=strlen(PW3);
	for(int l=9;l<= temp3;l++)
	buffermach[l]^=PW3[l%m_PWlen3];
	

	for (i=0;i<strKeyNo.GetLength();i++)
	{
		machval ^= strKeyNo.GetAt(i);
		mach.Format("%02x",machval);
		mach.MakeUpper();
		//AfxMessageBox(mach);
		machval1 = machval1 + machval;
		//sn.Format("%n",user);
		//AfxMessageBox(sn);
		strcpy((char *)&buffermach[2*sizeof(int)+9+2*m_lenmach+PacMe.GetLength()+40+i*2],mach);
	}

	for(l=temp3+3;l<= 3000;l++)
	buffermach[l]^=PW3[l%m_PWlen3];
	//AfxMessageBox(buffermach);

//处理注册码
	char buffersn[3001];
	
	BYTE snval=0;
	BYTE snval1=0;
	//int i;
 
	for (i=0;i<strRegCode.GetLength();i++)
	{
		snval = strRegCode.GetAt(i);
		sn.Format("%02x",snval);
		sn.MakeUpper();
		//AfxMessageBox(sn);
		snval1 = snval1 + snval;
		//AfxMessageBox(user);
		strcpy((char *)&buffersn[2*sizeof(int)+9+i*2],sn);
	}
	for (i=0;i<36;i++)
	{
		PacMe.SetAt(i,PacMe.GetAt(i)^snval1);
	}
	
	//TRACE();
	strcpy(buffersn,"RETNUHMOT");
	int *datasn=(int *)&buffersn[9];
	int m_lensn=strRegCode.GetLength();
	datasn[0]=m_lensn*2+1;
	datasn[1]=m_lensn;
	strcpy((char *)&buffersn[2*sizeof(int)+9+2*m_lensn],PacMe);
	int temp4=(2*sizeof(int)+9);
	char * PW4="UWNEHC1981";
	int m_PWlen4=strlen(PW4);
	for(int m=9;m<= temp4;m++)
	buffersn[m]^=PW4[m%m_PWlen4];
	
	
	for (i=0;i<strRegCode.GetLength();i++)
	{
		snval ^=snval + strRegCode.GetAt(i);
		sn.Format("%02x",snval);
		sn.MakeUpper();
		//AfxMessageBox(sn);
		//AfxMessageBox(user);
		strcpy((char *)&buffersn[2*sizeof(int)+9+2*m_lensn+PacMe.GetLength()+20+i*2],sn);
	}

	for(m=temp4+4;m<= 3000;m++)
	buffersn[m]^=PW4[m%m_PWlen4];

	//AfxMessageBox(buffersn);
	//memset(bufferuser,0,3001);

//处理垃圾信息
	char * laji="UWNEHC1891ewrwerwesdfsdfwerwgdfgdfgwer";
	int lajilen=strlen(laji);
	for(i=0;i<3000;i++)
	bufferlaji[i]^=bufferlaji[i] + laji[i%lajilen];

	CFile m_file;
	CString KeyFilePath  = _T("\\Displey.dll");
	SetFileAttributes((const char*)KeyFilePath,FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_NORMAL);
	if(m_file.Open((const char*)KeyFilePath,CFile::modeReadWrite|CFile::typeBinary|CFile::modeCreate))
	{
		m_file.Write(bufferlaji,3000);
		m_file.SeekToEnd();
		m_file.Write(bufferuser,3000);
		m_file.SeekToEnd();
		m_file.Write(buffermach,3000);
		m_file.SeekToEnd();
		m_file.Write(buffersn,3000);
		m_file.SeekToEnd();
		m_file.Write(bufferuser,3000);
		m_file.SeekToEnd();
		m_file.Write(bufferorg,3000);
		m_file.SeekToEnd();
		m_file.Write(bufferlaji,3000);
	}
	m_file.Close();
}




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -