最近看了一下东方快车谋杀案这个游戏,下面作一个初步汉化分析。
! e- [. I# Z7 _5 T. P7 b4 c/ I5 a7 |4 \7 N9 e
字幕在\Text\Dialogue目录里,utf-16编码,明文,文件头部存在2字节的编码标志。" I8 r. ?# t6 L* ?7 f
TTF字体在\Interface\Fonts目录里,替换后能见到效果。% x& u N* O: [$ s
看起来汉化很容易,但是修改字幕文件后发现游戏存在某种字符边界检查。$ @/ C: C! X: K. f4 ]4 L8 S; F5 P2 ~
具体来说就是3 v! F5 c4 A# q5 ?# ^3 w2 Y3 M
/ z+ p6 q, b0 X+ u- E8 }
1.每个字符的第2个字节,不大于0x09的时候,能通过字符边界检查,这时屏幕显示一个空格。
9 B; r/ P6 H3 O2 N8 t# S2.每个字符的第2个字节,大于0x09的时候,被过滤,这时屏幕显示只显示前后的字符,中间无空格。
3 p* Y* Y- q% S6 \
9 J* m# B- V* n- W+ u感觉只要想办法去掉字符边界检查就行了。
3 ~9 J0 X# f% X( t由于这个游戏无法用OD动态调试,只能用OD载入后静态分析一下。/ x. k7 W1 u+ k. f, x* \
找到 cmp cl,0A 2处,cmp cl,9 2处。 nop 掉均无效果。' t$ Y6 g, ?1 `+ N% A" G5 m8 l
5 W( _1 g) s& }; _
本人对此游戏的分析暂时告一段落。 |