+

KR101014814B1 - How to Monitor Computer Systems With Kernel Watcher and How to Monitor Kernels - Google Patents

How to Monitor Computer Systems With Kernel Watcher and How to Monitor Kernels Download PDF

Info

Publication number
KR101014814B1
KR101014814B1 KR1020090066996A KR20090066996A KR101014814B1 KR 101014814 B1 KR101014814 B1 KR 101014814B1 KR 1020090066996 A KR1020090066996 A KR 1020090066996A KR 20090066996 A KR20090066996 A KR 20090066996A KR 101014814 B1 KR101014814 B1 KR 101014814B1
Authority
KR
South Korea
Prior art keywords
system service
code
service function
module
monitoring
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
KR1020090066996A
Other languages
Korean (ko)
Other versions
KR20110009548A (en
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 KR1020090066996A priority Critical patent/KR101014814B1/en
Publication of KR20110009548A publication Critical patent/KR20110009548A/en
Application granted granted Critical
Publication of KR101014814B1 publication Critical patent/KR101014814B1/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3051Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

커널 감시기가 설치된 컴퓨터 시스템 및 커널 감시 방법이 제공된다. 본 발명에 의한 커널 감시 방법은 커널(kernel) 모드에서 시스템 서비스 함수의 호출을 중계하는 모듈의 코드 중 감시 대상 시스템 서비스 함수를 호출하는 명령어를 포함하는 제 1 코드 영역을 제 1 대체 코드로 교체하되, 상기 제 1 대체 코드는 제 1 후킹(hooking) 모듈로 점프하는 명령어를 포함하고 상기 제 1 코드 영역이 차지하는 바이트(Byte)와 같은 바이트로 구성되는 단계, 사용자 모드에서 실행 중인 프로세스에 의해 상기 감시의 대상인 시스템 서비스 함수가 호출됨으로써 상기 제 1 대체 코드 및 상기 제 1 후킹 모듈이 순차적으로 실행되는 경우, 상기 제 1 후킹 모듈은 상기 시스템 서비스 함수의 정보를 파라미터로 하여 주 감시 모듈을 호출하는 단계, 상기 주 감시 모듈은 상기 프로세스가 호출하는 시스템 서비스 함수에 대한 정보를 감시 하는 단계 및 상기 주 감시 모듈이 상기 제 1 후킹 모듈로 리턴 된 후, 상기 제 1 후킹 모듈은 상기 프로세스에 의해 호출된 시스템 서비스 함수를 호출하기 위한 명령어를 적어도 하나 실행하는 단계를 포함한다.A computer system with a kernel watchdog and a kernel watchdog method are provided. In the kernel monitoring method according to the present invention, a first code region including an instruction for calling a monitored system service function is replaced with a first replacement code among codes of a module relaying a call of a system service function in kernel mode. Wherein the first replacement code comprises an instruction to jump to a first hooking module and consists of bytes, such as bytes occupied by the first code region, the monitoring by a process running in user mode. When the first replacement code and the first hooking module are executed sequentially by calling a system service function that is a target of the first hooking module, calling the main monitoring module by using the information of the system service function as a parameter; The main monitoring module monitors information about a system service function called by the process. And the state monitoring module, said first hooking module after the return to the said first hooking module includes the step of executing at least one command to invoke a system service function is called by the process.

시스템 서비스 핸들러, 운영 체제, 해킹, 모니터링, KiSystemService System Service Handler, Operating System, Hacking, Monitoring, KiSystemService

Description

커널 감시기가 설치된 컴퓨터 시스템 및 커널 감시 방법{Kernel monitoring module installed computer system and kernel monitoring method thereof}Kernel monitoring module installed computer system and kernel monitoring method

본 발명은 커널 감시기가 설치된 컴퓨터 시스템 및 커널 감시 방법에 관한 것이다. 더욱더 자세하게는, 운영체제(Operating System; OS)의 커널에 포함된 시스템 서비스 함수 핸들링 모듈 코드 중 시스템 서비스 함수를 호출하는 코드 영역을 감시 모듈로 점프 하게 하는 후킹(hooking) 방법을 사용하여 해킹 모듈이 감시 모듈을 우회(detour)하여 감시를 회피하는 것을 방지하는 커널 감시기가 설치된 컴퓨터 시스템 및 커널 감시 방법에 관한 것이다.The present invention relates to a computer system and kernel monitoring method provided with a kernel monitor. More specifically, the hacking module monitors the hacking module using a hooking method that jumps a code area that calls a system service function among the system service function handling module codes included in the operating system (OS) kernel to the monitoring module. It relates to a computer system with a kernel watchdog installed and a kernel watchdog method which detours a module to prevent evasion.

오늘날 다중 프로세스(process)가 동작하는 범용 운영체제는 PC와 서버 등에 널리 쓰이고 있다. 운영체제는 수 많은 프로세스 혹은 쓰레드(thread)들이 서로간의 실행에 영향을 주지 않으면서 때로는 협동이 가능하도록 한다. 과거에는 사용자가 검증된 프로그램만을 자신이 직접 설치하기 때문에 실행되는 프로세스들을 운영체제가 어느 정도 신뢰할 수 있었다. 그러나 인터넷의 발달로 인하여 사용자가 안전한지 혹은 악의 있는 악성 코드 프로그램인지 구별하기 어려운 각종 프로그램들이 다운로드(download) 되어 실행되는 일이 일상화되었다. 악의 있는 프로그램들은 운영체제가 제공하는 서비스들을 이용하여 다른 프로그램들의 동작정보 등을 감시 및 관찰하며 이 정보들을 인터넷을 통해 외부로 유출시키기도 한다. 시스템 서비스 함수들이 작성된 목적은 운영체제가 하드웨어 자원을 효율적으로 관리하고 응용 프로그램들이 쉽고 안전하게 하드웨어 자원을 사용할 수 있도록 하기 위한 것이다. 그러나 악의 있는 프로그램은 이러한 시스템 서비스 함수를 악용할 수 있는 문제점을 갖는다.Today, general-purpose operating systems running multiple processes are widely used in PCs and servers. Operating systems often allow many processes or threads to collaborate without affecting each other's execution. In the past, the operating system had some confidence in the processes that were run because the user installed only the verified program himself. However, due to the development of the Internet, it has become common to download and execute various programs that are difficult to distinguish whether the user is a safe or malicious malicious code program. Malicious programs use services provided by the operating system to monitor and observe the operation information of other programs, and to leak the information to the outside via the Internet. The purpose of writing system service functions is to allow the operating system to manage hardware resources efficiently and to allow applications to use hardware resources easily and safely. However, malicious programs have the problem of exploiting these system service functions.

운영체제 위에서 실행되는 모든 프로세스들을 완전히 신뢰할 수 없는 상황에서는 운영체제가 제공하는 시스템 서비스 함수를 감시(monitoring)하는 것이 필수적이다. 예를 들어 메모리 읽기 관련 함수를 불법적인 방법을 통해 임의의 프로세스 A가 사용한다면 다른 프로세스의 메모리 영역을 읽을 수 있다. 만일 프로세스 A가 이런 함수를 활용하여 메모리 해킹(hacking)을 시도한다면 인터넷 뱅킹 금융사고를 발생시킬 수도 있다. 따라서 불법적으로 시스템 서비스 함수를 호출하는 경우에 이 호출을 막는 기능이 필요하며 이를 위해서는 우선 어떤 프로세스가 어떤 시스템 서비스 함수를 호출하고자 하는 지를 감시 하는 것이 선행되어야 한다.In situations where all processes running on top of the operating system are not completely reliable, it is essential to monitor the system service functions provided by the operating system. For example, if an arbitrary process A uses a memory read function in an illegal manner, it can read the memory area of another process. If Process A attempts to hack a memory using these functions, it could cause an Internet banking financial crash. Therefore, in the case of illegally calling a system service function, a function is required to prevent the call. To do this, the first step is to monitor which process wants to call a system service function.

종래의 시스템 서비스 함수 감시 기법 중, 시스템 서비스 함수의 테이블에 저장된 시스템 서비스 함수의 주소를 감시 함수의 주소로 교체하고, 시스템 서비스 함수는 감시 함수에서 호출하는 방법이 있었다. 그러나, 이 방법은 시스템 서비스 함수 핸들링 모듈을 수정하여 감시 함수를 경유하지 않고 바로 시스템 서비스 함수를 호출하는 방법에 의해 우회되는 문제점이 있었다.Among the conventional system service function monitoring techniques, there is a method of replacing the address of a system service function stored in a table of system service functions with the address of a monitoring function, and calling the system service function from the monitoring function. However, this method has a problem that the system service function handling module is bypassed by modifying the system service function handling module and immediately calling the system service function without passing through the monitoring function.

종래의 시스템 서비스 함수 감시 기법 중 다른 방법으로, 감시 하고자 하는 시스템 서비스 함수의 프롤로그 코드에 감시 함수로 점프하도록 하는 후킹 코드를 삽입함으로써 감시 하는 방법이 있었다. 그러나, 이 방법 역시 시스템 서비스 함수 핸들링 모듈을 수정하여 복사된 시스템 서비스 함수를 호출하도록 하거나, 상기 후킹 코드 다음의 명령어로 점프하도록 하는 방법에 의해 우회되는 문제점이 있었다.As another method of the conventional system service function monitoring technique, there is a method of monitoring by inserting a hooking code to jump to the monitoring function in the prolog code of the system service function to be monitored. However, this method also has a problem of being bypassed by modifying the system service function handling module to call the copied system service function or to jump to the instruction following the hooking code.

많은 경우 악의적인 프로세스는 시스템 서비스 함수를 감시 하는 기법이 운영체제에 설치되었는지를 탐지하고 설치된 감시 기법을 상기와 같이 우회하는 방법을 시도하게 된다. 따라서 감시 기법은 이러한 우회 기법들을 탐지하거나 방지할 수 있어야 한다. 하지만 기존의 감시 기법들은 악의적인 프로세스들이 시도하는 감시 모듈 우회 방식에 취약점을 가지고 있다.In many cases, a malicious process attempts to detect whether a system service function monitoring method is installed in the operating system and bypass the installed monitoring method as described above. Surveillance techniques should therefore be able to detect or prevent these bypass techniques. However, existing monitoring techniques are vulnerable to the bypass of the monitoring module that malicious processes attempt.

본 발명이 해결하고자 하는 기술적 과제는 시스템 서비스 함수가 호출되기 이전에 시스템 서비스 함수의 호출 시도를 감시 함으로써 해킹 코드의 시스템 서비스 함수 감시 우회를 방지할 수 있는 시스템 서비스 함수 감시 기능을 제공하는 커널 감시기가 설치된 컴퓨터 시스템을 제공하는 것이다.The technical problem to be solved by the present invention is a kernel monitor that provides a system service function monitoring function that can prevent the system service function monitoring bypass of the hacking code by monitoring the attempt to call the system service function before the system service function is called. It is to provide an installed computer system.

본 발명이 해결하고자 하는 다른 기술적 과제는 커널 감시기를 설치하기 이전에 시스템 서비스 함수 핸들링 모듈에 해킹 모듈에 의한 수정이 가해진 경우 원본의 시스템 서비스 함수 핸들링 모듈로 교체한 후 커널 감시기를 설치하도록 하여 해킹 모듈의 감시 우회 시도를 방지하는 시스템 서비스 함수 감시 기능을 제공하는 커널 감시기가 설치된 컴퓨터 시스템 및 커널 감시방법을 제공하는 것이다.Another technical problem to be solved by the present invention is to replace the system service function handling module with the original system service function handling module if the modification is applied to the system service function handling module before installing the kernel watcher to install the kernel watcher hacking module It provides a computer system and kernel monitoring method installed with a kernel watcher that provides a system service function monitoring function to prevent the monitoring bypass attempt.

본 발명이 해결하고자 하는 또 다른 기술적 과제는 감시 하고자 하는 시스템 서비스 함수에 대하여만 함수 호출을 감시 하도록 최적화 할 수 있는 커널 감시기가 설치된 컴퓨터 시스템을 제공하는 것이다.Another technical problem to be solved by the present invention is to provide a computer system with a kernel monitor that can be optimized to monitor function calls for only system service functions to be monitored.

본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해 될 수 있을 것이다.The technical problems of the present invention are not limited to the above-mentioned technical problems, and other technical problems not mentioned will be clearly understood by those skilled in the art from the following description.

상기 기술적 과제를 달성하기 위한 본 발명의 일 태양에 따른 커널 감시 방법은 커널(kernel) 모드에서 시스템 서비스 함수의 호출을 중계하는 모듈의 코드 중 감시 대상 시스템 서비스 함수를 호출하는 명령어를 포함하는 제 1 코드 영역을 제 1 대체 코드로 교체하되, 상기 제 1 대체 코드는 제 1 후킹(hooking) 모듈로 점프하는 명령어를 포함하고 상기 제 1 코드 영역이 차지하는 바이트(Byte)와 같은 바이트로 구성되는 단계, 사용자 모드에서 실행 중인 프로세스에 의해 상기 감시의 대상인 시스템 서비스 함수가 호출됨으로써 상기 제 1 대체 코드 및 상기 제 1 후킹 모듈이 순차적으로 실행되는 경우, 상기 제 1 후킹 모듈은 상기 시스템 서비스 함수의 정보를 파라미터로 하여 주 감시 모듈을 호출하는 단계, 상기 주 감시 모듈은 상기 프로세스가 호출하는 시스템 서비스 함수에 대한 정보를 감시 하는 단계 및 상기 주 감시 모듈이 상기 제 1 후킹 모듈로 리턴 된 후, 상기 제 1 후킹 모듈은 상기 프로세스에 의해 호출된 시스템 서비스 함수를 호출하기 위한 명령어를 적어도 하나 실행하는 단계를 포함한다.Kernel monitoring method according to an aspect of the present invention for achieving the technical problem is a first including a command to call the monitored system service function of the code of the module relaying the call of the system service function in the kernel (kernel) mode Replacing a code region with a first replacement code, wherein the first replacement code includes an instruction to jump to a first hooking module and comprises a byte equal to a byte occupied by the first code region; When the first replacement code and the first hooking module are executed sequentially by calling a system service function to be monitored by a process running in the user mode, the first hooking module may parameter information of the system service function. Calling the main monitoring module, when the process calls the main monitoring module. Monitoring information about a system service function and after the main monitoring module returns to the first hooking module, the first hooking module executes at least one instruction for calling a system service function called by the process. It includes a step.

상기 기술적 과제를 달성하기 위한 본 발명의 다른 태양에 따른 커널 감시 장치가 설치된 컴퓨터 시스템은 감시 대상 시스템 서비스 함수를 호출하는 명령어를 포함하는 제 1 코드 영역을 교체한 제 1 대체 코드를 포함하되, 상기 제 1 대체 코드는 제 1 후킹 모듈로 점프하는 명령어를 포함하고 상기 제 1 코드 영역이 차지하는 바이트와 같은 바이트로 구성되는 시스템 서비스 함수 핸들러 모듈, 사용자 모드에서 실행 중인 프로세스에 의해 상기 감시 대상 시스템 서비스 함수가 호출됨으로써 상기 제 1 대체 코드에서 점프 되어 실행되며, 상기 시스템 서비스 함수의 정보를 파라미터로 하여 주 감시 모듈을 호출하고, 상기 주 감시 모듈이 리턴 된 후 상기 프로세스에 의해 호출된 시스템 서비스 함수를 호출하기 위한 명령어를 적 어도 하나 실행하는 제 1 후킹 모듈 및 상기 파라미터를 통해 제공 받은 상기 시스템 서비스 함수의 정보를 감시하는 주 감시 모듈을 포함한다.A computer system provided with a kernel monitoring apparatus according to another aspect of the present invention for achieving the above technical problem includes a first replacement code replacing the first code region including instructions for calling a monitored system service function, The first replacement code includes a command to jump to a first hooking module, the system service function handler module comprising a byte equal to a byte occupied by the first code area, and the system service function to be monitored by a process running in user mode. Is executed by jumping from the first replacement code, calling the main monitoring module with the information of the system service function as a parameter, and calling the system service function called by the process after the main monitoring module is returned. The first to execute at least one instruction for And a main monitoring module for monitoring the information of the system service function provided through the hooking module and the parameters.

상기와 같은 본 발명에 따르면, 악의적인 프로세스가 감시 모듈을 우회하여 시스템 서비스 함수를 호출하는 경우에도 상기 프로세스의 시스템 서비스 함수 호출 관련 데이터를 모두 기록할 수 있는 효과가 있다.According to the present invention as described above, even if the malicious process bypasses the monitoring module to call the system service function, there is an effect that can record all the system service function call-related data of the process.

또한, 상기 프로세스의 시스템 서비스 함수 호출 관련 데이터는 악의적인 프로세스가 허용되지 않은 방식으로 시스템 서비스 함수를 호출하는 것을 방지할 수 있는 백신 프로그램의 기초 데이터로 사용될 수 있는 효과가 있다.In addition, the system service function call-related data of the process has an effect that can be used as the basic data of the antivirus program that can prevent the malicious process to call the system service function in an unauthorized manner.

본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 게시되는 실시 예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 게시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.Advantages and features of the present invention, and methods for achieving them will be apparent with reference to the embodiments described below in detail in conjunction with the accompanying drawings. However, the present invention is not limited to the embodiments disclosed below, but can be implemented in various forms. The embodiments of the present invention make the posting of the present invention complete and the general knowledge in the technical field to which the present invention belongs. It is provided to fully convey the scope of the invention to those skilled in the art, and the present invention is defined only by the scope of the claims. Like reference numerals refer to like elements throughout.

이하, 본 발명의 실시예들에 의하여 커널 감시기가 설치된 컴퓨터 시스템을 설명하기 위한 블록도 또는 처리 흐름도에 대한 도면들을 참고하여 본 발명에 대해 설명하도록 한다. 이 때, 처리 흐름도 도면들의 각 블록과 흐름도 도면들의 조합들 은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도 블록(들)에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도 블록(들)에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재 되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도 블록(들)에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.Hereinafter, the present invention will be described with reference to a block diagram or a flowchart illustrating a computer system in which a kernel monitor is installed according to embodiments of the present invention. At this time, it will be understood that each block of the flowchart illustrations and combinations of flowchart illustrations may be performed by computer program instructions. Since these computer program instructions may be mounted on a processor of a general purpose computer, special purpose computer, or other programmable data processing equipment, those instructions executed through the processor of the computer or other programmable data processing equipment may be described in flow chart block (s). It creates a means to perform the functions. These computer program instructions may be stored in a computer usable or computer readable memory that can be directed to a computer or other programmable data processing equipment to implement functionality in a particular manner, and thus the computer usable or computer readable memory. It is also possible for the instructions stored in to produce an article of manufacture containing instruction means for performing the functions described in the flowchart block (s). Computer program instructions may also be mounted on a computer or other programmable data processing equipment, such that a series of operating steps are performed on the computer or other programmable data processing equipment to create a computer-implemented process to generate a computer or other programmable data. Instructions for performing the processing equipment may also provide steps for performing the functions described in the flowchart block (s).

또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행 예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.In addition, each block may represent a portion of a module, segment, or code that includes one or more executable instructions for executing a specified logical function (s). It should also be noted that in some alternative implementations, the functions noted in the blocks may occur out of order. For example, the two blocks shown in succession may in fact be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending on the corresponding function.

이 때, '모듈'이라는 용어는 소프트웨어 또는 FPGA(Field Programmable Gate Array) 또는 ASIC(Application Specific Integrated Circuit)과 같은 하드웨어 구성요소를 의미하며, 모듈은 어떤 역할들을 수행한다. 그렇지만 모듈은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. 모듈은 어드레싱 할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 모듈은 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소 들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 구성요소들과 모듈들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 모듈들로 결합되거나 추가적인 구성요소들과 모듈들로 더 분리될 수 있다.In this case, the term 'module' refers to software or a hardware component such as a field programmable gate array (FPGA) or an application specific integrated circuit (ASIC), and a module plays a role. However, modules are not meant to be limited to software or hardware. The module may be configured to be in an addressable storage medium and may be configured to play one or more processors. Thus, as an example, a module may include components such as software components, object-oriented software components, class components, and task components, and processes, functions, properties, procedures, subroutines, and the like. , Segments of program code, drivers, firmware, microcode, circuits, data, databases, data structures, tables, arrays, and variables. The functionality provided within the components and modules may be combined into a smaller number of components and modules or further separated into additional components and modules.

뿐만 아니라, 구성요소들 및 모듈들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU(Central Processing Unit)들을 재생시키도록 구현될 수도 있다.In addition, the components and modules may be implemented to reproduce one or more central processing units (CPUs) in a device or secure multimedia card.

먼저, 본 발명의 일 실시예에 따른 커널 감시기가 설치되는 위치를 도 1 및 도 2를 참조하여 설명하기로 한다.First, the location where the kernel monitor according to an embodiment of the present invention is installed will be described with reference to FIGS. 1 and 2.

도 1은 컴퓨터 시스템의 기본적인 구성을 나타낸 개념도이다.1 is a conceptual diagram showing the basic configuration of a computer system.

컴퓨터 시스템은 주기억장치(106)에 로드 되는 명령어 세트를 해석하고 실행하는 CPU(100), 컴퓨터 시스템의 전원이 오프되는 경우에도 데이터를 저장하기 위한 보조기억장치(102), 컴퓨터 시스템의 사용자로부터 신호를 입력 받고 연산결과를 출력하는 입출력장치(104)를 포함할 수 있다.The computer system includes a CPU 100 that interprets and executes a set of instructions loaded into the main memory 106, an auxiliary memory 102 for storing data even when the computer system is turned off, and a signal from a user of the computer system. It may include an input and output device 104 for receiving the input and output the operation result.

도 1에 도시된 바와 같이 컴퓨터 시스템의 주기억장치(106)는 프로세스를 수행하는 명령코드가 원본파일로부터 로드 되어 실행되는 부분으로서 함수의 호출, 분기 등의 프로세스 주기능을 달성하기 위한 영역인 코드영역(160), 코드영역(160)의 명령코드 실행 시 필요한 데이터가 저장되는 부분으로 소스 코드로부터 이미 예상되어 할당되어진 데이터가 저장되는 영역인 데이터영역(162), 힙 영역과 스택 영역을 지칭하는 가변 데이터영역(164)을 포함한다.As shown in FIG. 1, the main memory 106 of the computer system is an area in which an instruction code for executing a process is loaded and executed from an original file, and is an area for achieving main functions of a process, such as a function call or branching. (160), the data area 162 which is a region in which data necessary for executing the command code of the code region 160 is stored, and the data region 162, which is an area where data already estimated and allocated from the source code, is stored, and a variable which refers to a heap region and a stack region. It includes a data area 164.

본 실시예에 따른 커널 감시기는 상기 컴퓨터 시스템의 구성요소 중 보조기억장치(102), 주기억장치(106)에 설치되고 CPU(100)에서 실행될 수 있다. 보다 자세하게는 커널 감시와 관련된 모듈의 데이터가 보조기억장치(102)에 저장되어 전원이 오프 되더라도 손실되는 일이 없도록 하고, 전원이 온 되는 경우 상기 컴퓨터 시스템에 설치된 운영체제와 함께 주기억장치(106)의 코드 영역(160)에 로드 되어 커널 감시 기능을 수행할 수 있다.The kernel monitor according to the present embodiment may be installed in the auxiliary memory 102 and the main memory 106 among the components of the computer system, and may be executed in the CPU 100. In more detail, data of a module related to kernel monitoring is stored in the auxiliary storage device 102 so that no loss occurs even when the power is turned off. It is loaded in the code area 160 to perform a kernel monitoring function.

본 실시예에 따른 커널 감시기의 설치 위치를 더욱 상세하게 설명하기 위해, 도 2를 참조하여 운영체제가 로딩 된 후의 코드 영역(160)을 설명하기로 한다. 도 2는 운영체제가 로딩 된 후의 코드 영역의 구성을 나타낸 개념도이다.To describe in more detail the installation location of the kernel monitor according to the present embodiment, the code region 160 after the operating system is loaded will be described with reference to FIG. 2. 2 is a conceptual diagram illustrating a configuration of a code region after an operating system is loaded.

일반적으로 운영체제는 응용 프로그램의 하드웨어에 대한 접근을 안전하고 효과적으로 수행하기 위해서 시스템 서비스 함수(208)를 제공한다. 제공되는 시스템 서비스 함수의 종류와 개수는 운영제제 마다 다르다. 응용 프로그램이 실행되는 모드를 사용자 모드(user mode)라고 하고 운영체제의 커널(kernel)이 실행되는 모드를 커널 모드(kernel mode)라고 하는데, 시스템 서비스 함수(208)는 커널 모드에서 실행되는 함수이다. 사용자 모드에서 실행되는 프로세스(200)가 필요한 시스템 서비스 함수(208)를 호출하기 위해서는 커널 모드로 전환이 이루어져야 한다. 전환 방법은 시스템 호출 명령어를 제공하는 방법, 예를 들면 인텔 아키텍처의 SYSENTER 명령어를 사용하는 방법과 특정 소프트웨어 인터럽트를 시스템 호출에 사용하는 방법이 있다.In general, an operating system provides system service functions 208 to securely and effectively perform application access to hardware. The type and number of system service functions provided vary by operating system. The mode in which the application runs is called user mode, and the mode in which the kernel of the operating system runs is called kernel mode. The system service function 208 is a function executed in kernel mode. In order for the process 200 running in user mode to call the required system service function 208, a switch to kernel mode must be made. Switching methods include providing system call instructions, for example using the Intel architecture SYSENTER instruction, and using specific software interrupts in system calls.

커널 모드로 전환하는 방법으로 무엇을 사용하던지 간에 커널은 사용자가 요청한 시스템 서비스 함수의 종류와 인자를 알아내야 하며, 이 일을 담당하는 모듈이 시스템 서비스 함수 핸들러 모듈(204)이다. 운영체제는 자신이 제공하는 시스템 서비스 함수가 메모리의 몇 번지에 있는지 저장된 시스템 서비스 함수 테이블(206)을 유지한다. 시스템 서비스 함수 테이블(206)은 시스템 서비스 함수의 인덱스 및 그에 대응하는 시스템 서비스 함수의 주기억장치(160) 내 주소를 포함한다. 사용자 모드에서 실행되는 프로세스(200)는 사용자 모드 라이브러리(library)(202)가 제공하는 함수를 사용하게 되고, 사용자 모드 라이브러리(202)에 존재하는 함수는 상기 시스템 호출 명령어 혹은 인터럽트를 이용하여 커널 모드로 전환한 후 사용자 모드에서 요청한 시스템 서비스 함수를 결정하여 호출해주는 함수, 즉, 시스템 서비스 함수 핸들러 모듈(204)을 실행하게 된다. 운영체제에 따라서 시스템 서비스 함수 테이블(206)은 한 개가 아니라 여러 개가 될 수 있다. 또한 시스템 서비스 테이블은 계층적 구조로 형성될 수도 있다. 그러나 어떤 경우에도 시스템 서비스 함수 핸들러 모듈(204)은 1개 존재한다.Regardless of what you use to switch to kernel mode, the kernel must know the type and arguments of the system service functions you requested, and the module responsible for this task is the system service function handler module 204. The operating system maintains a stored system service function table 206 of how many system service functions it provides in memory. The system service function table 206 includes an index of the system service function and an address in the main memory 160 of the system service function corresponding thereto. The process 200 executed in the user mode may use a function provided by the user mode library 202, and the function existing in the user mode library 202 may be a kernel mode using the system call command or interrupt. After switching to the user mode, the system service function that determines and calls the requested system service function, that is, the system service function handler module 204 is executed. Depending on the operating system, the system service function table 206 may be several instead of one. In addition, the system service table may be formed in a hierarchical structure. In any case, however, there is one system service function handler module 204.

시스템 서비스 함수 핸들러 모듈(204)은 예를 들면 마이크로소프트 윈도우의 KiSystemService() 함수일 수 있으며, 시스템 서비스 함수 테이블(206)은 예를 들면 마이크로소프트 윈도우의 경우 SSDT(System Service Descriptor Table)일 수 있다.The system service function handler module 204 may be a KiSystemService () function of Microsoft Windows, for example, and the system service function table 206 may be a System Service Descriptor Table (SSDT), for example, of Microsoft Windows.

본 실시예에 따른 커널 감시기는 시스템 서비스 함수 핸들러 모듈(204)의 일부 코드 영역을 수정하고, 커널 감시에 필요한 모듈을 주기억장치(106)의 코드 영역(160)에 로딩함으로써 CPU(100)에서 실행된다. 본 실시예에 따른 커널 감시기의 전원이 오프 되었을 때를 대비하여 상기 커널 감시에 필요한 모듈 및 시스템 서비스 함수 핸들러 모듈(204)을 보조기억장치(102)에 저장하는 것이 바람직하다.The kernel monitor according to the present embodiment is executed in the CPU 100 by modifying some code areas of the system service function handler module 204 and loading modules required for kernel monitoring into the code area 160 of the main memory 106. do. It is preferable to store the module and the system service function handler module 204 necessary for the kernel monitoring in the auxiliary memory 102 in case the kernel monitor according to the present embodiment is powered off.

이하, 본 발명의 다른 실시예에 따른 커널 감시기가 설치된 컴퓨터 시스템의 구조 및 동작에 대하여 도 3, 도 4 및 도5를 참조하여 설명하기로 한다.Hereinafter, the structure and operation of a computer system provided with a kernel monitor according to another embodiment of the present invention will be described with reference to FIGS. 3, 4, and 5.

도 3은 본 실시예에 따른 커널 감시기가 설치된 컴퓨터 시스템의 구조도이다.3 is a structural diagram of a computer system provided with a kernel monitor according to the present embodiment.

도 3에 도시된 바와 같이, 본 실시예에 따른 커널 감시기가 설치된 컴퓨터시스템은 주 감시 모듈(210), 하나 이상의 부 감시 모듈(212), 제 1 후킹 모듈(214), 제 2 후킹 모듈(216), 시스템 서비스 함수 핸들러 모듈(218) 및 원본 유지 모듈(220)을 포함할 수 있다. 시스템 서비스 함수 테이블(206) 및 시스템 서비스 함 수(208)는 도 2에서 이미 설명된 바 있고, 운영체제에서 제공하는 모듈이므로 자세한 설명은 생략하기로 한다.As shown in FIG. 3, the computer system in which the kernel monitor is installed according to the present embodiment includes a main monitoring module 210, at least one sub monitoring module 212, a first hooking module 214, and a second hooking module 216. ), The system service function handler module 218, and the source maintenance module 220. The system service function table 206 and the system service function 208 have already been described with reference to FIG. 2 and the detailed description thereof will be omitted since the module is provided by the operating system.

원본 유지 모듈(220)은 본 발명의 일 실시예에 따른 커널 감시기를 컴퓨터 시스템에 설치할 때 동작하는 모듈이다. 원본 유지 모듈(220)은 시스템 서비스 함수 핸들러 모듈(218)의 코드 원본을 저장한다. 상기 코드 원본은 운영체제의 종류 및 버전에 따라 상이할 수 있다. 원본 유지 모듈(220)은 상기 커널 감시기를 설치하기 전에 주 기억장치(106)에 로드 되거나 보조기억장치(102)에 저장된 시스템 서비스 함수 핸들러 모듈(218)의 코드와 상기 코드의 원본이 일치하는지 판정하고, 상기 판정의 결과 일치하지 않는 경우 시스템 서비스 함수 핸들러 모듈(218)의 코드를 원본 코드로 교체한다. 원본 유지 모듈(220)의 이러한 동작은 시스템 서비스 함수 자체를 복사하고 시스템 서비스 함수 핸들링 모듈(204)에 후킹 코드를 삽입하여 시스템 서비스 함수 테이블을 참조하지 않고 직접 복사한 시스템 서비스 함수를 호출하도록 하는 해킹 기법을 방지할 수 있도록 한다.The original maintenance module 220 is a module that operates when installing a kernel monitor in a computer system according to an embodiment of the present invention. The original maintenance module 220 stores the original code of the system service function handler module 218. The code source may vary depending on the type and version of the operating system. The original maintenance module 220 determines whether the original of the code matches the code of the system service function handler module 218 loaded in the main memory 106 or stored in the auxiliary memory 102 before installing the kernel monitor. If the result of the determination does not match, the code of the system service function handler module 218 is replaced with the original code. This behavior of the source maintenance module 220 is a hack that copies the system service function itself and inserts hooking code into the system service function handling module 204 to call the copied system service function directly without referring to the system service function table. To prevent the technique.

시스템 서비스 함수 핸들러 모듈(218)은 운영체제가 제공하는 시스템 서비스 함수 핸들러 모듈(204)을 기반으로 감시 대상 시스템 서비스 함수를 호출하는 명령어를 포함하는 제 1 코드 영역이 제 1 대체 코드로 교체되고, 상기 제 1 코드 영역으로 점프하는 명령어를 포함하는 제 2 코드 영역이 제 2 대체 코드로 교체된 것이다. 본 발명의 이해를 돕기 위하여 상기 제 1 코드 영역, 제 2 코드 영역, 제 1 대체 코드 및 제 2 대체 코드에 대하여 도 4 및 도 5를 이용하여 먼저 설명한다.The system service function handler module 218 replaces a first code region including an instruction for calling a monitored system service function based on a system service function handler module 204 provided by an operating system with a first replacement code. The second code region containing the instruction to jump to the first code region is replaced with the second replacement code. In order to facilitate understanding of the present invention, the first code region, the second code region, the first substitute code and the second substitute code will be first described with reference to FIGS. 4 and 5.

도 4는 본 발명의 일 실시예에 따른 커널 감시기를 설치하기 전의 시스템 서 비스 함수 핸들러 모듈(204)을 도시한 도면이다. 도 4에 도시된 내용을 이해함에 있어서, 기재된 기계어 및 어셈블리 코드는 이해를 돕기 위해 기재된 것이며, 본 발명의 내용에 부합하는 일 예시로서의 코드에 불과하므로, 본 발명의 내용이 도 4에 기재된 기계어 및 어셈블리 코드에 대한 것으로 한정하여 해석되어서는 안 된다는 점을 이해하여야 한다.4 is a diagram illustrating a system service function handler module 204 before installing a kernel monitor according to an embodiment of the present invention. In the understanding of the contents shown in Figure 4, the described machine language and assembly code is described for ease of understanding, it is only a code as an example corresponding to the contents of the present invention, the contents of the present invention is the machine language and It should be understood that this is only for assembly code and should not be interpreted.

본 발명의 일 실시예에 따른 커널 감시기를 설치하기 위하여는 시스템 서비스 함수 핸들러 모듈(204)의 코드 중에서 제 1 대체 코드와 교체될 코드의 영역인 제 1 코드 영역, 제 2 대체 코드와 교체될 코드의 영역인 제 2 코드 영역이 각각 지정되어야 한다. 이하, 제 1 코드 영역 및 제 2 코드 영역을 시스템 서비스 함수 핸들러 모듈(204)의 코드 중에서 지정하는 기준을 설명하기로 한다.In order to install the kernel monitor according to an embodiment of the present invention, the code to be replaced with the first code area and the second replacement code, which are areas of the code to be replaced with the first replacement code, among the codes of the system service function handler module 204. A second code area, which is an area of, must be specified respectively. Hereinafter, the criteria for designating the first code region and the second code region among the codes of the system service function handler module 204 will be described.

시스템 서비스 함수 핸들러 모듈(204)의 코드에는 사용자 모드에서 실행되는 프로세스에서 호출한 시스템 서비스 함수를 호출하는 내용의 코드가 포함되어 있다. 보다 자세하게는, 시스템 서비스 함수(208)의 인덱스 번호를 사용하여 시스템 서비스 함수 테이블(206)에 등록된 시스템 서비스 함수의 주소를 참조하여 호출하는 내용의 코드가 포함되어 있다. 제 1 코드 영역은 감시의 대상인 시스템 서비스 함수를 상기와 같이 시스템 서비스 함수 테이블(206)에 등록된 시스템 서비스 함수의 주소를 참조하여 호출하는 명령어를 포함한다.The code of the system service function handler module 204 includes code for calling a system service function called by a process running in the user mode. In more detail, the code of the contents which are called by referring to the address of the system service function registered in the system service function table 206 using the index number of the system service function 208 is contained. The first code area includes a command for calling a system service function to be monitored by referring to an address of a system service function registered in the system service function table 206 as described above.

도 4에 도시된 바에 따르면, 제 1 코드 영역은 3개의 기계 명령어로 구성되어 있다. 각각의 기계 명령어의 첫 번째 행은 기계어를 나타내고, 두 번째 행은 기계어에 대한 어셈블리어(assembly language)를 나타낸다. 예를 들어 “FFD3 call ebx”는 기계 명령어 FFD3은 어셈블리어로 “call ebx”를 의미하고, 이는 EBX레지스터에 저장된 주소 값으로 함수 호출을 수행하라는 의미이다. 도 4에 도시된 제 1 코드 영역의 각 열의 기계 명령어는 6바이트, 2바이트, 2바이트 크기를 차지한다.As shown in Fig. 4, the first code area consists of three machine instructions. The first line of each machine instruction represents a machine language, and the second line represents an assembly language for the machine language. For example, “FFD3 call ebx” means the machine instruction FFD3 means “call ebx” in assembly language, which means to make a function call with the address value stored in the EBX register. The machine instructions in each column of the first code area shown in FIG. 4 occupy 6 bytes, 2 bytes, and 2 bytes in size.

한편, 상기 제 1 코드 영역에 포함된 3개의 기계 명령어 중, 3번째 명령어 'call ebx' 만이 시스템 서비스 함수를 호출하는 명령어이다. 그럼에도 불구 하고 'call ebx'에 선행하는 두 개의 명령어를 추가로 제 1 코드 영역으로 지정한 이유는 추후 도 5와 함께 설명하기로 한다.Meanwhile, of the three machine instructions included in the first code area, only the third instruction 'call ebx' is a command for calling a system service function. Nevertheless, the reason why two instructions preceding 'call ebx' are additionally designated as the first code region will be described later with reference to FIG. 5.

상기 제 1 코드 영역은 시스템 서비스 함수(208)에 따라 시스템 서비스 함수 핸들러 모듈(204)의 코드 내의 다른 위치에 존재할 수 있다. 따라서, 감시 하고자 하는 시스템 서비스 함수 개수만큼의 제 1 코드 영역이 지정될 수 있다. 예를 들어 시스템 서비스 함수 1, 3, 5 번을 감시 하고자 하는 경우, 시스템 서비스 함수 테이블(206)에 저장된 시스템 서비스 함수 1, 3, 5 번의 주소를 call 하는 명령어를 포함하는 서로 다른 위치의 3개의 제 1 코드 영역이 지정될 수 있다.The first code region may be in another location within the code of the system service function handler module 204 in accordance with the system service function 208. Therefore, as many first code areas as the number of system service functions to be monitored can be specified. For example, if you want to monitor system service functions 1, 3, and 5, three different locations containing instructions for calling the addresses of system service functions 1, 3, and 5 stored in the system service function table 206 The first code region may be designated.

한편, 상기 제 2 코드 영역은 상기 제 1 코드 영역이 각각 제 1 대체 코드로 교체되는 경우 발생할 수 있는 문제점을 해결하기 위해 지정된다. 상기 문제점은, 예를 들어 시스템 서비스 함수 핸들러 모듈(204)에 포함된 코드 중 상기 제 1 코드 영역으로 점프하는 명령어가 실행된 경우, 점프된 위치가 제 1 대체 코드로 교체된 결과 노 오퍼레이션(NOP) 명령어라면 발생할 수 있다. 상기 제 1 코드 영역으로 점프하는 명령어를 포함하는 일정 영역의 코드를 제 2 코드 영역으로 지정할 수 있다.Meanwhile, the second code area is designated to solve a problem that may occur when the first code area is replaced with the first replacement code, respectively. The problem is that, for example, when an instruction to jump to the first code region among the codes included in the system service function handler module 204 is executed, the jump position is replaced with the first replacement code. ) Command can occur. A code of a predetermined area including an instruction to jump to the first code area may be designated as a second code area.

상기 문제점을 해결하기 위해서는 상기 제 2 코드 영역 역시 제 2 대체 코드로 교체되어야 한다. 상기 제 2 코드 영역은 상기 제 1 코드 영역에 대응하여 존재하는 데, 운영체제의 종류에 따라 하나의 제 1 코드 영역에 대하여 한 개 이상의 제 2 코드 영역이 존재할 수도 있고, 대응하는 제 2 코드 영역이 존재하지 않을 수도 있다.In order to solve the problem, the second code area must also be replaced with a second replacement code. The second code area exists in correspondence with the first code area. Depending on the type of operating system, one or more second code areas may exist for one first code area. It may not exist.

도 4에 도시된 바에 의하면 제 2 코드 영역의 2번째 명령어가 제 1 코드 영역의 2번째 명령어, 즉, “rep movs”로 점프할 수 있다. 따라서, 도 4에 도시된 제 2 코드 영역의 명령어 중 두 번째 명령어 만이 제 1 코드 영역으로 점프하는 명령어 임에도 불구하고 선행하는 한 개의 명령어 역시 제 2 코드 영역으로 지정되어 있다. 그 이유는 상기 제 1 코드 영역에서와 같은 것인 것인데, 그 이유 역시 추후 도 5와 함께 설명하기로 한다.As shown in FIG. 4, the second command of the second code area may jump to the second command of the first code area, that is, “rep movs”. Therefore, although only the second instruction among the instructions of the second code region illustrated in FIG. 4 is the instruction jumping to the first code region, one preceding instruction is also designated as the second code region. The reason is the same as in the first code region, which will also be described later with reference to FIG. 5.

이상, 제 1 코드 영역 및 제 2 코드 영역을 시스템 서비스 함수 핸들러 모듈(204)의 코드 중에서 지정하는 기준을 설명하였다. 상기 언급한 바와 같이, 시스템 서비스 함수 핸들러 모듈(204)의 제 1 코드 영역 및 제 2 코드 영역은 본 발명의 일 실시예에 따른 커널 감시기가 설치됨에 따라, 각각 제 1 대체 코드 및 제 2 대체 코드로 교체된다. 또한, 상기 제 1 대체 코드 및 제 2 대체 코드는 각각 제 1 후킹 모듈 및 제 2 후킹 모듈로 점프하는 명령어를 포함한다. 이하, 도 5를 참조하여 상기 제 1 대체 코드 및 상기 제 2 대체 코드에 대해 설명하기로 한다.In the above, the criterion which designates the 1st code area and the 2nd code area among the codes of the system service function handler module 204 was demonstrated. As mentioned above, the first code area and the second code area of the system service function handler module 204 are respectively installed with the first replacement code and the second replacement code as the kernel monitor is installed according to an embodiment of the present invention. Is replaced by. Also, the first replacement code and the second replacement code include instructions for jumping to the first hooking module and the second hooking module, respectively. Hereinafter, the first replacement code and the second replacement code will be described with reference to FIG. 5.

도 5는 본 발명의 일 실시예에 따른 커널 감시기가 설치된 상태의 시스템 서비스 함수 핸들러 모듈(218)에 대하여 도시한 도면이다.5 is a diagram illustrating a system service function handler module 218 with a kernel monitor installed according to an embodiment of the present invention.

먼저, 상기 제 1 코드 영역에 대응하는 제 1 대체 코드에 대하여 설명하기로 한다.First, a first replacement code corresponding to the first code area will be described.

제 1 대체 코드는 도 5에 도시된 바와 같이 CPU 사이클만 소모하며 아무 일도 하지 않는 명령어인 3개의 NOP 명령어(0x90)와 제 1 후킹 모듈(214)로 점프하는 코드(0xEAxxxxxxxx0800)로 구성된다. 또한 제 1 후킹 모듈(214)로 점프하는 상기 코드는 시스템 내부에서 안정적으로 점프 명령을 사용하기 위해 다른 코드 세그먼트(segment)까지 점프할 수 있는 FAR점프를 사용하였다. 그 결과 상기 점프 코드는 7 바이트를 차지한다.The first replacement code consists of three NOP instructions (0x90), which are instructions that consume only CPU cycles and do nothing, and a code (0xEAxxxxxxxx0800) that jumps to the first hooking module 214, as shown in FIG. The code that jumps to the first hooking module 214 also uses a FAR jump that can jump to other code segments to use the jump command reliably within the system. As a result, the jump code occupies 7 bytes.

제 1 대체 코드는 제 1 코드 영역과 같은 바이트 수로 구성되어야 한다는 점은 자명하다. 같은 바이트 수가 아닌 경우, 시스템 서비스 함수 핸들러 모듈(204)의 명령어들의 offset이 변경되면서 시스템 서비스 함수 핸들러 모듈(204)의 기능이 손상될 것이기 때문이다. 그러나, 도 4에 도시된 상기 제 1 코드 영역의 시스템 서비스 함수를 호출하는 명령어가 2 바이트 밖에 안 되는 반면, 상기 점프 코드가 7 바이트라는 점 때문에 제 1 코드 영역은 2 바이트가 아닌 10 바이트로 지정되었다.Obviously, the first replacement code should consist of the same number of bytes as the first code area. If it is not the same number of bytes, because the offset of the instructions of the system service function handler module 204 is changed, the function of the system service function handler module 204 will be impaired. However, while the instruction for calling the system service function of the first code region shown in FIG. 4 is only 2 bytes, the first code region is designated as 10 bytes instead of 2 bytes because the jump code is 7 bytes. It became.

제 1 코드 영역 및 제 1 대체 코드가 10 바이트로 지정된 이유를 좀더 자세하게 설명하기로 한다. 도 4에 도시된 제 1 코드 영역의 명령어 중 시스템 서비스 함수(208) 호출 명령어는 2 바이트로 구성되는 'call ebx' 하나뿐 이지만, 제 1 대체 코드에 포함되는 제 1 후킹 모듈(214)로의 점프 명령어가 7 바이트를 차지하는 이유로 제 1 코드 영역 역시 최소한 7 바이트로 구성되어야 한다. 또한 'call ebx' 바로 이전 명령어인 'rep movs' 역시 2 바이트에 불과하여 7 바이트에 미치지 못한다. 결국, 'jae offset' 명령어까지 제 1 코드 영역에 포함시키는 방법으로 7 바이트를 넘어설 수 있다. 한편, 제 1 코드 영역이 7 바이트를 3 바이트 초과한 10바이트로 구성됨으로 인해, 제 1 대체 코드에는 3 바이트를 추가할 필요가 생긴다. 상기 추가된 바이트로 인하여 별도의 동작이 있어서는 안되므로 3개의 NOP 명령어를 포함함으로써 3 바이트를 추가할 수 있다.The reason why the first code area and the first replacement code are designated by 10 bytes will be described in more detail. Among the instructions of the first code area shown in FIG. 4, the system service function 208 call instruction is only one 'call ebx' composed of two bytes, but jumps to the first hooking module 214 included in the first replacement code. Because the instruction occupies seven bytes, the first code area should also consist of at least seven bytes. Also, 'rep movs', just before the 'call ebx' command, is only 2 bytes, which is less than 7 bytes. As a result, by including the 'jae offset' command in the first code area can exceed 7 bytes. On the other hand, since the first code area consists of 10 bytes exceeding 7 bytes by 3 bytes, it is necessary to add 3 bytes to the first replacement code. Since the added byte should not be a separate operation, three bytes may be added by including three NOP instructions.

정리하면, 상기 제 1 코드 영역이 제 1 후킹 모듈(214)로 점프하는 명령어가 차지하는 바이트보다 많은 바이트로 구성되는 경우, 상기 제 1 코드 영역은 상기 시스템 서비스 함수 호출 명령어보다 선행하거나 후행 하는 명령어를 적어도 하나 포함하고, 상기 제 1 대체 코드는 적어도 하나의 노오퍼레이션(NOP) 명령어를 포함하되, 상기 노오퍼레이션 명령어의 수는 상기 제 1 코드 영역의 바이트 수와 상기 제 1 후킹 모듈로의 점프 명령어 바이트 수의 차이를 노오퍼레이션 명령어가 차지하는 바이트 수로 나눈 것이다. 이때, 상기 제 1 코드 영역에 포함된 시스템 서비스 함수 호출 명령어보다 선행하거나 상기 명령어에 후행 하는 명령어는 제 1 후킹 모듈(214)에서 실행된다.In summary, when the first code area consists of more bytes than the bytes occupied by the instruction jumping to the first hooking module 214, the first code area may include instructions that precede or follow the system service function call instruction. Wherein the first replacement code includes at least one NOP instruction, wherein the number of no operation instructions is a byte count of the first code region and a jump instruction byte to the first hooking module. The difference in number is divided by the number of bytes occupied by the no-operation instruction. In this case, an instruction preceding or following the system service function call instruction included in the first code region is executed by the first hooking module 214.

다음으로, 상기 제 2 코드 영역에 대응하는 제 2 대체 코드에 대하여 설명하기로 한다.Next, a second replacement code corresponding to the second code area will be described.

상기 제 1 코드영역이 10 바이트로 구성된 것과 마찬가지의 이유로 제 2 코드 영역 역시 10 바이트로 구성되어 있고, 제 2 대체 코드는 제 2 후킹 모듈로 점프하는 명령어 및 3개의 NOP 명령어를 포함하고 있다.For the same reason that the first code region is composed of 10 bytes, the second code region is also composed of 10 bytes, and the second replacement code includes an instruction to jump to the second hooking module and three NOP instructions.

상기 제 1 코드 영역 및 상기 제 2 코드 영역은 각각 시스템 서비스 함수를 호출하는 명령어와 제 1 코드 영역으로 점프하는 명령어가 가장 마지막 명령어로 구성되어 있으나, 상기 명령어가 상기 제 1 코드 영역 및 상기 제 2 코드 영역의 첫 번째 명령어로 구성될 수도 있고, 중간의 명령어로 구성될 수도 있음을 유의해야 한다.Each of the first code area and the second code area includes a command for calling a system service function and a command for jumping to the first code area, respectively, but the command is the first code area and the second code area. Note that it may consist of the first instruction in the code area, or it may consist of an intermediate instruction.

다음으로, 제 1 후킹 모듈(214)에 대하여 설명하기로 한다. 제 1 후킹 모듈(214)은 사용자 모드의 프로세스가 감시 대상인 시스템 서비스 함수를 호출하는 경우, 제 1 대체코드의 제 1 후킹 모듈(214)로 점프하는 명령어가 실행됨에 의해 실행되게 된다.Next, the first hooking module 214 will be described. When the process of the user mode calls a system service function to be monitored, the first hooking module 214 is executed by executing an instruction that jumps to the first hooking module 214 of the first replacement code.

표 1은 도 4에 도시된 상기 제 1 코드 영역 및 도 5에 도시된 상기 제 1대체 코드에 따른 제 1 후킹 모듈(214)의 명령어 구성 예시이다.Table 1 is an example of an instruction configuration of the first hooking module 214 according to the first code region shown in FIG. 4 and the first alternative code shown in FIG. 5.

Figure 112009044798803-pat00001
Figure 112009044798803-pat00001

<표 1: 제 1 후킹 모듈의 명령어 구성 예시><Table 1: Example of Command Structure of First Hooking Module>

제 1 후킹 모듈(214)의 첫 번째 명령어(표 1의 ①)는 상기 제 1 코드 영역의 첫 번째 명령어를 실행하는 것과 같은 결과를 얻기 위한 것이다. 상기 제 1 코드 영역의 첫 번째 명령어는 만일 CPU의 상태비트가 설정되었다면 시스템 서비스 함수 핸들러 모듈(218)의 상기 제 2 코드 영역으로 점프하고 그렇지 않으면 콜 코드의 다음 명령어, 즉, “rep movs”를 실행하게 된다. 따라서 상기 제 1 후킹 모듈의 첫 번째 명령어는 만일 CPU의 상태비트가 설정되었다면 제 2 후킹 모듈(216)로 점프하는 명령어이다.The first instruction (1 in Table 1) of the first hooking module 214 is for obtaining the same result as executing the first instruction in the first code area. The first instruction of the first code region jumps to the second code region of the system service function handler module 218 if the status bit of the CPU is set, otherwise it executes the next instruction of the call code, ie “rep movs”. Will run. Therefore, the first instruction of the first hooking module is an instruction to jump to the second hooking module 216 if the status bit of the CPU is set.

제 1 후킹 모듈(214)의 두 번째에서 네 번째 명령어(표 1의 ②~④)는 주 감시 모듈(210)을 호출하기 위한 것이다. EBX레지스터에는 응용 프로그램이 호출하고자 하는 시스템 서비스 함수의 주소가 저장되어있고 EAX레지스터에는 시스템 서비스 함수 테이블(206)의 인덱스 번호, 즉, 호출하고자 하는 함수 번호를 가지고 있다. 따라서 이 세 개의 명령어를 수행하게 되면 주 감시 모듈(210)을 호출하게 된다. EAX 레지스터 및 EBX 레지스터는 주 감시 모듈(210)의 첫 번째와 두 번째 파라미터로써, 상기 파라미터에는 사용자 모드에서 실행 중인 프로세스가 호출하고자 하는 시스템 서비스 함수(208)의 주소 및 함수 번호가 들어가게 된다.The second to fourth instructions of the first hooking module 214 (2 ~ 4 in Table 1) are for calling the main monitoring module 210. The EBX register stores the address of the system service function that the application wants to call, and the EAX register contains the index number of the system service function table 206, that is, the function number to be called. Therefore, when these three commands are executed, the main monitoring module 210 is called. The EAX register and the EBX register are the first and second parameters of the main monitoring module 210, which contain the address and function number of the system service function 208 to be called by the process running in the user mode.

주 감시 모듈(210)은 전달받은 상기 두 파라미터를 이용하여 시스템서비스 함수 테이블(206)에 등록된 함수 호출인지, 그 외의 테이블에 등록된 함수 호출인지를 구분하는 비교검사를 수행한다. 또한, 주 감시 모듈(210)은 프로세스 식별 정보, 시스템 서비스 함수(208)의 인덱스 및 시스템 서비스 함수(208)의 주소 값을 CPU 내부의 레지스터, 주기억장치(206) 및 보조기억장치(102) 중 적어도 하나에 저장함으로써, 추후 각 프로세스의 시스템 서비스 함수 호출 이력을 관리할 수 있다.The main monitoring module 210 performs a comparison test to identify whether a function call is registered in the system service function table 206 or a function call registered in another table by using the received two parameters. In addition, the main monitoring module 210 stores the process identification information, the index of the system service function 208 and the address value of the system service function 208 among the registers of the CPU, the main memory 206 and the auxiliary memory 102. By storing in at least one, it is possible to manage the system service function call history of each process later.

주 감시 모듈(210)이 포함하는 모든 명령어가 실행 된 경우, 주 감시 모듈(210)은 리턴 값(return value)으로 사용자 모드 프로세스가 요청한 시스템 서비스 함수(208)에 대응되는 부 감시 모듈(210)의 주소 값을 설정 할 수 있다. 예를 들어, CPU(100)가 IA-32(x86) 계열이라면, 상기 리턴 값은 EAX 레지스터에 저장되게 된다.When all the commands included in the main monitoring module 210 have been executed, the main monitoring module 210 returns a return value, which corresponds to the sub-monitoring module 210 corresponding to the system service function 208 requested by the user mode process. You can set the address value. For example, if the CPU 100 is an IA-32 (x86) series, the return value is stored in the EAX register.

다섯 번째 명령어와 여섯 번째 명령어(표 1의 ⑤~⑥)를 수행하게 되면 EBX 레지스터에 부 감시 모듈(212)의 주소 값이 저장된다. 따라서 일곱 번째 명령어와 여덟 번째 명령어(표 1의 ⑦~⑧)를 수행하면 부 감시 모듈(212)의 호출이 이루어진다.When the fifth instruction and the sixth instruction (⑤ ~ ⑥ in Table 1) are executed, the address value of the sub monitor module 212 is stored in the EBX register. Therefore, when the seventh instruction and the eighth instruction (⑦ ~ ⑧ of Table 1) is performed, the call of the sub-monitoring module 212 is made.

부 감시 모듈(212)은 자신의 파라미터 값을 조사하여 다양한 감시 역할을 수행한 후 대응되는 시스템 서비스 함수(208)를 호출한다.The secondary monitoring module 212 performs its various monitoring roles by examining its parameter values and then calls the corresponding system service function 208.

아홉 번째 명령어(표 1의 ⑨)는 시스템 서비스 함수 핸들러 모듈(218)의 제 1 코드 영역 다음 명령어로 점프하는 명령어이다.The ninth instruction (9 in Table 1) is the instruction jumping to the instruction following the first code area of the system service function handler module 218.

이하, 감시 대상인 시스템 서비스 함수의 호출이 요청되는 경우 제 1 후킹 모듈(214)에 의해 호출되는 주 감시 모듈(210) 및 부 감시 모듈(212)에 대하여 보다 상세한 설명을 하기로 한다. 주 감시 모듈(210)은 사용자 모드의 프로세스가 호출하는 시스템 서비스 함수(208)에 대한 정보를 감시 하기 위한 것이고, 감시 대상인 시스템 서비스 함수와 대응하는 감시 부 함수(212)들은 상기 시스템 서비스 함수(208)가 구체적으로 어떤 파라미터 값을 어떤 식으로 사용하는 지를 관찰하기 위한 것이다.Hereinafter, the main monitoring module 210 and the sub-monitoring module 212 that are called by the first hooking module 214 when a call to the system service function to be monitored are requested will be described in more detail. The main monitoring module 210 is for monitoring information about the system service function 208 called by a process of the user mode, and the monitoring sub-functions 212 corresponding to the system service function to be monitored are the system service function 208. ) Specifically observes which parameter value is used in what way.

주 감시 모듈(210)은 1개 존재하며 부 감시 모듈(212)들은 감시 하고자 하는 시스템 서비스 함수의 개수에 따라 정해진다. 예를 들면, 주 감시 모듈(210)은 프로세스 A가 호출한 시스템 서비스 함수의 종류가 무엇이고 각 종류의 시스템 서비 스 함수를 몇 번씩 호출 했는지를 감시 할 수 있다.There is one primary monitoring module 210 and the secondary monitoring modules 212 are determined according to the number of system service functions to be monitored. For example, the main monitoring module 210 may monitor what kind of system service function is called by process A and how many times each kind of system service function is called.

그런데, 본 커널 감시기가 컴퓨터 시스템에 설치되어 실행된 이후, 다른 프로그램에 의해 시스템 서비스 함수 테이블(206)에 등록된 함수 주소가 변경되었을 경우, 주 감시 모듈(210)에서 수행되는 인덱스와 함수 주소를 이용한 상기 비교검사는 정상적으로 실행되지 않을 것이다. 이 문제를 해결하기 위해, 주 감시 모듈(210)은 호출이 요청된 함수의 주소와 커널 감시 실행 초기에 저장해 놓은 상기 함수의 주소가 다르면, 해킹된 것으로 인지하여 감시 하고자 하는 함수의 주소를 변경된 함수로 갱신함으로써, 이 후 정상적인 감시가 이루어지게 하거나 해킹 가능성을 통지하는 알람 메시지를 게시할 수 있다.However, after the kernel monitor is installed and executed in a computer system, when a function address registered in the system service function table 206 is changed by another program, an index and a function address performed by the main monitoring module 210 are changed. The comparison test used will not run normally. In order to solve this problem, the main monitoring module 210 changes the address of a function to be monitored by recognizing that it is hacked if the address of the function requested to be called is different from the address of the function stored at the beginning of kernel monitoring execution. By updating to, you can post an alarm message that will allow normal monitoring or notify you of the hack.

부 감시 모듈(212)은 시스템 서비스 함수(208)를 호출하는 모듈로 시스템 서비스 함수(208)와 1 대 1로 대응하는 모듈일 수 있다. 부 감시 모듈(212)은 제 1 후킹 모듈(214)이 주 감시 모듈(210)의 리턴 값으로 설정된 부 감시 모듈(212)의 주소를 참조하여 호출할 수 있다.The sub-monitoring module 212 is a module that calls the system service function 208 and may be a module that corresponds to the system service function 208 one-to-one. The sub-monitoring module 212 may call the first hooking module 214 with reference to the address of the sub-monitoring module 212 set as the return value of the main monitoring module 210.

메모리를 읽는 시스템 서비스 함수(208)를 예로 들어보면, 상기 메모리를읽는 기능의 시스템 서비스 함수(208)와 대응하는 하나의 부 감시 모듈(212)이 존재할 수 있다. 예를 들면, 메모리를 읽는 시스템 서비스 함수(208)가 NtReadVirtualMemory()함수일 때, 부 감시 모듈(212)은 NtReadVirtualMemory() 함수와 원형(prototype)이 같은 함수, 예를 들면, MonitoringNtReadVirtualMemory() 함수로 구성 될 수 있다. 이때, 상기 부 감시 모듈(212)은 NtReadVirtualMemory() 함수로 입력되는 파라미터 값을 NtReadVirtualMemory() 함수의 호출 이전에 조사함 으로써, 프로세스 A에서 읽는 구체적인 메모리 주소들을 알아낼 수 있다.As an example of a system service function 208 that reads a memory, there may be one sub-monitoring module 212 that corresponds to the system service function 208 of the memory read function. For example, when the system service function 208 for reading a memory is NtReadVirtualMemory (), the secondary monitoring module 212 is configured with a function of the same prototype as the NtReadVirtualMemory () function, for example, the MonitoringNtReadVirtualMemory () function. Can be. At this time, the sub-monitoring module 212 can determine the specific memory addresses read by the process A by examining the parameter value input to the NtReadVirtualMemory () function before the call to the NtReadVirtualMemory () function.

다음으로, 제 2 후킹 모듈(216)에 대하여 설명하기로 한다. 제 2 후킹 모듈(216)은 제 2 대체코드의 제 2 후킹 모듈(216)로 점프하는 명령어가 실행되거나, 제 2 코드 영역으로 점프하는 제 1 후킹 모듈(214)의 명령어가 실행되는 경우 실행되게 된다.Next, the second hooking module 216 will be described. The second hooking module 216 is executed to be executed when the instruction to jump to the second hooking module 216 of the second replacement code is executed or when the instruction of the first hooking module 214 to jump to the second code area is executed. do.

표 2는 도 4에 도시된 상기 제 2 코드 영역 및 도 5에 도시된 상기 제 2대체 코드에 따른 제 2 후킹 모듈(216)의 명령어 구성 예시이다.Table 2 is a command configuration example of the second hooking module 216 according to the second code area shown in FIG. 4 and the second alternative code shown in FIG. 5.

Figure 112009044798803-pat00002
Figure 112009044798803-pat00002

<표 2: 제 2 후킹 모듈의 명령어 구성 예시><Table 2: Example of Command Configuration of Second Hooking Module>

제 2 후킹 모듈(216)은 제 2 코드 영역에 대응되는 부분과 시스템 서비스함수 핸들러 모듈(218)에 존재하는 제 2 코드 영역 다음 명령어를 수행하기 위한 점프 코드 부분으로 구성된다. 도 4에 도시된 제 2 코드 영역은 제 1 코드 영역으로 점프하는 명령어와 그 이전 명령어의 두 개로 구성된다. 따라서 제 2 코드 영역에 대응되는 부분은 제 1 코드 영역으로 점프하는 명령어와 동일한 결과를 갖도록 제 1 후킹 모듈로 점프(표 2의 ②) 하도록 만들고, 그 이전 명령어(표 2의 ①)는 그대로 사용한다. 제 2 코드 영역 다음 명령어를 수행하기 위한 점프 부분은 시스템 서비스 함수 핸들러 모듈(218)의 제 2 코드 영역 뒤에 위치한 명령어로 점프하도록 코드를 만든다(표 2의 ③).The second hooking module 216 includes a portion corresponding to the second code region and a jump code portion for executing the next instruction following the second code region existing in the system service function handler module 218. The second code region shown in FIG. 4 is composed of two instructions: a jump to the first code region and a previous instruction. Therefore, the part corresponding to the second code area is jumped to the first hooking module (2 in Table 2) to have the same result as the instruction jumping to the first code area, and the previous command (1 in Table 2) is used as it is. do. Second Code Area The jump portion for executing the next instruction makes the code jump to an instruction located behind the second code region of the system service function handler module 218 (3 in Table 2).

이하, 본 발명의 또 다른 실시예에 따른 커널 감시 방법에 대하여 도 6 및 도 7을 참조하여 설명하기로 한다. 도 6은 본 실시예에 따른 커널 감시 방법의 순서도이다.Hereinafter, a kernel monitoring method according to another embodiment of the present invention will be described with reference to FIGS. 6 and 7. 6 is a flowchart of a kernel monitoring method according to the present embodiment.

먼저, 커널 감시기를 컴퓨터 시스템에 설치한다(S600). 이하, 상기 설치 방법에 대하여 도 7을 참조하여 먼저 설명하기로 한다. 도 7은 본 실시예에 다른 커널 감시기의 설치 방법의 순서도이다.First, the kernel monitor is installed in the computer system (S600). Hereinafter, the installation method will be described first with reference to FIG. 7. 7 is a flowchart of a method of installing a kernel monitor according to the present embodiment.

시스템 서비스 함수 핸들러 모듈의 원본을 저장한다(S700). 상기 원본은 운영체제의 종류 및 버전 별로 상이할 수 있다.The original system service function handler module is stored (S700). The original may be different according to the type and version of the operating system.

상기 커널 감시기의 설치 준비 단계로, 주 기억장치(106)에 로드 되거나 보조기억장치(102)에 저장된 시스템 서비스 함수 핸들러 모듈(218)의 코드와 상기 코드의 원본이 일치하는지 판정하고(S702), 상기 판정의 결과 일치하지 않는 경우 시스템 서비스 함수 핸들러 모듈(218)의 코드를 원본 코드로 교체한다(S704). 원본 일치 판정 단계(S702) 및 원본 코드로 교체하는 단계(S704)는 시스템 서비스 함수 자체를 복사하고 시스템 서비스 함수 핸들링 모듈(204)에 후킹 코드를 삽입하여 시스템 서비스 함수 테이블을 참조하지 않고 직접 복사한 시스템 서비스 함수를 호출하도록 하는 해킹 기법을 방지할 수 있도록 한다.In the preparation step of installing the kernel monitor, it is determined whether the code of the system service function handler module 218 loaded in the main memory 106 or stored in the auxiliary memory 102 matches the original of the code (S702), If the result of the determination does not match, the code of the system service function handler module 218 is replaced with the original code (S704). The original match determination step (S702) and the step of replacing with the original code (S704) is to copy the system service function itself and insert the hooking code into the system service function handling module 204 to directly copy the system service function table without referring to it. This prevents hacking techniques that call system service functions.

그 다음으로, 시스템 서비스 함수 핸들러 모듈(204)의 제 1 코드 영역을 제 1 대체 코드로 교체하고(S706), 시스템 서비스 함수 핸들러 모듈(204)의 제 2 코드 영역도 제 2 대체 코드로 교체한다(S706). 상기 제 1 코드 영역, 제 2 코드 영역, 제 1 대체 코드, 제 2 대체 코드의 지정 기준 및 포함되는 명령어의 내용은 상기 본 발명의 일 실시예에 따른 커널 감시기가 설치된 컴퓨터 시스템에서 설명한 것과 동일하므로 별도의 설명은 생략하기로 한다.Next, the first code area of the system service function handler module 204 is replaced with the first replacement code (S706), and the second code area of the system service function handler module 204 is also replaced with the second replacement code. (S706). The designation criteria of the first code area, the second code area, the first replacement code, the second replacement code, and the content of the included instructions are the same as those described in the computer system in which the kernel monitor is installed according to an embodiment of the present invention. A separate description will be omitted.

S700 내지 S708 단계를 수행함으로써, 커널 감시기가 설치 되기 전의 시스템 서비스 함수 핸들러 모듈(204)이 커널 감시기가 설치된 컴퓨터 시스템의 시스템 서비스 함수 핸들러 모듈(218)로 변경된다. 상기 교체(S706, S707)는 주기억장치(106), 보조기억장치(102)에 저장된 시스템 서비스 함수 핸들러 모듈(204) 모두에 대하여 수행되는 것이 바람직하다. 특히, 주기억장치(106)에 저장된 시스템 서비스 함수 핸들러 모듈(204)이 교체된 후 변경된 내용을 반영하기 위하여 시스템의 재 부팅을 수행할 수도 있다.By performing steps S700 to S708, the system service function handler module 204 before the kernel watchdog is installed is changed to the system service function handler module 218 of the computer system where the kernel watcher is installed. The replacements S706 and S707 are preferably performed on both the main memory 106 and the system service function handler module 204 stored in the auxiliary memory 102. In particular, after the system service function handler module 204 stored in the main memory 106 is replaced, the system may be rebooted to reflect the changed contents.

마지막으로, 커널 감시 기능을 위해 시스템 서비스 함수 핸들러 모듈(218)이외에 추가로 필요한 모듈인 제 1 후킹 모듈(214), 제 2 후킹 모듈(216), 주 감시 모듈(210), 하나 이상의 부 감시 모듈(212)을 주기억장치(106)에 로딩하고 보조기억장치(102)에 저장함으로써, 커널 감시기를 컴퓨터 시스템에 설치하는 단계(S600)가 마무리된다.Finally, the first hooking module 214, the second hooking module 216, the main monitoring module 210, and one or more secondary monitoring modules, which are modules required in addition to the system service function handler module 218, for kernel monitoring functions. By loading 212 into the main memory 106 and storing it in the secondary memory 102, the step S600 of installing the kernel monitor in the computer system is completed.

이하, 사용자 모드에서 실행되는 프로세스가 시스템 서비스 함수를 실제로 호출하는 경우(S602), 커널 모드에서 이를 감시하는 방법을 다시 도 6을 참조하여 설명하기로 한다. 이하, 상기 시스템 서비스 함수는 감시 대상인 시스템 서비스 함수인 것으로 가정한다. 본 실시예에 따른 커널 감시 방법은 운영 체제가 제공하는 모든 시스템 서비스 함수에 대하여 감시되어야 하는 것이 아니고, 하나 이상의 시스템 서비스 함수에 대하여 감시 기능을 제공하도록 커스터마이징(customizing) 될 수 있다는 점을 유의하여야 한다. 사용자 모드에서 실행되는 프로세스가 감시 대상 이 아닌 시스템 서비스 함수를 호출하는 경우에는 본 실시예에 따른 커널 감시 기능이 동작하지 않는다는 점을 유의하여야 한다.Hereinafter, when a process running in user mode actually calls a system service function (S602), a method of monitoring the same in kernel mode will be described with reference to FIG. 6 again. Hereinafter, it is assumed that the system service function is a system service function to be monitored. It should be noted that the kernel monitoring method according to the present embodiment does not have to be monitored for all system service functions provided by the operating system, but can be customized to provide a monitoring function for one or more system service functions. . It should be noted that the kernel monitoring function according to the present embodiment does not operate when a process running in the user mode calls a system service function that is not to be monitored.

시스템 서비스 함수 호출(S602) 시, 운영 체제는 커널 레벨의 시스템 서비스 함수 핸들러 모듈(218)을 실행한다(S604). 그 후, 제 1 코드 영역에 포함된 상기 제 1 대체 코드 및 제 1 후킹 모듈(214)에 포함된 명령어가 순차적으로 실행된다(S606). 제 1 후킹 모듈(214)은 상기 시스템 서비스 함수의 정보를 파라미터로 하여 주 감시 모듈(210)을 호출한다.In a system service function call (S602), the operating system executes a kernel level system service function handler module 218 (S604). Thereafter, the first replacement code included in the first code area and the instructions included in the first hooking module 214 are sequentially executed (S606). The first hooking module 214 calls the main monitoring module 210 with the information of the system service function as a parameter.

주 감시 모듈(210)은 상기 시스템 서비스 함수에 대한 정보를 감시한다(S610). 상기 감시는 다양한 방법으로 수행 될 수 있다. 예를 들어, 전달받은 상기 두 파라미터를 이용하여 시스템서비스 함수 테이블(206)에 등록된 함수 호출인지, 그 외의 테이블에 등록된 함수 호출인지를 구분하는 비교검사가 수행될 수 있다. 또한, 주 감시 모듈(210)은 프로세스 식별 정보, 시스템 서비스 함수(208)의 인덱스 및 시스템 서비스 함수(208)의 주소 값을 CPU 내부의 레지스터, 주기억장치(206) 및 보조기억장치(102) 중 적어도 하나에 저장함으로써, 추후 각 프로세스의 시스템 서비스 함수 호출 이력을 관리할 수 있다. 상기 감시의 결과는 알람 메시지로 제작되어 게시되거나 추후 열람을 위해 저장될 수 있다.The main monitoring module 210 monitors the information on the system service function (S610). The monitoring can be performed in a variety of ways. For example, a comparison test may be performed to identify whether a function call is registered in the system service function table 206 or a function call registered in another table by using the received two parameters. In addition, the main monitoring module 210 stores the process identification information, the index of the system service function 208 and the address value of the system service function 208 among the registers of the CPU, the main memory 206 and the auxiliary memory 102. By storing in at least one, it is possible to manage the system service function call history of each process later. The result of the monitoring may be produced and posted as an alarm message or stored for later viewing.

또 다른 감시 방법을 예로 들면, 주 감시 모듈(210)은 호출이 요청된 함수의 주소와 커널 감시 실행 초기에 저장해 놓은 상기 함수의 주소가 다르면, 해킹된 것으로 인지하여 감시 하고자 하는 함수의 주소를 변경된 함수로 갱신함으로써, 이 후 정상적인 감시가 이루어지게 하거나 해킹 가능성을 통지하는 알람 메시지를 게 시할 수 있다.As another monitoring method, the main monitoring module 210 changes the address of a function to be monitored by recognizing it as hacked if the address of the function requested to be called is different from the address of the function stored at the beginning of kernel monitoring execution. By updating to a function, you can then post an alarm message that will either allow normal monitoring or notify you of a hack.

주 감시 모듈(210)이 상기 시스템 서비스 함수에 대응하는 부 감시 모듈(212)의 주소를 리턴 값으로 설정하고 제 1 후킹 모듈(214)로 리턴 되는 경우, 제 1 후킹 모듈(214)은 상기 부 감시 모듈의 주소를 참조하여 상기 시스템 서비스 함수에 대응하는 부 감시 모듈(212)을 호출한다(S612). 부 감시 모듈(212)의 호출(S612) 시 포함되는 파라미터는 사용자 모드에서 실행되는 프로세스가 커널에 시스템 서비스 함수의 호출을 요청하면서 포함시킨 파라미터와 동일한 것이 바람직하다.When the main monitoring module 210 sets the address of the sub-monitoring module 212 corresponding to the system service function as a return value and returns to the first hooking module 214, the first hooking module 214 returns the sub-hook. The sub-monitoring module 212 corresponding to the system service function is called by referring to the address of the monitoring module (S612). The parameters included in the call S612 of the sub-monitoring module 212 are preferably the same as parameters included in the process running in the user mode by requesting the kernel to call the system service function.

호출된 부 감시 모듈(212)은 상기 파라미터 정보를 감시한다(S614). 예를 들어, 호출된 시스템 서비스 함수가 주기억장치의 일정 영역을 읽는 시스템 서비스 함수인 경우, 파라미터에 시작 주소 및 읽고자 하는 바이트 수가 포함될 것인바, 상기 정보를 감시할 수 있다. 상기 감시의 결과는 알람 메시지로 제작되어 게시되거나 추후 열람을 위해 저장될 수 있다.The called submonitoring module 212 monitors the parameter information (S614). For example, when the called system service function is a system service function that reads a certain area of the main memory, the parameter may include a start address and the number of bytes to be read, so that the information can be monitored. The result of the monitoring may be produced and posted as an alarm message or stored for later viewing.

부 감시 모듈(212)은 감시 관련 데이터를 모두 처리한 후, 상기 시스템 서비스 함수를 호출한다(S616).After monitoring all the monitoring-related data, the sub-monitoring module 212 calls the system service function (S616).

상기 시스템 서비스 함수에 포함된 명령어가 모두 수행되는 경우, 제 1 후킹 모듈(214)의 부 감시 모듈(212) 호출 관련 명령어의 다음 명령어가 실행된다. 상기 다음 명령어는 상기 제 1 코드 영역의 다음 명령어로 점프하는 명령어인 것이 바람직하다.When all of the instructions included in the system service function are executed, the next instruction of the sub-monitoring module 212 call-related instruction of the first hooking module 214 is executed. Preferably, the next command is a command that jumps to the next command of the first code area.

이상 첨부된 도면을 참조하여 본 발명의 실시 예들을 설명하였지만, 본 발명 이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.Although the embodiments of the present invention have been described above with reference to the accompanying drawings, those skilled in the art to which the present invention pertains may implement the present invention in other specific forms without changing the technical spirit or essential features thereof. I can understand that. Therefore, it should be understood that the embodiments described above are exemplary in all respects and not restrictive.

도 1은 컴퓨터 시스템의 기본적인 구성을 나타낸 개념도이다.1 is a conceptual diagram showing the basic configuration of a computer system.

도 2는 운영체제가 로딩 된 후의 코드 영역의 구성을 나타낸 개념도이다.2 is a conceptual diagram illustrating a configuration of a code region after an operating system is loaded.

도 3은 본 발명의 일 실시예에 따른 커널 감시기가 설치된 컴퓨터 시스템의 구조도이다.3 is a structural diagram of a computer system in which a kernel monitor is installed according to an embodiment of the present invention.

도 4는 본 발명의 일 실시예에 따른 커널 감시기를 설치하기 전의 시스템 서비스 함수 핸들러 모듈을 도시한 도면이다.4 is a diagram illustrating a system service function handler module before installing a kernel monitor according to an embodiment of the present invention.

도 5는 본 발명의 일 실시예에 따른 커널 감시기가 설치된 상태의 시스템 서비스 함수 핸들러 모듈에 대하여 도시한 도면이다.5 is a diagram illustrating a system service function handler module in a state where a kernel monitor is installed according to an embodiment of the present invention.

도 6은 본 실시예에 따른 커널 감시 방법의 순서도이다.6 is a flowchart of a kernel monitoring method according to the present embodiment.

도 7은 본 실시예에 다른 커널 감시기의 설치 방법의 순서도이다.7 is a flowchart of a method of installing a kernel monitor according to the present embodiment.

Claims (16)

커널(kernel) 모드에서 시스템 서비스 함수의 호출을 중계하는 모듈의 코드 중 감시 대상 시스템 서비스 함수를 호출하는 명령어를 포함하는 제 1 코드 영역을 제 1 대체 코드로 교체하되, 상기 제 1 대체 코드는 제 1 후킹(hooking) 모듈로 점프하는 명령어를 포함하고 상기 제 1 코드 영역이 차지하는 바이트(Byte)와 같은 바이트로 구성되는 단계;In a kernel mode, replace a first code area including a command for calling a monitored system service function among first codes of a module relaying a call of a system service function with a first replacement code, wherein the first replacement code is set as a first replacement code. 1 comprising instructions to jump to a hooking module and comprising bytes, such as bytes occupied by the first code region; 사용자 모드에서 실행 중인 프로세스에 의해 상기 감시의 대상인 시스템 서비스 함수가 호출됨으로써 상기 제 1 대체 코드 및 상기 제 1 후킹 모듈이 순차적으로 실행되는 경우, 상기 제 1 후킹 모듈은 상기 시스템 서비스 함수의 정보를 파라미터로 하여 주 감시 모듈을 호출하는 단계;When the first replacement code and the first hooking module are executed sequentially by calling a system service function to be monitored by a process running in the user mode, the first hooking module may parameter information of the system service function. Invoking the main monitoring module; 상기 주 감시 모듈은 상기 프로세스가 호출하는 시스템 서비스 함수에 대한 정보를 감시 하는 단계; 및The main monitoring module monitoring information about a system service function called by the process; And 상기 주 감시 모듈이 상기 제 1 후킹 모듈로 리턴 된 후, 상기 제 1 후킹 모듈은 상기 프로세스에 의해 호출된 시스템 서비스 함수를 호출하기 위한 명령어를 적어도 하나 실행하는 단계를 포함하는 커널 감시 방법.After the main monitoring module returns to the first hooking module, the first hooking module includes executing at least one instruction to call a system service function called by the process. 제 1 항에 있어서,The method of claim 1, 호출된 상기 시스템 서비스 함수에 포함된 명령어가 모두 실행 된 후, 상기 제 1 후킹 모듈이 상기 제 1 코드 영역의 다음 명령어로 점프(jump)하는 명령어를 실행하는 단계를 더 포함하는 커널 감시 방법.And executing all instructions included in the system service function called after the first hooking module jumps to a next instruction of the first code region. 제 1 항에 있어서,The method of claim 1, 상기 제 1 코드 영역이 상기 제 1 후킹 모듈로 점프하는 명령어가 차지하는 바이트보다 많은 바이트로 구성되는 경우, 상기 제 1 코드 영역은 상기 시스템 서비스 함수 호출 명령어보다 선행하거나 후행 하는 명령어를 적어도 하나 포함하고, 상기 제 1 대체 코드는 적어도 하나의 노오퍼레이션(NOP) 명령어를 포함하되, 상기 노오퍼레이션 명령어의 수는 상기 제 1 코드 영역의 바이트 수와 상기 제 1 후킹 모듈로의 점프 명령어 바이트 수의 차이를 노오퍼레이션 명령어가 차지하는 바이트 수로 나눈 것인 커널 감시 방법.When the first code region is composed of more bytes than the bytes occupied by the instruction jumping to the first hooking module, the first code region includes at least one instruction preceding or following the system service function call instruction, The first replacement code includes at least one NOP instruction, wherein the number of no operation instructions is determined by a difference between the number of bytes of the first code region and the number of bytes of jump instructions to the first hooking module. Kernel monitoring method divided by the number of bytes occupied by operation instructions. 제 3 항에 있어서,The method of claim 3, wherein 상기 제 1 코드 영역에 포함된 시스템 서비스 함수 호출 명령어보다 선행하거나 상기 명령어에 후행 하는 명령어는 상기 제 1 후킹 모듈에서 실행되는 것인 커널 감시 방법.The instruction that precedes or follows the system service function call instruction included in the first code region is executed by the first hooking module. 제 1 항에 있어서,The method of claim 1, 상기 제 1 코드 영역의 상기 제 1 대체 코드로의 교체는,The replacement of the first code region with the first replacement code comprises: 주기억장치에 로드(load)된 상기 제 1 코드 영역 및 보조기억장치에 저장된 상기 제 1 코드 영역 모두에 대해 이뤄지는 커널 감시 방법.2. A kernel monitoring method for both the first code region loaded in the main memory and the first code region stored in the auxiliary memory. 제 1 항에 있어서,The method of claim 1, 상기 제 1 코드 영역을 제 1 대체 코드로 교체하는 단계는,Replacing the first code region with a first replacement code, 상기 교체 이후, 컴퓨터 시스템을 재부팅 하는 단계를 더 포함하는 커널 감시 방법.And after the replacement, rebooting the computer system. 제 1 항에 있어서,The method of claim 1, 상기 제 1 대체 코드에 포함된 상기 제 1 후킹 모듈로 점프하는 명령어는,Instructions for jumping to the first hooking module included in the first replacement code include: 다른 코드 세그먼트(segment)까지 점프할 수 있는 파(FAR) 점프 명령어인 커널 감시 방법.Kernel monitoring method, which is a far jump instruction that can jump to other code segments. 제 1 항에 있어서,The method of claim 1, 상기 시스템 서비스 함수의 정보는,The information of the system service function, 상기 시스템 서비스 함수의 주기억장치 내 접근 주소 및 상기 시스템 서비스 함수의 상기 시스템 서비스 함수의 시스템 서비스 테이블의 인덱스를 포함하는 커널 감시 방법.And an index of an access address in the main memory of the system service function and an index of a system service table of the system service function of the system service function. 제 1 항에 있어서,The method of claim 1, 상기 시스템 서비스 함수를 호출하기 위한 명령을 실행하는 단계는,Executing a command to call the system service function, 상기 주 감시 모듈이 상기 호출된 시스템 서비스 함수에 대응하는 부 감시 모듈의 주기억장치 내 접근 주소를 리턴 하는 단계;The main monitoring module returning an access address in the main memory of the secondary monitoring module corresponding to the called system service function; 상기 제 1 후킹 모듈은 상기 호출된 시스템 서비스 함수와 원형(prototype)이 같은 부 감시 모듈을 상기 시스템 서비스 함수에 전달되는 파라미터를 이용하여 호출하는 단계;Calling, by the first hooking module, a sub-monitoring module having the same prototype as the called system service function using a parameter passed to the system service function; 상기 부 감시 모듈은 상기 파라미터를 감시 하는 단계; 및The secondary monitoring module monitoring the parameter; And 상기 부 감시 모듈은 상기 호출된 시스템 서비스 함수를 상기 파라미터를 이용하여 호출하는 단계를 포함하는 커널 감시 방법.And the sub-monitoring module includes invoking the called system service function using the parameter. 제 1 항에 있어서,The method of claim 1, 상기 제 1 코드 영역을 제 1 대체 코드로 교체하는 단계는,Replacing the first code region with a first replacement code, 상기 시스템 서비스 함수 핸들러 모듈의 코드 중 상기 제 1 코드 영역으로 점프하는 명령어를 포함하는 제 2 코드 영역을 제 2 대체 코드로 교체하는 단계를 더 포함하되, 상기 제 2 대체 코드는 제 2 후킹 모듈로 점프하는 명령어를 포함하고 상기 제 2 코드 영역이 차지하는 바이트와 같은 바이트로 구성되는 커널 감시 방법.Replacing a second code area with a second replacement code, the second code including a command to jump to the first code area of the code of the system service function handler module, wherein the second replacement code is replaced by a second hooking module. A kernel monitoring method comprising a jump instruction and a byte equal to a byte occupied by the second code area. 제 1 항에 있어서,The method of claim 1, 상기 제 1 코드 영역을 제 1 대체 코드로 교체하는 단계는,Replacing the first code region with a first replacement code, 상기 시스템 서비스 함수 핸들러 모듈의 코드와 상기 코드의 원본이 일치하는지 판정하는 단계;Determining whether the code of the system service function handler module matches the original of the code; 상기 판정의 결과 일치하지 않는 경우, 시스템 서비스 함수 핸들러 모듈의 코드를 원본 코드로 교체하는 단계를 더 포함하는 커널 감시 방법.If the result of the determination does not match, replacing the code of the system service function handler module with the original code. 제 1 항에 있어서,The method of claim 1, 상기 시스템 서비스 함수에 대한 정보를 감시 하는 단계는,Monitoring the information on the system service function, 호출이 요청된 함수의 주소와 커널 감시 실행 초기에 저장해 놓은 상기 함수의 주소가 다르면, 해킹된 것으로 인지하여 감시 하고자 하는 함수의 주소를 변경된 함수로 갱신하는 단계를 더 포함하는 커널 감시 방법.And recognizing that the function has been hacked and updating the address of the function to be changed to a changed function if the address of the function to which the call is requested and the address of the function stored at the beginning of kernel monitoring execution are different. 감시 대상 시스템 서비스 함수를 호출하는 명령어를 포함하는 제 1 코드 영역을 교체한 제 1 대체 코드를 포함하되, 상기 제 1 대체 코드는 제 1 후킹 모듈로 점프하는 명령어를 포함하고 상기 제 1 코드 영역이 차지하는 바이트와 같은 바이트로 구성되는 시스템 서비스 함수 핸들러 모듈;A first replacement code replacing a first code area including an instruction to call a monitored system service function, the first replacement code including an instruction to jump to a first hooking module and the first code area being A system service function handler module composed of bytes such as bytes occupied; 사용자 모드에서 실행 중인 프로세스에 의해 상기 감시 대상 시스템 서비스 함수가 호출됨으로써 상기 제 1 대체 코드에서 점프 되어 실행되며, 상기 시스템 서비스 함수의 정보를 파라미터로 하여 주 감시 모듈을 호출하고, 상기 주 감시 모듈이 리턴 된 후 상기 프로세스에 의해 호출된 시스템 서비스 함수를 호출하기 위한 명령어를 적어도 하나 실행하는 제 1 후킹 모듈; 및The supervised system service function is called by the process running in the user mode and jumps to the first alternative code to be executed. The main supervisory module is called by using the information of the system service function as a parameter. A first hooking module that executes at least one instruction for calling a system service function called by the process after being returned; And 상기 파라미터를 통해 제공 받은 상기 시스템 서비스 함수의 정보를 감시하는 주 감시 모듈을 포함하는 커널 감시 장치가 설치된 컴퓨터 시스템.And a kernel monitoring device including a main monitoring module for monitoring information of the system service function provided through the parameter. 제 13 항에 있어서,The method of claim 13, 상기 제 1 후킹 모듈에 의해 호출되며 상기 시스템 서비스 함수에 전달되는 파라미터를 감시 하고 상기 시스템 서비스 함수를 호출하는 하나 이상의 부 감시 모듈을 더 포함하고,At least one sub-monitoring module called by the first hooking module and monitoring the parameters passed to the system service function and calling the system service function, 상기 제 1 후킹 모듈은,The first hooking module, 상기 주 감시 모듈이 리턴 된 후 상기 시스템 서비스 함수에 대응하는 상기 부 감시 모듈을 호출하는 커널 감시 장치가 설치된 컴퓨터 시스템.And a kernel monitoring device installed to call the secondary monitoring module corresponding to the system service function after the main monitoring module is returned. 제 13 항에 있어서,The method of claim 13, 상기 시스템 서비스 함수 핸들러 모듈의 코드와 상기 코드의 원본이 일치하는지 판정하고, 상기 판정의 결과 일치하지 않는 경우 상기 시스템 서비스 함수 핸들러 모듈의 코드를 원본 코드로 교체하는 원본 유지 모듈을 더 포함하는 커널 감시 장치가 설치된 컴퓨터 시스템.A kernel monitoring further comprising an original maintenance module that determines whether the code of the system service function handler module matches the original of the code, and replaces the code of the system service function handler module with the original code when the result of the determination does not match Computer system on which the device is installed. 제 13 항에 있어서,The method of claim 13, 상기 주 감시 모듈은,The main monitoring module, 호출이 요청된 함수의 주소와 커널 감시 실행 초기에 저장해 놓은 상기 함수의 주소가 다르면, 해킹된 것으로 인지하여 감시 하고자 하는 함수의 주소를 변경된 함수로 갱신하는 커널 감시 장치가 설치된 컴퓨터 시스템.A computer system with a kernel monitoring device that updates the address of a function to be monitored by recognizing that it is hacked if the address of the function requested to be called is different from the address of the function stored at the beginning of kernel monitoring execution.
KR1020090066996A 2009-07-22 2009-07-22 How to Monitor Computer Systems With Kernel Watcher and How to Monitor Kernels Expired - Fee Related KR101014814B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020090066996A KR101014814B1 (en) 2009-07-22 2009-07-22 How to Monitor Computer Systems With Kernel Watcher and How to Monitor Kernels

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090066996A KR101014814B1 (en) 2009-07-22 2009-07-22 How to Monitor Computer Systems With Kernel Watcher and How to Monitor Kernels

Publications (2)

Publication Number Publication Date
KR20110009548A KR20110009548A (en) 2011-01-28
KR101014814B1 true KR101014814B1 (en) 2011-02-14

Family

ID=43615225

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090066996A Expired - Fee Related KR101014814B1 (en) 2009-07-22 2009-07-22 How to Monitor Computer Systems With Kernel Watcher and How to Monitor Kernels

Country Status (1)

Country Link
KR (1) KR101014814B1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014014200A1 (en) * 2012-07-20 2014-01-23 주식회사 안랩 Computer system, method for shifting address computer system, and method for monitoring system function of computer system
KR101527575B1 (en) * 2012-08-30 2015-06-10 주식회사 안랩 Hooking device and method using detour function

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106155904A (en) * 2016-06-30 2016-11-23 浪潮(北京)电子信息产业有限公司 A kind of direct fault location instrument collocation method and device
CN113946522B (en) * 2021-10-28 2025-08-26 湖北天融信网络安全技术有限公司 Memory control method, device, electronic device and storage medium
KR102740647B1 (en) * 2022-06-24 2024-12-10 주식회사 안랩 Method for detecting rpc connection

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010047670A (en) * 1999-11-22 2001-06-15 서평원 Method for controlling a system call, and for changing kernel dynamically in an UNIX operating system
KR20060059759A (en) * 2004-11-29 2006-06-02 주식회사 안철수연구소 How to Prevent Memory Data Manipulation by Computer Applications
KR20060088740A (en) * 2005-02-02 2006-08-07 엘지전자 주식회사 Multi-Master Processing Method in Home Gateway and Home Network
KR20090067569A (en) * 2007-12-21 2009-06-25 (주) 세인트 시큐리티 Windows Kernel Protection System Using Virtualization Technique

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010047670A (en) * 1999-11-22 2001-06-15 서평원 Method for controlling a system call, and for changing kernel dynamically in an UNIX operating system
KR20060059759A (en) * 2004-11-29 2006-06-02 주식회사 안철수연구소 How to Prevent Memory Data Manipulation by Computer Applications
KR20060088740A (en) * 2005-02-02 2006-08-07 엘지전자 주식회사 Multi-Master Processing Method in Home Gateway and Home Network
KR20090067569A (en) * 2007-12-21 2009-06-25 (주) 세인트 시큐리티 Windows Kernel Protection System Using Virtualization Technique

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014014200A1 (en) * 2012-07-20 2014-01-23 주식회사 안랩 Computer system, method for shifting address computer system, and method for monitoring system function of computer system
KR101412200B1 (en) * 2012-07-20 2014-06-27 주식회사 안랩 Computer system, adress redirection method and system function monitoring method for thereof
KR101527575B1 (en) * 2012-08-30 2015-06-10 주식회사 안랩 Hooking device and method using detour function

Also Published As

Publication number Publication date
KR20110009548A (en) 2011-01-28

Similar Documents

Publication Publication Date Title
CN105980993B (en) Data processing apparatus and method
TWI863138B (en) Apparatus for processor extensions to protect stacks during ring transitions
US8826269B2 (en) Annotating virtual application processes
KR102206115B1 (en) Behavioral malware detection using interpreter virtual machine
US8117660B2 (en) Secure control flows by monitoring control transfers
US8010772B2 (en) Protected function calling
US10140448B2 (en) Systems and methods of asynchronous analysis of event notifications for computer security applications
JP6984710B2 (en) Computer equipment and memory management method
AU2006210698B2 (en) Intrusion detection for computer programs
KR101740224B1 (en) Illegal mode change handling
CN112805710B (en) Data processing device and method
US10380336B2 (en) Information-processing device, information-processing method, and recording medium that block intrusion of malicious program to kernel
KR20170042602A (en) Systems And Methods for Exposing A Current Processor Instruction Upon Exiting A Virtual Machine
CN108292272A (en) Apparatus and method for managing bounded pointers
KR20080028827A (en) Method, system and machine-readable recording medium for enabling the expansion of a plurality of instruction streams / multiple data streams in a microprocessor
JP7645262B2 (en) Disable Domain Transition Configuration Parameter
US9536084B1 (en) Systems and methods for delivering event-filtered introspection notifications
US9596261B1 (en) Systems and methods for delivering context-specific introspection notifications
KR101014814B1 (en) How to Monitor Computer Systems With Kernel Watcher and How to Monitor Kernels
KR20160019454A (en) Security protection of software libraries in a data processing apparatus
CN110709817A (en) Apparatus and method for controlling changes in instruction set
US9531735B1 (en) Systems and methods for delivering introspection notifications from a virtual machine
JP7737373B2 (en) Intermodal Call Branch Instruction
JP2025514826A (en) Exception return state lock parameter
CN119096231A (en) Memory Management

Legal Events

Date Code Title Description
A201 Request for examination
PA0109 Patent application

St.27 status event code: A-0-1-A10-A12-nap-PA0109

PA0201 Request for examination

St.27 status event code: A-1-2-D10-D11-exm-PA0201

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

D13-X000 Search requested

St.27 status event code: A-1-2-D10-D13-srh-X000

D14-X000 Search report completed

St.27 status event code: A-1-2-D10-D14-srh-X000

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

St.27 status event code: A-1-2-D10-D22-exm-PE0701

PG1501 Laying open of application

St.27 status event code: A-1-1-Q10-Q12-nap-PG1501

GRNT Written decision to grant
PR0701 Registration of establishment

St.27 status event code: A-2-4-F10-F11-exm-PR0701

PR1002 Payment of registration fee

St.27 status event code: A-2-2-U10-U11-oth-PR1002

Fee payment year number: 1

PG1601 Publication of registration

St.27 status event code: A-4-4-Q10-Q13-nap-PG1601

P22-X000 Classification modified

St.27 status event code: A-4-4-P10-P22-nap-X000

FPAY Annual fee payment

Payment date: 20140210

Year of fee payment: 4

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 4

LAPS Lapse due to unpaid annual fee
PC1903 Unpaid annual fee

St.27 status event code: A-4-4-U10-U13-oth-PC1903

Not in force date: 20150209

Payment event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

PC1903 Unpaid annual fee

St.27 status event code: N-4-6-H10-H13-oth-PC1903

Ip right cessation event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

Not in force date: 20150209

P22-X000 Classification modified

St.27 status event code: A-4-4-P10-P22-nap-X000

P22-X000 Classification modified

St.27 status event code: A-4-4-P10-P22-nap-X000

点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载