我正在尝试解压 Android 游戏存档文件 (.NPK)。
游戏是“Nvidia Glowball demo”(它已经预装在我的安卓平板电脑上)
存档结构看似简单,却解压不了数据。
档案结构:
4 bytes - "BE EF CA FE" signature
4 bytes - File headers count (little-endian)
[File headers]
4 bytes - "BE EF CA FE" signature
[Files data]
文件头结构:
4 bytes - File name length (little-endian)
[File name]
8 bytes - Unknown (not a checksum, signature?)
8 bytes - File offset (little-endian)
8 bytes - Compressed size (little-endian)
8 bytes - Uncompressed size? (little-endian)
文件示例:
initprescenecommon.txt
标头(10 字节压缩,2 字节未压缩,未知字段= 1033E64E):
A373h: 16 00 00 00 69 6E 69 74 70 72 65 73 63 65 6E 65 ....initprescene
A383h: 63 6F 6D 6D 6F 6E 2E 74 78 74 10 33 E6 4E 00 00 common.txt.3.N..
A393h: 00 00 F3 45 41 01 00 00 00 00 0A 00 00 00 00 00 ...EA...........
A3A3h: 00 00 02 00 00 00 00 00 00 00 ..........
数据:
141:45F3h: 1A F3 84 8A 6F 6F 6A 49 62 77 ....oojIbw
teleporter1_enter.txt
标头(10 字节压缩,2 字节未压缩,未知字段= 1933E64E):
A490h: 15 00 00 00 74 65 6C 65 70 6F 72 74 65 72 31 5F ....teleporter1_
A4A0h: 65 6E 74 65 72 2E 74 78 74 19 33 E6 4E 00 00 00 enter.txt.3.N...
A4B0h: 00 58 52 41 01 00 00 00 00 0A 00 00 00 00 00 00 .XRA............
A4C0h: 00 02 00 00 00 00 00 00 00 .........
数据:
141:5258h: 1A F3 84 8A 6F 6F 6A 49 62 77 ....oojIbw
炉排输入.txt
标头(19 字节压缩,11 字节未压缩,未知字段= 1033E64E):
A1A8h: 0F 00 00 00 67 72 61 74 65 5F 65 6E 74 65 72 2E ....grate_enter.
A1B8h: 74 78 74 10 33 E6 4E 00 00 00 00 8E 33 41 01 00 txt.3.N.....3A..
A1C8h: 00 00 00 13 00 00 00 00 00 00 00 0B 00 00 00 00 ................
A1D8h: 00 00 00 ...
数据:
141:338Eh: 1A F3 94 40 25 A2 19 40 28 43 2E 8A 88 6D 6A 77 ...@%..@(C...mjw
141:339Eh: 10 6C FA .l.
这三个文件的压缩大小比未压缩的大。我认为这是因为这些是文本文件。例如 balltextures_entrance.nma 文件有 338 字节压缩和 3263 字节未压缩。
请注意,initprescenecommon.txt 和 teleporter1_enter.txt 具有相同的数据,但“未知字段”不同。
有没有人有一些想法?