Skip to main content

Static Binary Code Instrumentation for ARM Architecture

  • Conference paper
  • First Online:
Book cover Perspectives of System Informatics (PSI 2017)

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 10742))

Abstract

Binary code analysis is becoming a prominent technique in software development, covering tasks related to quality assurance and security. In this paper, we present an approach to static binary code instrumentation—persistent modification and extension of executable files—that we believe to be effective when used as a basis of implementation of various dynamic analysis techniques. We have developed an instrumentation framework targeting ARM ELF binary code that allows transforming files based on user-defined specifications. Specification language provides means to perform aspect-oriented programming targeting low-level groups of points in binary code to insert extra instrumentation code that can be supplied in C/C++ language. We have applied our framework to Avalanche—an automatic input generation tool based on dynamic symbolic execution—and achieved up to 10x increase in path traversal speed within a limited time frame compared to Valgrind-based dynamic binary instrumentation.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

References

  1. Serebryany, K., Bruening, D., Potapenko, A., Vyukov, D.: AddressSanitizer: a fast address sanity checker. In: USENIX Annual Technical Conference (2012)

    Google Scholar 

  2. Ermakov, M.K., Vartanov, S.P.: Dynamic analysis of ARM ELF shared libraries using static binary instrumentation. Trudy ISP RAN/Proc. ISP RAS 27(1), 5–24 (2015)

    Article  Google Scholar 

  3. Ermakov, M.K.: Dynamic analysis of ARM ELF executable code using static binary instrumentation. SPbSPU J. Comput. Sci. Telecommun. Control Syst. 1(236), 108–117 (2016)

    Google Scholar 

  4. Laurenzano, M., Tikir, M., Carrington, L., Snavely, A.: PEBIL: efficient static binary instrumentation for Linux. In: ISPASS, pp. 175–183. IEEE Computer Society (2010)

    Google Scholar 

  5. Bernat, A.R., Miller, B.P.: Anywhere, any-time binary instrumentation. In: Proceedings of the 10th ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools (PASTE 2011), pp. 9–16. ACM, New York (2011)

    Google Scholar 

  6. Luk, C.K., Cohn, R., Muth, R., Patil, H., Klauser, A., Lowney, G., Wallace, S., Reddi, V.J., Hazelwood, K.: Pin: building customized program analysis tools with dynamic instrumentation. In: Proceedings of the 2005 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2005), pp. 190–200. ACM, New York (2005)

    Google Scholar 

  7. GCC project home page. https://gcc.gnu.org/

  8. Bruening, D.L.: Efficient, Transparent, and Comprehensive Runtime Code Manipulation. Ph.D. Dissertation. Massachusetts Institute of Technology, Cambridge, MA, USA. AAI0807735 (2004)

    Google Scholar 

  9. Isaev, I.K., Sidorov, D.V.: The use of dynamic analysis for generation of input data that demonstrates critical bugs and vulnerabilities in programs. Program. Comput. Softw. 36(4), 225–236 (2010)

    Article  MathSciNet  Google Scholar 

  10. Anand, K., Smithson, M., Elwazeer, K., Kotha, A., Gruen, J., Giles, N., Barua, R.: A compiler-level intermediate representation based binary analysis and rewriting system. In: Proceedings of the 8th ACM European Conference on Computer Systems (EuroSys 2013), pp. 295–308. ACM, New York (2013)

    Google Scholar 

  11. Zhang, M., Qiao, R., Hasabnis, N., Sekar, R.: A platform for secure static binary instrumentation. In: Proceedings of the 10th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments (VEE 2014), pp. 129–140. ACM, New York (2014)

    Google Scholar 

  12. Binutils project home page. https://www.gnu.org/software/binutils/

  13. Nethercote, N., Seward, J.: Valgrind: a framework for heavyweight dynamic binary instrumentation. In: Proceedings of the 28th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2007), pp. 89–100. ACM, New York (2007)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Mikhail Ermakov .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2018 Springer International Publishing AG

About this paper

Check for updates. Verify currency and authenticity via CrossMark

Cite this paper

Ermakov, M. (2018). Static Binary Code Instrumentation for ARM Architecture. In: Petrenko, A., Voronkov, A. (eds) Perspectives of System Informatics. PSI 2017. Lecture Notes in Computer Science(), vol 10742. Springer, Cham. https://doi.org/10.1007/978-3-319-74313-4_9

Download citation

  • DOI: https://doi.org/10.1007/978-3-319-74313-4_9

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-319-74312-7

  • Online ISBN: 978-3-319-74313-4

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics