Preview

Труды Института системного программирования РАН

Расширенный поиск

Применение статической бинарной инструментации с целью проведения динамического анализа программ для платформы ARM

https://doi.org/10.15514/ISPRAS-2015-27(1)-1

Аннотация

В настоящее время динамический анализ программ активно используется для контроля качества программных продуктов, задач профилирования и поиска уязвимостей. В данной работе рассматриваются особенности одного из методов обработки кода программы в рамках динамического анализа — статической инструментации исполняемого кода, подразумевающей предварительное изменение исполняемых файлов или файлов динамических библиотек. Предлагается метод статической инструментации, позволяющий обрабатывать файлы исполняемого кода в формате ELF для архитектуры ARM.

Предлагаемый метод включает возможности настройки инструментации с помощью пользовательских спецификаций, задающих точки внедрения кода и необходимый внедряемый код. В статье описываются основные шаги метода: обработка пользовательских спецификаций, разбор кода программы и создание блоков инструментационного кода по числу точек инструментации, внедрение блоков инструментационного кода в программу, модификация кода программы с целью осуществления передачи управления на инструментационный код во время выполнения программы.

Модификация файлов исполняемого кода программы проводится в рамках ограничений, накладываемых спецификациями формата ARM ELF — распределение кода, данных и управляющей информации по секциям и сегментам, обрабатываемым динамическим загрузчиком операционной системы, и дополнительными внешними и внутренними зависимостями между секциями, порождаемыми во время генерации исполняемого кода. Непосредственный метод инструментации включает замену блоков инструкций в точках инструментации на инструкции безусловного перехода на соответствующий блок инструментационного кода и перенос заменённых инструкций в блок инструментационного кода для сохранения исходной функциональности программы. Для поддержания корректности работы в блок инструментационного кода также добавляются инструкции сохранения и восстановления состояния и инструкция безусловного перехода для возврата управления после выполнения инструментационного кода. Дополнительно в статье описываются модификации, направленные на добавление информации о внешних символах, используемых в инструментационном коде. Данные модификации необходимы для поддержания корректности работы динамического загрузчика на этапе разрешения внешних зависимостей.

В статье приведены результаты практических экспериментов по применению разработанной программной системы, реализующей предлагаемый метод. На примере задачи подсчёта базовых блоков разработанная система показала более высокую производительность по сравнению с распространённым средством инструментации Valgrind.

Об авторах

М. К. Ермаков
Институт системного программирования РАН, г. Москва
Россия

Институт системного программирования РАН, 109004, Россия, г. Москва, ул. А. Солженицына, д. 25



С. П. Вартанов
Институт системного программирования РАН, г. Москва
Россия
Институт системного программирования РАН, 109004, Россия, г. Москва, ул. А. Солженицына, д. 25


Список литературы

1. Amitabh Srivastava, Alan Eustace. ATOM: A System for Building Customized Program Analysis Tools, WRL Research Report 94/2, Western Research Laboratory, Palo Alto, CA, USA (http://www.hpl.hp.com/techreports/Compaq-DEC/WRL-94-2.pdf)

2. James R. Larus, Eric Scnharr. EEL: Machine-Independent Executable Editing. PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation, 1995. pp. 291-300.

3. Ted Romer, Geoff Voelker, Dennis Lee, Alec Wolman, Wayne Wong, Hank Levy, Brian Bershad, Brad Chen. Instrumentation and Optimization of Win32/Intel Executables Using Etch. Proceedings of the USENIX Windows NT Workshop, 1997.

4. Susanta Nanda, Wei Li, Lap-Chung Lam, Tzi-cker Chiueh. BIRD: Binary Interpretation using Runtime Disassembly. International Symposium on Code Generation and Optimi-zation, 2006. doi:10.1109/CGO.2006.6

5. Michael A. Laurenzano, Mustafa M. Tikir, Laura Carrington, Allan Snavely. PEBIL: Ef-ficient static binary instrumentation for Linux. 2010 IEEE International Symposium on Performance Analysis of Systems & Software (ISPASS), 2010. pp. 175-183. doi:10.1109/ISPASS.2010.5452024

6. Barton P. Miller and Andrew R. Bernat, Anywhere, Any Time Binary Instrumentation, ACM SIGPLAN-SIGSOFT workshop on Program Analysis for Software Tools and En-gineering (PASTE), Szeged, Hungary, 2011, pp. 9-16. doi: 10.1145/2024569.2024572

7. Chi-Keung Luk, Robert Cohn, Robert Muth, Harish Patil, Artur Klauser, Geoff Lowney, Steven Wallace, Vijay Janapa Reddi, Kim Hazelwood. Pin: Building Customized Program Analysis Tools with Dynamic Instrumentation. Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation, 2005. pp.190-200. doi:10.1145/1065010.1065034

8. Nicholas Nethercote and Julian Seward. Valgrind: A Framework for Heavyweight Dy-namic Binary Instrumentation. Proceedings of ACM SIGPLAN 2007 Conference on Pro-gramming Language Design and Implementation (PLDI 2007), San Diego, California, USA, 2007. pp. 89-100. doi:10.1145/1250734.1250746

9. Derek L. Bruening. Efficient, Transparent, and Comprehensive Runtime Code Manipula-tion. Doctor of Philosophy Thesis, Department of Electrical Engineering and Computer Science, Massachusetts Institute of Technology, Cambridge, MA.

10. Kim Hazelwood, Artur Klauser. A Dynamic Binary Instrumentation Engine for the ARM Architecture . Proceedings of the 2006 international conference on Compilers, architecture and synthesis for embedded systems (CASES'06). New York, NY, USA, 2006. pp. 261-270


Рецензия

Для цитирования:


Ермаков М.К., Вартанов С.П. Применение статической бинарной инструментации с целью проведения динамического анализа программ для платформы ARM. Труды Института системного программирования РАН. 2015;27(1):5-24. https://doi.org/10.15514/ISPRAS-2015-27(1)-1

For citation:


Ermakov M.K., Vartanov S.P. Dynamic Analysis of ARM ELF Shared Libraries Using Static Binary Instrumentation. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2015;27(1):5-24. (In Russ.) https://doi.org/10.15514/ISPRAS-2015-27(1)-1



Creative Commons License
Контент доступен под лицензией Creative Commons Attribution 4.0 License.


ISSN 2079-8156 (Print)
ISSN 2220-6426 (Online)