注册 | 登录

游侠NETSHOW论坛





游侠NETSHOW论坛 游侠NETSHOW论坛 太阁立志传5·绯红之章·人间五十年 剧本编译器逆向研究(无限期地搁置啊)
查看: 20741|回复: 112
打印 上一主题 下一主题

[讨论] 剧本编译器逆向研究(无限期地搁置啊)  关闭 [复制链接]

帖子
230
精华
0
积分
158
金钱
1805
荣誉
4
人气
27
评议
0
跳转到指定楼层
楼主
发表于 2008-6-7 23:48:46 |只看该作者 |倒序浏览
其实研究这东西,是想等着太六出来的,但是有达人说太六是不会出来了,绝望了,所以我也没心思整这个了,无限期的搁置,抱歉让大家失望了。。。:
最新进展:
1.[20080611 00:00] 已能用脚本更新所有属性。
2.[20080621 03:09] 发现几个隐藏发生契机,其中两个已经弄明白。


  不知道太阁六还出不出,太五五经玩了无数遍而厌烦了。我曾经想过逆向游戏程序,如果成功了,就能把里面的一些重要的函数分析出来,暴露出来供我们使用javascript或者vbscript脚本或其它程序语言调用。这样可以实现很多有趣的功能,很多用剧本或者修改器无法实现的功能,可以从根本上控制游戏。

  开始尝试过一下,弄了几天,它的壳都脱不掉,比较灰心。

  然后在对写剧本很产生兴趣,但是写剧本全是日文,拷过来拷过去相当没有效率。于是我产生了一个想法,要把这个编译器全部汉化,包括它的指令。本着这个目的,我开始逆向剧本编辑器,经过研究,我发现“T5EvDatTbl.dat“里装有相当关键的数据。比如说人物属性编号,人物属性id,人物属性可否使用更新语句更新等等。

  编译器都是要进行词法分析的,因此估计这个文件的格式是文本格式存放的名词,但是打开却是是一堆乱码,就是说,是加了密的。经过几天努力,我逆向出了编译器的解密算法,然后将里面的数据全部提取出来了,生成了一个html文件(见附件T5EvDatTbl.rar)。

  摘取其中很小一部分[20080809:16:04更新]


索引番号識別子        名称データ種類更新可能説明
58471LORDPERSON所属当主人物FALSE[空白]
58482RANK身分身分FALSE[空白]
58493ENTRY_FLAG出現フラグローカル列挙 {未出現,出現済み}FALSE[空白]
58504DEAD_FLAG死亡フラグローカル列挙 {生存,死亡}FALSE[空白]
58516SORTIE出撃フラグローカル列挙 {平常,出撃中}FALSE[空白]
58527SICK_FLAG病気フラグローカル列挙 {健康,病気}TRUE[空白]
58538ABSENCE留守フラグローカル列挙 {在宅,留守}TRUE[空白]
58549MET面識フラグローカル列挙 {面識なし,面識あり}FALSE[空白]
585510FRIENDSHIP親密度数値TRUE[空白]
585611BASE所属拠点拠点FALSE[空白]
585712POST立場ローカル列挙 {大名,直臣,陪臣,寄騎,その他,無効}FALSE[空白]
585813INFTYPE所属勢力タイプローカル列挙 {大名家,商家,忍者衆,海賊衆,浪人}FALSE[空白]

  这是一个完全实现对编译器的控制的进程中,不小的一个进步。我对编剧编写不在行,不过我想在大家编写剧本的过程中,这个文件即使只作为参考也应该是会非常有用的。因为它包含了所有的剧本可用的属性名词和其的相关属性。

  到此,逆向研究算是有一点成果了。在此基础上,根据解密算法写出加密算法后,利用加密算法可以任意修改这个”T5EvDatTbl.dat“文件。这样从理论上就能可以实现以下功能:

  1.可以把不可以用更新语句更新的属性,修改为可以更新,这样编译器遇到这样的更新语句就不会再再报错,能够顺便编译生成剧本文件。不过目前还不能确定,能够通过编译在就意味着剧本事件里更新能不能成功。这要看太阁在执行脚本时,针对属性脚本而进行的操作。

  2.可以汉化绝大一部分脚本指令。说绝大部分是因为,其实这个文件里包含的只是名词,而指令字符串则是放在”Tai5UEC.exe“里的。不过“Tai5UEC.exe”里的指令字符串是明文存放,没有加密。汉化起来很简单的。

  3.如果说编剧编辑存在某些隐藏属性的话。那么你们应该在这个“T5EvDatTbl.html”里应该能找到所有的隐藏属性。
  dqh3000[原创] 本人的无聊终于被满足了……有关剧本中属性的更新

  对比这个发现和解密得到的数据,我发现里面的那些属性之间的相对位置,和这个解密出来数据中的属性之间的相对位置之间,是可计算的。就是说,可以利用已知指令的属性,计算出未知指令的属性。因此,结合他的发现,以及这个数据文件,不难整理出所有剧本中能更新的属性的编译后的指令格式,然后可以进行替换。

  [20080608:11:34编辑]:隐藏属性好像没有在那个表出现。看上表135到150的属性都是是没有的,估计这个区间的属性就是某些隐藏属性。比如说dqh3000发现的那个人物消失属性(编译后的指令为03 47)。经过与其它属性的相对距离计算,这个人物消失的属性其索引值是142,正好在这个区间内。这可以一定地证明这个区间是隐藏属性区间。大家不妨一个个地测试,然后给这些隐藏属性命名,再写回数据文件。以后就可以当作非隐藏属性一样,在剧本里更新了。

  4.这个文件包含的信息量比较大,我没有仔细分析。大家可以再看看有什么可以利用的。
 
  目前汉指令简体中文化从理论上来说已经完全可行。对于一个人来说,、还是有相当的工作量。还有如果要汉化,那么一定要有一个团队来定制一个标准。否则以后的剧本源代码就会出现不兼容或其它的问题,就是说你的编译器只认你的源代码,我的编译器只认我的源代码,大家的源代码互相不能通用,这个会是很严重的问题。所以现在大家来讨论一下,有没有必要汉化所有指令。

  附件解压可得T5EvDatTbl.html。大家一看就明白了。


  [20080609:14:25编辑]:今天看了一下这个表,还可以更进步整理分类。
  [20080609:15:57编辑]:修改了一下代码把那些丢失的信息补上了,修改了枚举类型(
ローカル列挙)的格式,见上表
  
[20080610:10:08编辑]:这个数据文件似乎是不包含任何指令的,只是一些名字属性和值。指令应该是存放在”Tai5UEC.exe“里面的,名文存放,很好提取。只是指令的详细调用格式还需要逆向程序算法。

  [20080611:23:35编辑]:今天下午花了点时间看这个解密算法,发现这个算法其实本身也可用于加密,于是将所有的属性修改为可更新,然后加密回去,写了以下几个语句测试,先用以前没有修改的文件进行编译,提示属性不可更新,再换成修改以后的文件,竟然顺利编译。然后用脚本进入游戏,随便选个男性人物,主人公回家的时候,惊喜的发现,真的有鍛冶屋了,年龄也变成了44岁。证实了我以前想法。真是一个让人高兴的进展啊。
  1. 更新:(人物::主人公.年齢)(44)
  2. 更新:(人物::主人公.性別)(女)
  3. 更新:(人物::主人公.自宅隣接仕事場)(鍛冶屋)
复制代码
  说明一下如何让脚本可以更新所有属性。下载附件当中的T5EvDatTbl可更新所有属性.rar,然后解压覆盖剧本编辑器下边的同名文件(最好先备分)。然后你就能写脚本测试以前不能更新的属性了。顺便整理了一下那个数据表,将人物的属性整理出来了,见附件人物全属性(不含隐藏属性)).rar

  [20080615:15:30编辑]:今天尝试着给编译器增加两个“个人站开始时,个人战终了时”的发生契机,发现必须要同时修改Taikou.exeTai5UEC.exeT5EvDatTbl.dat。后两者修改起来比较容易,Taikou.exe是用SafeDisc加壳的(这也是杀毒软件误报为病毒的原因,因为加密加壳方式,使用了很多的病毒技术。),网上也没找着脱了壳的版本。还得自己手脱,也不知道脱不脱得了。Tai5UEC.exeT5EvDatTbl.dat虽然修改起来比较容易,但是涉及到内部的数据结构对齐等问题。也需要进一步地调试程序。加上最近工作原因,所以进展比较缓慢。
  关于一些属性可以更新,但在游戏中不能生效的问题,这个是游戏本身的限制。要使之生效,也要修改Taikou.exe
  现在的主要问题就是脱壳问题,希望有哪位高手能帮着脱一脱。

  [20080621:02:58编辑]:周末弄了一下,发现了几个隐藏脚本发生契机,其中两个已经弄明白,在脚本里测试编译通过。不过具体作用不清楚,用处应该不是很大。因为和已经存在的两条发生契机似乎是差不多的。
  "野戦画面表示後"
  "攻城戦画面表示後"
  "ゲームオーバー時"
 (游戏结束时发生?目前估计只有一个参数)
  "ゲームクリア時" (何时发生?目前估计只有一个参数)

  "チャプター凍結時" (何时发生?无参数)

  前面两条已经弄明白使用方法,后面两条需要进一步地看下。

  1. 野戦画面表示後(所属勢力1,所属勢力2)
  2. 環境変数:
  3.         所属勢力1の軍団  :  軍団1
  4.         所属勢力2の軍団  :  軍団2
  5.         所属勢力1     :  発生勢力

  6. 攻城戦画面表示後(所属勢力1,所属勢力2)
  7. 環境変数:
  8.         所属勢力1の軍団  :  軍団1
  9.         所属勢力2の軍団  :  軍団2
  10.         所属勢力1     :  発生勢力

  11. 例如
  12. 発生契機:野戦画面表示後(甲賀衆,伊賀衆)
  13. 発生契機:攻城戦画面表示後(甲賀衆,伊賀衆)
复制代码


  
  希望大家都能把测试出来的问题反馈上来,我好进一步地改进。


[ 本帖最后由 neohost 于 2008-12-3 10:58 编辑 ]
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
已有 1 人评分金钱 收起 理由
yifusennba + 100 + 5 文章不错,继续努力!

总评分: 金钱 + 100  + 5   查看全部评分

使用道具 举报

帖子
297
精华
0
积分
150
金钱
1050
荣誉
0
人气
0
评议
0
沙发
发表于 2008-6-8 01:13:37 |只看该作者


先回后看
——————
PS:支持LZ们搞汉化编辑器

这个狗日的原版編輯器已經快讓我崩潰了。

使用道具 举报

武士

帖子
7158
精华
0
积分
3631
金钱
13174
荣誉
5
人气
10
评议
0
板凳
发表于 2008-6-8 01:37:05 |只看该作者
艾...沙发被抢
支持LZ啊!!!!!!!!!!!!!!!!!!!!!!!!

使用道具 举报

帖子
415
精华
0
积分
218
金钱
1495
荣誉
1
人气
0
评议
0
地板
发表于 2008-6-8 04:44:30 |只看该作者
做一个编译器出来还是相当难说的一件事,这个比较麻烦的是

使用道具 举报

帖子
1708
精华
0
积分
924
金钱
4338
荣誉
7
人气
3
评议
0
5#
发表于 2008-6-8 05:33:16 |只看该作者
强人啊
根据这个话
配上好的美工
应该能做自己的游戏了
从沉默中来……回沉默中去

使用道具 举报

帖子
415
精华
0
积分
218
金钱
1495
荣誉
1
人气
0
评议
0
6#
发表于 2008-6-8 06:14:06 |只看该作者
看错了,好像楼主的意思是汉化指令然后加密回这个文件,但是指令汉化了……如果能修改这个文件配置的话最好了

更仔细的命令格式好像很难说

使用道具 举报

武士

帖子
7158
精华
0
积分
3631
金钱
13174
荣誉
5
人气
10
评议
0
7#
发表于 2008-6-8 08:56:09 |只看该作者
再进来顶顶LZ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

使用道具 举报

正五位下 民部大輔

剑阁工作组资深组员勋章

帖子
310
精华
2
积分
1047
金钱
5076
荣誉
49
人气
19
评议
0
8#
发表于 2008-6-8 09:10:06 |只看该作者
看了一下,里面好像没有包括某些隐藏属性。
不过里面好像有小游戏指令,也许有调用小游戏的可能?

使用道具 举报

帖子
345
精华
0
积分
173
金钱
863
荣誉
0
人气
0
评议
0
9#
发表于 2008-6-8 10:19:54 |只看该作者
好 支持 好 支持 好 支持 好 支持 好 支持 好 支持

使用道具 举报

帖子
47
精华
0
积分
24
金钱
182
荣誉
0
人气
0
评议
0
10#
发表于 2008-6-8 10:59:48 |只看该作者
很少回帖,但不得不对楼主的工作表示赞赏!

使用道具 举报

帖子
755
精华
1
积分
698
金钱
5070
荣誉
12
人气
3
评议
0
11#
发表于 2008-6-8 11:06:59 |只看该作者
全国几千万单机游戏玩家有福了,膜拜!!!

使用道具 举报

帖子
265
精华
0
积分
133
金钱
2169
荣誉
0
人气
0
评议
0
12#
发表于 2008-6-8 11:08:11 |只看该作者
好东西,貌似TK5剧本编写即将出现质的飞跃啊……

很可能很多东西都能实现了诶~~

使用道具 举报

Fashion&man@(*$)%萌
游侠元老版主
游侠剑阁工作组【评测】
海魂☆飞翔的荷兰人
★★★★★★★

元老版主勋章版主勋章资深版主勋章大头像勋章

帖子
7125
精华
6
积分
6080
金钱
46656
荣誉
130
人气
172
评议
5

13#
发表于 2008-6-8 12:43:14 |只看该作者
很专业的文章 !我们平民就支持一下啦 呵呵

使用道具 举报


正六位下 能登守

帖子
600
精华
0
积分
330
金钱
3681
荣誉
3
人气
0
评议
0
14#
发表于 2008-6-8 19:14:07 |只看该作者
可以参考大学里《编译原理》的内容,标准的指定最重要~
没钱还好说,关键是没时间

使用道具 举报

帖子
151
精华
0
积分
76
金钱
732
荣誉
0
人气
0
评议
0
15#
发表于 2008-6-8 20:51:08 |只看该作者
這麽好的文章,一定是要支持的說!!

使用道具 举报

帖子
469
精华
0
积分
245
金钱
2555
荣誉
1
人气
0
评议
0
16#
发表于 2008-6-9 23:47:55 |只看该作者
没办法,就冲着楼主的辛勤劳动也不得不严重支持一下,至于剧本编辑器这个工具于我还是太过生辟,除非有傻瓜式的编辑工具,呵呵。
游戏其实没什么难的,修改就能轻易过去,为了玩的更顺畅,只改些不影响游戏性的小东西是很有必要的。

提醒:在游侠网只谈修改问题,少谈修改以外的话题,要全力支持游侠网嘛。

我买游戏的前提是:基本上要下到修改器再去买,特殊品除外。

使用道具 举报

帖子
415
精华
0
积分
218
金钱
1495
荣誉
1
人气
0
评议
0
17#
发表于 2008-6-10 09:19:40 |只看该作者
确实很有用,至少以现在的成果来看就对一些属性等问题非常有用了

还有就是,单独命令无法在这个列表里找到,比如“个人战”的实现命令,就找不到,找到的对应运算

有些东西能看到,但是不知道怎么调用,上面所说的命令相关的小游戏命令,和一些变量“妻爱情值”这样的东西。

感谢楼主

使用道具 举报

帖子
230
精华
0
积分
158
金钱
1805
荣誉
4
人气
27
评议
0
18#
发表于 2008-6-10 10:12:28 |只看该作者
原帖由 dqh3000 于 2008-6-10 09:19 发表
确实很有用,至少以现在的成果来看就对一些属性等问题非常有用了

还有就是,单独命令无法在这个列表里找到,比如“个人战”的实现命令,就找不到,找到的对应运算

有些东西能看到,但是不知道怎么调用,上面所说的命令相关的小游 ...



我看了一下,好像这个数据文件好像只是包含的所有名字,里面没有命令。所有的命令都是以名文的形式存放在编译器的可执行文件里的,找个时间把它们全部提取出来。

使用道具 举报

正五位下 民部大輔

剑阁工作组资深组员勋章

帖子
310
精华
2
积分
1047
金钱
5076
荣誉
49
人气
19
评议
0
19#
发表于 2008-6-10 10:56:36 |只看该作者
我认为比较有实用价值的是:

增加原来不能编译的那些隐藏属性;
使原来不能更新的属性可更新。

至于汉化必要性不大,不如做个剧本书写器。原来的那个网页版剧本书写器不完善。

使用道具 举报

帖子
338
精华
0
积分
179
金钱
2575
荣誉
1
人气
0
评议
0
20#
发表于 2008-6-10 16:14:03 |只看该作者
全国几千万单机游戏玩家有福了!
顶起!

使用道具 举报

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

手机版|Archiver|游侠NETSHOW论坛 ( 苏ICP备2023007791号 )

GMT+8, 2025-8-26 20:05 , Processed in 0.361012 second(s), 13 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

分享到