• 제목/요약/키워드: 정적 프로그램 분석

검색결과 903건 처리시간 0.029초

안드로이드 프로그램 정적 분석 고찰 (A Static Analysis of Android Programs)

  • 이호석
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2012년도 한국컴퓨터종합학술대회논문집 Vol.39 No.1(C)
    • /
    • pp.227-229
    • /
    • 2012
  • 본 논문은 Android 프로그램의 정적 분석 방법을 논의한다. Android 프로그램 정적 분석의 목적은 오류발견, 개인정보 해킹 코드 발견, 바이러스 발견, 프로그램 분류 등등이다. 본 논문에서는 Android 프로그램의 분석을 위하여 구문 패턴 정적 분석과 프로그램으로부터 객체 다이아그람과 Flowchart 를 생성하여 프로그램 동적 실행을 추정하여 분석하는 통합된 정적 분석 방법을 논의한다. 프로그램 실행 추정 분석은 프로그램에서 객체 생성, 메소드 호출, 데이터 흐름, 실행 흐름, API 호출과 진행 과정 등을 추정하여, 구문 패턴 정적 분석만으로는 파악하지 못하는 프로그램 실행의 동적 분석이 가능하도록 한다.

실행시간 전문화를 위한 집합기반 분석의 준비 (Preparing Set-Based Analysis for Run-time Specialization)

  • 어현준;이광근
    • 한국정보과학회논문지:소프트웨어및응용
    • /
    • 제27권9호
    • /
    • pp.986-1002
    • /
    • 2000
  • 정적 분석을 사용하여 프로그램의 입력에 의존하는 성질을 예측하는 방법을 제안한다. 제안된 방법은 입력에 무관한 성질을 예측하도록 설계된 정적 분석을 입력에 의존하는 성질을 예측하는 분석으로 변환한다. 이 방법은 실행 중에 프로그램의 성질을 알아내기 위해서 실행중인 프로그램을 관찰하는 코드가 필요 없고 계측된 자료를 모으는 과정도 필요 없다. 정적 분석의 가장 마지막 부분을 프로그램의 실행 시간으로 미루는 것이 이 논문의 핵심 아이디어다. 먼저 정적 분석을 분석하여, 프로그램의 입력에 민감하여 프로그램의 실행시간으로 연기되어야 하는 부분을 찾아낸다. 그 후, 값을 자른 분석을 사용하여 이 부분을 재구성하여 프로그램의 입력에 대한 간단한 멤버쉽 테스트에 의해 분석이 풀어질 수 있도록 한다. 이런 재구성 과정을 통해 준비된 분석들은 프로그램의 입력이 나타나기만 하면 순간적으로, 동시에 풀려질 수 있다. 모든 과정은 엄밀하게 정의되고 증명되었다.

  • PDF

분산 실시간 시스템에서 신뢰성 향상을 위한 통신 부하 분석 (Communication Overhead Analysis for Improving Reliability in Distributed Real-Time Systems)

  • 구현우;홍영식
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2005년도 한국컴퓨터종합학술대회 논문집 Vol.32 No.1 (A)
    • /
    • pp.769-771
    • /
    • 2005
  • 실시간 시스템은 논리적 정확성뿐만 아니라 시간적 정할성을 요구한다. 시간적 정확성을 만족시키기 위해 실시간 시스템의 설계자는 작업들의 스케줄 가능성에 대한 연구를 선행해야만 한다. 그리고 스케줄 가능성 분석을 위해 프로그램들에 대한 실행 시간 예측이 필요하다. 작업들의 실행 시간 예측을 위한 방법으로 측정과 정적 분석이 연구되었다. 측정 및 정적 분석은 비용 핀 확장성에 문제점을 지니고 있고 실시간 시스템의 발전을 따라가지 못하여 분석 결과의 정확성 밀 신뢰성이 만족스럽지 못하다. 본 논문에서는 정적 분석을 단일 실시간 시스템이 아닌 분산 실시간 시스템에 적용할 수 있는 확장된 정적 분석 도구의 개발에 초점을 둔다. 먼저 확장된 정적 분석 도구의 개발을 위해 통신 영향 요소의 분석 과정을 설계한다. 특히, 통신 부하의 영향 요소 중 통신 준비에 필요한 과정을 선행 예측 테이블로 작성하여 원시 프로그램 분석에 이용하고자 한다. 실행 시간에 영향을 미치는 요소들의 분석을 통해 원시 프로그램에서 자동적으로 예측된 실행 시간의 정확도와 신뢰도를 높인다.

  • PDF

정적으로 2단계 언어의 불필요한 식 찾기 (Static Useless-Code-Detection for Two-Stage Language)

  • 조성근;이광근
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2011년도 한국컴퓨터종합학술대회논문집 Vol.38 No.1(C)
    • /
    • pp.478-481
    • /
    • 2011
  • 이 논문에서는 정적으로 2단계 언어의 불필요한 식을 찾는 분석 방법을 제안한다. 불필요한 식이란 식의 실행의미가 프로그램의 결과에 영향을 미치지 않는 식을 말한다. 다단계 프로그램이 불필요한 식을 만들어내는 지 프로그램 실행전에 알 수 있다면 프로그램 실행에 드는 비용을 줄일 수 있다. 이 분석은 다형타입을 가지는 다단계 언어의 타입시스템과 타입시스템에 올라탄 분석에 기반하고 있다. 이 분석으로 프로그램 실행 시 불필요한 식이 프로그램 코드 형태로 전파되는 것을 알 수 있으며 다형타입을 이용한 정교한 분석이 가능하다.

분산 실시간 시스템에서 신뢰성 향상을 위한 운영체제 영향 요소 분석 (Analysis of OS Timing Factor for Improving Reliability in Distributed Real-Time Systems)

  • 구현우;홍영식
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2006년도 한국컴퓨터종합학술대회 논문집 Vol.33 No.1 (A)
    • /
    • pp.376-378
    • /
    • 2006
  • 실시간 시스템은 논리적 정확성뿐만 아니라 시간적 정확성을 요구한다. 시간적 정확성을 만족시키기 위해 실시간 시스템의 설계자는 작업들의 스케줄 가능성에 대한 연구를 선행해야만 한다. 그리고 스케줄 가능성 분석을 위해 프로그램들에 대한 실행 시간의 예측이 필요하다. 프로그램 또는 작업들의 실행 시간 예측을 위한 방법으로 측정과 정적 분석이 연구되었다. 측정 및 정적 분석은 비용 및 확장성에 문제점을 지니고 있고 실시간 시스템의 발전을 따라가지 못하여 분석 결과의 정확성 및 신뢰성이 만족스럽지 못한 경우가 발생한다. 본 논문에서는 정적 분석을 단일 실시간 시스템이 아닌 분산 실시간 시스템에 적용할 수 있는 확장된 정적 분석 도구의 개발에 초점을 둔다. 특히, 확장된 정적 분석 도구의 개발을 위해 운영체제에서 발생되는 작업 실행 영향 요소 분석 과정을 설계한다 실시간 시스템에서 시간적 정확성을 만족하기 위해 스케줄링 기법이 가장 중요하고 이러한 스케줄링 기법은 운영체제 영향 요소 분석 대상 중 가장 중용한 요소이다. 이에 따라 스케줄러의 동작 과정의 정적 분석 및 우선 순위에 따른 작업의 큐 대기 시간예측을 통해 원시 프로그램에서 자동적으로 예측된 실행 시간의 정확도와 신뢰도를 높인다.

  • PDF

플래시 메모리 저장 장치를 사용하는 프로그램의 성능 향상을 위한 정적 분석 기법의 응용 (Applying Static Analysis to Improve Performance of Programs using Flash Memory Storage)

  • 백준영;조은선
    • 한국정보과학회논문지:컴퓨팅의 실제 및 레터
    • /
    • 제16권12호
    • /
    • pp.1177-1187
    • /
    • 2010
  • 플래시 메모리는 휴대성, 저전력, 대용량의 특징을 갖고 있어 휴대용 기기에서의 사용이 증가하고 있다. 그러나 하드디스크와는 달리 플래시 메모리는 읽기 연산에 비해 쓰기 연산의 비용이 상대적으로 커서, 쓰기 연산 횟수 감소에 대한 연구가 요구된다. 본 논문에서는 데이터 쓰기 연산 횟수를 감소시키기 위해, 플래시 메모리에 저장된 데이터를 다루는 응용 프로그램을 재작성하여 저장될 데이터를 적절히 재배치하기 위한 정적 분석 기법을 제안하였다. 이 기법은 프로그램을 정적 분석해서 쓰기 연산 부분을 파악하고, 이들을 분리해내어 저장되도록 프로그램을 재작성 함으로써, 수행 시간에 전체 쓰기 영역이 줄어들도록 하는 것이다. 따라서 본 논문에서는 프로그램에서 다루어지는 데이터 중 쓰기 가능한 영역을 얻어내는 분석과 가능한 작은 개수의 페이지에 쓰기 대상 부분이 모여 있도록 재배치하기 위한 분석을 고안하였다. 정적 분석 결과는 자주 수행되는 프로그램 경로에 대한 프로파일링 결과와 조합되어 보다 실제적인 분석 결과를 얻고자 하였으며, 결과적으로, FAST 시뮬레이터 상에서 데이터 처리 성능을 향상시키는 데에 기여함을 보였다.

C 프로그램의 버퍼 오버런(buffer overrun) 오류를 찾아 주는 정적 분석기의 설계와 구현 (Design and Implementation of Static Program Analyzer Finding All Buffer Overrun Errors in C Programs)

  • 이광근;김재황;정영범
    • 한국정보과학회논문지:소프트웨어및응용
    • /
    • 제33권5호
    • /
    • pp.508-524
    • /
    • 2006
  • 이 논문에서는 정적 프로그램 분석(static program analysis)과 통계적 분석(statistical analysis)의 조합을 가지고 실제적인 C 프로그램을 검증한 경험을 보고한다. 정적 분석과 통계적 분석의 조합은 입력 프로그램에 제한을 두지 않는 정적 분석기에서 발생하는 불가피한 허위 경보를 줄이기 위한 것이다. 우리는 ANSI C 프로그램이 실행 중에 겪을 수 있는 모든 배열 참조 오류(buffer overrun)를 찾아주는 정적 프로그램 분석기 아이락(Airac, Array Index Range Analyzer for C)을 고안하고 구현하였다. 분석의 안전성(soundness)을 유지하면서 프로그램 분석 분야에서 오랫동안 축적된 기술들을 활용하여 분석 비용 절감 및 정확도 향상을 달성했다. 대상 프로그램에 제한을 두지 않는 안전한 분석은 정확도에 한계가 있으므로 불가피한 허위 경보가 존재할 수 있다. 이러한 허위 경보(예를 들어 530만 줄짜리 상용 C 프로그램에 대한 분석 결과 아이락은 970개의 배열 참조 오류 경보를 발생시켰으나 그 중 737개는 허위 경보였다.)에 대처하기 위해 우리는 통계적 사후 분석을 시도하였다. 통계적 사후 분석은 주어진 경보가 실제 오류를 가리킬 확률을 계산한다. 이렇게 계산된 확률은 두 가지 방법으로 사용된다. 1) 경보를 걸러내거나, 2) 실제 오류에 대한 경보일 가능성이 높은 것들을 우선적으로 사용자에게 보여준다. 우리는 리눅스 커널 프로그램과 알고리즘 교과서의 프로그램들을 대상으로 실험을 수행했다. 우리 실험에서 실제 오류를 놓칠 위험이 허위 경보의 위험의 3배라고 설정한 경우 74.83%의 허위 경보를 걸러낼 수 있었고, 참일 확률이 높은 경보부터 검증하는 경우 15.17%의 허위 경보만이 실제 오류 50%와 섞여 있었다.

WALA와 Boa를 활용하여 대규모 소프트웨어 저장소를 정적으로 분석하는 도구 개발 (Static Analysis of Large Scale Software Repositories Using WALA and Boa)

  • 박경희;류석영
    • 정보과학회 논문지
    • /
    • 제44권10호
    • /
    • pp.1081-1086
    • /
    • 2017
  • 대규모 공개 소스 소프트웨어 저장소를 대상으로 프로그램 분석을 수행하면, 각 저장소의 소프트웨어의 변화 과정을 살펴볼 수 있고, 방대한 양의 프로그램을 분석함으로써 신뢰도가 높은 분석 결과를 얻을 수 있다는 점에서 의의가 있다. 본 논문에서는 대규모 소프트웨어 저장소를 대상으로 확장 가능하게 정적 프로그램 분석을 수행할 수 있는 프레임워크인 WALABOA를 소개한다. 나아가, 정적 분석 결과인 정적 함수 호출 그래프와 동적 분석 결과인 동적 함수 호출 그래프를 비교하는 모듈을 WALABOA에 추가하여, 자바스크립트 분석기 WALA에서 제공하는 분석 기법 중 하나인 필드 기반 분석(field-based analysis) 결과를 평가하는 데 활용하였다.

정적 프로그램 분석 과정을 단순화하기 위한 지원 툴 설계 (Design of a Supporting Tool for Simplifying Static Program Analysis Process)

  • 윤준호;이병정;우치수
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2003년도 봄 학술발표논문집 Vol.30 No.1 (B)
    • /
    • pp.19-21
    • /
    • 2003
  • 정적 프로그램 분석기는 프로그램의 결점을 찾아내는 초기 목적에서 진화하여, 역공학. 재공학. 메트릭 검증 등 도구의 front-End 모듈로 많이 쓰이고 있다. 이에 대한 다양한 연구가 진행되고 있고. 또 많은 관련 도구들이 소개되었지만, 사용자가 생각을 직접 코드형태로 구현하고, 결과를 모델형태로 표현하여, 시험하고 검증할 수 있도록 도와주는 프레임웍 수준 도구들은 거의 나와있지 않다. 본 논문에서는 정적 프로그램 분석을 쉽게 할 수 있도록 지원하는 기반도구의 설계를 제안한다. 본 연구에서는 언어의 파싱과 시각화 과정의 반복되는 작업들을 추상화하고, 분석 코드를 파싱 코드와 분리함으로써 사용자로 하여금 분석 과정에 집중할 수 있도록 도와준다.

  • PDF

정적 API 트레이스 버스마크를 이용한 자바 클래스 도용 탐지 (Detecting Java Class Theft using Static API Trace Birthmark)

  • 박희완;최석우;임현일;한태숙
    • 한국정보과학회논문지:컴퓨팅의 실제 및 레터
    • /
    • 제14권9호
    • /
    • pp.911-915
    • /
    • 2008
  • 소프트웨어 버스마크는 프로그램을 식별하는데 사용될 수 있는 프로그램의 고유한 특징을 말한다. 본 논문에서는 정적 API 트레이스 정보를 이용하여 자바 클래스 도용을 탐지하는 방법을 제안한다. 정적 API 트레이스를 생성할 때 제어 흐름을 분석하여 버스마크의 강인성을 높였고, 트레이스를 비교할 때 준전체 정렬 방법을 사용하여 서로 다른 프로그램을 구별할 수 있는 신뢰성을 높였다. XML Parser 패키지에 대한 신뢰도와 강인도 실험 결과를 통하여 본 논문에서 제안하는 정적 API 트레이스 버스마크가 자바 클래스 도용을 탐지하는데 있어서 기존의 버스마크들보다 효과적임을 보였다.