KR101029334B1 - Api 로깅 장치 및 방법 - Google Patents

Api 로깅 장치 및 방법 Download PDF

Info

Publication number
KR101029334B1
KR101029334B1 KR1020090024836A KR20090024836A KR101029334B1 KR 101029334 B1 KR101029334 B1 KR 101029334B1 KR 1020090024836 A KR1020090024836 A KR 1020090024836A KR 20090024836 A KR20090024836 A KR 20090024836A KR 101029334 B1 KR101029334 B1 KR 101029334B1
Authority
KR
South Korea
Prior art keywords
library
virtual
api
information
application
Prior art date
Application number
KR1020090024836A
Other languages
English (en)
Other versions
KR20100062815A (ko
Inventor
윤석진
신규상
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Publication of KR20100062815A publication Critical patent/KR20100062815A/ko
Application granted granted Critical
Publication of KR101029334B1 publication Critical patent/KR101029334B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 응용 프로그램의 실행정보를 분석 방법에 관한 것이다. 즉, 본 발명에서는 응용 프로그램의 실행 단계에서 자동으로 생성된 가상의 API를 통해 실제 라이브러리의 구조와 동일한 구조로 생성된 가상 라이브러리를 호출하도록 하고, 가상 라이브러리에서는 응용 프로그램이 실행됨에 따라 호출되는 라이브러리 호출 정보와 파라미터값을 로깅 정보로 기록하도록 함으로써, 응용 프로그램의 소스코드에 대한 수정 없이도 응용 프로그램의 실행 정보를 보다 용이하게 분석할 수 있다.
API, 로깅, 라이브러리, 모니터링

Description

API 로깅 장치 및 방법{API LOGGING APPARATUS AND METHOD THEREOF}
본 발명은 응용 프로그램(application program)의 실행정보를 분석하는 방법에 관한 것으로, 특히 응용 프로그램의 실행 단계에서 자동으로 생성된 가상의 API(application interface)를 통해 가상 라이브러리(virtual library)를 호출하도록 하고, 가상 라이브러리에서는 응용 프로그램이 실행됨에 따라 호출되는 라이브러리 함수 등의 정보와 파라미터값(parameter)을 로깅(logging) 정보로 기록하도록 함으로써, 응용 프로그램의 실행정보를 분석할 수 있도록 하는 API 로깅 장치 및 방법에 관한 것이다.
본 발명은 지식경제부 및 정보통신연구진흥원의 IT신성장동력기술개발사업의 일환으로 수행한 연구로부터 도출된 것이다[과제관리번호: 2007-S-031-02, 과제명: 다중 플랫폼 지원 모바일 응용 S/W 개발환경 기술개발].
통상적으로, 응용 프로그램은 다양한 하드웨어(hardware)적 특성 및 소프트웨어(software) 환경을 갖는 타겟 시스템(target system)에서 동작해야 하므로 새로운 환경에 대한 안정성을 확보하기 위하여 반복적인 테스트 과정을 필요로 하며, 이러한 테스트를 위해서는 응용 프로그램의 실행 상태를 모니터링(monitoring)하는 것이 필요하다.
이와 같은, 응용 프로그램의 모니터링을 위한 한 방법으로 종래에는 코드(code) 삽입 기술을 이용하여 응용 프로그램의 소스 코드(source code)에 모니터링 코드(monitoring code)를 삽입한 이후에 응용 프로그램이 수행되는 단계를 추적하는 방법을 사용하고 있다.
그러나, 위와 같이, 응용 프로그램의 소스 코드상에 코드 삽입 기술을 이용하여 모니터링 코드를 삽입하는 종래 방법에서는 분석 대상 응용 프로그램의 소스코드를 분석해야하는 복합한 과정이 필요하며, 또한 응용 프로그램의 소스 코드 사이에 삽입된 모니터링 코드를 수행해야함에 따라 응용 프로그램의 실행 속도가 느려지는 문제점이 있었다.
따라서, 본 발명은 응용 프로그램의 실행 단계에서 자동으로 생성된 가상의 API를 통해 실제 라이브러리의 구조와 동일한 구조로 생성된 가상 라이브러리를 호출하도록 하고, 가상 라이브러리에서는 응용 프로그램이 실행됨에 따라 호출되는 라이브러리 호출 정보와 파라미터값을 로깅 정보로 기록하도록 함으로써, 응용 프로그램의 소스코드에 대한 수정 없이도 응용 프로그램의 실행 정보를 보다 용이하게 분석할 수 있도록 하는 API 로깅 장치 및 방법을 제공하고자 한다.
상술한 본 발명은 API 로깅 장치로서, 응용 프로그램에서 호출되는 실제 라이브러리와 동일한 구조로 형성되는 가상 라이브러리와, 라이브러리 구조를 분석하여 가상의 라이브러리를 생성하는 가상 라이브러리와, 상기 응용 프로그램의 실행 시 상기 가상 라이브러리에서 호출되는 라이브러리 정보와 파라미터값에 대한 로깅 정보를 기록하는 로그 저장기와, 상기 응용 프로그램의 API 정보를 분석하여 가상의 API 코드를 생성하여 상기 응용 프로그램의 실행 시 상기 가상 라이브러리를 호출하고, 상기 응용 프로그램의 실행에 따른 로깅 정보를 기록하는 가상 API 생성기를 포함한다.
또한, 상기 가상 API 생성기는, 상기 로깅 정보의 기록을 수행한 후, 상기 호출된 라이브러리 정보와 파라미터값에 따라 실제 라이브러리를 호출하여 동작을 수행하고, 결과 값을 상기 응용 프로그램에 반환시키는 것을 특징으로 한다. 또한, 상기 가상 API 생성기는, 상기 실제 라이브러리의 구조를 직접 분석하여 상기 가상 라이브러리를 생성하거나, 상기 실제 라이브러리에 대한 정보 파일을 구성하여 상기 구성된 정보파일로부터 상기 실제 라이브러리의 구조를 분석한 후, 상기 가상 라이브러리를 생성하는 것을 특징으로 한다.
또한, 본 발명은 API 로깅 정보 저장방법으로서, 응용 프로그램 분석을 위한 가상 API 코드와 가상 라이브러리를 생성하는 단계와, 상기 응용 프로그램의 실행 시 상기 가상 API 코드가 실행되어 상기 가상 라이브러리를 호출하는 단계와, 상기 가상 라이브러리에서 상기 응용 프로그램에서 호출되는 라이브러리 정보 및 파라미 터값을 로깅 기록하는 단계를 포함한다.
또한, 상기 API 로깅 정보 저장방법은, 상기 로깅 기록 단계이후, 상기 호출된 라이브러리 정보와 파라미터값에 따라 실제 라이브러리를 호출하여 동작을 수행하고, 결과 값을 상기 응용 프로그램에 반환시키는 단계를 더 포함하는 것을 특징으로 한다.
본 발명에서는 응용 프로그램의 실행 단계에서 자동으로 생성된 가상의 API를 통해 실제 라이브러리의 구조와 동일한 구조로 생성된 가상 라이브러리를 호출하도록 하고, 가상 라이브러리에서는 응용 프로그램이 실행됨에 따라 호출되는 라이브러리 호출 정보와 파라미터값을 로깅 정보로 기록하도록 함으로써, 응용 프로그램의 소스코드에 대한 수정 없이도 응용 프로그램의 실행 정보를 보다 용이하게 분석할 수 있는 이점이 있다.
이하, 첨부된 도면을 참조하여 본 발명의 동작 원리를 상세히 설명한다. 하기에서 본 발명을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그 러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도 1은 본 발명의 실시 예에 따른 API 로깅장치의 블록 구성을 도시한 것으로, 본 발명의 API 로깅장치는 가상 API 생성기(100)와, 가상 라이브러리(102)와 로그 저장기(104)를 포함한다.
이하, 도 1을 참조하여 본 발명의 API 로깅 장치 각 구성요소의 동작을 상세히 설명하기로 한다.
먼저, 가상 API 생성기(100)는 분석하고자 하는 분석 대상 응용 프로그램(120)의 API 정보를 분석하여 동일한 정보를 가지는 가상의 API 코드를 생성하고, 분석 대상 응용 프로그램(120)에서 호출되는 실제 라이브러리(library)(130)와 동일한 구조를 가지는 가상 라이브러리(102)를 생성한다.
이때, 가상 API 생성기(100)는 응용 프로그램(120)에서 호출되는 실제 라이브러리(130)의 구조(structure)를 직접 분석하여 가상 라이브러리(102)를 생성할 수도 있으며, 또는 실제 라이브러리(130)에 대한 정보 파일(information file)을 구성하고, 구성된 정보파일로부터 실제 라이브러리(130)의 구조를 분석하여 가상 라이브러리(102)를 생성할 수도 있다.
로그 저장기(104)는 응용 프로그램(120)의 실행 시 가상 라이브러리(102)에서 호출되는 라이브러리 정보와 파라미터값(parameter)에 대한 정보를 가상 라이브러리(102)로부터 제공받아 응용 프로그램(120)의 실행 상태에 대한 로깅 정보를 기 록한다.
동작을 살펴보면, 즉, 가상 API 생성기(100)는 응용 프로그램(120)의 API 정보를 분석하여 가상의 API 코드를 생성하고, 가상 라이브러리(102)를 생성한 후, 응용 프로그램(120)의 실행 시 실제 라이브러리(130)가 호출되는 대신 가상 라이브러리(102)가 호출되도록 한다. 이에 따라, 가상 라이브러리(102)는 응용 프로그램(120)으로부터 호출되는 라이브러리 정보 및 파라미터값을 수신하여 이를 로그 저장기(104)로 제공한다. 그러면, 로그 저장기(104)는 응용 프로그램(120)의 실행 시 가상 라이브러리(102)에서 호출되는 라이브러리 정보와 파라미터값에 대한 정보를 가상 라이브러리(102)로부터 제공받아 응용 프로그램(120)의 실행 상태에 대한 로깅 정보를 기록한다.
이어, 로그 저장기(104)에서 위와 같이, 응용 프로그램(120)의 실행 상태에 대한 로깅 정보의 기록이 완료되는 경우, 가상 API 생성기(100)는 응용 프로그램(120)에서 호출된 라이브러리 정보와 파라미터값에 따라 실제 라이브러리(130)를 호출하여 응용 프로그램(120)에 의한 동작이 수행되도록 한 후, 그 결과 값을 응용 프로그램(120)에 반환시킴으로써, 응용 프로그램(120)은 가상 API 생성기(100)에 의한 모니터링 동작과 관계없이 정상적으로 실행될 수 있도록 한다.
도 2는 본 발명의 실시 예에 따른 API 로깅 장치에서 응용 프로그램(120)의 실행에 따른 로깅 정보를 기록하는 동작 제어 흐름을 도시한 것이다. 이하, 도 1 및 도 2를 참조하여 본 발명의 실시 예를 상세히 설명하기로 한다.
먼저, 가상 API 생성기(100)는 (S200)단계에서 분석하고자 하는 분석 대상 응용 프로그램(120)의 API 정보를 분석하고, (S202)단계에서 분석된 API 정보를 근거로 동일한 AIP 정보를 가지는 가상의 API 코드를 생성한 후, 이어 분석 대상 응용 프로그램(120)에서 호출되는 실제 라이브러리(130)와 동일한 구조를 가지는 가상 라이브러리(102)를 생성한다.
이때, 가상 라이브러리(102)의 생성에 있어서, 가상 API 생성기(100)는 응용 프로그램(120)에서 호출되는 실제 라이브러리(130)의 구조를 직접 분석하여 가상 라이브러리(102)를 생성할 수도 있으며, 또는 실제 라이브러리(130)에 대한 정보 파일을 구성하고, 구성된 정보파일로부터 실제 라이브러리(130)의 구조를 분석하여 가상 라이브러리(102)를 생성할 수도 있다.
위와 같이, 가상 API 코드와 가상 라이브러리(102)를 생성한 후, 가상 API 생성기(100)는 (S204)단계에서 응용 프로그램(120)이 실행되는 것을 인식하고, (S206)단계에서 응용 프로그램(120)에서 라이브러리를 호출하는 것을 인식하여 실제 라이브러리(130) 대신 미리 생성한 가상 라이브러리(102)가 호출되도록 한다.
이에 따라, 가상 라이브러리(102)는 (S208)단계에서 응용 프로그램(120)으로부터 호출되는 라이브러리 정보 및 파라미터값을 수신하여 이를 로그 저장기(104)로 제공한다.
그러면, 로그 저장기(104)는 (S210)단계에서 응용 프로그램(120)의 실행 시 호출되는 라이브러리 정보와 파라미터값에 대한 정보를 가상 라이브러리(102)로부터 제공받아 응용 프로그램(120)의 실행 상태에 대한 로깅 정보를 기록한다.
이어, 위와 같이, 응용 프로그램(120)의 실행 상태에 대한 로깅 정보의 기록 이 완료되는 경우, 가상 API 생성기(100)는 (S212)단계에서 응용 프로그램(120)에서 호출된 라이브러리 정보와 파라미터값에 따라 실제 라이브러리(130)를 호출하여 응용 프로그램(120)에 의한 동작이 수행되도록 한 후, (S214)단계에서 그 결과 값을 응용 프로그램(120)에 반환시킴으로써, 응용 프로그램(120)이 모니터링 동작과 관계없이 정상적으로 실행될 수 있도록 한다.
상기한 바와 같이, 본 발명에서는 컴퓨터 등에서 실행되는 응용 프로그램에 대한 실행 정보를 분석하는 방법에 있어서, 응용 프로그램의 실행 단계에서 자동으로 생성된 가상의 API를 통해 실제 라이브러리의 구조와 동일한 구조로 생성된 가상 라이브러리를 호출하도록 하고, 가상 라이브러리에서는 응용 프로그램이 실행됨에 따라 호출되는 라이브러리 호출 정보와 파라미터값을 로깅 정보로 기록하도록 함으로써, 응용 프로그램의 소스코드에 대한 수정 없이도 응용 프로그램의 실행 정보를 보다 용이하게 분석할 수 있다.
한편 상술한 본 발명의 설명에서는 구체적인 실시 예에 관해 설명하였으나, 여러 가지 변형이 본 발명의 범위에서 벗어나지 않고 실시될 수 있다. 따라서 발명의 범위는 설명된 실시 예에 의하여 정할 것이 아니고 특허청구범위에 의해 정하여져야 한다.
도 1은 본 발명의 실시 예에 따른 API 로깅 장치의 구성도,
도 2는 본 발명의 실시 예에 따른 응용 프로그램의 실행에 따른 API 로깅 정보 저장 처리 흐름도.
<도면의 주요 부호에 대한 간략한 설명>
100 : 가상 API 생성기 102 : 가상 라이브러리
104 : 로그 저장기 120 : 응용 프로그램
130 : 실제 라이브러리

Claims (8)

  1. 응용 프로그램에서 호출되는 실제 라이브러리와 동일한 구조로 형성되는 가상 라이브러리와,
    상기 응용 프로그램의 실행 시 상기 가상 라이브러리에서 호출되는 라이브러리 정보와 파라미터값에 대한 로깅 정보를 기록하는 로그 저장기와,
    상기 응용 프로그램의 API 정보를 분석하여 가상의 API 코드를 생성하여 상기 응용 프로그램의 실행 시 상기 가상 라이브러리를 호출하고, 상기 응용 프로그램의 실행에 따른 로깅 정보를 기록하는 가상 API 생성기
    를 포함하는 API 로깅장치.
  2. 제 1 항에 있어서,
    상기 가상 API 생성기는,
    상기 로깅 정보의 기록을 수행한 후, 상기 호출된 라이브러리 정보와 파라미터값에 따라 실제 라이브러리를 호출하여 동작을 수행하고, 결과 값을 상기 응용 프로그램에 반환시키는 API 로깅장치.
  3. 제 1 항에 있어서,
    상기 가상 API 생성기는,
    상기 실제 라이브러리의 구조를 분석하여 상기 가상 라이브러리를 생성하는 API 로깅장치.
  4. 제 1 항에 있어서,
    상기 가상 API 생성기는,
    상기 실제 라이브러리에 대한 정보 파일을 구성하여 상기 구성된 정보파일로부터 상기 실제 라이브러리의 구조를 분석한 후, 상기 가상 라이브러리를 생성하는 API 로깅장치.
  5. 응용 프로그램 분석을 위한 가상 API 코드와 가상 라이브러리를 생성하는 단계와,
    상기 응용 프로그램의 실행 시 상기 가상 API 코드가 실행되어 상기 가상 라이브러리를 호출하는 단계와,
    상기 가상 라이브러리에서 상기 응용 프로그램에서 호출되는 라이브러리 정보 및 파라미터값을 로깅 기록하는 단계
    를 포함하는 API 로깅 정보 저장방법.
  6. 제 5 항에 있어서,
    상기 방법은, 상기 로깅 기록 단계이후,
    상기 호출된 라이브러리 정보와 파라미터값에 따라 실제 라이브러리를 호출하여 동작을 수행하고, 결과 값을 상기 응용 프로그램에 반환시키는 단계
    를 더 포함하는 API 로깅 정보 저장방법.
  7. 제 6 항에 있어서,
    상기 가상 라이브러리는,
    상기 실제 라이브러리의 구조를 분석하여 생성되는 API 로깅 정보 저장방법.
  8. 제 6 항에 있어서,
    상기 가상 라이브러리는,
    상기 실제 라이브러리에 대한 정보 파일을 구성하고, 상기 구성된 정보파일로부터 상기 실제 라이브러리의 구조를 분석하여 생성되는 API 로깅 정보 저장방법.
KR1020090024836A 2008-12-02 2009-03-24 Api 로깅 장치 및 방법 KR101029334B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20080121021 2008-12-02
KR1020080121021 2008-12-02

Publications (2)

Publication Number Publication Date
KR20100062815A KR20100062815A (ko) 2010-06-10
KR101029334B1 true KR101029334B1 (ko) 2011-04-13

Family

ID=42363022

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090024836A KR101029334B1 (ko) 2008-12-02 2009-03-24 Api 로깅 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101029334B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113986517B (zh) * 2021-12-28 2022-04-08 深圳市明源云科技有限公司 Api调用日志采集方法、装置、电子设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050039550A (ko) * 2003-10-24 2005-04-29 마이크로소프트 코포레이션 컴퓨터 플랫폼에 대한 프로그래밍 인터페이스
KR20080098010A (ko) * 2006-02-03 2008-11-06 마이크로소프트 코포레이션 컴퓨터 실행가능 컴포넌트들을 갖는 컴퓨터 판독가능 매체,및 메소드를 갖는 개체로 프로그램된 컴퓨터 시스템을동작시키는 프로세스

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050039550A (ko) * 2003-10-24 2005-04-29 마이크로소프트 코포레이션 컴퓨터 플랫폼에 대한 프로그래밍 인터페이스
KR20080098010A (ko) * 2006-02-03 2008-11-06 마이크로소프트 코포레이션 컴퓨터 실행가능 컴포넌트들을 갖는 컴퓨터 판독가능 매체,및 메소드를 갖는 개체로 프로그램된 컴퓨터 시스템을동작시키는 프로세스

Also Published As

Publication number Publication date
KR20100062815A (ko) 2010-06-10

Similar Documents

Publication Publication Date Title
US9063766B2 (en) System and method of manipulating virtual machine recordings for high-level execution and replay
US8726255B2 (en) Recompiling with generic to specific replacement
Kwon et al. Mantis: Automatic performance prediction for smartphone applications
US9710370B2 (en) Automated testing of shell scripts
CN111090433A (zh) 一种数据处理的方法、装置和存储介质
JP7024720B2 (ja) マルウェア解析装置、マルウェア解析方法、及び、マルウェア解析プログラム
US20100275188A1 (en) Intermediate Language Representation and Modification
US20110145799A1 (en) Path-sensitive dataflow analysis including path refinement
Clapp et al. Modelgen: mining explicit information flow specifications from concrete executions
WO2016095570A1 (zh) 一种嵌入式系统的调试方法及装置、存储介质
JP6142705B2 (ja) オブジェクト指向言語のための記号テストドライバの反復生成
JP5303795B2 (ja) アプリケーションの解析方法、解析システム及び解析プログラム
CA2971431A1 (en) A system and method for facilitating static analysis of software applications
JP6023317B2 (ja) 情報処理装置、および、情報処理方法
KR102273135B1 (ko) 기호 실행을 사용하는 소프트웨어 테스트 입력 생성 장치 및 방법
US20180032735A1 (en) System and method for enhancing static analysis of software applications
JPWO2011108584A1 (ja) アプリケーション改変部位探索装置およびアプリケーション改変部位探索方法
US10318403B2 (en) Code update based on detection of change in runtime code during debugging
US20150020056A1 (en) Methods and systems for file processing
Titze et al. Apparecium: Revealing data flows in android applications
JP2006236327A (ja) コードモーフィング
KR102110735B1 (ko) 취약점 탐색을 위한 바이너리 재생성 방법 및 시스템
KR101029334B1 (ko) Api 로깅 장치 및 방법
US9032372B2 (en) Runtime environment and method for non-invasive monitoring of software applications
CN115544518A (zh) 漏洞扫描引擎实现方法、装置、漏洞扫描方法及电子设备

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130730

Year of fee payment: 18