KR101754334B1 - 하이퍼바이저를 이용한 로깅 방법 및 그 장치 - Google Patents

하이퍼바이저를 이용한 로깅 방법 및 그 장치 Download PDF

Info

Publication number
KR101754334B1
KR101754334B1 KR1020150099837A KR20150099837A KR101754334B1 KR 101754334 B1 KR101754334 B1 KR 101754334B1 KR 1020150099837 A KR1020150099837 A KR 1020150099837A KR 20150099837 A KR20150099837 A KR 20150099837A KR 101754334 B1 KR101754334 B1 KR 101754334B1
Authority
KR
South Korea
Prior art keywords
kernel
application program
log
instruction
log data
Prior art date
Application number
KR1020150099837A
Other languages
English (en)
Other versions
KR20170008533A (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 서울대학교산학협력단
Priority to KR1020150099837A priority Critical patent/KR101754334B1/ko
Priority to PCT/KR2016/004794 priority patent/WO2017010665A1/ko
Priority to SG11201800137SA priority patent/SG11201800137SA/en
Publication of KR20170008533A publication Critical patent/KR20170008533A/ko
Application granted granted Critical
Publication of KR101754334B1 publication Critical patent/KR101754334B1/ko

Links

Images

Classifications

    • G06F17/30144
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • 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
    • G06F9/45533Hypervisors; Virtual machine monitors

Abstract

하이퍼바이저를 이용한 로깅 방법 및 그 장치가 개시된다. 하이퍼바이저는 응용 프로그램이나 커널의 명령어들 중 로그 정의 모듈에 정의된 위치의 명령어를 트랩 명령어로 대체하고, 트랩 명령어의 실행 또는 인터럽트나 예외상황 발생시 시스템 권한을 가져온 후 응용 프로그램이나 커널에 대한 로그 데이터를 저장하고 시스템 권한을 반환한다.

Description

하이퍼바이저를 이용한 로깅 방법 및 그 장치{Logging method and apparatus using hypervisor}
본 발명은 로그 데이터를 저장하는 방법 및 그 장치에 관한 것으로서, 보다 상세하게는 마이크로 하이퍼바이저를 이용하여 커널 등의 로그 데이터를 저장하는 방법 및 그 장치에 관한 것이다.
마이크로 하이퍼바이저는 하나의 컴퓨터 시스템에 서로 다른 운영체계(Operating System)가 가동할 수 있도록 하는 일종의 소프트웨어이다. 다시 말해, 하이퍼바이저는 하드웨어와 운영체계 사이에 일종의 중간웨어로 사용되며, 하나의 컴퓨터에서 서로 다른 운영체계를 사용하는 가상 컴퓨터를 만들 수 있는 효과를 제공한다.
특허공개공보 제2014-0071205호
본 발명이 이루고자 하는 기술적 과제는, 하이퍼바이저를 이용하여 커널이나 응용프로그램 등의 로그 데이터를 저장하는 방법 및 그 장치를 제공하는 데 있다.
상기의 기술적 과제를 달성하기 위한, 본 발명에 따른 하이퍼바이저를 이용한 로그 데이터 저장 방법의 일 예는, 하이퍼바이저, 커널, 응용프로그램을 포함하는 컴퓨팅 장치에서 상기 하이퍼바이저의 로깅 방법에 있어서, 상기 하이퍼바이저는, 응용 프로그램이나 커널의 명령어들 중 로그 정의 모듈에 정의된 위치의 명령어를 트랩 명령어로 대체하는 단계; 상기 트랩 명령어의 실행 또는 인터럽트나 예외상황 발생시, 시스템 권한을 가져오는 단계; 상기 응용 프로그램이나 커널에 대한 로그 데이터를 저장하는 단계; 및 상기 응용 프로그램이나 커널로 시스템 권한을 넘겨주는 단계;를 포함한다.
상기의 기술적 과제를 달성하기 위한, 본 발명에 따른 컴퓨팅 장치의 일 예는, 응용 프로그램이나 커널의 명령어들 중 트랩 명령어로 대체할 명령어의 위치를 정의하는 로그정의모듈; 상기 로그정의모듈에 따라 상기 응용프로그램이나 커널의 명령어들을 트랩 명령어로 대체하는 명령어대체부; 및 상기 트랩 명령어가 수행되면 시스템 권한을 가져오고, 로그 데이터 저장이 완료되면 시스템 권한을 상기 응용 프로그램이나 커널로 넘겨주는 권한제어부; 및 상기 응용프로그램이나 커널의 로그 데이터를 파악하여 저장하는 로그저장부;를 포함한다.
본 발명에 따르면, 커널이나 응용프로그램의 동작, 시스템 인터럽트나 예외 상황 등에 따른 다양한 로그 데이터를 용이하게 파악하고 저장할 수 있다.
도 1은 본 발명이 적용되는 컴퓨팅 장치의 일 실시 예의 구성을 도시한 도면,
도 2는 본 발명이 적용되는 컴퓨팅 장치의 시스템 권한 순서를 도시한 도면,
도 3은 본 발명에 따른 하이퍼바이저를 이용한 로깅 방법의 개략적인 흐름을 도시한 도면,
도 4는 본 발명에 따른 로그정의 모듈의 일 예를 도시한 도면,
도 5는 본 발명에 따른 로그정의 모듈의 구현 예를 도시한 도면,
도 6은 본 발명에 따른 로그정의 모듈에 따라 트랩 명령어를 삽입하는 일 예를 도시한 도면,
도 7a 및 도 7b는 본 발명에 따른 로그정의 모듈에 따라 트랩 명령어를 삽입한 구현 예를 도시한 도면,
도 8은 본 발명에 따른 하이퍼바이저의 일 예를 도시한 도면, 그리고,
도 9는 본 발명에 따른 하이퍼바이저를 이용한 로깅 방법의 일 실시 예의 흐름을 도시한 도면이다.
이하에서, 첨부된 도면들을 참조하여 본 발명에 따른 하이퍼바이저를 이용한 로깅 방법 및 그 장치에 대해 상세히 설명한다.
도 1은 본 발명이 적용되는 컴퓨팅 장치의 일 실시 예의 구성을 도시한 도면이다.
도 1을 참조하면, 컴퓨팅 장치(100)는 중앙처리부(110), 메모리(120), 저장부(130), 입출력부(140) 및 디스플레이부(150)를 포함한다. 중앙처리부(110)는 프로세서(processor)로서, 메모리(120), 저장부(130), 입출력부(140) 및 디스플레이부(150)를 각각 제어하며, 커널이나 응용 프로그램 또는 하이퍼바이저의 소프트웨어를 구동시킨다. 메모리(120)는 RAM(Random Access Memory), ROM(Read Only Memory) 등으로 구성되고, 저장부(130)는 하드 디스크, SSD(Solid State Disk) 등 다양한 형태로 구현된다. 입출력부(140)는 키패드나 터치스크린 등의 입력수단을 통해 사용자 명령을 입력받거나, 인터넷 등의 유무선 통신망을 통해 외부 장치와 통신을 수행하거나, USB(Universal Serial Bus) 포트 등을 통해 각종 외부 장치와 접속한다. 디스플레이부(150)는 LCD, LED, OLED 등으로 구성될 수 있다.
도 2는 본 발명이 적용되는 컴퓨팅 장치의 시스템 권한 순서를 도시한 도면이다.
도 2를 참조하면, 시스템 권한은 하드웨어(200), 하이퍼바이저(210), 커널(220), 응용프로그램(230)의 순으로 높다. 따라서 하이퍼바이저(210)는 커널(220) 및 응용프로그램(230)의 다양한 행위를 모니터링하고 제어할 수 있다.
도 3은 본 발명에 따른 하이퍼바이저를 이용한 로깅 방법의 개략적인 흐름을 도시한 도면이다.
도 3을 참조하면, 관리자는 응용 프로그램이나 커널(220,230), 하드웨어(200)의 인터럽트나 예외상황(360) 등의 다양한 동작들 중 로깅이 필요한 시점과 각 로깅 시점에 저장할 로그 데이터의 종류 등을 포함하는 로그정의(300)를 설정하고 저장한다. 여기서, 로깅은 응용프로그램이나 커널(220,230), 하드웨어 인터럽트(360) 등의 각종 동작과 관련된 데이터, 예를 들어 특정 메모리 영역의 데이터, 레지스터 값, 입출력 데이터 등을 기록하는 과정을 의미한다. 로그정의(300)를 포함하는 로그정의 모듈의 일 예에 대해서는 도 4 및 도 5에 도시되어 있다.
하이퍼바이저(210)는 응용 프로그램이나 커널(220,230)의 수행 중 로깅이 필요한 시점에 시스템 권한을 가져오기 위하여 응용 프로그램이나 커널에 트랩 명령어(350)를 삽입하거나, 인터럽트나 예외상황에서 시스템 권한을 가져오기 위하여 제어 레지스터의 값을 변경한다. 하이퍼바이저(210)가 응용 프로그램이나 커널(220,230)에 트랩 명령어를 삽입하는 방법의 일 예에 대해서는 도 6, 도 7a,7b에 도시되어 있다.
응용 프로그램이나 커널(220,230)이 동작 중에 하이퍼바이저(210)가 삽입한 트랩 명령어(350)를 만나면, 하이퍼바이저(210)는 시스템 권한을 가져온 후 응용 프로그램이나 커널(220,230) 등의 각종 동작과 관련된 로그 데이터를 생성(310)한다. 또한 하드웨어(200)의 인터럽트나 예외상황(360)이 발생하고, 해당 인터럽트나 예외상황에 대한 제어 레지스터의 값이 실행 흐름을 하이퍼바이저(210)로 변경되도록 설정되어 있다면, 하이퍼바이저(210)는 시스템 권한을 가져온 후 로그 데이터를 생성한다. 예를 들어, 가상 메모리 관련 상태값 변경이나 일반적인 인터럽트 발생 등의 특정 이벤트 발생시, 시스템 권한이 하이퍼바이저(210)로 넘어갈 수 있도록 제어 레지스터의 값을 변경할 수 있다.
로그 데이터는 로그정의 모듈에 정의된 로그 데이터 종류와 더불어 로그 발생 시간, 로그 발생 위치, 로그 발생 원인 등 다양한 정보를 포함할 수 있다. 예를 들어, I/O 처리와 관련된 로그 데이터를 저장하는 로그정의가 설정되어 있는 경우에, 하이버바이저(210)는 I/O 처리와 연산 발생 시점에 트랩 명령어를 통해 시스템 권한을 가져온 후, 현 시점에서 실행 중인 프로세서가 무엇인지, 어떤 파일에 어떤 데이터를 남기려고 했는지 등을 수집할 수 있다. 로그 데이터 수집을 위하여 디지털 포렌식(Digital Forensic) 기법이 적용될 수 있다.
하이퍼바이저(210)는 로깅 동작과 관련하여 시스템 성능에 미치는 영향을 최소화하기 위하여 로그 데이터를 로그 버퍼(320)에 저장한다. 로그 버퍼(320)는 로그 데이터가 발생한 시간순서에 따라 데이터를 기록하고, 일정량 이상의 데이터가 로그 버퍼(320)에 쌓이면, 압축 및 암호화 과정(330)을 통해 로그 데이터를 로그 데이터베이스(340,342)에 저장한다. 로그 데이터를 암호화하여 저장함으로써 관리자가 아닌 커널이나 응용프로그램 등에서 권한 없이 내용을 읽거나 수정하는 것을 방지할 수 있다.
로그 데이터베이스(340,342))는 하이퍼바이저(210)에 구현되거나, 응용 프로그램이나 커널(220,230)에 구현될 수 있다. 하이퍼바이저에 구현된 로그 데이터베이스(340)는 메모리 사용량 및 복잡도를 높일 수 있으므로, 응용 프로그램이나 커널에 구현한 로그 데이터베이스(342)를 활용하는 것이 나을 수 있다. 데이터베이스 구조는 로깅 동작에 영향을 미치지 아니하므로, 실시 예에 따라 다양한 구조의 로그 데이터베이스(340,342)를 채택할 수 있다.
로그 데이터베이스(340,342)는 수집된 로그 데이터들을 로컬에 위치한 로그 저장소(344)나 네트워크로 연결된 원격 저장소 및 서버에 백업할 수 있다.
도 4는 본 발명에 따른 로그정의 모듈의 일 예를 도시한 도면이다.
도 4를 참조하면, 로그정의 모듈은 관리자에 의해 정의된 적어도 하나 이상의 로그정의를 포함한다. 로그정의는 응용프로그램이나 커널, 시스템 인터럽트나 예외상황 등에서 로깅 작업이 필요한 시점(410), 저장할 로그 데이터의 종류(420) 등을 포함한다. 필요에 따라 해당 로깅 작업에 대한 주석문(400)을 포함할 수 있으며, 이 외에도 실시 예에 따라 다양한 정보가 정의될 수 있다.
관리자는 도 5와 같이 다양한 프로그래밍 언어 등을 통해 로그정의를 설정하거나, 그래픽 사용자 인터페이스(GUI) 등을 통해 로그정의를 설정할 수 있다. 예를 들어, 컴퓨팅 장치는 그래픽 화면에서 주석문 입력 필드, 트랩 명령어를 삽입할 명령어 위치 입력 필드, 저장할 로그 데이터 종류 입력 필드를 화면에 표시하고, 각 필드에서 선택 가능한 메뉴 리스트를 사용자에게 제공하여, 사용자가 용이하게 로그정의를 설정할 수 있도록 한다. 이 외에도 관리자로부터 로그정의를 위한 각종 정보를 입력받는 다양한 방법이 존재할 수 있음은 물론이다.
트랩 명령어를 삽입할 명령어 위치(410)는 응용 프로그램이나 커널이 시작될 때 메모리에 적재되는 명령어들 중 특정 명령어의 위치를 가리킨다. 명령어의 위치는 종래의 다양한 방법을 통해 관리자가 사전에 파악하고 있다고 가정한다. 예를 들어, 커널의 경우 메모리의 정해진 위치에 적재되고, 메모리 내 각 명령어의 위치는 고정되어 있으므로, 관리자는 종래의 디버깅(debugging) 과정 등의 다양한 방법을 통해 커널 내 명령어의 위치를 파악할 수 있다. 또 다른 예로, 응용 프로그램의 경우 실행시 메모리에 적재되는 위치는 매번 달라질 수 있으나 응용 프로그램 내의 각 명령어의 상대적 위치(옵셋(offest))는 고정적이므로, 관리자는 디버깅 과정 등 종래의 다양한 방법을 통해 응용 프로그램 내 명령어의 상대적 위치를 파악할 수 있다. 커널이나 응용 프로그램의 명령어 위치를 파악하는 방법 그 자체는 본 발명의 범위를 벗어나므로 이에 대한 추가적인 설명은 생략한다.
로그 데이터 종류(420)는 관리자에 의해 다양하게 설정될 수 있다. 예를 들어, 응용프로그램이나 커널 등에서 메모리 할당이나 메모리 해제 작업을 수행하기 전의 메모리 상태를 저장하기를 원하는 경우에, 관리자는 응용프로그램이나 커널 등의 메모리 할당이나 해제와 관련된 명령어의 수행 전의 명령어의 위치를 트랩 명령어의 삽입 위치로 정의하고, 또한 저장할 로그 데이터를 메모리 할당이나 해제 작업이 수행되는 메모리의 해당 영역의 데이터로 정의하면 된다.
하드웨어 인터럽트나 예외상황에 대한 로그정의를 설정하고자 하는 경우에, 관리자는 인터럽트나 예외상황의 특정 이벤트(예를 들어, 가상 메모리 관련 상태값 변경 등)와 관련된 제어 레지스터 종류와 저장할 로그 데이터 종류를 정의한다. 인터럽트나 예외상황에 대한 로그정의는 프로그래밍 언어로 정의되거나, 각종 GUI 환경을 통해 정의될 수 있다.
도 5는 본 발명에 따른 로그정의 모듈의 구현 예를 도시한 도면이다.
도 5를 참조하면, 로그정의 모듈(500)은 해당 로그 정의가 무엇에 관한 것인지 나타내는 주석문(400)과, 트랩 명령어가 삽입될 명령어 위치(410), 저장할 로그 데이터의 종류(420)를 포함한다. 도 5는 커널의 메모리 해제 전의 로깅 작업을 수행하는 일 예로서, 트랩 명령어의 삽입 위치(410)는 메모리의 'Oxc011a060' 위치이고, 저장한 로그 데이터 종류(420)는 레지스터 번호 '0'번째 데이터임을 정의하고 있다.
도 6은 본 발명에 따른 로그정의 모듈에 따라 트랩 명령어를 삽입하는 일 예를 도시한 도면이다.
도 6을 참조하면, 응용 프로그램이나 커널이 실행되면, 하이퍼바이저는 메모리에 적재된 응용 프로그램이나 커널의 명령어들(600) 중 로그정의 모듈에 정의된 위치의 명령어(610)를 트랩 명령어(630)로 대체한다.
예를 들어, 로그정의 모듈에서 트랩 명령어가 삽입될 명령어 위치가 N번째 명령어(610)의 위치로 정의되어 있다면, 하이퍼바이저는 응용프로그램이나 커널이 시작될 때에 N번째 명령어(610)를 트랩 명령어(630)로 대체한다. 따라서 응용프로그램이나 커널이 명령어를 수행하다가 대체된 트랩 명령어(630)를 만나면, 시스템 권한은 하이퍼바이저로 넘어간다. 시스템 권한을 넘겨받은 하이퍼바이저는 로그정의 모듈에 정의된 로그 데이터를 파악하여 저장한다.
도 7a 및 도 7b는 본 발명에 따른 로그정의 모듈에 따라 트랩 명령어를 삽입한 구현 예를 도시한 도면이다.
도 7a 및 도 7b를 참조하면, 메모리 해제에 대한 소스코드와 해당 소스코드의 실행을 위한 실제 명령어를 메모리에 적재한 예가 도시되어 있다. 관리자가 메모리 해제시점에 로깅을 수행하고자 한다면, 관리자는 메모리 해제 명령(_vummnap(addr,1))에 대한 위치를 기초로 앞서 살핀 도 5의 로깅정의 모듈을 작성한다.
도 5의 예를 다시 살펴보면, 메모리 해제 명령어(_vummap)의 위치는 '0xc011a64'이므로, 관리자는 로깅정의 모듈에 트랩 명령어가 삽입될 명령어 위치로 해제 명령어(710)의 수행 바로 이전 위치인 '0xc011a060'을 정의하고, 메모리 해제 위치를 가리키고 있는 레지스터 번호 '0'를 로그 데이터의 종류로 정의한다.
다시 도 7을 참조하면, 하이퍼바이저는 커널 또는 응용프로그램이 시작될 때, 도 5의 로그정의 모듈에 정의된 메모리 위치 '0xc011a060'의 명령어(700)를 트랩 명령어(800)로 대체한다. 커널이나 응용프로그램이 시작되어 '0xc011a060'의 트랩 명령어(800)를 만나면, 시스템 권한은 하이퍼바이저로 넘어간다.
도 8은 본 발명에 따른 하이퍼바이저의 일 예를 도시한 도면이다.
도 8을 참조하면, 하이퍼바이저(210)는 로그정의모듈(800), 명령어 대체부(810), 로그 저장부(820), 권한 제어부(830)의 구성을 포함한다. 하이퍼바이저(210)는 일종의 소프트웨어로 구현가능하며, 도 1에서 살핀 컴퓨팅 시스템의 메모리, 중앙처리부 등의 하드웨어를 통해 실행될 수 있다.
로그정의모듈(800)은 트랩 명령어가 삽입될 응용프로그램이나 커널의 명령어 위치, 저장할 로그 데이터의 종류 등을 포함하는 적어도 하나 이상이 로그정의를 포함한다. 관리자는 디버깅 등 종래의 다양한 방법을 통해 응용 프로그램이나 커널의 각 명령어의 위치를 사전에 알고 있다고 가정한다.
명령어 대체부(810)는 로그정의 모듈에 따라 응용 프로그램이나 커널에 트랩 명령어를 삽입한다. 명령어 대체부(810)는 응용 프로그램이나 커널의 명령어들 사이에 트랩 명령어를 삽입할 수도 있으나, 보다 바람직하게는 응용 프로그램이나 커널의 기존 명령어를 트랩 명령어로 대체하여 삽입한다. 명령어 대체부(810)는 커널이 부팅되는 시점 또는 응용 프로그램이 시작되는 시점에 트랩 명령어를 삽입하는 과정을 수행한다.
로그 저장부(820)는 명령어 대체부(810)에 의해 응용 프로그램이나 커널 등에 삽입된 트랩 명령어가 수행되어, 시스템 권한이 하이퍼바이저로 넘어오면, 로그정의 모듈에 정의된 내용에 따라 저장할 로그 데이터를 파악하여 저장하는 로깅과정을 수행한다.
권한 제어부(830)는 응용 프로그램이나 커널 등에 삽입된 트랩 명령어가 수행되면 응용 프로그램이나 커널로부터 시스템 권한을 가져오고, 로그 저장부(820)에 의한 로깅 작업이 완료되면 시스템 권한을 응용 프로그램이나 커널 등에 다시 돌려준다.
응용 프로그램이나 커널의 명령어가 명령어 대체부(810)에 의해 기존 명령어에서 트랩 명령어로 대체된 경우에, 권한 제어부(830)가 로깅 작업 후 시스템 권한만을 넘겨주면 응용 프로그램이나 커널의 정상적인 동작이 불가능할 수 있다. 따라서 권한 제어부(830)는 응용 프로그램이나 커널에 권한을 넘겨주기 전에 트랩 명령어로 대체된 기존 명령어를 수행하거나, 기존 명령어를 디코딩하여 에뮬레이터를 통해 수행한 후 권한을 넘겨준다. 예를 들어, 도 7b의 트랩 명령어를 도 7a의 대체 전의 명령어를 수행한 후 시스템 권한을 넘겨준다.
트랩 명령어로 대체 전의 원 명령어를 디코딩하여 에뮬레이터를 통해 수행한 후 권한을 넘겨주는 경우, 하이퍼바이저가 원 명령어의 실행을 자유롭게 관리할 수 있고 관련된 모든 명령어를 처리할 수 있는 장점이 있으나 하이퍼바이저의 구현이 복잡해지는 단점이 있다. 단순히 원 명령어만을 수행한 후 권한을 넘겨주는 경우, 하이퍼바이저가 복잡하지 않게 구현될 수 있으며 원 명령어의 연산을 빠르게 수행할 수 있는 장점이 있으나, 스택 포인터와 관련된 연산과 같이 몇 가지 지원하지 못하는 연산이 있을 수 있다는 단점이 있다. 따라서 권한 제어부(830)는 상황에 따라 원 명령어만의 수행 또는 에뮬레이션 수행을 선택적으로 수행한다.
예를 들어, 트랩 명령어로 덮어 씌어진 원 명령어가 'mov r1 r2'이고, 로깅 과정에서 r2를 사용한다면 로깅 작업이후 단순히 원 명령어 'mov r1 r2'를 수행하면 결과가 틀려진다. 따라서 권한 제어부는 로깅 작업에서 r2를 사용하지 않게 하거나 명령의 'operand'를 바꾸는 방법 등이 수행되어야 하므로 단순한 원 명령어의 수행이 아닌 정확한 결과 산출을 위한 여러 가지 과정을 수행하는 에뮬레이션을 수행한다.
권한 제어(830)부는 인터럽트나 예외상황의 경우에도 시스템 권한을 넘겨주기 전에 추가적인 동작 수행 여부를 파악한다. 예를 들어, 인터럽트나 예외상황이 기존 커널이나 응용프로그램의 동작에 영향을 미치지 아니하고 단지 로깅을 위하여 커널이나 응용프로그램의 동작과 관련이 있는 인터럽트나 예외상황을 강제로 하이퍼바이저로 전달한 것이라면, 권한 제어부(830)는 시스템 권한을 반환하기에 앞서 커널 등에 대한 인터럽트 및 예외상황이 발생했음을 알리기 위하여 관련된 레지스터 및 메모리 값을 인터럽트 및 예외상황이 발생했을 때와 마찬가지로 설정한 후 권한을 반환한다.
도 9는 본 발명에 따른 하이퍼바이저를 이용한 로깅 방법의 일 실시 예의 흐름을 도시한 도면이다.
도 9를 참조하면, 하이퍼바이저는 관리자로부터 로그정의를 입력받아 로그정의 모듈로 저장한다(S900). 하이퍼바이저는 응용프로그램이나 커널 등이 시작될 때, 로그정의 모듈을 기초로 응용프로그램이나 커널에 트랩 명령어를 삽입한다(S910).
응용 프로그램이나 커널이 하이퍼바이저가 삽입한 트랩 명령어를 만나면(S920), 하이퍼바이저는 시스템 권한을 응용 프로그램이나 커널로부터 넘겨받는다(S930). 하이퍼바이저는 레지스터 등의 시스템 정보 등을 백업하고, 로그정의모듈의 정의에 따라 해당하는 로그 데이터를 파악하여 저장한다(S950). 로깅 작업이 완료되면, 하이퍼바이저는 백업한 레지스터를 이용하여 레지스터를 시스템 권한을 가져오기 전의 레지스터로 복원한다(S960). 하이퍼바이저는 응용 프로그램이나 커널의 트랩 명령어를 대체 전의 원 명령어를 단순히 수행하거나, 원 명령어를 에뮬레이터 등을 통해 수행하고(S970), 시스템 권한을 응용 프로그램이나 커널로 다시 돌려준다(S980).
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 다양한 형태의 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광데이터 저장장치 등이 있다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.

Claims (11)

  1. 하이퍼바이저, 커널, 응용프로그램을 포함하는 컴퓨팅 장치에서 상기 하이퍼바이저의 로깅 방법에 있어서, 상기 하이퍼바이저는,
    응용 프로그램이나 커널의 명령어들 중 로그 정의 모듈에 정의된 위치의 명령어를 트랩 명령어로 대체하는 단계;
    상기 트랩 명령어의 실행 또는 인터럽트나 예외상황 발생시, 시스템 권한을 가져오는 단계;
    상기 응용 프로그램이나 커널에 대한 로그 데이터를 저장하는 단계; 및
    상기 응용 프로그램이나 커널로 시스템 권한을 넘겨주는 단계;를 포함하고,
    상기 로그 정의 모듈은 트랩 명령어로 대체할 응용 프로그램이나 커널의 명령어 위치, 저장할 로그 데이터의 종류를 포함하고,
    상기 명령어 위치는 상기 응용 프로그램이나 커널이 메모리에 적재되었을 때 명령어의 메모리 위치를 나타내며,
    상기 트랩 명령어로 대체하는 단계는, 상기 응용 프로그램이나 커널이 메모리에 적재될 때 상기 로그 정의 모듈에 정의된 메모리 위치의 명령어를 트랩 명령어로 대체하는 것을 특징으로 하는 하이퍼바이저를 이용한 로깅 방법.
  2. 삭제
  3. 제 1항에 있어서,
    상기 시스템 권한을 가져올 때 레지스터를 백업하고, 상기 시스템 권한을 넘겨줄 때 레지스터를 백업된 레지스터로 복원하는 단계;를 더 포함하는 것을 특징으로 하는 하이퍼바이저를 이용한 로깅 방법.
  4. 제 1항에 있어서, 상기 시스템 권한을 넘겨주는 단계는,
    상기 트랩 명령어로 대체된 상기 응용 프로그램이나 커널의 명령어를 대체 전의 원 명령어를 수행한 후 시스템 권한을 넘겨주는 단계;를 포함하는 것을 특징으로 하는 하이퍼바이저를 이용한 로깅 방법.
  5. 제 1항에 있어서, 상기 로그 데이터를 저장하는 단계는,
    로그 데이터를 하이퍼바이저의 버퍼에 저장하는 단계; 및
    상기 버퍼에 저장된 로그 데이터의 크기가 임계치에 해당하면 상기 로그 데이터를 암호화하여 데이터베이스에 저장하는 단계;를 포함하는 것을 특징으로 하는 하이퍼바이저를 이용한 로깅 방법.
  6. 응용 프로그램이나 커널의 명령어들 중 트랩 명령어로 대체할 명령어의 위치를 정의하는 로그정의모듈;
    상기 로그정의모듈에 따라 상기 응용프로그램이나 커널의 명령어들을 트랩 명령어로 대체하는 명령어대체부; 및
    상기 트랩 명령어가 수행되면 시스템 권한을 가져오고, 로그 데이터 저장이 완료되면 시스템 권한을 상기 응용 프로그램이나 커널로 넘겨주는 권한제어부; 및
    상기 응용프로그램이나 커널의 로그 데이터를 파악하여 저장하는 로그저장부;를 포함하고,
    상기 로그 정의 모듈은 트랩 명령어로 대체할 응용 프로그램이나 커널의 명령어 위치, 저장할 로그 데이터의 종류를 포함하고,
    상기 명령어 위치는 상기 응용 프로그램이나 커널이 메모리에 적재되었을 때 명령어의 메모리 위치를 나타내며,
    상기 명령어대체부는, 상기 응용 프로그램이나 커널이 메모리에 적재될 때 상기 로그 정의 모듈에 정의된 메모리 위치의 명령어를 트랩 명령어로 대체하는 것을 특징으로 하는 하이퍼바이저를 구동하기 위한 메모리, 중앙처리장치를 포함하는 컴퓨팅 장치.
  7. 제 6항에 있어서, 상기 명령어대체부는,
    인터럽트 및 예외상황 발생시 시스템 권한을 넘겨받을 수 있도록 컨트롤 레지스터의 값을 변경하는 것을 특징으로 하는 컴퓨팅 장치.
  8. 제 6항에 있어서, 상기 로그저장부는,
    상기 시스템 권한을 넘겨받을 때 레지스터를 백업하고, 상기 시스템 권한을 넘겨줄때 레지스터를 백업된 레지스터로 복원하는 것을 특징으로 하는 컴퓨팅 장치.
  9. 제 6항에 있어서, 상기 권한제어부는,
    상기 시스템 권한을 넘겨줄 때, 상기 응용프로그램이나 커널에 위치한 트랩 명령어를 대체 전의 원 명령어로 수행한 후 시스템 권한을 넘겨주는 것을 특징으로 하는 컴퓨팅 장치.
  10. 제 6항에 있어서, 로그 저장부는,
    로그 데이터를 하이퍼바이저의 버퍼에 저장하고, 상기 버퍼에 저장된 로그 데이터의 크기가 임계치에 해당하면 상기 로그 데이터를 암호화하여 데이터베이스에 저장하는 것을 특징으로 하는 컴퓨팅 장치.
  11. 제 1항에 기재된 방법을 수행하기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1020150099837A 2015-07-14 2015-07-14 하이퍼바이저를 이용한 로깅 방법 및 그 장치 KR101754334B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020150099837A KR101754334B1 (ko) 2015-07-14 2015-07-14 하이퍼바이저를 이용한 로깅 방법 및 그 장치
PCT/KR2016/004794 WO2017010665A1 (ko) 2015-07-14 2016-05-09 하이퍼바이저를 이용한 로깅 방법 및 그 장치
SG11201800137SA SG11201800137SA (en) 2015-07-14 2016-05-09 Logging method using hypervisor and apparatus thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150099837A KR101754334B1 (ko) 2015-07-14 2015-07-14 하이퍼바이저를 이용한 로깅 방법 및 그 장치

Publications (2)

Publication Number Publication Date
KR20170008533A KR20170008533A (ko) 2017-01-24
KR101754334B1 true KR101754334B1 (ko) 2017-07-19

Family

ID=57757747

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150099837A KR101754334B1 (ko) 2015-07-14 2015-07-14 하이퍼바이저를 이용한 로깅 방법 및 그 장치

Country Status (3)

Country Link
KR (1) KR101754334B1 (ko)
SG (1) SG11201800137SA (ko)
WO (1) WO2017010665A1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090007111A1 (en) * 2007-06-27 2009-01-01 Vmware, Inc. Logging and replaying input/output events for a virtual machine
KR100984203B1 (ko) * 2004-12-10 2010-09-28 인텔 코오퍼레이션 가상 머신 모니터의 구성요소의 특권을 해제하는 시스템 및방법
US20130297849A1 (en) 2012-05-07 2013-11-07 Raytheon Company Methods and apparatuses for monitoring activities of virtual machines

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7793287B2 (en) * 2003-10-01 2010-09-07 Hewlett-Packard Development Company, L.P. Runtime virtualization and devirtualization of I/O devices by a virtual machine monitor
US20130036093A1 (en) * 2009-12-17 2013-02-07 National Ict Australia Limited Reliable Writing of Database Log Data
EP4036721A1 (en) * 2012-06-26 2022-08-03 Lynx Software Technologies Inc. Systems and methods involving features of hardware virtualization such as separation kernel hypervisors, hypervisors, hypervisor guest context, hypervisor context, rootkit detection prevention and further features
KR101467877B1 (ko) 2012-11-28 2014-12-11 주식회사 잉카인터넷 하이퍼바이저를 이용한 프로세스 메모리 보안 시스템 및 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100984203B1 (ko) * 2004-12-10 2010-09-28 인텔 코오퍼레이션 가상 머신 모니터의 구성요소의 특권을 해제하는 시스템 및방법
US20090007111A1 (en) * 2007-06-27 2009-01-01 Vmware, Inc. Logging and replaying input/output events for a virtual machine
US20130297849A1 (en) 2012-05-07 2013-11-07 Raytheon Company Methods and apparatuses for monitoring activities of virtual machines

Also Published As

Publication number Publication date
KR20170008533A (ko) 2017-01-24
WO2017010665A1 (ko) 2017-01-19
SG11201800137SA (en) 2018-02-27

Similar Documents

Publication Publication Date Title
US9063766B2 (en) System and method of manipulating virtual machine recordings for high-level execution and replay
US9465721B2 (en) Snapshotting executing code with a modifiable snapshot definition
US9256454B2 (en) Determining optimal methods for creating virtual machines
TWI547874B (zh) 虛擬機器影像分析
Adamsen et al. Repairing event race errors by controlling nondeterminism
US20150082242A1 (en) Providing Context Menu Based on Predicted Commands
US10366226B2 (en) Malicious code analysis device and method based on external device connected via USB cable
US20150006961A1 (en) Capturing trace information using annotated trace output
JP6009089B2 (ja) 計算機システムを管理する管理システム及びその管理方法
JP6023317B2 (ja) 情報処理装置、および、情報処理方法
US9195562B2 (en) Recording external processes
CN111176869B (zh) 超时检测方法、装置、设备及存储介质
KR101754334B1 (ko) 하이퍼바이저를 이용한 로깅 방법 및 그 장치
US20110041014A1 (en) Program status detecting apparatus and method
CN110837433A (zh) 性能优化方法、装置及电子设备
KR101225577B1 (ko) 어셈블리 언어 코드의 분석 장치 및 방법
KR101976993B1 (ko) 모바일 코드 자동 분석을 위한 동적 바이너리 계측 코드추출장치 및 그 방법
US20230214224A1 (en) Technique for collecting state information of an apparatus
US20230214240A1 (en) Method And System For Event Based, Privacy Aware Capturing Of Partial Screen Changes For Devices With restricted Resources
US20230119536A1 (en) Application profiling to resize and reconfigure compute instances
JP2006172065A (ja) チェックポイント採取方法、システム及びプログラム
Johnson et al. Debugging and Profiling
US20200387438A1 (en) Tracking hardware events within a process on an instruction-level simulator
Desjardins et al. Debugging
Guller et al. Monitoring

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right