📄 ace.bak
字号:
}
}
else fsetpos(ifp, &pos);
}
if(temp==0 || temp==EOF) break;
}
if(count==0)
{layer=(struct layer_obj *) calloc(++count, sizeof(struct layer_obj));
sprintf(layer[0].name,"0");
}
for(i=0;i<count;i++)
{layer[i].status=TRUE;
layer[i].priority=1;
layer[i].depth=.25;
layer[i].arc=IDD_EITHERARC;
layer[i].zchar='Z';
}
fclose(ifp);
return count;
}
BOOL CALLBACK LicenseDlgProc (HWND hDlg, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
static char license[50], user[50];
switch (iMsg)
{
case WM_INITDIALOG :
if(check_key(user, license)==FALSE)
{sprintf(user,"EVALUATION");
sprintf(license,"000000000");
}
SetWindowText(GetDlgItem(hDlg, IDD_LICENSE),license);
SetWindowText(GetDlgItem(hDlg, IDD_USER),user);
return TRUE ;
case WM_COMMAND :
switch (LOWORD (wParam))
{
case IDD_OK :
EndDialog(hDlg, 0);
return TRUE ;
}
break;
}
return FALSE ;
}
BOOL CALLBACK EndDlgProc (HWND hDlg, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
switch (iMsg)
{
case WM_COMMAND :
switch (LOWORD (wParam))
{
case IDD_OK :
EndDialog(hDlg, 0);
return TRUE ;
}
break;
}
return FALSE ;
}
void GetDir(char num, char dir[])
{
int iTemp;
static char szWinDir[_MAX_PATH], szAceIni[_MAX_PATH], szString[100];
FILE *ifp;
GetWindowsDirectory(szWinDir, _MAX_PATH);
sprintf(szAceIni,"%s\\ace.ini",szWinDir);
if((ifp=fopen(szAceIni,"r"))!=NULL)
{while((iTemp=fscanf(ifp,"%s",szString))!=EOF && strcmp(szString,"[1]")!=0);
if(iTemp!=EOF)
{iTemp=fgetc(ifp);
while(1)
{while(iTemp!=EOF && iTemp!='\n' && iTemp!='[') iTemp=fgetc(ifp);
if(iTemp==EOF || iTemp=='[') break;
iTemp=fgetc(ifp);
if(iTemp==num && (iTemp=fgetc(ifp))=='=')
{fgets(dir,_MAX_PATH,ifp);
iTemp=strlen(dir);
if(iTemp>1) dir[iTemp-1]=0;
if(iTemp>2 && dir[iTemp-2]=='\\') dir[iTemp-2]=0;
break;
}
}
}
fclose(ifp);
}
}
void SaveDir(char num, char dir[])
{
int iTemp;
static char szWinDir[_MAX_PATH], szAceIni[_MAX_PATH], szString[_MAX_PATH];
FILE *ifp, *ofp;
GetWindowsDirectory(szWinDir, _MAX_PATH);
sprintf(szAceIni,"%s\\ace.ini",szWinDir);
ofp=fopen("temp.tmp","w");
if((ifp=fopen(szAceIni,"r"))!=NULL)
{while(1)
{if((iTemp=fgetc(ifp))=='[')
{fputc(iTemp,ofp);
if((iTemp=fgetc(ifp))=='1')
{fputc(iTemp,ofp);
if((iTemp=fgetc(ifp))==']')
{fputc(iTemp,ofp);
break;
}
}
}
if(iTemp==EOF) break;
fputc(iTemp, ofp);
}
if(iTemp!=EOF)
{iTemp=fgetc(ifp);
while(1)
{while(iTemp!=EOF && iTemp!='\n') {fputc(iTemp,ofp); iTemp=fgetc(ifp);}
if(iTemp==EOF) break;
fputc(iTemp,ofp); iTemp=fgetc(ifp);
if(iTemp==num)
{fputc(iTemp,ofp); iTemp=fgetc(ifp);
if(iTemp=='=')
{fputc(iTemp,ofp);
fgets(szString,_MAX_PATH,ifp);
fprintf(ofp,"%s\n",dir);
iTemp=fgetc(ifp);
}
}
}
}
fclose(ifp);
}
fclose(ofp);
ifp=fopen("temp.tmp","r");
ofp=fopen(szAceIni,"w");
while((iTemp=fgetc(ifp))!=EOF) fputc(iTemp, ofp);
fclose(ifp);
fclose(ofp);
remove("temp.tmp");
}
int check_key(char user[], char license[])
{
int i, first, last, match=0, match2=0, match3=0, against=0, against2=0, against3=0, package, temp, oldlic=TRUE;
static char SSN[]="409532060", key[10];
static char szAcePath[_MAX_PATH], szLicense[_MAX_PATH] ;
FILE *ifp;
GetDir('1',szAcePath);
sprintf(szLicense,"%s\\ace.lic",szAcePath);
//check for old license
if((ifp=fopen("ace.lic","r"))!=NULL)
{if((first=fgetc(ifp))==EOF) {oldlic=FALSE; goto DONE;}
first=first-'D';
if((last=fgetc(ifp))==EOF) {oldlic=FALSE; goto DONE;}
last=last-'Y';
for(i=0;i<9;i++)
{if(i<first)
{if((user[i]=fgetc(ifp))==EOF) {oldlic=FALSE; goto DONE;}
user[i]=user[i]-SSN[i];
}
if(i==first && last>0) user[i]=' ';
if(i>first && i<first+last+1)
{if((user[i]=fgetc(ifp))==EOF) {oldlic=FALSE; goto DONE;}
user[i]=user[i]-SSN[i];
}
if((license[i]=fgetc(ifp))==EOF) {oldlic=FALSE; goto DONE;}
license[i]=license[i]-SSN[i];
if((key[i]=fgetc(ifp))==EOF) {oldlic=FALSE; goto DONE;}
if(i<first+last) key[i]=key[i]-user[i];
else key[i]=key[i]-SSN[i];
}
for(i=9;i<first+last+1;i++)
{if(i!=first)
{if((user[i]=fgetc(ifp))==EOF) {oldlic=FALSE; goto DONE;}
user[i]=user[i]-SSN[i%9];
}
else user[i]=' ';
}
if(strcmp(SSN,key)!=0) {oldlic=FALSE; goto DONE;}
}
else return FALSE;
DONE:
fclose(ifp);
if(oldlic==TRUE) //replace old license with new one
{if((ifp=fopen("ace.lic","w"))!=NULL)
{for(i=0;i<9;i++) match2=match=match+license[i];
for(i=0;i<strlen(user);i++) match3=match=match+user[i];
match2=match2%26+65;
match3=match3%26+65;
match=match+'A'+match2+match3;
match=match%26+65;
fputc('A',ifp);
for(i=0;i<9;i++)
{if(i+1==5) fputc('-',ifp);
fputc(license[i]-48+65+SSN[i]-48+5,ifp);
}
fputc('-',ifp);
fputc(match,ifp);
fputc(match2,ifp);
fputc(match3,ifp);
for(i=0;i<strlen(user);i++)
{if((i+3)%5==0) fputc('-',ifp);
if(user[i]==' ') fputc('1',ifp);
else if(user[i]>=97) fputc((user[i]-97+SSN[i%9]-48+8)%26+65,ifp);
else fputc((user[i]-65+SSN[i%9]-48+8)%26+97,ifp);
}
}
else return FALSE;
fclose(ifp);
}
//check for valid license
if((ifp=fopen("ace.lic","r"))!=NULL)
{if((package=fgetc(ifp))==EOF) {fclose(ifp); return FALSE;}
for(i=0;i<9;i++)
{if((temp=fgetc(ifp))==EOF){fclose(ifp); return FALSE;}
if(temp=='-' && (temp=fgetc(ifp))==EOF){fclose(ifp); return FALSE;}
license[i]=temp+48-65-SSN[i]+48-5;
}
if((match=fgetc(ifp))==EOF){fclose(ifp); return FALSE;}
if(match=='-' && (match=fgetc(ifp))==EOF){fclose(ifp); return FALSE;}
if((match2=fgetc(ifp))==EOF){fclose(ifp); return FALSE;}
if(match2=='-' && (match2=fgetc(ifp))==EOF){fclose(ifp); return FALSE;}
if((match3=fgetc(ifp))==EOF){fclose(ifp); return FALSE;}
if(match3=='-' && (match3=fgetc(ifp))==EOF){fclose(ifp); return FALSE;}
i=0;
while((temp=fgetc(ifp))!=EOF && temp!='\n')
{if(temp=='-' && (temp=fgetc(ifp))==EOF){continue;}
if(temp=='1') user[i]=' ';
else if(temp>=97) {user[i]=temp-(SSN[i%9]-48)-8; if(user[i]<97) user[i]=user[i]+26; user[i]=user[i]-32;}
else {user[i]=temp-(SSN[i%9]-48)-8; if(user[i]<65) user[i]=user[i]+26; user[i]=user[i]+32;}
i++;
}
user[i]=0;
for(i=0;i<9;i++) against2=against=against+license[i];
for(i=0;i<strlen(user);i++) against3=against=against+user[i];
against=against+package+match2+match3;
against=against%26+65;
against2=against2%26+65;
against3=against3%26+65;
if(match!=against){fclose(ifp); return FALSE;}
if(match2!=against2){fclose(ifp); return FALSE;}
if(match3!=against3){fclose(ifp); return FALSE;}
}
else return FALSE;
fclose(ifp);
user[25]=0;
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -