一句话:提出 SURI,利用 CET 精确符号化动态指针并过近似间接分支目标,实现现代 x86-64 二进制的可靠重汇编。
无源码二进制重汇编可透明重写程序,但可靠符号化仍困难:必须精确识别所有内存引用,否则会改变语义。本文系统研究现代 x86-64 二进制可靠重汇编的条件,提出 SURI。其关键洞见有两点:一是 Control-flow Enhancement Technology(CET)在主流 Linux 发行版中日益默认,可提供独特属性以精确符号化动态计算指针;二是通过过近似间接分支目标,考虑所有可能内存引用的超集进行符号化。作者实现 SURI 并在 9,600 个真实世界二进制上验证其有效性,表明该方法能在不影响原始语义的情况下符号化内存引用,推进可靠重汇编。
Reassembly is a promising approach to transparently rewrite binaries without source code. However, sound symbolization remains an open problem as it requires precise identification of all memory references in the binary. In this paper, we systematically study the requirements for sound reassembly of modern x86-64 binaries, and present a novel approach to reassembly that symbolizes all memory references without affecting the original semantics. The key insights are twofold: (1) we find that Control-flow Enhancement Technology (CET), which has increasingly become the default setting for major Linux distributions, adds a unique property to binaries that can be leveraged to precisely symbolize dynamically computed pointers, and (2) we consider a superset of all possible memory references for symbolization by over-approximating indirect branch targets. With these insights, we design and implement a novel reassembler, named SURI, and show its effectiveness on 9,600 real-world binaries.