首页
社区
课程
招聘
[原创]仙剑3剧情控制码解析和cpk格式分析
发表于: 2012-10-14 03:40 22157

[原创]仙剑3剧情控制码解析和cpk格式分析

2012-10-14 03:40
22157

上次发了个编译pyside的帖子拿了个精怪不好意思的, 翻了翻硬盘决定发点存货出来.
存货之一, 仙剑的sce反编译和编译工具, 叫做SceCompiler, 当然因为是坑掉的东西, 刚看了看居然还有Longkui拼写成longui问题, 我已经无法确认是整理官方头文件时候拷贝错误还是他夹杂的头文件确实是旧版错误的了.
顺便一提 没想到那时候的帖子还在
http://bbs.gameres.com/showthread.asp?threadid=2511

这个设计的初衷是能够反编译sce成半吊子的脚本, 然后再修改对话后编译的sce能够被引擎识别. 做到脚本和源文件一样那是不大可能的了, 但是sce一样那是可以的. 首先请看截图.


左侧是官方打包时候, 混在了游戏资源里面的策划资源. 同时混在里面的还有3ds的场景, 粒子系统参数说明的doc, 各种.bak等等等等.
右侧是从M23.cpk里面提取的m23.sce反编译后的结果, 当然注释部分是反不出来的… 还有一些循环结构也需要润色.
为啥要做这个东西的说来话长了, 我只记得雪见跳炉时候老子正在吃白吉馍, 一把攥的白吉馍的肥肉汁液飞溅, 马上读取存档, 第二次是龙葵妹妹跳了!!!
在妹子和妹妹之间, 当然我再次选择了龙葵妹妹, 千年之前就为了哥哥受苦, 起码这辈子一定要保护好, Load, 雪见又跳了一次, 可怜我还是第一次玩这种虐心的游戏, 以前一直打怪时候倒不觉得, 忽然少了一个人, 那种心中少了一块的感觉是怎么的一回事…
当时到寰宇之星论坛发了一通牢骚以后, 我也意识到要什么隐藏结局那是不可能的, 但是天无绝人之路, 有一次仙三打补丁打了一半崩溃了. 再启动游戏, 来个提示, lzo block错误什么的, 顿时我就跟打了鸡血一样兴奋了起来, 那时候正好所在的网站喜迎改版, 喝了一肚子啤酒滚回网站就开始打开WinHex, 大眼瞪小眼地想要把文件解出来.
怎么找到头绪的我也记不得了, 最后取得进展还是因为music.cpk和movie_end.cpk吧, 那时候有个工具叫做MediaRipper32吧, 是根据在流里面搜文件头部特征来提取文件的, 从这两个文件里面提取出mp3和bik以后, 顺利地从WinHex搜到了同样内容所在的地址, 再搜到了记录地址和大小的索引信息, 最后是把前后的看起来像是文件内部偏移的值都跳转一遍, 找到了文件名.
PS: 其实刚写帖子时候弄错了, 刚翻出了以前记下来的wps文件, 发现是靠FileMon这种原始的手段, 监控游戏读取文件时候都从什么位置, 读取了几个字节做为突破口的, 然后去WinHex里面把对应的数据复制出来分析.
具体读取的流程可以去看MainUnt.pas里面的OpenCpkThreadExecute这个函数, 这里大概简述一下.

  TVMBR = packed record
    Magic:     array[0..2] of Byte;//RST
    RevM:      Byte;  //$1A
    Rev1:      DWORD; //$01,00,00,00
    VFatOffset: DWORD;//$80
    EmbOffset: DWORD; //$00E00080
    Rev2:      DWORD; //00,80,00,00
    BlockNum:  DWORD; //记录数
    RevZ:      DWORD; //00000000
    RevVF1:    DWORD; //80
    BlockNum2: DWORD;
    Rev3:      DWORD;//00,80,00,00
    RevZ2:     DWORD;//0000000
    CpkSize:   DWORD;//整个Cpk长度
    RevNU:     array[0..$4F] of Byte;
  end;
  TRecBlock = packed record
    vID:      DWORD;	// 记录ID
    Rev2:     DWORD;	// 节点种类
    ParentvID: DWORD;	// 上级ID
    Offset:   DWORD;	// 偏移
    lzosize:  DWORD;	// 压缩后尺寸
    filesize: DWORD;	// 原始尺寸
    RevFnLen: Integer;	// 名称长度
    RecIdx:   DWORD;
  end;

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 6
支持
分享
最新回复 (37)
雪    币: 316
活跃值: (128)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
2
抢沙发啊!!!!!!!!!!!!!
2012-10-14 03:45
0
雪    币: 97697
活跃值: (200799)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
3
Support!
上传的附件:
2012-10-14 03:51
0
雪    币: 316
活跃值: (128)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
4
[QUOTE=linhanshi;1108972]Support!
[/QUOTE]

林版还不睡觉啊,小心身体。
2012-10-14 03:53
0
雪    币: 107
活跃值: (37)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
嘿嘿,Delphier,我骄傲
2012-10-14 04:38
0
雪    币: 6
活跃值: (1125)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我擦,游戏资源解密,我完全不懂了,膜拜lz
2012-10-14 08:08
0
雪    币: 3758
活跃值: (3337)
能力值: ( LV15,RANK:500 )
在线值:
发帖
回帖
粉丝
7
1楼的附件更新了下加了个010Editor的CPack模版. sce模版做起来可能比较麻烦, 主要是想搞定编辑, 如果能够编辑对话字串时候自动修改所有跳转就好了. 看看下个周末是否能搞出来吧.
上传的附件:
2012-10-14 08:31
0
雪    币: 408
活跃值: (156)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
8
半仙又复活了。。。
2012-10-14 09:31
0
雪    币: 2882
活跃值: (1267)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yjd
9
强悍,支持。。
2012-10-14 09:50
0
雪    币: 1233
活跃值: (907)
能力值: ( LV12,RANK:750 )
在线值:
发帖
回帖
粉丝
10
我靠GameRes论坛,我以前经常混那里的vb板块的!!!好怀恋啊~~~~
2012-10-14 09:52
0
雪    币: 107
活跃值: (404)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
有意思的东东.....

同怀念GameRes...嘿嘿
2012-10-14 13:27
0
雪    币: 73
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
只能膜拜,不能学习
2012-10-14 14:27
0
雪    币: 1579
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
我靠,我这才发现牛人,半夜都不睡觉的。
2012-10-14 15:55
0
雪    币: 47147
活跃值: (20425)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
14
喜欢看半仙的作品
2012-10-15 19:51
0
雪    币: 433
活跃值: (1870)
能力值: ( LV17,RANK:1820 )
在线值:
发帖
回帖
粉丝
15
没玩过仙剑,文章也完全看不懂,只能膜拜了……
2012-10-15 21:00
0
雪    币: 2015
活跃值: (902)
能力值: ( LV12,RANK:1000 )
在线值:
发帖
回帖
粉丝
16
快闪,老师来网吧抄人了!
2012-10-15 22:32
0
雪    币: 201
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
写的真好 技术好 还是文艺青年
2012-10-15 22:34
0
雪    币: 3
活跃值: (81)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
仙3玩N久了还没到头
2012-10-15 22:35
0
雪    币: 201
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
写的好 还是文艺青年  真心想知道没有天赋的人怎么才能炼成像这样的高手
2012-10-15 22:36
0
雪    币: 3758
活跃值: (3337)
能力值: ( LV15,RANK:500 )
在线值:
发帖
回帖
粉丝
20
天啊看雪老大也来了~~ 下次咱不玩文艺了, 来写个010Editor的模版的使用教程吧, 授人以鱼不如授人以渔啊
2012-10-15 23:43
0
雪    币: 1919
活跃值: (901)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
21
最近爆发了哟
2012-10-16 00:37
0
雪    币: 287
活跃值: (583)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
22
我是来顶最后一句话的
2012-10-16 11:10
0
雪    币: 357
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
看完我只想说技术宅改变世界
2012-10-16 12:17
0
雪    币: 347
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
牛X,这也能搞定~
2012-10-16 13:07
0
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
围观!!!!
2012-10-16 15:07
0
游客
登录 | 注册 方可回帖
返回
//