hsm570911 发表于 2023-11-26 19:56:44

Resource Tuner 代碼頁文件分析

本帖最后由 hsm570911 于 2023-11-26 21:04 编辑

前题:之前 chishingchan 前辈曾分析过 langpack.dat 语言包文件头的部份

工具:
ZlibUIN.exe:langpack.dat 解压工具
langpack.exe:查看 langpack.dat 的语言结构

Resource Tuner 2.20 语言包的秘密
http://bbs.c3.wuyou.net/forum.php?mod=viewthread&tid=417579

如何编辑:
解压 langpack.dat,保存为 langpack.txt,其编码为 ANSI (內部為 Unicode)。使用 UltraEdit 打开,在文件头加上 FF FE (成为文本文件格式)后保存。
使用 Notepad++ 开启langpack.txt后才不会变成乱码或是每字之间都有空格的情况,此时才能正常编辑。

各语言字符串文件的实际长度计算:
1.可将各个语言字符串从 langpack.txt 复制,另存为 Unicode 编码的文件。
2.以英文 English_94684.txt 为例:范围从 Englishaddrf0="Add Resource" 到 splash9="%0:s Website:" 下一行 Dutch 最前面以包含换行 ( 0D 00 0A 00)
点选 English_94684.txt ,右键菜单选择属性,此时文件大小 94700 字节,
实际的 English_94684.txt 文件大小应该是 94700-2-14 = 94684 字节。(addrf0="Add Resource" 到 splash9="%0:s Website:" + 换行 )
不包含文件头的 FF FE,2 字节。
不包含英文语言名称 English (7*2=14) 的长度,14 字节。

不过 chishingchan 前辈只解析前半部的文件头,可以简化掉不需要的语言字符串文件

至于后面的代码页部份好像没有分析,这次分享一下自己分析后的心得,分析的不好的地方请见谅。

第一段:28 种语言代码
第一段总长度8*16=128
-----------------------------------------------
1C 00 00 00 80 00 00 00 B0 02 00 00 30 03 00 00               
09 00 00 00 01 00 00 00 03 00 00 00 05 00 00 00               
06 00 00 00 07 00 00 00 08 00 00 00 0A 00 00 00
0B 00 00 00 0C 00 00 00 0D 00 00 00 0E 00 00 00
10 00 00 00 13 00 00 00 14 00 00 00 15 00 00 00
16 00 00 00 19 00 00 00 1B 00 00 00 1D 00 00 00
1F 00 00 00 24 00 00 00 2D 00 00 00 04 04 00 00
11 04 00 00 12 04 00 00 04 08 00 00 16 08 00 00
-----------------------------------------------
1C 00 00 00 28种语言
80 00 00 00 第一段总长度8*16=128
B0 02 00 00 第二段总长度 43*16=688
30 03 00 00 第一段+第二段总长度 128+688=816

第二段:172 个代码页引用 (此段是固定的)
第二段总长度 43*16=688
-----------------------------------------------
00 00 00 00 36 04 00 00 1C 04 00 00 01 14 00 00               
01 3C 00 00 01 0C 00 00 01 08 00 00 01 2C 00 00
01 34 00 00 01 30 00 00 01 10 00 00 01 18 00 00
01 20 00 00 01 40 00 00 01 04 00 00 01 28 00 00
01 1C 00 00 01 38 00 00 01 24 00 00 2B 04 00 00
2C 08 00 00 2C 04 00 00 2D 04 00 00 23 04 00 00
45 04 00 00 1A 20 00 00 1A 14 00 00 02 04 00 00
03 04 00 00 04 0C 00 00 04 14 00 00 04 08 00 00
04 10 00 00 04 04 00 00 1A 04 00 00 1A 10 00 00
05 04 00 00 06 04 00 00 65 04 00 00 13 08 00 00
13 04 00 00 09 0C 00 00 09 28 00 00 09 10 00 00
09 24 00 00 09 18 00 00 09 20 00 00 09 14 00 00
09 34 00 00 09 1C 00 00 09 2C 00 00 09 08 00 00
09 04 00 00 09 30 00 00 25 04 00 00 38 04 00 00
29 04 00 00 64 04 00 00 0B 04 00 00 0C 08 00 00
0C 0C 00 00 0C 04 00 00 0C 14 00 00 0C 18 00 00
0C 10 00 00 62 04 00 00 2F 04 00 00 56 04 00 00
37 04 00 00 07 0C 00 00 07 04 00 00 07 14 00 00
07 10 00 00 07 08 00 00 08 04 00 00 47 04 00 00
0D 04 00 00 39 04 00 00 0E 04 00 00 0F 04 00 00
21 04 00 00 5D 08 00 00 3C 08 00 00 10 04 00 00
10 08 00 00 11 04 00 00 4B 04 00 00 3F 04 00 00
57 04 00 00 12 04 00 00 40 04 00 00 26 04 00 00
27 04 00 00 6E 04 00 00 3E 08 00 00 3E 04 00 00
4C 04 00 00 3A 04 00 00 81 04 00 00 7A 04 00 00
4E 04 00 00 7C 04 00 00 50 04 00 00 61 04 00 00
6C 04 00 00 14 04 00 00 14 08 00 00 63 04 00 00
15 04 00 00 16 04 00 00 16 08 00 00 46 04 00 00
6B 04 00 00 6B 08 00 00 6B 0C 00 00 18 04 00 00
17 04 00 00 19 04 00 00 3B 24 00 00 3B 10 00 00
3B 14 00 00 3B 0C 00 00 3B 04 00 00 3B 08 00 00
3B 20 00 00 3B 18 00 00 3B 1C 00 00 4F 04 00 00
1A 0C 00 00 1A 1C 00 00 1A 08 00 00 1A 18 00 00
1B 04 00 00 24 04 00 00 0A 2C 00 00 0A 40 00 00
0A 34 00 00 0A 24 00 00 0A 14 00 00 0A 1C 00 00
0A 30 00 00 0A 44 00 00 0A 10 00 00 0A 48 00 00
0A 0C 00 00 0A 08 00 00 0A 4C 00 00 0A 18 00 00
0A 3C 00 00 0A 28 00 00 0A 50 00 00 0A 04 00 00
0A 38 00 00 0A 20 00 00 41 04 00 00 1D 04 00 00
1D 08 00 00 5A 04 00 00 49 04 00 00 44 04 00 00
4A 04 00 00 1E 04 00 00 32 04 00 00 1F 04 00 00
22 04 00 00 20 04 00 00 43 08 00 00 43 04 00 00
2A 04 00 00 52 04 00 00 34 04 00 00 35 04 00 00
-----------------------------------------------      
                                 
第三段:28国语言代码页文件
第三段总长度 14*16=224
-----------------------------------------------                                          
10 04 00 00 F6 16 00 00 06 1B 00 00 6E 12 00 00         
74 2D 00 00 D6 0F 00 00 4A 3D 00 00 46 14 00 00   
90 51 00 00 BA 10 00 00 4A 62 00 00 36 13 00 00   
80 75 00 00 CA 12 00 00 4A 88 00 00 80 10 00 00   
CA 98 00 00 BE 10 00 00 88 A9 00 00 2E 11 00 00   
B6 BA 00 00 36 10 00 00 EC CA 00 00 34 10 00 00   
20 DB 00 00 9E 11 00 00 BE EC 00 00 52 11 00 00   
10 FE 00 00 04 11 00 00 14 0F 01 00 8A 12 00 00   
9E 21 01 00 6E 10 00 00 0C 32 01 00 36 13 00 00   
42 45 01 00 B0 13 00 00 F2 58 01 00 40 12 00 00   
32 6B 01 00 8E 11 00 00 C0 7C 01 00 82 13 00 00   
42 90 01 00 A2 12 00 00 E4 A2 01 00 46 0A 00 00   
2A AD 01 00 BE 0C 00 00 E8 B9 01 00 9A 0A 00 00   
82 C4 01 00 F6 09 00 00 78 CE 01 00 AE 10 00 00   
-----------------------------------------------   128+688+224=1040(10 04 00 00)                     English 5878(F6 16 00 00)
      1040+5878=6918(06 1B 00 00)                      Arabic 4718(6E 12 00 00)
   6918+4718=11636(74 2D 00 00)                     Catalan 4054(D6 0F 00 00)
   11636+4054=15690(4A 3D 00 00)                     Czech 5190(46 14 00 00)
   15690+5190=20880(90 51 00 00)                     Swahili 4282(BA 10 00 00)
   20880+4282=25162(4A 62 00 00)                     German 4918(36 13 00 00)
   25162+4918=30080(80 75 00 00)                        Greek 4810(CA 12 00 00)
   30080+4810=34890(4A 88 00 00)                     Spanish 4224(80 10 00 00)
   34890+4224=39114(CA 98 00 00)                     Finnish 4286(BE 10 00 00)
   39114+4286=43400(88 A9 00 00)                     French 4398(2E 11 00 00)         
   43400+4398=47798(B6 BA 00 00)                      Hebrew 4150(36 10 00 00)
   47798+4150=51948(EC CA 00 00)                  Hungarian 4148(34 10 00 00)
   51948+4148=56096(20 DB 00 00)                         Italian 4510(9E 11 00 00)
   56096+4510=60606(BE EC 00 00)                         Dutch 4434(52 11 00 00)
   60606+4434=65040(10 FE 00 00)                   Norwegian 4356(04 11 00 00)
   65040+4356=69396(14 0F 01 00)                        Polish 4746(8A 12 00 00)
   69396+4746=74142(9E 21 01 00)               Portuguese 4206(6E 10 00 00)
   74142+4206=78348(0C 32 01 00)                      Serbian 4918(36 13 00 00)
   78348+4918=83266(42 45 01 00)                        Slovak 5040(B0 13 00 00)
   83266+5040=88306(F2 58 01 00)                      Swedish 4672(40 12 00 00)
   88306+4672=92978(32 6B 01 00)                        Turkish 4494(8E 11 00 00)
   92978+4494=97472(C0 7C 01 00)                   Slovenian 4994(82 13 00 00)
97472+4994=102466(42 90 01 00)                      Basque 4770(A2 12 00 00)
102466+4770=107236(E4 A2 01 00)      Chinese (Taiwan) 2630(46 0A 00 00)
107236+2630=109866(2A AD 01 00)                   Japanese 3262(BE 0C 00 00)
109866+3262=113128(E8 B9 01 00)                     Korean 2714(9A 0A 00 00)
113128+2714=115842(82 C4 01 00)            Chinese (PRC) 2550(F6 09 00 00)
115842+2550=118392(78 CE 01 00)                Portuguese 4270(AE 10 00 00)

左侧是偏移地址,右侧是文件内容的长度。可以把简,繁文件内未翻译的部份补全,再按照文件的长度修改偏移地址和长度即可。
注:这28个文本文件的文件头包含 FF FE,文件尾包含换行 0D 00 0A 00。

依照此分析可以简化语言代码页文件。删除多余的。

yyz2191958 发表于 2023-11-26 20:08:04

谢谢分享

nathan6498 发表于 2023-11-26 20:12:41

谢谢分享

车厘子 发表于 2023-11-26 20:31:34

感谢大佬分享

tanglf 发表于 2023-11-26 21:12:55

谢谢楼主,技术啊

chishingchan 发表于 2023-11-26 21:51:24

我也只阴差阳错的弄好了一个英中语言包。后面随意改再整合就出错了!后面忙其他的把这给搁下了。

呵呵#1861 发表于 2023-11-26 23:33:13

学习一下

yc2428 发表于 2023-11-27 09:51:46

谢谢分享

zqfeng01 发表于 2023-11-27 11:12:53

谢谢分享

TV123456789 发表于 2023-11-27 11:39:25


谢谢分享

无犹启动 发表于 2024-2-7 13:19:22

谢谢分享

martin313 发表于 2024-2-7 13:36:55

牛逼
有没有现成的分享

hehuiying 发表于 2024-4-16 04:31:43

谢谢分享

无犹启动 发表于 2024-4-17 18:29:28

谢谢分享
页: [1]
查看完整版本: Resource Tuner 代碼頁文件分析