An improved algorithm for slicing machine code

Author:

Srinivasan Venkatesh1,Reps Thomas2

Affiliation:

1. University of Wisconsin-Madison, USA

2. University of Wisconsin-Madison, USA / GrammaTech, USA

Abstract

Machine-code slicing is an important primitive for building binary analysis and rewriting tools, such as taint trackers, fault localizers, and partial evaluators. However, it is not easy to create a machine-code slicer that exhibits a high level of precision. Moreover, the problem of creating such a tool is compounded by the fact that a small amount of local imprecision can be amplified via cascade effects. Most instructions in instruction sets such as Intel's IA-32 and ARM are multi-assignments: they have several inputs and several outputs (registers, flags, and memory locations). This aspect of the instruction set introduces a granularity issue during slicing: there are often instructions at which we would like the slice to include only a subset of the instruction's semantics, whereas the slice is forced to include the entire instruction. Consequently, the slice computed by state-of-the-art tools is very imprecise, often including essentially the entire program. This paper presents an algorithm to slice machine code more accurately. To counter the granularity issue, our algorithm performs slicing at the microcode level, instead of the instruction level, and obtains a more precise microcode slice. To reconstitute a machine-code program from a microcode slice, our algorithm uses machine-code synthesis. Our experiments on IA-32 binaries of FreeBSD utilities show that, in comparison to slices computed by a state-of-the-art tool, our algorithm reduces the size of backward slices by 33%, and forward slices by 70%.

Funder

Defense Advanced Research Projects Agency

Wisconsin Alumni Research Foundation

Air Force Research Laboratory

Rajiv and Ritu Batra

UW-Madison Office of the Vice Chancellor for Research and Graduate Education

Publisher

Association for Computing Machinery (ACM)

Subject

Computer Graphics and Computer-Aided Design,Software

Reference35 articles.

1. Design and implementation of a fine-grained software inspection tool

2. ARM instruction-set manual. http:// infocenter.arm.com/help/topic/com. arm.doc.qrc0001m/QRC0001_UAL.pdf. ARM instruction-set manual. http:// infocenter.arm.com/help/topic/com. arm.doc.qrc0001m/QRC0001_UAL.pdf.

3. Specialization Slicing

4. WYSINWYX

5. CodeSurfer/x86—A Platform for Analyzing x86 Executables

Cited by 9 articles. 订阅此论文施引文献 订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献

1. Recovering Container Class Types in C++ Binaries;2022 IEEE/ACM International Symposium on Code Generation and Optimization (CGO);2022-04-02

2. Jicer: Simplifying Cooperative Android App Analysis Tasks;2021 IEEE 21st International Working Conference on Source Code Analysis and Manipulation (SCAM);2021-09

3. SymPas: Symbolic Program Slicing;Journal of Computer Science and Technology;2021-03-31

4. GPA: A GPU Performance Advisor Based on Instruction Sampling;2021 IEEE/ACM International Symposium on Code Generation and Optimization (CGO);2021-02-27

5. JShrink: in-depth investigation into debloating modern Java applications;Proceedings of the 28th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering;2020-11-07

同舟云学术

1.学者识别学者识别

2.学术分析学术分析

3.人才评估人才评估

"同舟云学术"是以全球学者为主线,采集、加工和组织学术论文而形成的新型学术文献查询和分析系统,可以对全球学者进行文献检索和人才价值评估。用户可以通过关注某些学科领域的顶尖人物而持续追踪该领域的学科进展和研究前沿。经过近期的数据扩容,当前同舟云学术共收录了国内外主流学术期刊6万余种,收集的期刊论文及会议论文总量共计约1.5亿篇,并以每天添加12000余篇中外论文的速度递增。我们也可以为用户提供个性化、定制化的学者数据。欢迎来电咨询!咨询电话:010-8811{复制后删除}0370

www.globalauthorid.com

TOP

Copyright © 2019-2024 北京同舟云网络信息技术有限公司
京公网安备11010802033243号  京ICP备18003416号-3