📄 makekeyfile.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 + -