3

我正在寻找与此问题中的答案类似的答案,但使用的是 WinRAR 而不是 7zip。本质上,我想要一个权威的签名,我至少可以说“所有 WinRAR 生成的自解压可执行文件在版本 420 中使用默认 SFX 文件创建,在位置 0x00027400 和其他非SFX 文件不太可能有这个签名”。更好的是,如果可以在所有版本的 WinRAR SFX 文件中找到相同的签名,即使它们位于不同的位置。

就 SFX 的工作方式而言,它们非常相似,除了文件的存档部分,但有些字符串的标识符很差(例如,“这个程序不能在 DOS 模式下运行”出现在每个 SFX 中,但它恰好也存在于大多数其他 Windows 可执行文件中)

目前我确定签名的方法是查看不同版本的 WinRAR SFX,并找到所有文件共有的 4 或 6 字节序列。不幸的是,其中有很多,因此很难选择一个。

4

2 回答 2

2

从WinRAR 安装文件夹中的TechNote.txt :

  1. 要处理 SFX 存档,您需要跳过 SFX 模块在存档中搜索标记块。SFX 模块本身没有标记块序列(0x52 0x61 0x72 0x21 0x1a 0x07 0x00)。

您已经指出了这一点:unrar 源代码在archive.cpp中有它如何读取文件的代码。SFX 部分的最大大小永远不会大于rdefs.hpp中定义的数字:

#define  MAXSFXSIZE        0x100000
于 2012-11-08T22:04:19.923 回答
0

If I have it right, you'd like to look a file up and see if it is a valid SFX file built with WinRAR, right?

In this case, these are the PE signatures you should be looking for (haven't tried them, but they're listed in the PE sig DB linked at the bottom):

WinRAR-SFX=80E9A1C1C11368E4167546C1C1055EEB019D6864863746EB028CE05FF7D0 WinRAR-SFX=EB0102EB02CD20B880

Just get the entry point and see if these bytes are following in the right order. An extensive list of PE signatures is available at http://tot-ltd.org/packer.db.

于 2012-11-08T00:57:47.140 回答