【发布时间】:2012-03-03 01:24:27
【问题描述】:
如何从其二进制内容中识别 7z SFX(自解压 EXE)文件,是否有任何偏移开始或特定字节要查找或两者兼而有之?
非常感谢
【问题讨论】:
如何从其二进制内容中识别 7z SFX(自解压 EXE)文件,是否有任何偏移开始或特定字节要查找或两者兼而有之?
非常感谢
【问题讨论】:
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 上可能会有所不同。
【讨论】: