最近看了一下东方快车谋杀案这个游戏,下面作一个初步汉化分析。3 z) _8 R# S8 s& k. I' x7 X
8 F) G) s3 S7 v( Y' ~字幕在\Text\Dialogue目录里,utf-16编码,明文,文件头部存在2字节的编码标志。( Y% F( C( u( R
TTF字体在\Interface\Fonts目录里,替换后能见到效果。
3 q6 ]/ S; Q" y& K0 y/ g6 c( F7 W( R看起来汉化很容易,但是修改字幕文件后发现游戏存在某种字符边界检查。
4 f3 C$ p7 ^% Q( U/ n8 b1 D具体来说就是; @5 b$ W! _; U: J3 Y- n
# B$ e: T: p+ E# K* G6 H- s$ \
1.每个字符的第2个字节,不大于0x09的时候,能通过字符边界检查,这时屏幕显示一个空格。; X3 l, U* L8 _. v8 d8 {+ w. o5 z
2.每个字符的第2个字节,大于0x09的时候,被过滤,这时屏幕显示只显示前后的字符,中间无空格。8 g. v( O% G) [
4 h/ c1 ~0 K$ f/ ~4 K, n感觉只要想办法去掉字符边界检查就行了。
. w2 i+ D2 r3 S5 A4 }由于这个游戏无法用OD动态调试,只能用OD载入后静态分析一下。
8 V! m( W, T( ?$ f( {: i找到 cmp cl,0A 2处,cmp cl,9 2处。 nop 掉均无效果。. \& E, A$ J0 F0 i- E9 `: ^
7 b0 P3 Q) d8 d O3 X
本人对此游戏的分析暂时告一段落。 |