• Title/Summary/Keyword: 정적 프로그램 분석

Search Result 903, Processing Time 0.026 seconds

Static Trace based Java Birthmarking Technique (정적 트레이스 기반의 자바 버스마킹 기법)

  • Park, Hee-Wan;Lim, Hyun-Il;Choi, Seok-Woo;Han, Tai-Sook
    • Proceedings of the Korea Information Processing Society Conference
    • /
    • 2008.05a
    • /
    • pp.281-284
    • /
    • 2008
  • 소프트웨어 버스마크는 프로그램을 식별하는데 사용될 수 있는 프로그램의 고유한 특징을 말한다. 본 논문에서는 자바 메소드의 정적 트레이스 정보에 기반한 자바 버스마킹 기법을 제안한다. 정적 트레이스는 런타임 실행 절차를 반영한다는 점에서 동적 버스마크의 장점이 있고, 정적 분석으로 추출하기 때문에 라이브러리나 함수 단위에 적용가능하다는 정적 버스마크의 장점도 있다. 본 논문에서 제안한 버스마킹 기법을 평가하기 위해서 서로 다른 프로그램을 구별할 수 있는 신뢰도와 프로그램 최적화나 난독화에 견딜 수 있는 강인도에 대한 실험을 하였다. 실험 결과로부터 본 논문에서 제안하는 버스마크가 신뢰도를 유지하면서 기존 방법보다 강인한 버스마크임을 확인할 수 있다.

Design and Implementation of a Tool for Breaking static analysis of Android API Based on Java Reflection (자바 리플렉션 기반의 안드로이드 API 정적 분석무력화 도구의 설계 및 구현)

  • Park, Heewan;Lee, Joo-Hyuk
    • Proceedings of the Korean Society of Computer Information Conference
    • /
    • 2014.01a
    • /
    • pp.99-102
    • /
    • 2014
  • 리플렉션은 자바 언어의 기능 중 하나로, 자바 프로그램을 실행해서 해당 프로그램을 조사하거나 내부의 동작 구조를 조작할 수 있다. 리플렉션을 사용하게 되면 자바 소스의 난독화 뿐만 아니라 정적 분석 도구의 API 호출 탐지를 방해하게 되어 분석 결과의 정확도를 떨어뜨리게 된다. 만약 이 특성을 악용해 악성 앱 제작자가 특정 API 메소드 호출을 은닉하는 목적으로 사용한다면 정적 분석에 의존하는 기존 분석 도구들이 API 메소드 호출을 탐지하기 어렵기 때문에 큰 위협이 될 수 있다. 본 연구에서는 안드로이드 환경에서 표본 어플리케이션에 직접 설계한 도구를 이용하여 API 메소드에 리플렉션을 적용하고, 원본 소스와 리플렉션 후 디컴파일된 소스를 비교하여 API 메소드 호출이 리플렉션을 통해서 은닉 가능함을 보여준다.

  • PDF

Ensuring Securityllable Real-Time Systems by Static Program Analysis (원격 실시간 제어 시스템을 위한 정적 프로그램 분석에 의한 보안 기법)

  • Lim Sung-Soo;Lee Kihwal
    • Journal of the Korea Society of Computer and Information
    • /
    • v.10 no.3 s.35
    • /
    • pp.75-88
    • /
    • 2005
  • This paper proposes a method to ensure security attacks caused by insertion of malicious codes in a real-time control system that can be accessed through networks. The proposed technique is for dynamically upgradable real-time software through networks and based on a static program analysis technique to detect the malicious uses of memory access statements. Validation results are shown using a remotely upgradable real-time control system equipped with a modified compiler where the proposed security technique is applied.

  • PDF

Event Modeling for Static Analysis of JavaScript Event Dispatch (자바스크립트의 이벤트 동작 분석을 위한 이벤트 모델링)

  • Ryou, Yeonhee;Ryu, Sukyoung
    • KIISE Transactions on Computing Practices
    • /
    • v.21 no.12
    • /
    • pp.751-755
    • /
    • 2015
  • Many JavaScript programs are event-driven in the sense that they heavily use event functions that take user inputs to manipulate program behaviors. Thus, in order to statically analyze event-driven JavaScript programs effectively and precisely, static analyzers should be able to understand and precisely analyze the behaviors of events in terms of how they are created and evaluated. In this paper, we describe several reasons why static analysis of event behaviors in JavaScript programs is particularly difficult, and present a new event modeling mechanism that can represent behaviors of events precisely and efficiently for effective analysis of event-based JavaScript programs.

Static Control Flow Analysis of Binary Codes (이진 코드의 정적 제어 흐름 분석)

  • Kim, Ki-Tae;Kim, Je-Min;Yoo, Weon-Hee
    • The Journal of the Korea Contents Association
    • /
    • v.10 no.5
    • /
    • pp.70-79
    • /
    • 2010
  • 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.

An LLVM-Based Implementation of Static Analysis for Detecting Self-Modifying Code and Its Evaluation (자체 수정 코드를 탐지하는 정적 분석방법의 LLVM 프레임워크 기반 구현 및 실험)

  • Yu, Jae-IL;Choi, Kwang-hoon
    • Journal of the Korea Institute of Information Security & Cryptology
    • /
    • v.32 no.2
    • /
    • pp.171-179
    • /
    • 2022
  • Self-Modifying-Code is a code that changes the code by itself during execution time. This technique is particularly abused by malicious code to bypass static analysis. Therefor, in order to effectively detect such malicious codes, it is important to identify self-modifying-codes. In the meantime, Self-modify-codes have been analyzed using dynamic analysis methods, but this is time-consuming and costly. If static analysis can detect self-modifying-code it will be of great help to malicious code analysis. In this paper, we propose a static analysis method to detect self-modified code for binary executable programs converted to LLVM IR and apply this method by making a self-modifying-code benchmark. As a result of the experiment in this paper, the designed static analysis method was effective for the standardized LLVM IR program that was compiled and converted to the benchmark program. However, there was a limitation in that it was difficult to detect the self-modifying-code for the unstructured LLVM IR program in which the binary was lifted and transformed. To overcome this, we need an effective way to lift the binary code.

버퍼 오버플로우 검출을 위한 정적 분석 도구의 현황과 전망

  • Kim, You-Il;Han, Hwan-Soo
    • Review of KIISC
    • /
    • v.16 no.5
    • /
    • pp.45-54
    • /
    • 2006
  • 버퍼 오버플로우는 C 언어로 작성한 소프트웨어에 보안 취약점을 남기는 대표적인 원인이다. 프로그램 정적 분석기법을 통해 버퍼 오버플로우 취약점을 검출하는 방법은 버퍼 오버플로우 취약점을 활용한 다양한 보안 공격에 대한 근본적인 해결책이 될 수 있다. 본 고에서는 버퍼 오버플로우 취약점을 검출할 수 있는 몇 가지 정적 분석 도구들의 특징과 성능을 살펴보고, 보다 효율적이고 정확한 버퍼 오버플로우 정적 분석 도구를 개발하기 위한 우리의 연구 성과를 소개한다.

A Case Study on Detection of Races in Flight Control Software of Unmanned Aerial Vehicle (무인기 비행제어 소프트웨어를 위한 경합탐지 사례연구)

  • Lee, Byoung-Kwi;Kang, Mun-Hye;Jun, Yong-Kee
    • Proceedings of the Korean Information Science Society Conference
    • /
    • 2011.06b
    • /
    • pp.79-82
    • /
    • 2011
  • 무인기용 비행제어 소프트웨어는 인터럽트 핸들러에서 비결정적인 수행결과를 조래하는 경합이 발생될 수 있다. 이러한 유형의 경합을 탐지하기 위한 기존 방법은 원시 프로그램의 인터럽트 핸들러를 스레드로 변환하여 정적 경합탐지 도구를 사용하므로 프로그램 수행 시 실제 발생하지 않는 부정확한 경합(false positives)를 보고한다. 본 연구는 부정확한 경합 보고를 줄이기 위해서 원시 프로그램을 POSIX 실시간 스레브 프로그램으로 변환하고 Lockset기반 탐지기법 의해서 탐지된 공유변수를 대상으로 Happens-before 관계 분석기법을 이용하여 경합을 탐지하는 동적 경합탐지 도구를 사용한다. 제시된 방법의 실험을 위해서 Knob Assembly에 탑재되는 비행제어 소프트웨어를 대상으로 정적 경합탐지 도구와 동적 경합탐지 도구의 경합탐지 결과를 비교 분석한다.

A Study on Informediated code for Analyzing Bytecodes (바이트코드 분석을 위한 중간코드에 관한 연구)

  • Kim, Kyung-Soo;Yoo, Weon-Hee
    • Journal of the Korea Society of Computer and Information
    • /
    • v.11 no.1 s.39
    • /
    • pp.107-117
    • /
    • 2006
  • Java language creates class files through Java compiler. Class files include informations involved with achievement of program. We can do analysis and optimization for efficient codes by analyzing class files. This paper analyzes bytecodes using informations of Java class files. We translate stack-based Java bytecodes into 3-address codes. Then we translate into static single assignment form using the 3-address codes. Static single assignment form provides a compact representation of a variable's definition-use information. Static single assignment form is often used as an intermediate representation during code optimization. Static sing1e assignment form renames each occurrence of a variable such that each variable is defined only once.

  • PDF

Potential Races Detection in Shared-Memory Programs with Internal Nondeterminism (내부적 비결정성을 가진 공유 메모리 프로그램의 잠재적 경합 탐지)

  • Jung, Min-Sub;Kim, Young-Joo;Ha, Ok-Kyoon;Jun, Yong-Kee
    • Proceedings of the Korea Information Processing Society Conference
    • /
    • 2008.05a
    • /
    • pp.553-556
    • /
    • 2008
  • 임계구역을 가진 공유 메모리 기반의 병렬 프로그램에서 발생하는 경합은 프로그래머가 의도하지 않은 비결정적인 수행 결과를 초래하므로 반드시 디버깅해야 한다. 이러한 경합을 수행 중에 탐지하는 기존의 기법들은 임계구역의 실행순서에 의해서 발생하는 내부적 비결정성이 존재하지 않는 프로그램에 대해서만 경합의 존재를 검증할 수 있다. 본 논문에서는 내부적 비결정성을 가진 프로그램에 존재하는 비결정적 접근사건을 정적으로 분석하고, 이 정보를 이용하여 수행 중에 경합을 탐지함으로써 잠재되어 있는 경합까지 탐지할 수 있는 도구를 제안한다. 제안한 도구는 비결정성이 포함된 합성프로그램과 공인된 OpenMP 벤치마크 프로그램인 Microbenchmark를 이용하여 경합 검증이 가능함을 보인다.