重建装配体真值图

逆向工程 拆卸 视窗 部件 编译器
2021-06-27 06:02:43

所以我最近阅读了 [1],它评估了几个反汇编程序。真值/测试二进制文件由 SPEC CPU 2006 基准套件生成。作者为 VirtualBox 内的 ELF 集提供了详细的构建说明。

然而,重建 Windows 二进制文件对我来说似乎是不可能的,因为作者没有提供用于构建这些二进制文件的 SPEC 配置文件。因此,使用 Visual Studio 2015 构建二进制文件(实际上与提供的映射文件 [2] 匹配)不起作用(暴力破解/猜测编译设置)。

例如,大多数样本“SPEC/vs15-32/C++”和“SPEC/vs15-32/C”都有以下.text库的序言(属性描述见附录):

[2]
@0x0000000000401000:  [FBIC]
@0x0000000000401001:  [IC]C
@0x0000000000401003:  [IC]CC
@0x0000000000401006:  [IC]
@0x0000000000401007:  [IC]
@0x0000000000401008:  [IC]CC
@0x000000000040100b:  [IC]C
@0x000000000040100d:  [JIC]C

所有 64 位样本都有以下序言:

<Segment .text, vaddr 0x0000000000001000, size 1600112, flag [RX]>
@0x0000000140001000:  [FBIC]CCCC
@0x0000000140001005:  [IC]CCCC
@0x000000014000100a:  [IC]
@0x000000014000100b:  [IC]CCC
@0x000000014000100f:  [IC]CC
@0x0000000140001012:  [IC]CC
@0x0000000140001015:  [IC]CC
@0x0000000140001018:  [JIC]C

我使用 VS2015 编译器和 intel 编译器为 SPEC 构建指令尝试了几种配置。但是,检查所有生成的二进制文件与 [1] 提供的基本事实不匹配。

所以有两个具体的问题:

  1. 当所有样本共享相似的 .text 序言时,它们都共享相似的库?

  2. 有人可以通过重复的序言推断编译细节吗?


属性说明:

  d - data
  c - code
  i - instruction boundary
    Note that if a byte is an instruction boundary (start of an instruction),
    this implies that it is a code byte
  o - instruction boundary (start of overlapping instruction)
  b - basic block start
    Basic block boundaries are not always explicitly listed, as they can usually
    be found by parsing the instruction/function listing into a control-flow graph
  f - function start
  e - program/binary entry point
  r - function end (return, tail call, etc.)
  j - control-flow instruction (jmp, call, ret, ...)
  x - crossref/call instruction
  n - NOP or other function padding

[1] Dennis Andriesse 对全尺寸 x86/x64 二进制文件的反汇编的深入分析:

Zeus 是一个凭证窃取木马家族,最初出现在 2007 年。Zeus 的前两个变种基于集中式命令服务器。这些命令服务器现在经常被安全社区跟踪和阻止。显然,为了抵御这些常规反措施,Zeus 的第二个版本于 2011 年 9 月分叉为点对点变体。与 Zeus 的早期版本相比,这种点对点变体从根本上更难以禁用。通过对这个新的 Zeus 变体的详细分析,我们展示了最先进的点对点僵尸网络的高弹性,特别是点对点 Zeus。

1个回答

我们实现了一个生成器来创建这样的地面实况映射,并在最近发布了它。

您可以在 github 存储库中找到更多详细信息:

https://github.com/LL-MM/approxis-groundtruth