gpt4 book ai didi

c++ - 我如何使用某种二进制签名识别 WinRAR SFX?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:30:13 25 4
gpt4 key购买 nike

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

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

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

最佳答案

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

  1. To process an SFX archive you need to skip the SFX module searching for the marker block in the archive. There is no marker block sequence (0x52 0x61 0x72 0x21 0x1a 0x07 0x00) in the SFX module itself.

您自己已经指出:unrar 源代码在 archive.cpp 中包含它如何读取文件的代码。 SFX 部分的最大大小永远不会大于 rardefs.hpp 中定义的数字:

#define  MAXSFXSIZE        0x100000

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com