KR100968268B1 - Method for detecting automatically generated input - Google Patents

Method for detecting automatically generated input Download PDF

Info

Publication number
KR100968268B1
KR100968268B1 KR1020070118464A KR20070118464A KR100968268B1 KR 100968268 B1 KR100968268 B1 KR 100968268B1 KR 1020070118464 A KR1020070118464 A KR 1020070118464A KR 20070118464 A KR20070118464 A KR 20070118464A KR 100968268 B1 KR100968268 B1 KR 100968268B1
Authority
KR
South Korea
Prior art keywords
event
device driver
automatic input
input
driver
Prior art date
Application number
KR1020070118464A
Other languages
Korean (ko)
Other versions
KR20090051977A (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 KR1020070118464A priority Critical patent/KR100968268B1/en
Publication of KR20090051977A publication Critical patent/KR20090051977A/en
Application granted granted Critical
Publication of KR100968268B1 publication Critical patent/KR100968268B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/83Protecting input, output or interconnection devices input devices, e.g. keyboards, mice or controllers thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/02Input arrangements using manually operated switches, e.g. using keyboards or dials
    • G06F3/023Arrangements for converting discrete items of information into a coded form, e.g. arrangements for interpreting keyboard generated codes as alphanumeric codes, operand codes or instruction codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/038Control and interface arrangements therefor, e.g. drivers or device-embedded control circuitry

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

자동 입력 감지 방법은, 입력 수단에 의하여 발생되는 이벤트를 모니터링 할 수 있는 이벤트 감시용 디바이스 드라이버를 컴퓨터 운영 체제 내에서 구동시키는 단계, 메시지 또는 직접 입력의 형태로서 응용 프로그램에 전달되는 상기 입력 수단에 의하여 발생된 이벤트를 감시하는 응용 모듈을 상기 컴퓨터 운영 체제 내에서 구동시키는 단계, 상기 응용 모듈에 상기 이벤트가 전달된 경우, 상기 이벤트가 상기 이벤트 감시용 디바이스 드라이버를 통과한 이벤트에 의한 것인지를 검사하는 단계, 및 상기 이벤트가 상기 이벤트 감시용 디바이스 드라이버를 통과한 이벤트에 의한 것일 경우 정상적인 이벤트로 처리하고, 그렇지 않을 경우에는 자동 입력 수단에 의하여 발생된 비정상적인 이벤트로 판단하는 단계를 포함한다.The automatic input detection method includes driving an event monitoring device driver in a computer operating system capable of monitoring an event generated by an input means, by the input means transmitted to an application program in the form of a message or direct input. Driving an application module for monitoring the generated event in the computer operating system, and if the event is delivered to the application module, checking whether the event is due to an event passing through the event monitoring device driver And processing the event as a normal event if the event is caused by an event passing through the event monitoring device driver, and otherwise determining as an abnormal event generated by an automatic input means.

자동 입력, 오토 마우스, 마우스, 키보드 Auto Input, Auto Mouse, Mouse, Keyboard

Description

마우스 및 키보드 자동 입력 감지 방법{METHOD FOR DETECTING AUTOMATICALLY GENERATED INPUT}How to automatically detect mouse and keyboard input {METHOD FOR DETECTING AUTOMATICALLY GENERATED INPUT}

본 발명은 마우스 및 키보드 자동 입력을 감지하는 방법에 관한 것으로, 보다 상세하게는 마우스 및 키보드와 연관된 디바이스 드라이버를 통해 전달되는 이벤트만 정상적인 이벤트로 간주하고, 그렇지 않을 경우에는 소프트웨어적으로 자동화되어 발생되는 마우스 및 키보드 입력으로 판단하여 감지해내는 방법에 관한 것이다. The present invention relates to a method for detecting mouse and keyboard automatic input, and more particularly, only events transmitted through the device driver associated with the mouse and keyboard are regarded as normal events, and otherwise, are generated by software automation. The present invention relates to a method of detecting and detecting mouse and keyboard input.

최근의 초고속 인터넷 네트워크 기술의 발달로 인하여 인터넷 사용자가 폭발적으로 증가되었으며, 인터넷과 관련된 통신 기술 또한 지속적으로 새로운 모습으로 진화해 나가고 있다. 특히, 다수의 사용자가 동시에 인터넷에 접속하여 함께 게임을 즐길 수 있는 네트워크 게임은 매우 큰 인기를 끌고 있으며, 이러한 인기를 바탕으로 게임 개발 업체들은 다양한 네트워크 게임들을 출시하고 있다. Due to the recent development of high-speed Internet network technology, the number of Internet users has exploded and the communication technology related to the Internet is continuously evolving into a new shape. In particular, network games, in which a large number of users can simultaneously access the Internet and play games, have become very popular, and game developers are releasing various network games based on such popularity.

다양한 인터넷 네트워크 게임들 중 MMORPG(massively multiplayer online role playing game)라는 게임은 다수의 사용자가 동시에 게임 서버에 접속하여, 게임이 설정해 놓은 환타지나 미스터리 세계에서 각자의 역할을 수행하며 즐기는 게 임이다. MMORPG 게임의 플레이어들은 자기에게 지정된 캐릭터를 조종하면서 게임이 제공하는 계속적인 스토리 라인 안에서 발생하는 다양한 사건들을 마치 실제 세계에서 일어나는 것처럼 헤쳐나가게 된다. 즉, 사용자는 자기 자신을 나타내는 캐릭터를 사냥이나 전투를 통해 훈련시켜 레벨을 높이기도 하며, 다른 플레이어와 관계를 맺고 길드를 형성하기도 하며, 하나의 팀을 형성해 단체로 전투를 수행하거나, 매매를 통해 아이템을 구매하기도 한다. 대부분의 MMORPG 게임에서 캐릭터의 레벨이나 경험치를 높이기 위해서는 몬스터 사냥, 적과의 전투, 특정 지역 방문 등과 같은 미션을 반복적으로 수행하여야만 한다. 이러한, 반복적인 미션들은 일정하고 규칙적인 마우스의 움직임, 반복적인 클릭, 키보드의 특정 키에 대한 반복적이고 규칙적인 입력 등을 통해 수행할 수 있다. Among the various Internet network games, a game called massively multiplayer online role playing game (MMORPG) is a game in which a large number of users simultaneously access a game server and play their roles in a fantasy or mystery world set by the game. Players in MMORPG games manipulate their assigned characters and navigate through the various events that occur within the continuous storyline provided by the game as if it were happening in the real world. In other words, the user can raise the level by training a character representing himself through hunting or battle, form a guild by forming a relationship with other players, form a team to battle as a group, You can also buy items. In most MMORPG games, in order to increase your character's level or experience, you have to repeat missions such as hunting monsters, fighting enemies, visiting specific areas, and so on. These repetitive missions can be performed through constant and regular mouse movements, repetitive clicks, repetitive and regular inputs to specific keys on the keyboard, and the like.

한편, 이러한 반복적인 미션을 사용자의 실제 입력이 없이도 자동으로 마우스나 키보드의 이벤트를 발생시켜 수행할 수 있는 오토마우스 또는 오토플레이와 같은 자동 입력 프로그램들이 개발되고 있다. 몇몇 게임 플레이어들은 이러한 자동 입력 프로그램을 사용하여 자신의 캐릭터의 레벨이나 경험치를 높이고 있어서 문제가 되고 있다. 자동 입력 프로그램 또는 자동 입력 장치를 이용하면 반복적인 미션 수행을 직접 입력 없이도 수행할 수 있기 때문에, 자신이 조종하는 캐릭터의 레벨이나 경험치를 빠르게 높일 수 있게 되지만, 이러한 자동 입력에 의한 캐릭터 조종은 공평하고 공정한 게임 진행을 파괴하여 게임의 밸런스를 무너뜨릴 뿐만 아니라, 게임 아이템을 오프라인 상에서 불법적으로 판매하는 조직들에 의하여 사용되어 심각한 사회 문제를 야기하고 있다. On the other hand, automatic input programs such as auto mouse or auto play are being developed to perform such repetitive missions by automatically generating an event of a mouse or a keyboard without a user's actual input. Some game players use this automatic input program to raise their character level or experience, which is a problem. Using auto-input programs or auto-input devices, you can perform repetitive missions without direct input, so you can quickly increase the level or experience of your character. Not only does it destroy the game's balance by destroying fair game progress, but it is also used by organizations that illegally sell game items offline, causing serious social problems.

이와 같은, 마우스나 키보드의 자동 입력을 방지하기 위하여 현재는 자동 입력 프로그램에서 마우스나 키보드 이벤트를 프로그램적으로 발생시키는데 사용하는 API(Application Programming Interface)를 후킹하여 해당 이벤트가 게임에 영향을 줄 경우 해당 이벤트를 실패하게 하는 방법을 사용하고 있다. 예를 들면 SendInput 이라는 API는 마우스나 키보드의 이벤트를 프로그램적으로 발생할 수 있게 하는 기능을 제공하는데, 이러한 API를 이용하여 마우스나 키보드 이벤트가 발생한 것처럼 속이는 자동 입력 프로그램이 있다면 SendInput API를 후킹하여 자동 입력 프로그램이 SendInput API를 호출할 때 실패하도록 함으로써 방어를 수행하는 것이다. In order to prevent automatic input of a mouse or keyboard, hooking an API (Application Programming Interface), which is currently used to generate a mouse or keyboard event programmatically in an automatic input program, when the event affects a game We are using a method that causes an event to fail. For example, an API called SendInput provides the ability to programmatically trigger mouse or keyboard events. If you have an automatic input program that uses these APIs to deceive mouse or keyboard events, hooking the SendInput API to auto-input You do this by causing the program to fail when calling the SendInput API.

그러나 이와 같은 API 후킹 방식의 방어 방법은 후킹 방식 자체가 가지는 한계점을 모두 갖게 된다. 예를 들어, 자동 입력 프로그램이 후킹된 함수가 아닌 이와 동일한 기능을 가지는 다른 함수를 사용한다거나, API가 후킹되지 않은 초기 상태로 프로그램을 되돌리는 경우에는 자동 입력을 막을 수 없다. 또한, API 후킹 호출 방식이 아닌 디바이스 드라이버를 이용하여 하드웨어 레벨에서 자동 입력 이벤트를 생성해 내거나, 자동 입력 소프트웨어가 아닌 자동 입력 하드웨어를 사용하여 이벤트를 생성해내는 경우에는 전혀 방어를 수행할 수 없다는 문제점이 있다. However, this defense method of the API hooking method has all the limitations of the hooking method itself. For example, if the auto-input program uses a function other than the hooked function, or if the API returns the program to an unhooked initial state, the auto-input cannot be prevented. In addition, when generating an auto-input event at the hardware level using a device driver rather than an API hooking method or generating an event by using the auto-input hardware rather than the auto-input software, the defense cannot be performed at all. There is this.

한편, 앞서 설명한 API 후킹 방식의 방어 방법 외에도, 입력되는 이벤트들의 패턴을 분석하여 이 패턴이 사람에 의해서 직접 입력된 것이라고 볼 수 없을 만큼 매우 일정한 주기성을 가지거나 순서를 가질 때에 자동 입력에 의해서 발생된 이벤트라고 판정하는 방법이 존재한다. 즉, 마우스 클릭 사이의 간격, 키 입력 사이의 간격, 마우스가 클릭된 위치에서 다음 클릭이 이루어지는 위치까지의 거리, 키보드 키가 입력되는 순서의 패턴 등을 일정 시간 동안 모니터링 하여, 도저히 인간이 반복적으로 입력하는 것이라고 보기 어려울 정도의 정밀한 주기를 가지고 반복적으로 입력되거나, 특정한 순서를 갖는 키 입력 패턴이 일정 시간 이상 반복될 경우 사용자의 직접 입력에 의해서 발생된 이벤트가 아닌, 자동 입력 프로그램이나 자동 입력 장치에 의해서 발생된 이벤트라고 판정하는 방법이다.On the other hand, in addition to the defense method of the above-described API hooking method, the pattern of the input events is analyzed and generated by automatic input when the pattern has a very regular periodicity or sequence so that the pattern cannot be directly input by a human. There is a method of determining that it is an event. That is, the interval between mouse clicks, the distance between key inputs, the distance from the position where the mouse is clicked to the position where the next click is made, and the pattern of the order in which the keyboard keys are input are monitored for a certain period of time. If the input is repeated repeatedly with a precise period that is difficult to see as being input, or if the key input pattern having a specific order is repeated for a predetermined time or more, the event is not generated by the user's direct input, but instead to the automatic input program or the automatic input device. It is a method of determining that an event has occurred.

하지만, 게임의 종류에 따라 입력되는 이벤트들에서 특정한 패턴을 발견해 낼 수 없는 경우가 존재하기 때문에, 이와 같은 패턴 분석에 의한 방어 방법으로도 막아 낼 수 없는 한계가 있다. However, since there are cases where a specific pattern cannot be found in the input events according to the type of game, there is a limit that cannot be prevented even by a defense method by such a pattern analysis.

본 발명은 이와 같은 종래의 자동 입력 감지 방법의 문제점과 한계를 극복하기 위해 창안된 것으로서, 본 발명이 이루고자 하는 기술적 과제는 응용 프로그램에 입력되는 마우스나 키보드 이벤트가 마우스나 키보드의 디바이스 드라이버를 통과하여 전달된 경우에만 정상적인 입력으로 판단하고, 그렇지 않은 경우에는 소프트웨어적인 자동 입력으로 판단함으로써 API 후킹 방식을 통한 자동 입력 방어 방법의 한계 및 패턴 분석에 의한 방어 방법의 한계를 극복할 수 있는 자동 입력 감지 방법을 제공하는 데 있다. The present invention was devised to overcome the problems and limitations of the conventional automatic input detection method. The technical problem to be achieved by the present invention is that a mouse or keyboard event input to an application program passes through a mouse or keyboard device driver. Automatic input detection method that can overcome the limitations of automatic input defense method through API hooking method and the defense method by pattern analysis by judging normal input only when it is delivered and automatic input by software otherwise. To provide.

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

상기 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 자동 입력 감지 방법은, 마우스 또는 키보드에 의한 사용자 입력 수단에 의하여 발생되는 이벤트를 모니터링 할 수 있는 이벤트 감시용 디바이스 드라이버를 컴퓨터 운영 체제 내에서 구동시키는 단계, 메시지 또는 직접 입력의 형태로서 응용 프로그램에 전달되는 상기 이벤트를 감시하는 응용 모듈을 상기 컴퓨터 운영 체제 내에서 구동시키는 단계, 상기 응용 모듈에 상기 이벤트가 전달된 경우, 상기 이벤트가 상기 이벤트 감시용 디바이스 드라이버를 통과한 이벤트에 의한 것인지를 검사하는 단계, 및 상기 이벤트가 상기 이벤트 감시용 디바이스 드라이버를 통과한 이벤트에 의한 것일 경우 상기 이벤트를 정상적인 이벤트로 처리하고, 그렇지 않을 경우에는 자동 입력 수단에 의하여 발생된 비정상적인 이벤트로 판단하는 단계를 포함한다. In order to achieve the above object, the automatic input detection method according to an embodiment of the present invention, the event monitoring device driver that can monitor the event generated by the user input means by the mouse or keyboard in the computer operating system Driving, in the computer operating system, an application module for monitoring the event delivered to an application in the form of a message or direct input, if the event is delivered to the application module, the event is the event Checking whether the event is due to an event passing through the monitoring device driver, and if the event is due to an event passing through the event monitoring device driver, treating the event as a normal event; Caused by And determining the abnormal event.

상기 목적을 달성하기 위한, 본 발명의 다른 실시예에 따른 자동 입력 감지 방법은, 마우스 또는 키보드에 의한 사용자 입력 수단에 의하여 발생되는 이벤트를 모니터링 할 수 있는 이벤트 감시용 디바이스 드라이버를 컴퓨터 운영 체제 내에서 구동시키는 단계, 메시지 또는 직접 입력의 형태로 응용 프로그램으로 전달되는 상기 입력 수단에 의하여 발생된 이벤트를 감시하는 응용 모듈을 상기 컴퓨터 운영 체제 내에서 구동시키는 단계, 소정의 시간 동안 상기 이벤트 감시용 디바이스 드라이버를 통과한 이벤트의 개수를 카운트하는 단계, 상기 소정의 시간 동안 상기 응용 모듈에 전달되는 메시지 또는 직접 입력의 형태로 전달되는 이벤트의 개수를 카운트하는 단계, 상기 이벤트 감시용 디바이스 드라이버를 통과한 이벤트의 개수와 상기 응용 모듈에 전달된 이벤트의 개수를 비교하는 단계; 및 상기 이벤트 감시용 디바이스 드라이버를 통과한 이벤트의 개수와 상기 응용 모듈에 전달된 이벤트의 개수가 동일할 경우 정상적인 입력으로 처리하고, 그렇지 않을 경우에는 자동 입력 수단에 의하여 발생된 비정상적인 입력으로 판단하는 단계를 포함한다.In order to achieve the above object, the automatic input detection method according to another embodiment of the present invention, an event monitoring device driver that can monitor an event generated by a user input means by a mouse or a keyboard in a computer operating system Driving, in the computer operating system, an application module for monitoring an event generated by the input means delivered to an application program in the form of a message or direct input, the device driver for event monitoring for a predetermined time; Counting the number of events passing through, counting the number of events delivered in the form of a message or direct input to the application module during the predetermined time, and determining the number of events passing through the event monitoring device driver. Number and application modules Comparing the number of delivery events; And when the number of events passed through the event monitoring device driver and the number of events delivered to the application module are the same, process as normal input, and otherwise determine as abnormal input generated by the automatic input means. It includes.

상기 목적을 달성하기 위하여, 상기 본 발명의 실시예들에 따른 자동 입력 감지 방법은 컴퓨터 상에서 실행될 수 있는 프로그램의 형태로 구현될 수 있으며, 이 프로그램을 저장한 컴퓨터에서 읽을 수 있는 기록 매체의 형태로도 구현될 수 있다.In order to achieve the above object, the automatic input sensing method according to the embodiments of the present invention can be implemented in the form of a program that can be executed on a computer, in the form of a computer-readable recording medium storing the program May also be implemented.

기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다. Specific details of other embodiments are included in the detailed description and the drawings.

상기한 바와 같은 본 발명의 자동 입력 감지 방법에 따르면 다음과 같은 효과가 하나 혹은 그 이상 있다.According to the automatic input detection method of the present invention as described above has one or more of the following effects.

첫째, 응용 프로그램에 입력되는 마우스나 키보드 이벤트가 마우스나 키보드의 디바이스 드라이버를 통과하여 전달된 경우에만 정상적인 입력으로 판단하고, 그렇지 않은 경우에는 소프트웨어적인 자동 입력으로 판단하기 때문에, API 호출 방식이 아닌 디바이스 드라이버를 이용하여 하드웨어적으로 발생한 자동 입력 신호라 할지라도 이를 감지해 내어 방어 할 수 있다는 장점이 있다. First, it is judged as normal input only when the mouse or keyboard event input to the application is passed through the device driver of the mouse or keyboard. Otherwise, it is judged as software automatic input. Even the automatic input signal generated by hardware can be detected and defended by using a driver.

둘째, 일정한 패턴을 발견해 낼 수 없는 자동 입력이라고 할지라도 이를 감지해 낼 수 있다는 장점이 있다. Second, even if it is an automatic input that cannot detect a certain pattern, there is an advantage that it can detect it.

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

이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명하기로 한다.Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings.

도 1은 본 발명의 실시예에 따른 자동 입력 감지 방법을 수행하기 위한 컴퓨터 운영 체제의 개념을 나타낸 개념도이다. 1 is a conceptual diagram illustrating the concept of a computer operating system for performing an automatic input detection method according to an embodiment of the present invention.

컴퓨터를 운영하는 컴퓨터 운영 체제(10)은 크게 커널 레벨(20)과 유저 레벨(30)으로 나눌 수 있다. 커널 레벨(20)은 컴퓨터의 주 기억 장치에 상주하는 운영 컴퓨터 운영 체제의 핵심적인 부분으로서, 시스템의 초기화와 인터럽트를 처리하기 위한 특별한 프로세스들, 프로세스 모니터, 프로세스들 사이의 환경 교환과 새로운 프로세스를 생성해 내는 모듈 등을 포함하고 있다. 또한, 컴퓨터에 연결된 입력 수단(40)의 인터럽트 신호를 처리하기 위한 디바이스 드라이버들이 위치된다. 한편, 유저 레벨(30)에서는 컴퓨터 운영 체제 내에서 각종 응용 프로그램이 구동되며, 커널 레벨(20)에서 처리된 프로세스, 인터럽트들이 응용 프로그램에 전달된다. 이때, 응용 프로그램에 전달되는 프로세스, 인터럽트들은 여러 가지 형태로 처리되어 응용 프로그램에 전달될 되는데, 메시지 큐(message queue)에 의해 메시지의 형태로 전달될 수도 있고, 메시지의 형태로 가공되지 않고 그 자체로 직접 전달이 될 수도 있다. The computer operating system 10 for operating a computer may be divided into a kernel level 20 and a user level 30. The kernel level 20 is an integral part of the operating computer operating system residing in the main memory of the computer. It provides special processes, process monitors, environment exchanges and new processes to handle the initialization and interruption of the system. It contains the modules that it generates. In addition, device drivers for processing the interrupt signal of the input means 40 connected to the computer are located. On the other hand, at the user level 30, various application programs are run in the computer operating system, and processes and interrupts processed at the kernel level 20 are delivered to the application program. At this time, the processes and interrupts delivered to the application program are processed in various forms and delivered to the application program, which may be delivered in the form of a message by a message queue, or may not be processed in the form of a message. It can also be delivered directly.

예를 들면, 사용자가 키보드나 마우스와 같은 입력 수단(40)을 이용하여 입력 이벤트를 발생시키면, 이 이벤트는 컴퓨터의 운영 체제의 커널 레벨(20)에 위치하는 인터럽트 서비스 루틴(ISR : Interrupt Service Routine)에 의해서 인터럽트 신호로서 처리가 된다. ISR에서 처리된 이벤트는 상기 입력 수단을 구동하는 다수 의 디바이스 드라이버들이 모여 있는 디바이스 드라이버 스택(50)을 거쳐서 처리되고, 그 후 유저 레벨(30)로 전달이 된다. 유저 레벨(30)로 전달된 이벤트들은 그 자체로서 응용 프로그램(60)에 전달되거나 또는 메시지 큐(80)에 의해서 메시지 형태로 전달될 수 있다. 메시지의 형태로 전달되는 경우, 시스템 메시지 큐(SMQ : System Message Queue), 쓰레드 메시지 큐(TMQ : Thread Message Queue)와 같은 메시지 큐(80)를 통해서 메시지의 형태로 응용 프로그램(60)에 전달되며, 메시지를 전달받은 응용 프로그램(60)은 이에 대응하는 처리를 수행하게 된다. For example, when a user generates an input event using an input means 40 such as a keyboard or a mouse, the event is interrupt service routine (ISR) located at the kernel level 20 of the computer's operating system. ) Is processed as an interrupt signal. The event processed in the ISR is processed through the device driver stack 50 in which a plurality of device drivers driving the input means are gathered, and then delivered to the user level 30. Events delivered to the user level 30 may themselves be delivered to the application 60 or in the form of messages by the message queue 80. When delivered in the form of a message, it is delivered to the application 60 in the form of a message through a message queue 80 such as a System Message Queue (SMQ) or a Thread Message Queue (TMQ). In response to receiving the message, the application program 60 performs a corresponding process.

한편, 오토 마우스, 오토 플레이와 같은 자동 입력 프로그램들은 일반적으로 유저 레벨(30)에서 message hooking, API 호출 등의 방법으로 자동 입력 신호를 생성하여 응용 프로그램(60)에 전달하거나, 커널 레벨(20)에서 유저 레벨(30)로 넘어가는 단계에서 자동으로 생성된 이벤트들을 삽입하여 응용 프로그램(60)에 전달되게 한다. On the other hand, automatic input programs such as auto mouse and auto play generally generate automatic input signals through message hooking, API call, etc. at the user level 30, and deliver them to the application program 60, or the kernel level 20. In the step of going to the user level 30 in the inserted automatically generated events to be delivered to the application (60).

따라서, 본 발명의 실시예에 따른 자동 입력 감지 방법에 의하면, 커널 레벨(20)의 디바이스 드라이버 스택(50) 상에 이벤트 감시용 디바이스 드라이버(55)를 위치시키고, 이 이벤트 감시용 디바이스 드라이버(55)를 통과한 이벤트만 정상적인 이벤트로서 판단하여 응용 프로그램(60)에 처리될 수 있도록 함으로써, 디바이스 드라이버를 거치지 않고 자동 입력 프로그램에 의해서 발생된 자동 입력 이벤트들을 방어할 수 있는 것이다. Accordingly, according to the automatic input sensing method according to the embodiment of the present invention, the event monitoring device driver 55 is placed on the device driver stack 50 of the kernel level 20, and the event monitoring device driver 55 is placed. By determining that only the event passing through) can be processed by the application program 60 as a normal event, it is possible to defend the automatic input events generated by the automatic input program without going through the device driver.

보다 자세히 설명하면, 마우스나 키보드와 같은 입력 수단(40)에 관련된 디바이스 드라이버 스택(50) 상에 이벤트를 감시할 수 있는 이벤트 감시용 디바이스 드라이버(55)를 위치시킨다. 마우스나 키보드와 같은 입력 수단(40)에 의해서 발생된 이벤트는 반드시 디바이스 드라이버 스택 상(50)에 위치시킨 이 이벤트 감시용 디바이스 드라이버(55)를 통과하여 유저 레벨(30)로 전달되게 된다. 상기 이벤트 감시용 디바이스 드라이버(55)는 입력 수단(40)에서 발생되는 이벤트를 필터링 할 수 있는 일종의 필터 드라이버로서, 상기 입력 수단(40)의 이벤트를 필터링할 수 있도록 디바이스 드라이버 스택(50) 상의 임의의 위치에서 구동될 수 있다. 또는, 상기 이벤트 감시용 디바이스 드라이버(55)는 디바이스 드라이버 스택(50) 상에 존재하는 임의의 드라이버를 후킹하여 입력 수단(40)의 이벤트를 모니터링하는 일종의 후킹 드라이버일 수도 있다. In more detail, an event monitoring device driver 55 capable of monitoring an event is placed on a device driver stack 50 related to an input means 40 such as a mouse or a keyboard. Events generated by the input means 40, such as a mouse or keyboard, are necessarily passed to the user level 30 through this event monitoring device driver 55 located on the device driver stack 50. The event monitoring device driver 55 is a kind of filter driver capable of filtering an event generated by the input means 40, and is optional on the device driver stack 50 so as to filter an event of the input means 40. Can be driven at the position of. Alternatively, the event monitoring device driver 55 may be a kind of hooking driver that monitors an event of the input means 40 by hooking any driver existing on the device driver stack 50.

한편 유저 레벨(30)에는 응용 프로그램(60)에 전달되는 이벤트 또는 메시지를 감시할 수 있는 응용 모듈(70)을 위치시킨다. 상기 응용 모듈(70)은 응용 프로그램(60)에 전달되는 이벤트 또는 메시지를 감시할 수 있도록 유저 레벨(30) 상의 임의의 위치에서 구동될 수 있다. 상기 이벤트 감시용 디바이스 드라이버(55)를 통과한 이벤트는 DirectInput과 같은 형태로 직접 응용 프로그램(60)에 전달되거나, 메시지 큐(80)에서 메시지의 형태로 처리되어 응용 프로그램(60)에 전달될 수 있다. 또는, 다른 형태의 이벤트로 변형되어 전달될 수도 있다. 이때, 응용 모듈(70)이 상기 응용 프로그램(60)에 전달되는 이벤트 또는 메시지를 감시한다. 응용 모듈(70)은 전달되는 매 이벤트 또는 메시지마다, 이 이벤트 또는 메시지가 이벤트 감시용 디바이스 드라이버(55)를 통과한 것인가를 커널 레벨(20)에 위치한 이벤트 감시용 디바이스 드라이버(55)를 통해 확인하여, 만약 이벤트 감시용 디바이스 드 라이버(55)를 통과한 이벤트에 의한 것인 경우에는 정상적인 이벤트로 처리하고, 그렇지 않을 경우에는 자동 입력 수단에 의하여 발생된 비정상적인 이벤트로 판단한다. 즉, 커널 레벨(20)에서부터 이벤트를 감시하여 디바이스 드라이버를 통과한 이벤트만 정상적인 이벤트로 처리하기 때문에 유저레벨(30)에서 API 호출에 의한 방법으로 생성된 자동 입력을 모두 감지해 낼 수 있고, 디바이스 드라이버를 이용하여 커널 레벨(20)에서 하드웨어적으로 생성된 자동 입력이라고 할지라도 이에 대한 효과적인 방어를 수행할 수 있다.Meanwhile, at the user level 30, an application module 70 capable of monitoring an event or a message transmitted to the application program 60 is located. The application module 70 may be driven at any location on the user level 30 to monitor events or messages delivered to the application program 60. The event passed through the event monitoring device driver 55 may be delivered directly to the application 60 in the form of DirectInput, or may be processed in the form of a message in the message queue 80 and delivered to the application 60. have. Or, it may be transformed into another type of event and delivered. In this case, the application module 70 monitors an event or a message delivered to the application program 60. The application module 70 checks through the event monitoring device driver 55 located at the kernel level 20 whether or not the event or message has passed the event monitoring device driver 55 for every event or message transmitted. Thus, if it is caused by an event passing through the event monitoring device driver 55, it is treated as a normal event, otherwise it is determined as an abnormal event generated by the automatic input means. That is, since the event is monitored from the kernel level 20 and only the event passing through the device driver is processed as a normal event, the user level 30 can detect all the automatic inputs generated by the API call. Even if it is a hardware-generated automatic input at the kernel level 20 using a driver, an effective defense against this can be performed.

한편, 추가적으로, 입력되는 이벤트들의 일정 시간 동안의 패턴을 분석하는 분석 엔진(90)을 구동시켜 보다 확실한 자동 입력 감지를 해낼 수도 있다. 상기 분석 엔진(90)은 컴퓨터 운영 체제(10) 내의 어느 위치에라도 위치할 수 있다. 즉, 커널 레벨(20)이나 유저 레벨(30)의 임의의 단계에 위치할 수 있다. 분석 엔진(90)은 입력되는 이벤트들의 입력 패턴을 분석하여, 입력되는 패턴이 사용자에 의한 것인지, 아니면 자동 입력 장치의 의한 것인지 여부를 판단한다.On the other hand, in addition, it is possible to drive the analysis engine 90 to analyze the pattern for a certain time of the input events to perform a more reliable automatic input detection. The analysis engine 90 may be located at any location within the computer operating system 10. That is, it can be located at any level of kernel level 20 or user level 30. The analysis engine 90 analyzes an input pattern of input events and determines whether the input pattern is caused by a user or by an automatic input device.

예를 들면, 분석 엔진(90)에 의해 입력되는 이벤트 간의 시간 간격이 소정 회수 이상 동일한 지 여부, 마우스 버튼 클릭에 의한 업/다운 이벤트 발생의 시간 차가 소정 회수 이상 동일한지 여부, 또는 키보드 키 스캔 코드가 동일한 패턴, 동일한 시간 간격으로 소정의 임계 회수 이상 발생하는 지 여부 등을 분석할 수 있다. 분석 엔진(90)의 패턴 분석 방법은 이외에도 다양한 형태가 존재할 수 있다. For example, whether a time interval between events input by the analysis engine 90 is equal to or more than a predetermined number of times, whether a time difference of occurrence of an up / down event due to a mouse button click is equal to or more than a predetermined number of times, or a keyboard key scan code Can be analyzed whether the same pattern, more than a predetermined threshold number of times in the same time interval. The pattern analysis method of the analysis engine 90 may have various forms.

이와 같이, 이벤트 감시용 디바이스 드라이버(55)와 응용 모듈(70)에 의하여 자동 입력된 이벤트로 판단하거나, 상기 분석 엔진(90)에 의해서 사용자가 아닌 자 동 입력 프로그램이나 자동 입력 장치에 의해서 발생된 이벤트로 판단되었을 경우에는, 응용 프로그램(60)에 전달되는 해당 이벤트를 무시하거나, 응용 프로그램(60) 자체를 종료시켜 자동 입력을 방어할 수 있다. 또는, 자동 입력 수단에 의한 비정상적인 이벤트로 판단되는 회수를 카운트하여, 카운트된 회수가 소정의 임계치 이상이 되었을 경우에 응용 프로그램(60)을 종료시켜 방어를 수행할 수도 있다.In this way, it is determined that the event is automatically input by the event monitoring device driver 55 and the application module 70, or generated by an automatic input program or an automatic input device other than the user by the analysis engine 90. If it is determined that the event, it is possible to ignore the event delivered to the application 60, or terminate the application 60 itself to defend the automatic input. Alternatively, the number of times determined to be an abnormal event by the automatic input means may be counted, and when the counted number exceeds the predetermined threshold, the application program 60 may be terminated to perform defense.

이하에서는, 도 2 내지 도 6을 참조하여, 본 발명의 실시예에 의한 자동 입력 감지 방법을 단계별로 자세히 설명한다.Hereinafter, with reference to Figures 2 to 6, the automatic input detection method according to an embodiment of the present invention will be described in detail step by step.

도 2 내지 도 6은 본 발명의 일 실시예에 따른 자동 입력 감지 방법을 나타낸 흐름도 이다. 2 to 6 are flowcharts illustrating an automatic input sensing method according to an embodiment of the present invention.

먼저, 키보드나 마우스와 같은 입력 수단(40)에 의하여 발생되는 이벤트를 모니터링 할 수 있는 이벤트 감시용 디바이스 드라이버(55)를 컴퓨터 운영 체제(10) 내에서 구동시킨다(S210). 상기 이벤트 감시용 디바이스 드라이버(55)는 입력 수단(40)과 관련된 디바이스 드라이버 스택(50) 상에 위치되어 구동된다. First, an event monitoring device driver 55 capable of monitoring an event generated by an input means 40 such as a keyboard or a mouse is driven in the computer operating system 10 (S210). The event monitoring device driver 55 is located and driven on the device driver stack 50 associated with the input means 40.

그리고, 메시지 또는 직접 입력의 형태로서 응용 프로그램(60)으로 전달되는 상기 입력 수단(40)에 의하여 발생된 이벤트를 감시하기 위한 응용 모듈(70)을 컴퓨터 운영 체제(10) 내에서 구동 시킨다(S220). 상기 응용 모듈(70)은 상기 응용 프로그램(60)에 전달되는 상기 이벤트를 감시할 수 있는 컴퓨터 운영 체제(10)의 유저 레벨(20) 상의 임의의 위치에서 구동될 수 있다. Then, the application module 70 for monitoring the event generated by the input means 40 transmitted to the application program 60 in the form of a message or direct input is driven in the computer operating system 10 (S220). ). The application module 70 may be driven at any location on the user level 20 of the computer operating system 10 capable of monitoring the event delivered to the application program 60.

만약, 메시지 큐(80)를 통해서 상기 응용 모듈(70)에 메시지의 형태로 이벤 트가 전달되거나, 또는 직접 입력의 형태로 상기 응용 모듈에 이벤트가 전달된 경우, 상기 이벤트가 상기 이벤트 감시용 디바이스 드라이버(55)를 통과한 이벤트에 의한 것인지를 검사한다(S230). If an event is delivered to the application module 70 in the form of a message through the message queue 80 or an event is delivered to the application module in the form of a direct input, the event is the event monitoring device. It is checked whether the event is caused by passing the driver 55 (S230).

이 경우, 도 3을 참고하면, 응용 모듈(70)은 모든 이벤트에 대해서, 이벤트 감시용 디바이스 드라이버(55)를 통과한 이벤트인지를 묻는 큐어리(query) 메시지를 이벤트 감시용 디바이스 드라이버(55)에게 전달한다(S231). 그리고 이벤트 감시용 디바이스 드라이버(55)는 상기 메시지 또는 직접 입력의 형태로 응용 프로그램(60)에 전달되는 이벤트가 이벤트 감시용 디바이스 드라이버(55)를 통과하여 전달된 이벤트인지를 확인하여 응용 프로그램(60)에 전달한다(S232). In this case, referring to FIG. 3, the application module 70 sends a query message to the event monitoring device driver 55 inquiring whether all events have passed through the event monitoring device driver 55. Transfer to (S231). The event monitoring device driver 55 checks whether an event delivered to the application 60 in the form of the message or direct input is an event transmitted through the event monitoring device driver 55 and then the application program 60. To be transmitted (S232).

또는, 도 4를 참고하면, 상기 이벤트 감시용 디바이스 드라이버(55)가 상기 응용 모듈(70)에 매 이벤트 마다 각 이벤트가 상기 이벤트 감시용 디바이스 드라이버(55)를 통과한 것인지를 알려 주고(S233), 응용 프로그램(60)에 전달되는 이벤트가 상기 이벤트 감시용 디바이스 드라이버(55)를 통과한 이벤트와 동일한 이벤트인지를 확인할 수도 있다(S234). Alternatively, referring to FIG. 4, the event monitoring device driver 55 informs the application module 70 whether each event passes the event monitoring device driver 55 at every event (S233). In operation S234, the event transmitted to the application program 60 may be identical to the event passing through the event monitoring device driver 55.

만약, 상기 이벤트가 상기 이벤트 감시용 디바이스 드라이버(55)를 통과한 이벤트에 의한 것으로 확인될 경우 사용자의 입력에 의한 정상적인 이벤트로 처리하고(S240), 그렇지 않을 경우에는 오토 마우스와 같은 자동 입력 수단에 의하여 발생된 비정상적인 이벤트로 판단한다(S241). If it is determined that the event is caused by an event that has passed through the event monitoring device driver 55, the event is processed as a normal event by a user's input (S240). It is determined that the abnormal event generated by (S241).

한편, 상기 이벤트가 상기 이벤트 감시용 디바이스 드라이버를 통과한 이벤트에 의한 것으로 확인되어 사용자의 입력에 의한 정상적인 이벤트로 판단한 경 우(S240)라 할지라도, 추가적인 검사에 의해 더욱 확실하게 자동 입력을 감지해 낼 수도 있다. On the other hand, even if the event is determined to be caused by the event passed through the event monitoring device driver is determined to be a normal event by the user's input (S240), even if the automatic input is more reliably detected by additional inspection You can also pay.

도 5는 본 발명의 일 실시예에 따른 추가적인 검사에 의해 더욱 확실하게 자동 입력을 감지해 내는 방법을 나타낸 흐름도이다. 5 is a flowchart illustrating a method of more reliably detecting an automatic input by an additional test according to an embodiment of the present invention.

즉, 도 5를 참고하면, 상기 입력 수단에 의하여 입력되는 이벤트의 일정 시간 동안의 패턴을 분석하는 분석 엔진(90)을 구동시키고(S251), 상기 분석 엔진(90)에 의하여 분석된 이벤트의 패턴에 따라 자동 입력 여부를 판단할 수도 있다(S252). 예를 들어, 이벤트 패턴을 분석하여 도저히 사람에 의해서 입력되었다고 보기 어려운 정도의 정밀한 패턴을 가지고 입력되었다면, 이를 사용자가 아닌 자동 입력 프로그램이나 자동 입력 장치와 같은 자동 입력 수단에 의한 비정상적인 이벤트로 판단한다(S253). 분석 엔진(90)은 입력되는 이벤트 간의 시간 간격이 소정 회수 이상 동일한 지 여부, 마우스 버튼 클릭에 의한 업/다운 이벤트 발생의 시간 차가 소정 회수 이상 동일한지 여부, 또는 키보드의 키 스캔 코드가 동일한 패턴, 동일한 시간 간격으로 소정의 임계 회수 이상 발생하는 지 여부 등을 분석할 수 있다. 이외에도 이벤트의 패턴을 분석하는 방법은 다양한 방법이 존재할 수 있다. That is, referring to FIG. 5, the analysis engine 90 for analyzing a pattern for a predetermined time of the event input by the input means is driven (S251), and the pattern of the event analyzed by the analysis engine 90 is performed. It may be determined whether the automatic input according to (S252). For example, if an event pattern is analyzed and input with a precise pattern that is hardly seen as being input by a person, it is determined as an abnormal event by an automatic input means such as an automatic input program or an automatic input device, not a user ( S253). The analysis engine 90 determines whether a time interval between input events is equal to or more than a predetermined number of times, whether a time difference of occurrence of an up / down event due to a mouse button click is equal to or more than a predetermined number of times, or a pattern having the same key scan code of a keyboard, At the same time interval, it is possible to analyze whether or not a predetermined threshold number of times occurs. In addition, there may be various methods for analyzing patterns of events.

이와 같이, 이벤트 감시용 디바이스 드라이버(55)와 응용 모듈(70)에 의하여 자동 입력된 이벤트로 판단하거나, 상기 분석 엔진(90)에 의해서 사용자가 아닌 자동 입력 프로그램이나 자동 입력 장치에 의해서 발생된 이벤트로 판단하여, 상기 메시지가 자동 입력 수단에 의한 비정상적 이벤트로 판단한 경우에는, 상기 이벤트를 응용 프로그램(60)에서 무시하거나, 상기 응용 프로그램(60)을 종료할 수 있 다(S260).In this way, the event is automatically determined by the event monitoring device driver 55 and the application module 70, or the event generated by the automatic input program or automatic input device other than the user by the analysis engine 90 If it is determined that the message is an abnormal event by the automatic input means, the event can be ignored by the application program 60 or the application program 60 can be terminated (S260).

또는, 도 6을 참고하면, 자동 입력 수단에 의한 비정상적인 이벤트로 판단될 때마다 감시 카운터를 하나씩 증가시키고(S271), 상기 감시 카운터가 소정의 임계치 이상이 되었을 경우에(S272), 상기 응용 프로그램을 종료하여(S273) 자동 입력에 대한 방어를 수행할 수도 있다.Alternatively, referring to FIG. 6, whenever an abnormal event is determined by the automatic input means, the monitoring counter is incremented by one (S271), and when the monitoring counter reaches a predetermined threshold or more (S272), the application program is executed. In operation S273, a defense against automatic input may be performed.

이하에서는 도7을 참고하여 본 발명의 또 다른 실시예에 따른 자동 입력 감지 방법을 설명한다. Hereinafter, an automatic input sensing method according to another embodiment of the present invention will be described with reference to FIG. 7.

도 7은 본 발명의 또 다른 실시예에 따른 자동 입력 감지 방법을 나타낸 흐름도이다. 7 is a flowchart illustrating an automatic input sensing method according to another embodiment of the present invention.

먼저, 입력 수단(40)에 의하여 발생되는 이벤트를 모니터링 할 수 있는 이벤트 감시용 디바이스 드라이버(55)를 컴퓨터 운영 체제(10) 내에서 구동시킨다(S310). 상기 이벤트 감시용 디바이스 드라이버(55)는 입력 수단(40)과 관련된 디바이스 드라이버 스택(50) 상에 위치되어 구동된다.First, an event monitoring device driver 55 capable of monitoring an event generated by the input means 40 is driven in the computer operating system 10 (S310). The event monitoring device driver 55 is located and driven on the device driver stack 50 associated with the input means 40.

그리고, 메시지의 형태 또는 직접 입력의 형태로서 응용 프로그램(60)으로 전달되는 상기 입력 수단(40)에 의하여 발생된 이벤트를 감시하는 응용 모듈(70)을 상기 컴퓨터 운영 체제(10) 내에서 구동시킨다(S320). 상기 응용 모듈(70)은 상기 응용 프로그램(60)에 전달되는 상기 이벤트를 감시할 수 있는 컴퓨터 운영 체제(10)의 유저 레벨(20) 상의 임의의 위치에서 구동될 수 있다.Then, the application module 70 for monitoring an event generated by the input means 40 transmitted to the application program 60 in the form of a message or in the form of a direct input is driven in the computer operating system 10. (S320). The application module 70 may be driven at any location on the user level 20 of the computer operating system 10 capable of monitoring the event delivered to the application program 60.

그리고, 소정의 시간 동안 상기 이벤트 감시용 디바이스 드라이버(55)를 통과한 이벤트의 개수 및 상기 응용 모듈(70)에 전달되는 이벤트의 개수를 카운트한 다(S330). In operation S330, the number of events passing through the event monitoring device driver 55 and the number of events delivered to the application module 70 are counted.

그리고, 상기 이벤트 감시용 디바이스 드라이버(55)를 통과한 이벤트의 개수와 상기 응용 모듈(70)에 전달된 이벤트의 개수를 비교하여(S340), 상기 이벤트 감시용 디바이스 드라이버(55)를 통과한 이벤트의 개수와 상기 응용 모듈(70)에 전달된 이벤트의 개수가 동일할 경우에는 정상적인 입력으로 처리하고(S351), 그렇지 않을 경우에는 자동 입력 수단에 의하여 발생된 비정상적인 입력으로 판단한다(S352).In addition, by comparing the number of events passed through the event monitoring device driver 55 with the number of events transmitted to the application module 70 (S340), the event passes through the event monitoring device driver 55. If the number of times and the number of events delivered to the application module 70 is the same as the normal input (S351), otherwise it is determined as an abnormal input generated by the automatic input means (S352).

위에서 설명한 바와 같이, 응용 프로그램에 입력되는 마우스나 키보드 이벤트가 마우스나 키보드의 디바이스 드라이버를 통과하여 전달된 경우에만 정상적인 입력으로 판단하고, 그렇지 않은 경우에는 소프트웨어적인 자동 입력으로 판단하기 때문에, API를 이용한 소프트웨어적으로 발생되는 자동 입력 신호 뿐만 아니라, API 호출 방식이 아닌 디바이스 드라이버를 이용하여 하드웨어적으로 발생한 자동 입력 신호라 할지라도 이를 감지해 내어 방어 할 수 있으며, 일정한 패턴을 발견해 낼 수 없는 자동 입력이라고 할지라도 이를 감지해 낼 수 있다는 장점이 있다. 또한, 분석 엔진을 통하여 2단계로 자동 입력을 감지하기 때문에 더욱 확실하게 자동 입력을 방어할 수 있다. As described above, since a mouse or keyboard event input to an application is passed through a device driver of a mouse or keyboard, it is determined to be normal input. Otherwise, it is determined as software automatic input. In addition to automatic input signals generated by software, even automatic input signals generated by hardware using device drivers rather than API calling methods can be detected and defended, and automatic inputs that cannot detect certain patterns. Even if you can detect this is an advantage. In addition, the automatic detection of automatic input in two stages is possible through the analysis engine, so that automatic input can be defended more reliably.

본 발명은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CO-ROM, 자기 테이프, 플로피 디 스크, 광 데이터 저장 장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.The present invention can be embodied as computer readable codes on a computer readable recording medium. The computer-readable recording medium includes all kinds of recording devices in which data that can be read by a computer system is stored. Examples of computer-readable recording media include ROM, RAM, CO-ROM, magnetic tape, floppy disks, optical data storage devices, and the like, which are also implemented in the form of carrier waves (e.g., transmission over the Internet). It also includes. The computer readable recording medium can also be distributed over network coupled computer systems so that the computer readable code is stored and executed in a distributed fashion.

이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. Although 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. It is therefore to be understood that the above-described embodiments are illustrative in all aspects and not restrictive.

도 1은 본 발명의 일 실시예에 따른 자동 입력 감지 방법이 수행되는 컴퓨터 운영 체계의 개념을 보여주는 개념도이다. 1 is a conceptual diagram illustrating a concept of a computer operating system in which an automatic input sensing method is performed according to an embodiment of the present invention.

도 2는 본 발명의 일 실시예에 따른 자동 입력 감지 방법을 보여주는 흐름도이다.2 is a flowchart illustrating an automatic input sensing method according to an embodiment of the present invention.

도 3은 본 발명의 일 실시예에 따른 자동 입력 감지 방법에 있어서, 각 이벤트가 이벤트 감시용 디바이스 드라이버를 통과한 것인지 여부를 확인하는 방법 중 하나의 예를 보여주는 흐름도이다.3 is a flowchart illustrating an example of a method for checking whether each event passes a device driver for event monitoring in an automatic input sensing method according to an embodiment of the present invention.

도 4는 본 발명의 일 실시예에 따른 자동 입력 감지 방법에 있어서, 각 이벤트가 이벤트 감시용 디바이스 드라이버를 통과한 것인지 여부를 확인하는 방법 중 또 다른 하나의 예를 보여주는 흐름도이다.FIG. 4 is a flowchart illustrating still another example of a method for checking whether each event passes a device driver for event monitoring in an automatic input sensing method according to an embodiment of the present invention.

도 5는 본 발명의 일 실시예에 따른 자동 입력 감지 방법에 있어서, 추가적인 검사에 의해 더욱 확실하게 자동 입력을 감지해 내는 방법을 나타낸 흐름도이다.5 is a flowchart illustrating a method of detecting an automatic input more reliably by an additional test in the automatic input sensing method according to an embodiment of the present invention.

도 6은 본 발명의 일 실시예에 따른 자동 입력 감지 방법에 있어서, 감지 카운터를 증가시켜 자동 입력을 감지해 내는 방법을 보여주는 흐름도이다.6 is a flowchart illustrating a method of detecting an automatic input by increasing a detection counter in the automatic input sensing method according to an embodiment of the present invention.

도 7은 본 발명의 또 다른 실시예에 따른 자동 입력 감지 방법을 보여주는 흐름도이다. 7 is a flowchart illustrating an automatic input sensing method according to another embodiment of the present invention.

Claims (22)

마우스 또는 키보드에 의한 사용자 입력 수단에 의하여 발생되는 이벤트를 모니터링 할 수 있는 이벤트 감시용 디바이스 드라이버를 컴퓨터 운영 체제 내에서 구동시키는 단계;Driving an event monitoring device driver in a computer operating system capable of monitoring an event generated by a user input means by a mouse or a keyboard; 메시지 또는 직접 입력의 형태로 응용 프로그램에 전달되는 상기 이벤트를 감시하는 응용 모듈을 상기 컴퓨터 운영 체제 내에서 구동시키는 단계;Running in said computer operating system an application module for monitoring said event delivered to an application in the form of a message or direct input; 상기 응용 모듈에 상기 이벤트가 전달된 경우, 상기 이벤트가 상기 이벤트 감시용 디바이스 드라이버를 통과한 이벤트에 의한 것인지를 검사하는 단계; 및If the event is delivered to the application module, checking whether the event is due to an event passing through the event monitoring device driver; And 상기 이벤트가 상기 이벤트 감시용 디바이스 드라이버를 통과한 이벤트에 의한 것일 경우 상기 이벤트를 정상적인 이벤트로 처리하고, 그렇지 않을 경우에는 자동 입력 수단에 의하여 발생된 비정상적인 이벤트로 처리하는 단계If the event is caused by an event passing through the event monitoring device driver, processing the event as a normal event; otherwise, processing the event as an abnormal event generated by an automatic input means. 를 포함하는 자동 입력 감지 방법.Automatic input detection method comprising a. 제1항에 있어서,The method of claim 1, 상기 이벤트 감시용 드라이버는 상기 입력 수단에 관련된 상기 컴퓨터 운영 체제 내의 디바이스 드라이버 스택 상에 위치되어 구동되는 것을 특징으로 하는The event monitoring driver is located and driven on a device driver stack in the computer operating system associated with the input means. 자동 입력 감지 방법.Automatic input detection method. 제2항에 있어서,The method of claim 2, 상기 이벤트 감시용 드라이버는 상기 입력 수단의 이벤트를 필터링할 수 있도록 상기 디바이스 드라이버 스택 상의 임의의 위치에서 구동되는 필터 드라이버인 것을 특징으로 하는The event monitoring driver is a filter driver driven at an arbitrary position on the device driver stack to filter the events of the input means. 자동 입력 감지 방법.Automatic input detection method. 제2항에 있어서,The method of claim 2, 상기 이벤트 감시용 드라이버는 상기 드라이버 스택 상에 존재하는 임의의 드라이버를 후킹하여 상기 입력 수단의 이벤트를 모니터링하는 후킹 드라이버인 것을 특징으로 하는The event monitoring driver is a hooking driver that monitors an event of the input means by hooking an arbitrary driver existing on the driver stack. 자동 입력 감지 방법.Automatic input detection method. 제1항에 있어서,The method of claim 1, 상기 응용 모듈은 상기 응용 프로그램에 전달되는 상기 이벤트를 감시할 수 있도록 상기 컴퓨터 운영 체제의 유저 레벨 내의 임의의 위치에서 구동되는 것을 특징으로 하는The application module is driven at an arbitrary location within a user level of the computer operating system to monitor the event delivered to the application program. 자동 입력 감지 방법. Automatic input detection method. 제1항에 있어서,The method of claim 1, 상기 이벤트가 상기 이벤트 감시용 디바이스 드라이버를 통과한 이벤트에 의한 것인지를 검사하는 단계는,The step of checking whether the event is caused by the event passing through the event monitoring device driver, 매 이벤트마다 상기 응용 모듈이 상기 이벤트 감시용 디바이스 드라이버에게 큐어리(query) 메시지를 전달하는 단계; 및Transmitting, by the application module, a query message to the event monitoring device driver at every event; And 상기 응용 프로그램에 전달되는 이벤트가 상기 이벤트 감시용 디바이스 드라이버를 통과한 이벤트와 동일한 이벤트인지를 확인하는 단계를 포함하는Determining whether an event delivered to the application is the same event that passed the event monitoring device driver; 자동 입력 감지 방법.Automatic input detection method. 제1항에 있어서,The method of claim 1, 상기 이벤트가 상기 이벤트 감시용 디바이스 드라이버를 통과한 이벤트에 의한 것인지를 검사하는 단계는, The step of checking whether the event is caused by the event passing through the event monitoring device driver, 상기 이벤트 감시용 디바이스 드라이버가 상기 응용 모듈에 매 이벤트 마다 각 이벤트가 상기 이벤트 감시용 디바이스 드라이버를 통과한 것인지를 알려주는 단계; 및The event monitoring device driver notifying the application module whether each event has passed the event monitoring device driver at every event; And 상기 응용 프로그램에 전달되는 이벤트가 상기 이벤트 감시용 디바이스 드라이버를 통과한 이벤트와 동일한 이벤트인지를 확인하는 단계를 포함하는Determining whether an event delivered to the application is the same event that passed the event monitoring device driver; 자동 입력 감지 방법.Automatic input detection method. 제1항에 있어서,The method of claim 1, 자동 입력 수단에 의한 비정상적인 이벤트로 판단된 경우에는, 상기 이벤트를 무시하거나 상기 응용 프로그램을 종료하는 단계를 더 포함하는If it is determined that the abnormal event by the automatic input means, further comprising the step of ignoring the event or terminating the application program 자동 입력 감지 방법.Automatic input detection method. 제1항에 있어서,The method of claim 1, 자동 입력 수단에 의한 비정상적인 이벤트로 판단된 경우에는, 감시 카운터를 증가시키는 단계; 및If it is determined that the abnormal event by the automatic input means, incrementing a monitoring counter; And 상기 감시 카운터가 소정의 임계치 이상이 되었을 경우, 상기 응용 프로그램을 종료하는 단계를 더 포함하는Terminating the application if the monitoring counter reaches a predetermined threshold or more; 자동 입력 감지 방법.Automatic input detection method. 삭제delete 제1항에 있어서, The method of claim 1, 상기 입력 수단에 의하여 입력되는 이벤트의 일정 시간 동안의 패턴을 분석하는 엔진을 구동시키는 단계; 및Driving an engine for analyzing a pattern for a predetermined time of an event input by the input means; And 상기 엔진에 의하여 분석된 이벤트의 패턴에 따라 자동 입력 여부를 판단하는 단계를 더 포함하는 Determining whether the automatic input is performed according to the pattern of the event analyzed by the engine. 자동 입력 감지 방법.Automatic input detection method. 제1항 내지 제9항 중 어느 한 항, 또는 제11항의 방법을 컴퓨터 상에서 수행하는 컴퓨터 프로그램을 저장한 컴퓨터가 읽을 수 있는 기록 매체. A computer-readable recording medium storing a computer program for performing the method of any one of claims 1 to 9 or 11. 마우스 또는 키보드에 의한 사용자 입력 수단에 의하여 발생되는 이벤트를 모니터링할 수 있는 이벤트 감시용 디바이스 드라이버를 구동시키는 단계;Driving an event monitoring device driver capable of monitoring an event generated by a user input means by a mouse or a keyboard; 메시지 또는 직접 입력의 형태로 응용 프로그램으로 전달되는 상기 사용자 입력 수단에 의하여 발생된 이벤트를 감시하는 응용 모듈을 컴퓨터 운영 체제 내에서 구동시키는 단계;Running an application module in a computer operating system for monitoring an event generated by said user input means delivered to an application program in the form of a message or direct input; 소정의 시간동안 상기 이벤트 감시용 디바이스 드라이버를 통과한 이벤트의 개수를 카운트하는 단계,Counting the number of events that have passed through the event monitoring device driver for a predetermined time; 상기 소정의 시간동안 상기 응용 모듈에 전달되는 메시지 또는 직접 입력의 형태로 전달되는 이벤트의 개수를 카운트하는 단계;Counting the number of events delivered in the form of a message or direct input to the application module during the predetermined time; 상기 이벤트 감시용 디바이스 드라이버를 통과한 이벤트의 개수와 상기 응용 모듈에 전달된 이벤트의 개수를 비교하는 단계; 및Comparing the number of events passed to the event monitoring device driver with the number of events delivered to the application module; And 상기 이벤트 감시용 디바이스 드라이버를 통과한 이벤트의 개수와 상기 응용 모듈에 전달되는 이벤트의 개수가 동일할 경우 상기 사용자 입력 수단에 의하여 발생된 이벤트를 정상 입력으로 처리하고, 그렇지 않을 경우에는 상기 사용자 입력 수단에 의하여 발생된 이벤트를 자동 입력 수단에 의하여 발생된 비정상적인 입력으로 판단하는 단계If the number of events passed through the event monitoring device driver and the number of events delivered to the application module are the same, the event generated by the user input means is treated as a normal input. Otherwise, the user input means Determining the event generated by the abnormal input generated by the automatic input means 를 포함하는 자동 입력 감지 방법.Automatic input detection method comprising a. 제13항에 있어서,The method of claim 13, 상기 이벤트 감시용 드라이버는 상기 입력 수단에 관련된 상기 컴퓨터 운영 체제 내의 디바이스 드라이버 스택 상에 위치되어 구동되는 것을 특징으로 하는The event monitoring driver is located and driven on a device driver stack in the computer operating system associated with the input means. 자동 입력 감지 방법.Automatic input detection method. 제14항에 있어서,The method of claim 14, 상기 이벤트 감시용 드라이버는 상기 입력 수단의 이벤트를 필터링할 수 있도록 상기 디바이스 드라이버 스택 상의 임의의 위치에서 구동되는 필터 드라이버 인 것을 특징으로 하는The event monitoring driver is a filter driver driven at an arbitrary position on the device driver stack to filter the events of the input means. 자동 입력 감지 방법.Automatic input detection method. 제14항에 있어서,The method of claim 14, 상기 이벤트 감시용 드라이버는 상기 드라이버 스택 상에 존재하는 임의의 드라이버를 후킹하여 상기 입력 수단의 이벤트를 모니터링하는 후킹 드라이버인 것을 특징으로 하는The event monitoring driver is a hooking driver that monitors an event of the input means by hooking an arbitrary driver existing on the driver stack. 자동 입력 감지 방법.Automatic input detection method. 제13항에 있어서,The method of claim 13, 상기 응용 모듈은 상기 응용 프로그램에 전달되는 상기 이벤트를 감시할 수 있도록 상기 컴퓨터 운영 체제의 유저 레벨 내의 임의의 위치에서 구동되는 것을 특징으로 하는The application module is driven at an arbitrary location within a user level of the computer operating system to monitor the event delivered to the application program. 자동 입력 감지 방법. Automatic input detection method. 제13항에 있어서,The method of claim 13, 자동 입력 수단에 의한 비정상적인 입력으로 판단된 경우에는, 상기 이벤트 에 의한 입력을 무시하거나 상기 응용 프로그램을 종료하는 단계를 더 포함하는If it is determined that the abnormal input by the automatic input means, further comprising the step of ignoring the input by the event or terminating the application program; 자동 입력 감지 방법.Automatic input detection method. 제13항에 있어서,The method of claim 13, 자동 입력 수단에 의한 비정상적인 입력으로 판단된 경우에는, 감시 카운터를 증가시키는 단계; 및If it is determined that the abnormal input by the automatic input means, incrementing the monitoring counter; And 상기 감시 카운터가 소정의 임계치 이상이 되었을 경우, 상기 응용 프로그램을 종료하는 단계를 더 포함하는Terminating the application if the monitoring counter reaches a predetermined threshold or more; 자동 입력 감지 방법.Automatic input detection method. 삭제delete 제13항에 있어서, The method of claim 13, 상기 입력 수단에 의하여 입력되는 이벤트의 일정 시간 동안의 패턴을 분석하는 엔진을 구동시키는 단계; 및Driving an engine for analyzing a pattern for a predetermined time of an event input by the input means; And 상기 엔진에 의하여 분석된 이벤트의 패턴에 따라 자동 입력 여부를 판단하는 단계를 더 포함하는 Determining whether the automatic input is performed according to the pattern of the event analyzed by the engine. 자동 입력 감지 방법.Automatic input detection method. 제13항 내지 제19항 중 어느 한 항, 또는 제21항의 방법을 컴퓨터 상에서 수행하는 컴퓨터 프로그램을 저장한 컴퓨터가 읽을 수 있는 기록 매체. A computer-readable recording medium storing a computer program for performing the method of any one of claims 13 to 19 or 21.
KR1020070118464A 2007-11-20 2007-11-20 Method for detecting automatically generated input KR100968268B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020070118464A KR100968268B1 (en) 2007-11-20 2007-11-20 Method for detecting automatically generated input

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070118464A KR100968268B1 (en) 2007-11-20 2007-11-20 Method for detecting automatically generated input

Publications (2)

Publication Number Publication Date
KR20090051977A KR20090051977A (en) 2009-05-25
KR100968268B1 true KR100968268B1 (en) 2010-07-06

Family

ID=40859883

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070118464A KR100968268B1 (en) 2007-11-20 2007-11-20 Method for detecting automatically generated input

Country Status (1)

Country Link
KR (1) KR100968268B1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101171717B1 (en) 2011-12-28 2012-09-13 (주)네오위즈게임즈 Method and server of preventing automatic program for item auction site of on-line game
KR101201495B1 (en) 2010-08-10 2012-11-14 주식회사 잉카인터넷 method for blocking auto-input in computer system

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9412123B2 (en) 2003-07-01 2016-08-09 The 41St Parameter, Inc. Keystroke analysis
US10999298B2 (en) 2004-03-02 2021-05-04 The 41St Parameter, Inc. Method and system for identifying users and detecting fraud by use of the internet
US11301585B2 (en) 2005-12-16 2022-04-12 The 41St Parameter, Inc. Methods and apparatus for securely displaying digital images
US8938671B2 (en) 2005-12-16 2015-01-20 The 41St Parameter, Inc. Methods and apparatus for securely displaying digital images
US8151327B2 (en) 2006-03-31 2012-04-03 The 41St Parameter, Inc. Systems and methods for detection of session tampering and fraud prevention
EP2291725A4 (en) * 2008-04-22 2012-01-25 41St Parameter Inc Systems and methods for security management based on cursor events
US9112850B1 (en) 2009-03-25 2015-08-18 The 41St Parameter, Inc. Systems and methods of sharing information through a tag-based consortium
US9361597B2 (en) 2010-10-19 2016-06-07 The 41St Parameter, Inc. Variable risk engine
US10754913B2 (en) 2011-11-15 2020-08-25 Tapad, Inc. System and method for analyzing user device information
US9633201B1 (en) 2012-03-01 2017-04-25 The 41St Parameter, Inc. Methods and systems for fraud containment
US9521551B2 (en) 2012-03-22 2016-12-13 The 41St Parameter, Inc. Methods and systems for persistent cross-application mobile device identification
EP2880619A1 (en) 2012-08-02 2015-06-10 The 41st Parameter, Inc. Systems and methods for accessing records via derivative locators
WO2014078569A1 (en) 2012-11-14 2014-05-22 The 41St Parameter, Inc. Systems and methods of global identification
US10902327B1 (en) 2013-08-30 2021-01-26 The 41St Parameter, Inc. System and method for device identification and uniqueness
US10091312B1 (en) 2014-10-14 2018-10-02 The 41St Parameter, Inc. Data structures for intelligently resolving deterministic and probabilistic device identifiers to device profiles and/or groups

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100483700B1 (en) 2003-12-03 2005-04-19 주식회사 잉카인터넷 Method to cut off an illegal process access and manipulation for the security of online game client by real-time
KR20060059757A (en) * 2004-11-29 2006-06-02 주식회사 안철수연구소 Preventing method of computer programmed automatic input
KR100645983B1 (en) * 2005-08-31 2006-11-14 (주)와이즈로직 Module for detecting an illegal process and method thereof

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100483700B1 (en) 2003-12-03 2005-04-19 주식회사 잉카인터넷 Method to cut off an illegal process access and manipulation for the security of online game client by real-time
KR20060059757A (en) * 2004-11-29 2006-06-02 주식회사 안철수연구소 Preventing method of computer programmed automatic input
KR100645983B1 (en) * 2005-08-31 2006-11-14 (주)와이즈로직 Module for detecting an illegal process and method thereof

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101201495B1 (en) 2010-08-10 2012-11-14 주식회사 잉카인터넷 method for blocking auto-input in computer system
KR101171717B1 (en) 2011-12-28 2012-09-13 (주)네오위즈게임즈 Method and server of preventing automatic program for item auction site of on-line game
WO2013100400A1 (en) * 2011-12-28 2013-07-04 (주)네오위즈게임즈 Method for inhibiting automatic program in an item auction in an online game, and server
US9457280B2 (en) 2011-12-28 2016-10-04 Intellectual Discovery Co., Ltd. Auto program preventing method for auction house for on-line game item and server therefor

Also Published As

Publication number Publication date
KR20090051977A (en) 2009-05-25

Similar Documents

Publication Publication Date Title
KR100968268B1 (en) Method for detecting automatically generated input
US9901831B2 (en) System and method for online community management
US7753795B2 (en) Maintaining community integrity
Chen et al. Identifying MMORPG bots: A traffic analysis approach
US11395971B2 (en) Auto harassment monitoring system
US20110269547A1 (en) Maintaining Community Integrity
CN110585723B (en) Cheating user detection method, device and equipment based on block chain and storage medium
JP7383198B2 (en) Classification of gaming activities to identify abusive behavior
van Kesteren et al. A step in the right direction: Botdetection in MMORPGs using movement analysis
JP2006006473A (en) Fraudulence detection method for online game
JP2009509647A5 (en)
KR100976861B1 (en) Method for detecting automatic input generated by hardware device and apparatus thereof
Choi et al. Detecting and monitoring game bots based on large-scale user-behavior log data analysis in multiplayer online games
CN111558226B (en) Method, device, equipment and storage medium for detecting abnormal operation behaviors
KR101201495B1 (en) method for blocking auto-input in computer system
US20220072430A1 (en) System and method for fraud prevention in esports
Yeung et al. Dynamic Bayesian approach for detecting cheats in multi-player online games
CN111939556A (en) Method, device and system for detecting abnormal operation of game
KR102119310B1 (en) Method and apparatus for game cheating prevention
KR101139916B1 (en) Apparatus and method for detecting automatic input through the hardware
EP4068127A1 (en) Systems and methods for determining execution state
Tomičić et al. An Active Game Bot Detection with Security Bots
CN116570926A (en) Virtual character detection method and device, storage medium and electronic device
KR101826081B1 (en) Device, system and method of taking action on hack tool for online game
US20220193555A1 (en) Incentivizing fair gameplay through bot detection penalization within online gaming systems

Legal Events

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

Payment date: 20130701

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140630

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160629

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190701

Year of fee payment: 10