我正在用zlib膨胀算法挣扎几周。
我想从名为Tibia的流行游戏中解压缩数据包。他们用zlib膨胀阿尔法压缩它。但似乎有些事情发生了变化。你能检查一下吗,也许你会发现我遗失的东西?
数据包压缩: - 无法直接充气(原始霍夫曼固定编码 - 可能)
DA 22 A6 CB 10 99 5F AA 50 9C 9A AA 90 A8 90 05 B4 2F B5 44 41 C3 B1 28 D7 CA 50 53 8F CB B3 44 A1 3C 35 33 3D A3 58 C1 C8 44 CF C0 40 21 BF 4A 0F
使用逆向工程解压缩数据包:
B4 16 2D 00 59 6F 75 20 73 65 65 20 61 20 6A 61 63 6B 65 74 20 28 41 72 6D 3A 31 29 2E 0A 49 74 20 77 65 69 67 68 73 20 32 34 2E 30 30 20 6F 7A 2E
使用CyberChef deflate / php deflate函数使用zlib deflate压缩的解压缩包:
db 22 a6 cb 10 99 5f aa 50 9c 9a aa 90 a8 90 95 98 9c 9d 5a a2 a0 e1 58 94 6b 65 a8 a9 c7 e5 59 a2 50 9e 9a 99 9e 51 ac 60 64 a2 67 60 a0 90 5f a5 07 00
数据在一些地方匹配,但一般来说,它的不同。你知道可能是什么情况吗?
我附上了RE充气功能的图片:Screenshot from IdaPro
以下是正确顺序的数据包:
这是无法充气的数据包......
CA059BC6043619009FC9FFFFE831
答案 0 :(得分:0)
您无法充气的数据包可能是较长的压缩数据流的一部分,其前面有其他数据包并跟随它。您需要将所有这些解压缩为单个流,以使解压缩成功。
您的第一个示例是一个deflate流的一部分,它引用了前面的数据。所以它是更大的放气流的一部分。您需要在该部分之前的所有压缩数据才能解压缩该部分。您的上一个示例(CA05 ...)也引用了前面的数据,因此它也是一个较大的流的一部分,其前面有压缩数据。