• 제목/요약/키워드: control flow graph

검색결과 105건 처리시간 0.032초

예외 흐름 분석을 정상 흐름 분석과 분리하여 Java프로그램에 대한 제어 흐름 그래프를 생성하는 방법 (A Method to Construct Control Flow Graphs for Java Programs by Decoupling Exception Flow Analysis from Normal Flow Analysis)

  • 조장우;창병모
    • 한국정보과학회논문지:소프트웨어및응용
    • /
    • 제31권5호
    • /
    • pp.643-650
    • /
    • 2004
  • 제어 흐름 그래프는 자료 흐름 분석과 제어 종속 분석과 같은 프로그램 분석 분야와 프로그램 슬라이싱과 테스팅과 같은 소프트웨어공학 분야에서 필요로 하는 정보이다. 이러한 분석들이 안전하고 유용하기 위해서는 제어 흐름 그래프는 예외 흐름을 포함해야 한다. 기존의 방법은 예외 흐름과 정상 흐름의 상호 의존적인 관계로 인해 두 흐름을 동시에 계산하면서 제어 흐름 그래프를 생성한다. 그러나 실제 Java 프로그램을 조사해 본 결과 두 흐름이 상호 의존적으로 필요한 경우는 거의 발생하지 않음을 알 수 있었다. 그러므로 정상 흐름과 예외 흐름을 분리해서 계산할 수 있음을 알았고, 예외 흐름을 계산하는 예외 흐름 분석을 제안한다. 그리고 예외 흐름을 표현하는 예외 흐름 그래프를 제안한다. 그리고 제어 흐름 그래프는 예외 흐름 그래프와 정상 흐름 그래프를 합병함으로써 생성될 수 있음을 보인다.

다중스레드 데이타 병렬 프로그램의 표현 : PCFG(Parallel Control Flow Graph) (A Representation for Multithreaded Data-parallel Programs : PCFG(Parallel Control Flow Graph))

  • 김정환
    • 한국정보과학회논문지:시스템및이론
    • /
    • 제29권12호
    • /
    • pp.655-664
    • /
    • 2002
  • 데이타 병렬 모델은 대규모 병렬성을 용이하게 얻을 수 있는 장점이 있지만, 데이타 분산으로 인한 통신 지연시간은 상당한 부담이 된다. 본 논문에서는 데이타 병렬 프로그램에 내재되어 있는 태스크 병렬성을 추출하여 이러한 통신 지연시간을 감추는데 이용할 수 있음을 보인다. 기존의 태스크 병렬성 추출은 데이타 병렬성을 고려하지 않았지만, 여기서는 데이타 병렬성을 그대로 유지하면서 태스크 병렬성을 활용하는 방법에 대해 설명한다. 데이타 병렬 루프를 포함할 수 있는 다수의 태스크 스레드들로 구성된 다중스레드 프로그램을 표현하기 위해 본 논문에서는 PCFG(Parallel Control Flow Graph)라는 표현 형태를 제안한다. PCFG는 단일 스레드인 원시 데이타 병렬 프로그램으로부터 HDG(Hierarchical Dependence Graph)를 통해 생성될 수 있으며, 또한 PCFG로부터 다중스레드 코드를 쉽게 생성할 수 있다.

점진적 실행을 통한 소프트웨어의 구조 그래프 생성 (Constructing Software Structure Graph through Progressive Execution)

  • 이혜련;신승훈;최경희;정기현;박승규
    • 한국컴퓨터정보학회논문지
    • /
    • 제18권7호
    • /
    • pp.111-123
    • /
    • 2013
  • 소프트웨어의 취약성을 검증하기 위하여 소프트웨어의 구조를 유추하여 유추된 구조를 활용하여 테스트하는 방법이 주목받고 있다. 이와 같은 방법을 사용하기 위해서 효과적인 소프트웨어의 구조 유추 방법이 요구된다. 많이 사용되는 DFG(Data Flow Graph), CFG(Control Flow Graph) 이나 CFA(Control Flow Automata)와 같은 그래프나 트리 방식은 소프트웨어 모델을 구조적으로 표현하지 못하는 단점을 가진다. 본 논문에서는 이러한 단점을 극복할 수 있는 방법을 제시한다. 제시된 방법은 바이너리 코드에 다양한 입력데이터 들을 부여하여 입력데이터별 CFG를 생성하고, 생성된 CFG들이 구조적으로 표현될 수 있도록 계층적 제어 흐름 그래프(Hierarchical Control Flow Graph, HCFG)를 작성한다. 또한 제안하는 HCFG을 생성하는데 요구되는 그래프의 구성요소와 점진적 그래프 생성 알고리듬도 제시한다. 제안한 방법론을 공개된 SMTP(Simple Mail Transfer Protocol) 서버 프로그램에 적용시켜 소프트웨어의 모델을 작성하는 실험을 수행하고, 생성된 모델과 실제 소프트웨어 구조를 비교 분석한다.

ICFGO : Inter-Procedural Control Flow Graph 난독화를 위한 UI 은닉 및 Dummy Flow 삽입 기법 (ICFGO : UI Concealing and Dummy Flow Insertion Method for Inter-Procedural Control Flow Graph Obfuscation)

  • 심현석;정수환
    • 정보보호학회논문지
    • /
    • 제30권3호
    • /
    • pp.493-501
    • /
    • 2020
  • 안드로이드 운영체제에서 Flow Analysis의 난독화를 위해서는 실행되지 않는 흐름의 코드를 생성하여 Flow Graph의 크기를 크게 만들어 분석이 어렵게 만들 수 있다. 이를 위해 논문에서는 aar 형태의 라이브러리를 구현하여 외부 라이브러리의 형태로 애플리케이션에 삽입이 가능하도록 하였다. 라이브러리는 더미 코드에서의 진입점에서 부터 최대 5개의 child node를 가질 수 있도록 설계되었으며, child node의 클래스는 각 node마다 100개부터 900개까지 2n+1개의 메서드를 가지고 있으므로 총 2,500개의 진입점으로 구성된다. 또한 진입점은 XML에서 총 150개의 뷰로 구성되며, 각각의 진입점은 비동기 인터페이스를 통해 연결된다. 따라서 Inter-Procedural 기반의 Control Flow Graph를 생성하는 과정에서는 최대 14,175E+11개의 추가적인 경우의 수를 가지게 된다. 이를 애플리케이션에 적용한 결과 Inter Procedural Control Flow Analysis 툴에서 평균 10,931개의 Edge와 3,015개의 Node가 추가 생성되었으며 평균 36.64%의 그래프 크기 증가율을 갖는다. 또한 APK를 분석 시에는 최대 평균 76.33MB의 오버헤드가 발생하였지만, 사용자의 ART 환경에서는 최대 평균 0.88MB의 실행 오버헤드만을 가지며 실행 가능한 것을 확인하였다.

Esterel에서 근사-제어 흐름그래프의 효율적인 생성 (Efficient Construction of Over-approximated CFG on Esterel)

  • 김철주;윤정한;서선애;최광무;한태숙
    • 한국정보과학회논문지:컴퓨팅의 실제 및 레터
    • /
    • 제15권11호
    • /
    • pp.876-880
    • /
    • 2009
  • 프로그램에 대한 자료흐름분석(data flow analysis)를 수행하기 위해서는 입력된 프로그램에 대응하는 제어흐름그래프(control flow graph)가 필요하다. 본 논문에서는 동기(synchronous)식 절차(imperative)형 언어 중 하나인 Esterel로 작성된 프로그램에 대해서 단순하면서 입력 프로그램의 구조와 흡사한 형태로 표현되는 근사-제어흐름그래프(over-approximated CFG) 생성방법을 제안한다. 제안된 방법을 이용하면 병렬 제어흐름을 표현하는 부분에서 실행 불가능한 경우까지 포함할 수 있다. 그렇지만, 생성방법이 직관적이고, 실제 수행경로를 모두 포함하기 때문에 다른 분석을 수행하는데 매우 적차하다.

실시간 내장형 S/W의 성능분석을 위한 Control Flow Graph 추출 (Control Flow Graph Extraction for Performance Analysis of Real-Time Embedded Software)

  • 황요섭;안성용;이정아;심재홍
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2003년도 봄 학술발표논문집 Vol.30 No.1 (A)
    • /
    • pp.217-219
    • /
    • 2003
  • 최근 반도체 설계 및 생산 공정의 급속한 발달로 내장형 시스템이 대중화되는 추세이고 비용이나 제품 출시 기간에 있어서 내장형 소프트웨어는 중요한 하나의 요소로 대두되고 있다. 내장형 시스템은 일반 PC와는 다르게 메모리 크기. 전력 소비, 신뢰성, 사이즈. 비용 등과 같은 제약사항들을 내포하기 때문에 제한된 자원의 효율적인 이용과 소프트웨어의 최적화를 위해 소프트웨어의 성능을 분석하기 위한 필요성이 대두된다. 본 논문에서는 소프트웨어 성능분석 도구인 'Cinderella'를 확장하기 위하여 현재 가장 널리 사용되고 있는 이진 실행 파일인 ELF파일에서 성능을 측정하기 위한 기본 요소로서 Control flow graph를 추출하기 위한 알고리즘을 제안한다. 본 논문에서 제안한 알고리즘은 향후 ARM기반의 머신에서 ELF파일의 내장형 소프트웨어의 시간분석에 필요한 요소이다.

  • PDF

제어 흐름 그래프 매칭 기반 자바 버스마크 (A Java Birthmark based on Control Flow Graph Matching)

  • 박희완;임현일;최석우;한태숙
    • 한국정보과학회논문지:컴퓨팅의 실제 및 레터
    • /
    • 제15권11호
    • /
    • pp.871-875
    • /
    • 2009
  • 소프트웨어 버스마크는 프로그램을 식별하는데 사용될 수 있는 내재된 특징이다. 본 논문에서는 제어 흐름 그래프 매칭 기반의 새로운 자바 버스마크를 제안한다. 제어 흐름 그래프 매칭은 노드 매칭과 에지 매칭으로 이루어진다. 두 제어 흐름 그래프의 노드 유사도와 에지 유사토를 구하기 위해서 서열 정렬 알고리즘과 최단거리 알고리즘을 각각 사용하였다. 제안된 버스마크를 평가하기 위해서 다양한 알고리즘을 구현한 자바 프로그램을 대상으로 실험을 하였다. 제안된 버스마크는 이 실험에서 높은 신뢰도와 강인도 뿐만 아니라 빠른 실행 성능을 보여주었다.

AST 와 CFG 에 기반한 Node.js 모듈 취약점 분석 (Node.js Module Vulnerability Analysis: Based on AST and CFG)

  • 김희연;오호균;김지훈;유재욱;신정훈;김경곤
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2019년도 추계학술발표대회
    • /
    • pp.475-478
    • /
    • 2019
  • 웹어플리케이션의 발전에 따라 자바스크립트 런타임 플랫폼인 Node.js 의 사용도 증가하고 있다. 개발자들은 Node.js 의 다양한 모듈을 활용하여 프로그래밍을 하게 되는데, Node.js 모듈 보안의 중요성에 비하여 모듈 취약점 분석은 충분히 이루어지지 않고 있다. 본 논문에서는 소스코드의 구조를 트리 형태로 표현하는 Abstract Syntax Tree 와 소스코드의 실행 흐름 및 변수의 흐름을 그래프로 나타내는 Control Flow Graph/Data Flow Graph 가 Node.js 모듈 취약점 분석에 효율적으로 활용될 수 있음을 서술하고자 한다. Node.js 모듈은 여러 스크립트 파일로 나누어져 있다는 점과 사용자의 입력이 분명하다는 특징이 있다. 또한 자바스크립트 언어를 사용하므로 선언된 변수들의 타입에 따라 적용되는 범위인 scope 가 다르게 적용된다는 특징이 있다. 본 논문에서는 이러한 Node.js 모듈의 특징을 고려하여 Abstract Syntax Tree 및 Control Flow Graph/Data Flow Graph 을 어떻게 생성하고 취약점 분석에 활용할 것인지에 대한 방법론을 제안하고, 실제 분석에 활용할 수 있는 코드 구현을 통하여 구체화시키고자 한다.

CTOC에서 자바 바이트코드를 이용한 제어 흐름 분석에 관한 연구 (A Study on Control Flow Analysis Using Java Bytecodes in CTOC)

  • 유원희;김기태
    • 한국콘텐츠학회논문지
    • /
    • 제6권1호
    • /
    • pp.160-169
    • /
    • 2006
  • 본 논문은 바이트코드(bytecode) 수준에서 프로그램 분석과 최적화를 위한 구조를 서술한다. 바이트코드 수준에서 분석을 수행하기 위해서는 우선 제어 흐름 그래프(CFG : Control Flow Graph)를 생성해야 한다. 바이트코드의 특성 때문에 기존의 제어 흐름 분석 기술을 바이트코드에 적합하게 확장해야 한다. CFG를 작성하기 위해 기본 블록을 생성하고 기본 블록간의 관계를 이용하여 최적화 과정에서 사용되는 각종 정보를 생성한다. 생성된 CFG는 자바 바이트코드의 이해와 유지보수를 위해 테스트되고, 데이터 흐름 분석과 의존성 분석과 같은 다른 분석을 위해서 사용된다. 본 논문에서는 바이트코드 수준의 제어 흐름 분석을 위해 CTOC(Classes To Optimized Classes)의 CTOC-BR(CTOC-Bytecode tRanslator)을 구현한다. CTOC는 자바 바이트코드의 최적화와 분석을 위해 현재 개발 중인 프레임 워크의 이름이고, CTOC에서 CTOC-BR은 스택 기반인 바이트코드의 최적화와 분석을 쉽게 하기 위해 트리 형태로 변환을 수행하는 도구이다.

  • PDF

에지 확장을 통한 제어 흐름 그래프의 효과적인 비교 방법 (An Effective Method for Comparing Control Flow Graphs through Edge Extension)

  • 임현일
    • 정보처리학회논문지:컴퓨터 및 통신 시스템
    • /
    • 제2권8호
    • /
    • pp.317-326
    • /
    • 2013
  • 본 논문에서는 바이너리 프로그램의 정적인 구조를 표현하는 제어 흐름 그래프를 비교하는 방법을 제안한다. 제어 흐름 그래프를 비교하기 위해서 기본 블록에 포함된 프로그램의 명령어 및 구문 정보를 비교한 후 기본 블록 사이의 유사한 정도를 측정한다. 또한, 에지 확장을 통해 기본 블록들 간의 제어 흐름을 표현하는 그래프 에지의 유사성을 함께 반영한다. 각 기본 블록 사이의 유사도 결과를 기반으로 기본 블록을 서로 매칭하고, 기본 블록 사이의 매칭 정보를 이용해서 전체 제어 흐름 그래프의 유사도를 측정한다. 본 논문에서 제안한 방법은 자바 프로그램으로부터 추출한 제어 흐름 그래프를 대상으로 제어 흐름 구조의 유사성에 따라 두 가지 기준으로 실험을 수행하였다. 그리고, 성능을 평가하기 위해서 기존의 구조적 비교 방법을 함께 실험하였다. 실험 결과로부터 에지 확장 방법은 서로 다른 프로그램에 대해 충분한 변별력을 가지고 있음을 확인할 수 있다. 프로그램 비교에 좀 더 많은 시간이 소요되지만, 구조가 유사한 프로그램에 대한 매칭 능력에서 기존의 구조적 비교 방법에 비해 우수한 결과를 보였다. 제어 흐름 그래프는 프로그램의 분석에 다양하게 활용될 수 있으며, 제어 흐름 그래프의 비교 방법은 프로그램의 유사성 비교를 통한 코드의 최적화, 유사 코드 검출, 코드의 도용 탐지 등 다양한 분야에서 응용될 수 있을 것이라 기대된다.