QUOTE
原版:
0007000000264779726F3A000900000081
其中264779726F3A是要汉化的英文“&Gyro:”
汉化后的中文为“陀螺效应:”
0007000000CDD3C2DDD0A7D3A63A0081
由于超长较多,吧后面的0009等字串也“覆盖”掉了,而我不能确定这个0009有没有用,于是就从原版中复制,手动修补为(当然,长度符07已手动改为0A):
000A000000CDD3C2DDD0A7D3A63A000900000081
因此,我认为当前的超长强制写入是覆盖式写入,强制覆盖后面的内容,如果后面是有足够多的00,应该不用担心,如果不是,则需要追加式的写入,就是这种了:
000A000000CDD3C2DDD0A7D3A63A000900000081
不覆盖后面原有内容,自动加长。
当然,我这个的例子,目标对象是不检查文件总长度,所以怎么追加都无所谓。如果是PE或其他文件,还是需要追加后手动删除足够的空字节维持文件长度。但我这里讨论的关键是:
“不检查超长字符串”应该有两个选项:“覆盖写入”和“追加写入”。
当然,如果可行的话,当选择“追加写入”后,建议在全部回写完毕时提示“本次回写总共追加了0A字节”这样的文字。
追加写入会增加文件长度,现在的代码完全不是基于这个考虑的:(
现在使用的是 MemMap 方式打开文件的,不能增加文件长度(策略上)。
QUOTE
这几个文件都提示“◇ 未找到合适的字符串:...”
gsmission.spb需要提取MISSIONS,gspilotrecord.spb需要提取PILOT RECORDS,dlgassignbook.spb需要提取SETTINGS - CONTROLS、CALIBRATION、BUTTONS / KEYS、CONTROL AXES、FORCES等字串
[attachmentid=23157]
gssettings.spb提取不完整,如:
0x00000B22,0032=Low|Low|Medium Low|Medium High|H
0x00000BFA,0067=lick to choose sound settings for engines, air traffic control, coc
0x00000CC0,0032=to modify keyboard and joystick
0x00000D59,0067=lick to adjust flight model, crash detection, and other realism set
对了,同样的文件,我使用4月20号发布的版本做相同的提取,不存在上述问题,上述问题是最新版本才会出现。
如果是因为后面增加字符串长度修改所导致,那么不妨放弃吧。原来的功能就很好了,呵呵
因为4.20的版本才是比较正式的,后来在这里贴出来的,只是为了.NET这种情况的。两个版本不具有通用性啊。
我说明了,如果.NET这种模式也要支持的话,我会把这功能合并到最终版本中。现在看来,似乎不合适。