Paul-Antoine Arras
and
Anastasios Andronidis
and
Luís Pina
and
Karolis Mituzas
and
Qianyi Shu
and
Daniel Grumberg
and
Cristian Cadar
In International Journal on Software Tools for Technology Transfer
April, 2022
Binary rewriting consists in disassembling a program to modify its instructions. However, existing solutions suffer from shortcomings in terms of soundness and performance. We present SaBRe, a load-time system for selective binary rewriting. SaBRe rewrites specific constructs—particularly system calls and functions—when the program is loaded into memory, and intercepts them using plugins through a simple API. We also discuss the theoretical underpinnings of disassembling and rewriting. We developed two backends—for x86_64 and RISC-V—which were used to implement three plugins: a fast system call tracer, a multi-version executor, and a fault injector. Our evaluation shows that SaBRe imposes little overhead, typically below 3%.
@article{arras22sabre, title = {SaBRe: load-time selective binary rewriting}, author = {Arras, Paul-Antoine and Andronidis, Anastasios and Pina, Lu\'{\i}s and Mituzas, Karolis and Shu, Qianyi and Grumberg, Daniel and Cadar, Cristian}, journal = {International Journal on Software Tools for Technology Transfer}, year = {2022}, month = APR, volume = {24}, number = {2}, pages = {205-223}, publisher = {Springer-Verlag}, }