Source: https://www.usenix.org/system/files/conference/usenixsecurity18/sec18-quach.pdf

Authors: Anh Quach, Aravind Prakash, Lok Yan
Download Note: https://jbox.sjtu.edu.cn/l/j1XGKo
Contributor: ydh

Overview

代码重用在软件开发的过程中是必不可少的,开发者会把代码打包到一个重用代码模块中,如共享库为不同的应用程序提供接口。但是共享库内容很多,一个应用程序不会用到里面全部的代码。这些无关的代码自身可能包含bug和漏洞,扩大了整个攻击面,也为代码重用攻击提供了便利。静态死代码消除是一种静态分析技术,用于识别未使用的代码路径,并将它们从最终的二进制文件中删除,在编译期间使用的这种方法是减少代码膨胀的有效方法。但是,这种方法对链接库不太适合,动态链接的库无法删除死代码,因为它是预先构建好,运行时加载到内存中的,加载器也不会对它做检查;静态链接库也很麻烦,需要重新编译且不好管理。这篇文章设计了一个piece-wise的编译器和加载器做debloating,有效地减少了链接库的体积。