DOI QR코드

DOI QR Code

An Android API Obfuscation Tool using Reflection and String Encryption

리플렉션과 문자열 암호화를 이용한 안드로이드 API 난독화 도구

  • 이주혁 (한라대학교 정보통신방송공학부) ;
  • 박희완 (한라대학교 정보통신방송공학부)
  • Received : 2014.07.09
  • Accepted : 2014.12.12
  • Published : 2015.01.31

Abstract

Reflection is a feature of the Java programming language that can examine and manipulate components of program itself. If you use the reflection, you can get an obfuscation effect of Java source because it converts sources into complicated structures. However, when using it, strings of components name of program are exposed. Therefore, it cannot prevent static analysis. In this paper, we presents a method and a tool of interfere with static analysis using reflection. And in this case, exposed strings are encoded using Vigen$\acute{e}$re cipher. Experimental results show that this tool is effective in increasing the overall complexity of the source code. Also the tool provides two types decryption method based on server and local. It can be selected based on the importance of the API because it affects the execution speed of the application.

자바 리플렉션은 프로그램 구성 요소들을 조사하여 호출 및 조작할 수 있는 자바 언어의 기능이다. 이를 이용하면 보다 많은 호출 단계를 거치는 구조로 변형되기에 난독화 효과를 얻을 수 있다. 그러나 이를 이용할 때, 프로그램 자체의 구성 요소 이름이 문자열 형태로 노출된다. 본 논문에서는 안드로이드 애플리케이션에서 리플렉션을 적용하여 난독화하고, 이때 노출되는 문자열들을 비즈네르 암호화 알고리즘으로 은닉하여 정적분석을 방해하는 기법 및 도구를 제시한다. 실험 결과 소스 코드의 전체적인 복잡도를 증가시키는 데 효과가 있었다. 또한 서버와 로컬 기반의 두 가지 복호화 방법을 제공하는데, 이는 애플리케이션의 실행속도에 영향을 미치기 때문에 API의 중요도에 따라 선택할 수 있다.

Keywords

References

  1. Smartphone OS Market Share, Q1 2014, http://www.idc.com/prodserv/smartphone-os-market-share.jsp/.
  2. Google Play Hits 1 Million Apps, http://mashable.com/2013/07/24/google-play-1-million/.
  3. Using Java Reflection, http://www.oracle.com/technetwork/articles/java/javareflection-1536171.html/.
  4. W. T. Sim, J. M. Kim, J. C. Ryou, and B. N. Noh, "Android Application Analysis Method for Malicious Activity Detection," Journal of KIISC, Vol.21, No.1, pp.213-219, 2011.
  5. Vigenere cipher, http://en.wikipedia.org/wiki/Vigen%C3%A8re_cipher/.
  6. jd-gui, https://code.google.com/p/innlab/.
  7. Codepro Analytix, https://developers.google.com/java-dev-tools/codepro/doc/.
  8. S. Y. Cho and T. Y. Kim, "Dynamically Reconfigurable Object Replication Management System Using Reflection approach in Java," Journal of KIISE, Vol.26, No.1(A), pp.373-375, 1999.
  9. J. M. Choi, "A Toolkit for Context-aware Systems using Java Reflection and Method Overloading," Journal of KIISE, Vol.39, No.1, pp.12-23, 2012.
  10. W. C. Lee and K. K. Lee, "Java Reflections in Action: A Case Study of Android Apps," Proceedings of KIISE, Vol.39, No.2(A), pp.277-279, 2012.
  11. J. H. Lee and H. W. Park, "Design and Implementation of An Auto-Conversion Tool for Android API Obfuscation Based on Java Reflection", Proceedings of KIPS, Vol.21, No.1, pp.487-490, 2014.
  12. Proguard, http://developer.android.com/tools/help/proguard.html.
  13. H. S. Ahn, "A study on the Java Decompilation-Preventive Method by Obfuscating Algorithm," Journal of KIPS, Vol.14, No.1, pp.1458-1458, 2007.
  14. E. M. Kim and K. S. Han, "A Study on the Code Obfuscation Techniques for Java Source Code," Journal of KIISE, Vol.35, No.2(A), pp.307-308, 2008.
  15. C. H. Lee, Y. U. Park, J. H. Lim, H. G. Kim, C. H. Lee, S. J. Cho and J. S. Yang, "Access Control Mechanism Preventing Application Piracy of the Android Platform," Proceedings of KIISE, Vol.18, No.10, pp.692-700, 2012.
  16. Apache Commons Codec, http://commons.apache.org/proper/commons-codec/.
  17. dex2jar, http://code.google.com/p/dex2jar/.
  18. Benchbee, http://www.benchbee.co.kr/.