DOI QR코드

DOI QR Code

Static Control Flow Analysis of Binary Codes

이진 코드의 정적 제어 흐름 분석

  • 김기태 (인하대학교 IT컴퓨터공학부) ;
  • 김제민 (인하대학교 IT컴퓨터공학부) ;
  • 유원희 (인하대학교 IT컴퓨터공학부)
  • Received : 2010.01.14
  • Accepted : 2010.04.30
  • Published : 2010.05.28

Abstract

We perform static program analysis for the binary code. The reason you want to analyze at the level of binary code, installed on your local computer, run the executable file without source code. And the reason we want to perform static analysis, static program analysis is to understand what actions to perform on your local computer. In this paper, execution flow graph representing information such as the execution order among functions and the flow of control is generated. Using graph, User can find execution flow of binary file and calls of insecure functions at the same time, and the graph should facilitate the analysis of binary files. In addition, program to be run is ensured the safety by providing an automated way to search the flow of execution, and program to be downloaded and installed from outside is determined whether safe before running.

바이너리 코드 수준에서 정적인 프로그램 분석을 수행한다. 소스 코드가 아닌 바이너리 코드 수준에서 분석을 수행하는 이유는 일반적으로 로컬 컴퓨터에 설치하는 실행 파일은 소스 코드 없이 단지 바이너리로 된 실행 파일만 주어지는 경우가 대부분이기 때문이다. 또한 정적으로 분석을 수행하려는 이유는 정적인 제어 흐름 분석을 통해 프로그램이 수행 시 어떤 동작을 수행하게 될지를 수행 전에 파악하기 위해서이다. 본 논문에서는 바이너리 실행 파일로부터 함수간의 실행 순서 및 제어 흐름 등의 정보를 표현할 수 있는 실행 흐름 그래프를 작성하여 사용자가 바이너리 파일의 실행 흐름과 위험한 함수의 호출 여부를 동시에 파악할 수 있도록 하며, 그래프를 통해 바이너리 파일의 분석을 용이하게 한다. 또한 실행 흐름에 대한 자동 탐색 방법을 제공하여 수행될 프로그램의 안전성을 보장하고, 수행 전에 외부에서 다운받아 설치할 프로그램이 안전한지를 판단할 수 있도록 한다.

Keywords

References

  1. C. Cifuentes and K. John, “Decompilation of binary programs,” Software Practice & Experience, Vol.25, Issue 7, pp.811-829, 1995. https://doi.org/10.1002/spe.4380250706
  2. C. Kruegel, W. Robertson, F. Valeur, and G. Vigna, "Static disassembly of obfuscated binaries," Proceedings of the 13th conference on USENIX Security Symposium, pp.18-18, 2004.
  3. A. Lanzi, L. Martignoni, M. Monga, and R. Paleari, "A Smart Fuzzer for x86 Executables," Proceedings of the Third International Workshop on Software Engineering for Secure Systems, pp.1-7, 2007.
  4. G. Balakrishnan, T. Reps, D. Melski, and T. Teitelbaum, "WYSINWYX: What You See Is Not What You eXecute," In IFIP Working Conference on Verified Software: Theories, Tools, Experiments, 2005.
  5. M. Cova, V. Felmetsger, G. Banks, and G. Vigna, "Static Detection of Vulnerabilities in x86 Executables," In Proceedings of the Annual Computer Security Applications Conference (ACSAC), 2006.
  6. M. D. Ernst. "Static and Dynamic Analysis:Synergy and Duality," In WODA 2003: ICSE Workshop on Dynamic Analysis, Portland, OR, May 9, 2003.
  7. B. Schwarz, S. K. Debray, and G. R. Andrews, "Disassembly of Executable Code Revisited," In 9th Working Conference on Reverse Engineering (WCRE), pp.45?54, IEEE Computer Society, 2002.
  8. G. Snelting, T. Robschink, and J. Krinke. "Efficient path conditions in dependence graphs for software safety analysis," ACM Trans. Softw. Eng. Methodol. Vol.15, No.4, pp.410-457, 2006. https://doi.org/10.1145/1178625.1178628
  9. Microsoft Corporation, Microsoft Portable Executable and Common Object File Format Specification, Microsoft Corporation, Rev.8.1, 2008.
  10. Intel Corporation, Intel$^{{\circledR}}$64 and IA-32 Architectures Software Developer's Manual Volume 2B: Instruction Set Reference, N-Z, Intel Corporation, March 2010.
  11. http://www.eclipse.org
  12. http://www.jgraph.com
  13. http://www.ollydbg.de
  14. http://www.hex-rays.com/idapro