#include<stdio.h>
#include<conio.h>
void main()
{
FILE *rgss3a;
int point=0,rsize=0;
int key,magickey,i;
int filehead[4];
int *s;
char *cname;
if((rgss3a = fopen("Game.rgss3a","r"))==NULL)
{
printf("当前目录找不到Game.rgss3a文件.\n");
}else{
point=8;
fseek(rgss3a,point,0);
fread(&key,4,1,rgss3a);
magickey = key*9+3;
point += 4;
start:
for(i=0;i<4;i++)
{
fseek(rgss3a,point,0);
fread(&filehead[i],4,1,rgss3a);
filehead[i] = filehead[i]^magickey;
point += 4;
}
if(filehead[0] != 0)
{
rsize = filehead[3]%4==0?filehead[3]/4:filehead[3]/4+1;
s = new int[rsize];
cname = (char*)s;
for(i=0;i<rsize;i++)
{
fseek(rgss3a,point+i*4,0);
fread(&s[i],rsize,1,rgss3a);
s[i]=s[i]^magickey;
}
cname[filehead[3]] = 0x0;
printf("%s\n",cname);
point += filehead[3];
goto start;
}
getch();
}
}
#include<stdio.h>
#include<conio.h>
void main()
{
FILE *rgss3a;
int point=0,rsize=0;
int key,magickey,i;
int filehead[4];
int *s;
char *cname;
if((rgss3a = fopen("Game.rgss3a","r"))==NULL)
{
printf("当前目录找不到Game.rgss3a文件.\n");
}else{
point=8;
fseek(rgss3a,point,0);
fread(&key,4,1,rgss3a);
magickey = key*9+3;
point += 4;
start:
for(i=0;i<4;i++)
{
fseek(rgss3a,point,0);
fread(&filehead[i],4,1,rgss3a);
filehead[i] = filehead[i]^magickey;
point += 4;
}
if(filehead[0] != 0)
{
rsize = filehead[3]%4==0?filehead[3]/4:filehead[3]/4+1;
s = new int[rsize];
cname = (char*)s;
for(i=0;i<rsize;i++)
{
fseek(rgss3a,point+i*4,0);
fread(&s[i],rsize,1,rgss3a);
s[i]=s[i]^magickey;
}
cname[filehead[3]] = 0x0;
printf("%s\n",cname);
point += filehead[3];
goto start;
}
getch();
}
}