Binary rewriting is a rapidly-maturing technique for modifying software for instrumentation, customization, optimization, and hardening without access to source code. Unfortunately, the practical applications of binary rewriting tools are often unclear to users because their limitations are glossed over in the literature. This, among other challenges, has prohibited the widespread adoption of these tools. To address this shortcoming, we collect ten popular binary rewriters and assess their generality across a broad range of input binary classes and the functional reliability of the resulting rewritten binaries. Additionally, we evaluate the performance of the rewriters themselves as well as the rewritten binaries they produce. The goal of this broad evaluation is to establish a shared context for future research and development of binary rewriting tools by providing a state of the practice for their capabilities. To support potential binary rewriter users, we also identify input binary features that are predictive of tool success and show that a simple decision tree model can accurately predict whether a particular tool can rewrite a target binary. The binary rewriters, our corpus of 3344 sample binaries, and the evaluation infrastructure itself are all freely available as open-source software.
翻译:二进制重写是修改仪器、定制、优化和加固软件的快速技术,无法获取源代码。 不幸的是,二进制重写工具的实际应用对于用户来说往往不清楚,因为它们的局限性在文献中被掩盖。 除其他挑战外,这禁止广泛采用这些工具。 为了解决这一缺陷,我们收集了10种受欢迎的二进制重写,并评估了其广泛的投入二进制分类的通用性以及由此而成的重写二进制书的功能可靠性。 此外,我们评估了再写者本身的性能以及他们制作的改写书的二进制书。本次广泛评估的目标是为今后对二进制重写工具的研发建立一个共同的环境,为它们的能力提供一种实践状态。为了支持潜在的二进制重写用户,我们还确定了预测工具成功与否的投入二进制书,并表明一个简单的决策树模型可以准确预测某一工具能否重写目标的二进制书。二进制书、我们344样二进制书以及评价基础设施本身都是可自由使用的公开源软件。