如何使用 Arc+SREP 数据解压缩 Inno Setup 包?

逆向工程 拆卸 反编译 开箱 可执行
2021-06-21 10:40:36

我偶然发现 Inno Setup 安装程序带有额外的单独 Arc 档案(通常带有.bin扩展名),我无法使用正常方法提取这些档案

  1. 安装程序因不明原因无法工作(例如 Runtime Error (at -1:0): Cannot Import EXTRACTFILENAME.),
  2. 由于无法使用 FreeArc 提取 Arc 文件ERROR: unsupported compression method srep
  3. 此外,存档显然受密码保护(尝试使用 FreeArc UI 打开它会导致输入解密密码对话框)。

遇到这样的情况怎么办?

1个回答

这里有三个主要步骤:

  1. 您必须反编译/剖析 IS 安装程序本身;最简单的方法是使用Inno Setup Decompiler本质上,您需要CompiledCode.bin从您的.exe文件中获取,然后对其进行反汇编,可能会找到处理解包的代码 - 它通常调用ISArcExtract或类似的库函数,并放置在名为CURSTEPCHANGED.
  2. 您必须获得 SREP(SuperREP)提取器(有关更多信息,请参见例如http://krinkels.org/resources/superrep-srep.107/https://www.fileforums.com/showthread.php?p=460707 ) - 最简单的方法是获取一个名为的包SrepInside0.33.7z(可在不同地方下载),因为它捆绑了所有必需的文件(基本上,您将获得一个unarc.exe带有CLS-srep.dlllib 和cls.iniconfig 的文件)。
  3. 在 Inno Setup 的反汇编中,找到保存密码本身的变量(如果ISArcExtract它是传递的第 7 个参数),并将其传递给您的unarc调用 - 请注意它可能包含不可打印的字符(例如 <32 ASCII 代码),因此建议使用脚本传递密码。

请注意,Arc 和 SREP 有不同的版本/变体;不过,上述方法在大多数情况下应该有效。