最近看了一下东方快车谋杀案这个游戏,下面作一个初步汉化分析。
1 F# N* W4 j6 Q6 s) @. y, R$ W
; r0 ^0 A1 J& T2 v4 J4 F字幕在\Text\Dialogue目录里,utf-16编码,明文,文件头部存在2字节的编码标志。* {# G4 i3 v* I! _* e- g
TTF字体在\Interface\Fonts目录里,替换后能见到效果。: i7 P; q- G1 ^( l q5 e5 C
看起来汉化很容易,但是修改字幕文件后发现游戏存在某种字符边界检查。
6 T$ e B- }4 T( q2 z具体来说就是
: E6 p3 b S* h8 O/ o4 H
7 c( P9 {. V$ {0 a& q' M1.每个字符的第2个字节,不大于0x09的时候,能通过字符边界检查,这时屏幕显示一个空格。. \& P Q% h( u1 i
2.每个字符的第2个字节,大于0x09的时候,被过滤,这时屏幕显示只显示前后的字符,中间无空格。
& m& N. q) d/ [' _& C% U$ O+ B$ u5 E' C A
感觉只要想办法去掉字符边界检查就行了。$ H; O1 J" F) f% v& C4 i( x, _0 I
由于这个游戏无法用OD动态调试,只能用OD载入后静态分析一下。
9 a/ R# @7 {8 b( |找到 cmp cl,0A 2处,cmp cl,9 2处。 nop 掉均无效果。
; _7 n* m5 l; f3 t- }
; a8 s1 O4 {9 T* ]# R本人对此游戏的分析暂时告一段落。 |