Abstract
Unauthorized code modification through reverse engineering is a major concern for Android application developers. Code reverse engineering is often used by adversaries to remove the copyright protection or advertisements from the app, or to inject malicious code into the program. By making the program difficult to analyze, code obfuscation is a potential solution to the problem. However, there is currently little work on applying code obfuscation to compiled Android bytecode. This paper presents DexPro, a novel bytecode level code obfuscation system for Android applications. Unlike prior approaches, our method performs on the Android Dex bytecode and does not require access to high-level program source or modification of the compiler or the VM. Our approach leverages the fact all except floating operands in Dex are stored in a 32-bit register to pack two 32-bit operands into a 64-bit operand. In this way, any attempt to decompile the bytecode will result in incorrect information. Meanwhile, our approach obfuscates the program control flow by inserting opaque predicates before the return instruction of a function call, which makes it harder for the attacker to trace calls to protected functions. Experimental results show that our approach can deter sophisticate reverse engineering and code analysis tools, and the overhead of runtime and memory footprint is comparable to existing code obfuscation methods.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
Notes
- 1.
The Dalvik executable format (Dex) is the executable binary format for Android applications. It was originally designed for the Dalvik VM. It remains to be used as a standard bytecode format for Android applications after the Dalvik VM is replaced by the Android runtime (ART).
References
Zheng Qi, X.A.: The control flow of confusion for android mobile application (2014)
Jinliang, L.: Research and realization on Android software protection technology. Ph.D. thesis, Beijing University of Posts and Telecommunications (2015)
Qi, Z.: Research and implementation of code obfuscation algorithms for applications of and smartphone terminal. Master’s thesis, Beijing University of Posts and Telecommunications (2015)
Proguard. http://proguard.sourceforge.net/
Shu, J., Li, J., Zhang, Y., Gu, D.: Android app protection via interpretation obfuscation. In: 2014 IEEE 12th International Conference on Dependable, Autonomic and Secure Computing (DASC), pp. 63–68. IEEE (2014)
Yang, Y., Fan, W., Huang, W., Xu, G., Yang, Y.: The research of multi-point function opaque predicates obfuscation algorithm. Appl. Math. 8(6), 3063–3070 (2014)
Yuan, Z., Wen, Q., Mao, M.: Constructing opaque predicates for java programs. In: 2006 International Conference on Computational Intelligence and Security (2006)
Codeverify.cpp. http://androidxref.com/4.2.2_r1/xref/dalvik/vm/analysis/CodeVerify.cpp
Dexverify.cpp. http://androidxref.com/4.2.2_r1/xref/dalvik/vm/analysis/DexVerify.cpp
Jeb. http://securitymusings.com/article/4003/android-security-and-the-tools-i-use-jeb
dexdump. https://play.google.com/store/apps/details?id=com.redlee90.dexdump
Bartel, A., Klein, J., Traon, Y.L., Monperrus, M.: Dexpler: converting android dalvik bytecode to jimple for static analysis with soot. In: ACM SIGPLAN International Workshop on State of the Art in Java Program Analysis, pp. 27–38 (2012)
Enck, W., Octeau, D., Mcdaniel, P., Chaudhuri, S.: A study of android application security. Br. Med. J. 2(3859), 1175 (2011)
Android runtime. https://en.wikipedia.org/wiki/Android_Runtime
Collberg, C., Thomborson, C., Low, D.: A taxonomy of obfuscating transformations. Technical report, Department of Computer Science, The University of Auckland, New Zealand (1997)
Venkatesan, A.: Code obfuscation and virus detection. Ph.D. thesis, San Jose State University (2008)
Schrittwieser, S., Katzenbeisser, S.: Code obfuscation against static and dynamic reverse engineering. In: Filler, T., Pevný, T., Craver, S., Ker, A. (eds.) IH 2011. LNCS, vol. 6958, pp. 270–284. Springer, Heidelberg (2011). doi:10.1007/978-3-642-24178-9_19
Schulz, P.: Code protection in android. Insititute of Computer Science, Rheinische Friedrich-Wilhelms-Universitgt Bonn, Germany 110 (2012)
Ghosh, S., Tandan, S., Lahre, K.: Shielding android application against reverse engineering. Int. J. Eng. Res. Technol. 2, 2635–2643 (2013). ESRSA Publications
Kundu, D.: JShield: a java anti-reversing tool. Ph.D. thesis, San José State University (2011)
Shoaib, M., Yasin, N., Abbassi, A.G.: Smart card based protection for dalvik bytecode-dynamically loadable component of an android apk. Int. J. Comput. Theory Eng. 8(2), 156 (2016)
Balachandran, V., Tan, D.J., Thing, V.L.: Control flow obfuscation for android applications. Comput. Secur. 61, 72–93 (2016)
Acknowledgment
This work was partially supported by the National Natural Science Foundation of China under grant agreements No. 61672427 and No. 61572402; the International Cooperation Foundation of Shaanxi Province, China under grant agreements No. 2015KW-003 and No. 2017KW-008; the Research Project of Shaanxi Province Department of Education under grant agreement No. 15JK1734; the Service Special Foundation of Shaanxi Province Department of Education under grant agreement No. 16JF028; the Research Project of NWU, China under grant agreement No. 14NW28; the UK Engineering and Physical Sciences Research Council under grants EP/M01567X/1 (SANDeRs) and EP/M015793/1 (DIVIDEND); and the Royal Society International Collaboration Grant (IE161012).
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2017 Springer International Publishing AG
About this paper
Cite this paper
Zhao, B. et al. (2017). DexPro: A Bytecode Level Code Protection System for Android Applications. In: Wen, S., Wu, W., Castiglione, A. (eds) Cyberspace Safety and Security. CSS 2017. Lecture Notes in Computer Science(), vol 10581. Springer, Cham. https://doi.org/10.1007/978-3-319-69471-9_27
Download citation
DOI: https://doi.org/10.1007/978-3-319-69471-9_27
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-69470-2
Online ISBN: 978-3-319-69471-9
eBook Packages: Computer ScienceComputer Science (R0)