我正在寻找类似于the one in this question的答案,但要使用WinRAR而不是7zip。本质上,我想要一个权威的签名,至少可以说“使用版本420中的默认SFX文件创建的所有WinRAR生成的自解压可执行文件在位置0x00027400处将具有字节0x15、0xa1、0x45、0xcc,0x21、0x98,以及其他NON SFX文件不太可能具有此签名”。更好的是,即使在所有版本的WinRAR SFX文件中都可以找到相同的签名,即使它们位于不同的位置。

根据SFX的工作方式,它们将非常相似,除了文件的存档部分,但是某些字符串的标识符很差(例如,每个SFX中都有“此程序无法在DOS模式下运行”),但它确实会在大多数其他Windows可执行文件中也是如此)

目前,我确定签名的方法是查看WinRAR SFX的各种版本,并查找所有文件共有的4或6字节序列。不幸的是,有很多这样的东西,很难选一个。

最佳答案

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



您已经表明了这一点:unrar源代码在archive.cpp中包含代码如何读取文件。 SFX部分的最大大小将永远不会大于rardefs.hpp中定义的数字:

#define  MAXSFXSIZE        0x100000

关于c++ - 如何使用某种二进制签名识别WinRAR SFX?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13275687/

10-10 21:38