最近看了一下东方快车谋杀案这个游戏,下面作一个初步汉化分析。
3 Z/ w. U8 ?# w. ?. x0 s
2 _: n% N. C4 Z/ X字幕在\Text\Dialogue目录里,utf-16编码,明文,文件头部存在2字节的编码标志。
y/ \# Z* [9 H1 c" ^- sTTF字体在\Interface\Fonts目录里,替换后能见到效果。
6 T, H1 i4 @$ h& \看起来汉化很容易,但是修改字幕文件后发现游戏存在某种字符边界检查。$ s% J- Y- f3 z: @' I
具体来说就是" ?9 F- y' c1 ^% O" Z
% U9 a- E2 T2 v1.每个字符的第2个字节,不大于0x09的时候,能通过字符边界检查,这时屏幕显示一个空格。
6 f+ D ]( b: q0 r' N) I2.每个字符的第2个字节,大于0x09的时候,被过滤,这时屏幕显示只显示前后的字符,中间无空格。
$ t- x# R' Z+ ~' I; X; L& A& p9 M# w0 A# [, |6 q# P6 t- D( I8 L
感觉只要想办法去掉字符边界检查就行了。: n8 I; l. c8 r; I% R2 C) o
由于这个游戏无法用OD动态调试,只能用OD载入后静态分析一下。9 p2 Z) ]! ^' {1 u# p8 W- T6 ^
找到 cmp cl,0A 2处,cmp cl,9 2处。 nop 掉均无效果。
' `0 X8 d/ m6 ]0 [" _$ z% P6 D& Q% j+ K: a+ A. C* Z
本人对此游戏的分析暂时告一段落。 |