如何从二进制内容中识别7z SFX(自解压EXE)文件,是否有任何偏移开始或要查找的特定字节或两者?
非常感谢答案 0 :(得分:2)
Google是你的朋友。搜索"7zip header"后的第一个结果。文档说这是7zip签名:
BYTE kSignature[6] = {'7', 'z', 0xBC, 0xAF, 0x27, 0x1C};
您应该读取文件的前6个字节。如果该6字节序列与上面的kSignature
相同,则该文件应为7z。
编辑:我一直在尝试使用GNU / Linux上的7z(实际上是包装SFX ELF文件,而不是PE)。我发现,在最后一块数据中,7z签名实际存在。 Hexdump生成最多为字节编号0x00057960的转储,签名位于此处:
0x000578f0: 37 7a bc af 27 1c
0x37和0x7a分别为'7'和'z'。因此,在这种情况下,签名的偏移量为EOF - 112字节。
我建议你下载一个十六进制编辑器,创建一个SFX文件,并在每个创建SFX 7z的应用程序中测试这个偏移是否相同。请记住,我已经在GNU / Linux上对此进行了测试,因此在Windows上可能会有所不同。