| 赞 | 486 |
| VIP | |
| 好人卡 | |
| 积分 | 498 |
| 经验 | |
| 最后登录 | 2026-10-13 |
| 在线时间 | 7956 小时 |
老黄鸡
- 梦石
- 4
- 星屑
- 45800
- 在线时间
- 7956 小时
- 注册时间
- 2009-7-6
- 回帖
- 13338
   
|
悬赏1星屑已解决
本帖最后由 fux2 于 2012-3-29 15:33 编辑
由于咱这里没学过C语言,只能看书照着写了一点代码,但是输出有点小问题,麻烦各位帮忙看一下。
通过反汇编咱这里得知了rgss3a文件名的算法,但是输出的时候会输出几个诡异的字符,不知道原因为何。
拜谢!
(数据部分解密就不公开了谢谢合作。)
[pre lang="C" line="1"]#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,4,1,rgss3a);
filehead = filehead^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,rsize,1,rgss3a);
s=s^magickey;
}
cname[filehead[3]] = 0x0;
printf("%s\n",cname);
point += filehead[3];
goto start;
}
getch();
}
}[/pre] |
最佳答案
查看完整内容
fopen("Game.rgss3a","r")
"r" to "rb"
|