设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3334|回复: 2
打印 上一主题 下一主题

[有事请教] 召唤一只比较精通C语言的触手……

[复制链接]

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
39832
在线时间
7490 小时
注册时间
2009-7-6
帖子
13485

开拓者贵宾

跳转到指定楼层
1
发表于 2012-3-29 12:51:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1星屑
本帖最后由 fux2 于 2012-3-29 15:33 编辑

由于咱这里没学过C语言,只能看书照着写了一点代码,但是输出有点小问题,麻烦各位帮忙看一下。
通过反汇编咱这里得知了rgss3a文件名的算法,但是输出的时候会输出几个诡异的字符,不知道原因为何。
拜谢!
(数据部分解密就不公开了谢谢合作。)

C 代码复制
  1. #include<stdio.h>
  2. #include<conio.h>
  3. void main()
  4. {
  5.         FILE *rgss3a;
  6.         int point=0,rsize=0;
  7.         int key,magickey,i;
  8.         int filehead[4];
  9.         int *s;
  10.         char *cname;
  11.         if((rgss3a = fopen("Game.rgss3a","r"))==NULL)
  12.         {
  13.                 printf("当前目录找不到Game.rgss3a文件.\n");
  14.         }else{
  15.                 point=8;
  16.                 fseek(rgss3a,point,0);
  17.                 fread(&key,4,1,rgss3a);
  18.                 magickey = key*9+3;
  19.                 point += 4;
  20. start:
  21.                 for(i=0;i<4;i++)
  22.                 {
  23.                         fseek(rgss3a,point,0);
  24.                         fread(&filehead[i],4,1,rgss3a);
  25.                         filehead[i] = filehead[i]^magickey;
  26.                         point += 4;
  27.                 }
  28.                 if(filehead[0] != 0)
  29.                 {
  30.                         rsize = filehead[3]%4==0?filehead[3]/4:filehead[3]/4+1;
  31.                         s = new int[rsize];
  32.                         cname = (char*)s;
  33.                         for(i=0;i<rsize;i++)
  34.                         {
  35.                                 fseek(rgss3a,point+i*4,0);
  36.                                 fread(&s[i],rsize,1,rgss3a);
  37.                                 s[i]=s[i]^magickey;
  38.  
  39.                         }
  40.                         cname[filehead[3]] = 0x0;
  41.                         printf("%s\n",cname);
  42.                         point += filehead[3];
  43.                         goto start;
  44.                 }
  45.                 getch();
  46.         }
  47. }

最佳答案

查看完整内容

fopen("Game.rgss3a","r") "r" to "rb"

点评

"r" to "rb"  发表于 2012-3-29 17:09
[url=home.php?mod=space&username=orzfly]@orzfly[/url][url=home.php?mod=space&username=禾西]@禾西[/url]  发表于 2012-3-29 13:18
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托

Lv1.梦旅人

炎发灼眼的讨伐者

梦石
0
星屑
50
在线时间
1707 小时
注册时间
2007-8-4
帖子
904
2
发表于 2012-3-29 12:51:20 | 只看该作者
fopen("Game.rgss3a","r")

"r" to "rb"
RMXP&amp;RMVX通用Web化完成- -|||
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
43
在线时间
233 小时
注册时间
2012-3-4
帖子
986
3
发表于 2012-3-29 13:52:48 | 只看该作者
对C无爱,坐等LZ的问题解决。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-7 15:49

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表