KR100483700B1 - 온라인 게임 클라이언트 보안을 위한 실시간 프로세스 불법 접근 및 조작 차단 방법 - Google Patents

온라인 게임 클라이언트 보안을 위한 실시간 프로세스 불법 접근 및 조작 차단 방법 Download PDF

Info

Publication number
KR100483700B1
KR100483700B1 KR1020030087149A KR20030087149A KR100483700B1 KR 100483700 B1 KR100483700 B1 KR 100483700B1 KR 1020030087149 A KR1020030087149 A KR 1020030087149A KR 20030087149 A KR20030087149 A KR 20030087149A KR 100483700 B1 KR100483700 B1 KR 100483700B1
Authority
KR
South Korea
Prior art keywords
api
processing routine
routine
hooking
game
Prior art date
Application number
KR1020030087149A
Other languages
English (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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=34737858&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=KR100483700(B1) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by 주식회사 잉카인터넷 filed Critical 주식회사 잉카인터넷
Priority to KR1020030087149A priority Critical patent/KR100483700B1/ko
Priority to CNA2004100960426A priority patent/CN1624617A/zh
Priority to JP2004347017A priority patent/JP4145290B2/ja
Application granted granted Critical
Publication of KR100483700B1 publication Critical patent/KR100483700B1/ko

Links

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/70Game security or game management aspects
    • A63F13/71Game security or game management aspects using secure communication between game devices and game servers, e.g. by encrypting game data or authenticating players

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Business, Economics & Management (AREA)
  • Computer Security & Cryptography (AREA)
  • General Business, Economics & Management (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명은 API 후킹 기술을 이용하여 해킹 툴이 온라인 게임에 불법적인 접근을 하지 못하도록 하는 온라인 게임 보안을 위한 실시간 프로세스 불법 접근 및 조작 차단 방법에 관한 것이다.
본 발명에 따른 온라인 게임 클라이언트 보안을 위한 실시간 프로세스 불법 접근 및 조작 차단 방법은, 컴퓨터 시스템에 API(Application Programming Interface) 처리 루틴의 실행을 허용 또는 차단하는 API 후킹 루틴을 설치하는 단계와; 컴퓨터 시스템 내에서 실행 중인 프로세스가 사용하는 API를 후킹하는 단계와; 상기 후킹한 API에 대해 상기 API 후킹 루틴을 실행하고 상기 API 처리 루틴의 실행을 허용할 지를 판단하는 단계와; 상기 API 처리 루틴이 허용되면 상기 API 처리 루틴을 실행하는 단계를 포함한다.

Description

온라인 게임 클라이언트 보안을 위한 실시간 프로세스 불법 접근 및 조작 차단 방법{Method to cut off an illegal process access and manipulation for the security of online game client by real-time}
본 발명은 온라인 게임 보안방법에 관한 것으로서, 보다 상세하게 설명하면 API 후킹 기술을 이용하여 해킹 툴이 온라인 게임에 불법적인 접근을 하지 못하도록 하는 온라인 게임 클라이언트 보안을 위한 실시간 프로세스 불법 접근 및 조작 차단 방법에 관한 것이다.
초고속인터넷이 널리 보급되면서 온라인 게임인구가 급속도로 증가하고 수많은 온라인 게임들이 개발되었지만 아직까지 게임 보안에 대한 인식과 개념이 매우 약하다. 게임에서의 해킹을 줄여서 핵이라고 하는데, 일반적인 해킹은 특정 컴퓨터의 관리자 권한을 얻어내거나 그 컴퓨터에 접속하여 데이터를 조작하는 일을 의미하나, 게임에서의 핵은 특정 게임 클라이언트의 파일이나 메모리 등을 조작하는 프로그램을 가리킨다.
게임에서의 핵은 게임 프로세스의 메모리를 조작하여 능력치나 체력 등과 같은 특정 데이터를 바꾸는 것으로서, 패키지 게임에서의 핵 사용은 남에게 피해를 주지 않지만, 온라인 게임에서의 핵 사용은 사용자들간의 밸런스 붕괴, 게임서버로의 가중한 부하 등과 같은 문제를 일으킬 수 있다. 다시 설명하면, 온라인 게임에서 일부 사용자들이 비정상적인 방법으로 이득을 보면서 게임(play)을 하게 되면, 다른 사용자들과의 균형이 무너지게 되고, 심각한 경우에는 온라인 게임 전체의 밸런스가 깨어지고 게임서버에 과부하가 발생하게 된다.
따라서, 온라인 게임에서 게임 핵을 사용하지 못하도록 보안이 강화되어야 하는데, 온라인 게임에서의 보안은 다른 보안과는 달리 사용자가 스스로 크랙을 하기 원하기 때문에 보안의 어려움이 따른다. 즉, 사용자들은 온라인 게임의 보안을 제거하고 게임 핵을 설치하고 싶어하는데, 온라인 게임에서의 보안은 이러한 사용자들을 대상으로 보안을 해야 한다. 이는 마치 바이러스에 걸리고 싶어서 백신 프로그램을 종료시키거나 설치 제거하려는 사용자들을 대상으로 보안을 해줘야 하는 상황과 같다.
이러한 경우 게임 개발사에서 게임 클라이언트 자체에 보안코드를 포함시키는 것이 이상적이나, 게임사에서 직접 보안까지 신경쓰기에는 시간이나 비용이 많이 소요되고, 계속 업데이트되는 수많은 핵들을 막기 위해 매번 게임 클라이언트를 업데이트 하는 것도 곤란하다. 또한, 일부 크래커들이 게임 클라이언트를 역공학 기술(Reverse Engineering)을 사용하여 분석한 뒤 클라이언트 내의 보안 코드를 스킵(skip)하게 조작하기 때문에 게임 클라이언트에 포함된 보안코드 자체가 무색하게 될 수도 있다.
따라서, 다양하고 강력한 게임 핵으로부터 게임을 보호하기 위한 보안 솔루션에 대한 필요성이 대두되었다.
종래의 온라인 게임 보안 솔루션으로는 본원 출원인이 개발한 파인드핵과 안철수연구소가 개발한 MFGS가 있다. 이 두 제품은 모두 바이러스백신(anti virus) 엔진을 이용하여 단순히 해킹 툴의 패턴을 추가하고 주기적으로 프로세스들을 검사하여 등록된 해킹 패턴과 일치한 프로그램이 있으면 강제 종료시키는 방법을 사용하였다.
그러나, 이러한 게임 보안방법은 계속 쏟아져 나오는 수많은 새로운 해킹 툴들을 모두 패턴에 추가하여야 하는 문제가 있고, 기존의 해킹 툴도 다시 컴파일을 하거나 실행파일을 압축하면 프로그램의 패턴이 변형되기 때문에 더 이상 검출되지 않는 문제점이 있다.
또한, 사용자가 온라인 게임 보안기능을 정지시키고 해킹 툴을 사용하기를 원하기 때문에, 온라인 게임 보안 프로그램을 강제 종료시키거나 보안기능을 일시 정지시키거나 보안 프로그램 자체를 메모리 해킹하여 무력화시키기도 하는데, 종래에는 이러한 게임 보안 프로그램에 대한 자체 보안은 전혀 이루어지지 않는 문제점이 있다.
상기한 종래기술의 문제점을 해결하기 위하여 안출된 본 발명의 목적은 API 후킹 기술을 이용하여 해킹 툴이 게임 프로세스로의 불법적인 접근 및 보안 프로그램을 무력화시키는 접근을 차단하는 온라인 게임 클라이언트 보안을 위한 실시간 프로세스 불법 접근 및 조작 차단 방법을 제공하기 위한 것이다.
상기한 목적을 달성하기 위한 본 발명에 따른 온라인 게임 클라이언트 보안을 위한 실시간 프로세스 불법 접근 및 조작 차단 방법은, 컴퓨터 시스템에 API(Application Programming Interface) 처리 루틴의 실행을 허용 또는 차단하는 API 후킹 루틴을 생성하는 단계와;
상기 컴퓨터 시스템에서 실행 중인 프로세스가 사용하는 API를 후킹하는 단계와;
상기 후킹한 API에 대해 상기 API 후킹 루틴을 실행하고 상기 API 처리 루틴의 실행을 허용할 지를 판단하는 단계와;
상기 API 처리 루틴이 허용되면 상기 API 처리 루틴을 실행하는 단계를 포함한 것을 특징으로 한다.
바람직하게는, 상기 컴퓨터 시스템 내에서 실행 중인 프로세스의 메모리에 상기 API 후킹 루틴을 삽입하는 단계를 더 포함하고,
상기 API 후킹 루틴을 삽입하는 단계는, 상기 API 후킹 루틴을 삽입할 삽입 대상 프로세스의 PID(Process ID)로 상기 삽입 대상 프로세스의 모든 권한으로 열고 상기 삽입 대상 프로세스 핸들을 저장하는 단계와; 상기 삽입 대상 프로세스 핸들로 상기 삽입 대상 프로세스에 읽기/쓰기/실행 가능한 메모리를 할당하는 단계와; 상기 할당된 메모리에 상기 API 후킹 루틴을 기록하는 단계와; 상기 API 후킹 루틴의 시작번지의 쓰레드를 생성하여 상기 API 후킹 루틴을 실행하는 단계를 포함한다.
바람직하게는, 상기 API 후킹 루틴을 실행하는 단계는, 상기 후킹한 API를 사용한 현재 프로세스를 검출하는 단계와; 상기 현재 프로세스의 상기 API 사용 권한과 상기 API의 대상 프로세스와 상기 API 작업 종류를 파악하는 단계와; 상기 현재 프로세스의 상기 API 사용 권한과 상기 API의 대상 프로세스와 상기 API 작업 종류에 따라 상기 API 처리 루틴을 허용할 지를 판단하는 단계를 포함한다.
이하, 첨부된 도면을 참조하며 본 발명의 한 실시예에 따른 프로세스 불법 접근 및 조작 차단 방법을 보다 상세하게 설명하면 다음과 같다.
본 발명의 한 실시예를 설명하기에 앞서, 본 명세서에서 사용되는 용어에 대해 간략하게 설명한다.
핵(Hack); 특정 게임 클라이언트의 파일이나 메모리 등을 조작하는 프로그램.
패치(Patch); 프로그램의 특정 부분의 내용을 다른 것으로 바꾸는 작업. 핵이 게임 클라이언트의 특정 메모리 부분을 바꾸는 작업을 가리키기도 하는데, 이때 핵은 코드나 데이터를 조작하여 자신이 원하는 대로 게임 클라이언트의 실행을 바꿀 수 있다.
역공학(Reverse Engineering); 실행파일(exe, dll)을 조작하여 프로그램의 흐름을 바꾸는 일. 역공학 기술을 이용하면 실행파일의 기계어 코드를 어셈블리로 바꾸어 코드를 분석한 후 필요한 곳을 수정하여 다시 실행파일로 만들 수 있다.
오토마우스; 자동으로 마우스의 입력을 게임에게 전달하여 사용자 없이도 자동 전투가 가능하게 할 수 있다.
매크로(Macro); 오토마우스의 발전된 형태로서, 프로그램을 짜듯이 원하는 키보드나 마우스의 입력을 만들어 놓고 자동으로 그 입력을 게임에게 전달하여 반복 실행하도록 할 수 있다.
게임 핵; 대표적인 게임 핵은 주로 게임 프로세스의 메모리를 조작하여 능력치나 체력과 같은 특정 데이터를 바꾼다. 게임 핵은 주로 게임 프로세스의 메모리를 조작하는 형태이고, 오토마우스는 마우스나 키보드 이벤트를 발생시켜 게임 프로세스에게 전달하는 형태이다.
이러한 게임 핵에 관계되는 메모리 접근 관련 API(Application Programming Interface)로는 ReadProcessMemory, WriteProcessMemory, OpenProcess 등이 있고, 오토마우스에 관계되는 이벤트 발생 API로는 SendInput, SendMessage, PostMessage, keybd_event, mouse_event 등이 있다. 즉, 해킹 툴은 OpenProcess, ReadProcessMemory, WriteProcessMemory, SendInput, SendMessage, PostMessage, keybd_event, mouse_event 등의 API를 이용하여 게임 프로세스에게 접근하여 게임 핵과 오토마우스 기능을 실행한다.
본 발명에서는 해킹 툴이 게임 핵 또는 오토마우스를 실행하기 위해 게임 프로세스에게 접근할 때 사용하는 상술한 API들을 후킹(hooking)하여, 해당 API의 대상이 게임인 지 여부와 불법적인 접근인 지 여부를 판단하여 해당 API 루틴을 실행시키거나 실행되지 못하도록 차단한다. 여기서, API 후킹이란 프로그램이 사용하는 명령을 중간에 가로채어 사용된 명령어나 파라메터를 보거나 조작하는 기술을 말한다.
이를 위하여, 본 출원인은 각 운영체제별 API 후킹 엔진을 개발하고, 후킹된 API의 인자(argument) 또는 파라메터(parameter)를 분석하여 해당 API가 게임 프로세스로의 불법적인 접근인 지를 판단하는 기술을 개발한다.
도 1은 본 발명의 한 실시예에 따른 윈도우 운영체제 환경에서 API 후킹 엔진을 적용한 예를 도시한 블록도이다.
사용자가 윈도우를 구동하고 응용프로그램을 실행시키면, 해당 응용프로그램을 구동하기 위한 프로세스가 윈도우 시스템(100)에서 실행된다.
본 발명에서는 윈도우 시스템(100)에서 실행된 프로세스의 종류를 허용 프로세스(110)와 일반 프로세스(120)로 구분한다. 허용 프로세스(110)는 API가 차단될 경우 시스템이 정지되거나 불안정해질 소지가 있는 프로세스로서, 시스템 프로세스, 게임 프로세스, 보안 프로세스가 포함된다. 일반 프로세스(120)는 허용 프로세스(110)를 제외한 나머지 모든 프로세스로서, API 후킹 엔진(130)이 삽입되어 API 후킹 엔진(130)에 의해 감시받는 프로세스이다. API 후킹 엔진은 후킹할 API 명령에 각각 매핑된 API 후킹 루틴을 포함한다. 게임 해킹 프로세스가 실행되면, 이 게임 해킹 프로세스는 일반 프로세스로 구분되기 때문에 API 후킹 엔진이 삽입되어 API 후킹 엔진에 의해 감시를 받는다.
허용 프로세스(110)가 API 명령을 사용하면 윈도우 시스템(100)은 해당 API 명령에 대한 API 처리 루틴을 포함하는 시스템 DLL(dynamic linking library)(140)을 호출하고, 그 API 처리 루틴의 실행 결과값을 허용 프로세스(110)에게 전달한다. 한편, 일반 프로세스(110)가 API 명령을 사용하면 API 후킹 루틴(130)이 동작하는데, API 후킹 루틴(130)은 해당 API 명령의 대상 프로세스와 접근 권한을 판단하여 해당 API 명령을 허용하거나 차단한다. 윈도우 시스템(100)은 API 후킹 루틴(130)에서 허용된 API 명령에 대해 시스템 DLL(140)을 호출하고, 시스템 DLL(140)로부터 입력되는 실행 결과값을 해당 일반 프로세스(120)에게 전달한다.
도 2는 본 발명의 한 실시예에 따른 프로세스 불법 접근 및 조작 차단 방법을 도시한 동작 흐름도이다.
먼저, 윈도우 시스템에 API 후킹 엔진을 입력받고(S210), 실행 중인 허용 프로세스를 제외한 일반 프로세스에 API 후킹 엔진을 삽입한다(S220). 그리고, 일반 프로세스가 API를 사용하면, 그 사용 API를 후킹하여 API 후킹 루틴을 실행한다(S230). API 후킹 루틴 실행 결과 해당 API 처리가 허용이면(S240) 해당 API 처리 루틴을 실행한 후(S250) API 처리 결과를 해당 일반 프로세스에게 전달한다(S260). API 후킹 루틴 실행 결과 해당 API 처리가 허용되지 않으면(S240) 해당 API 처리 루틴을 실행하지 않은 채 그 API 처리 결과를 해당 일반 프로세스에게 전달한다(S260).
여기서, API 후킹 엔진이 후킹할 API로는 앞서 언급한 바와 같이 게임 핵에 사용되는 ReadProcessMemory 및 WriteProcessMemory와, 오토마우스에 사용되는 keybd_event 및 mouse_event 등이 포함된다.
이하에서는 도 2의 각 단계에 대해 상세하게 설명한다.
단계 S210에서 입력된 API 후킹 엔진은 각각의 후킹할 API에 대한 API 후킹 루틴을 가진다. 예컨대, OpenProcess API와 매핑된 API 후킹 루틴이 HookedOpenProcess라고 가정할 때, 프로세스가 OpenProcess API를 사용하면 해당 OpenProcess API가 호출되기 전에 HookedOpenProcess가 호출되도록 한다. 이 HookedOpenProcess는 각 인자와 파라메터 정보를 분석하여 해당 API 처리 루틴을 실행할 지 아니면 차단할 지를 판단한다. 각 API 후킹 루틴의 실행과정은 단계 S230에 대한 설명에서 후술하기로 한다.
단계 S220은 실행 중인 프로세스 중 API 후킹 엔진을 삽입해야 할 삽입 대상 프로세스에 API 후킹 엔진을 삽입하는 단계로서, 도 3은 이 API 후킹 엔진 삽입 서브루틴을 도시한 상세 흐름도이다. 윈도우 운영체제에서는 각 프로세스가 자기에게 할당된 메모리 영역에서만 코드를 실행할 수 있기 때문에 삽입 대상 프로세스에 API 후킹 엔진을 삽입하는 작업이 필요하다. 여기서, 삽입 대상 프로세스에는 API 후킹 엔진이 삽입되지 않은 채 실행 중인 일반 프로세스가 포함된다.
윈도우 95/98/me 계열에서는 모든 프로세스가 공유하는 메모리에 API 후킹 루틴을 삽입하면 모든 프로세스가 접근할 수 있기 때문에, 하나의 삽입 대상 프로세스의 공유 메모리 영역에만 API 후킹 엔진을 삽입한다. 윈도우 NT/2000/XP 계열에서는 모든 삽입 대상 프로세스에 각각 API 후킹 루틴을 삽입시켜야 하므로, 현재 실행중인 모든 삽입 대상 프로세스들의 PID(Process ID)를 얻은 후 모든 삽입 대상 프로세스에 API 후킹 루틴을 삽입시킨다.
도 3을 참조하면서 삽입 대상 프로세스에 API 후킹 엔진을 삽입하는 과정을 설명하면, 먼저 삽입 대상 프로세스를 연다(S221). 이때, OpenProcess 명령을 사용하는데, 삽입 대상 프로세스의 PID로 해당 삽입 대상 프로세스를 모든 권한으로 오픈하고, 이때 얻어진 프로세스 핸들(hProcess)을 저장한다.
다음, 단계 S221에서 얻어진 프로세스 핸들(hProcess)로 그 삽입 대상 프로세스에 읽기/쓰기/실행이 가능한 메모리를 할당한다(S222). 그리고, 할당된 메모리 주소를 저장한다.
다음, 단계 S222에서 할당된 메모리에 API 후킹 엔진을 기록한다(S223). 이때, WriteProcessMomory 명령을 사용하는데, 단계 S221에서 얻어진 프로세스 핸들(hProcess)과 단계 S222에서 할당된 메모리의 주소와 API 후킹 엔진의 주소 및 크기를 파라메터로 하여, 삽입 대상 프로세스의 할당된 메모리에 API 후킹 엔진을 기록한다.
다음, 후킹을 실행할 쓰레드(Thread)를 생성하여 실행시킨다(S224). 이때, CreateRemoteThread 명령을 사용한다. 프로세스 핸들(hProcess)에 기록된 API 후킹 엔진의 시작번지의 쓰레드를 생성하여 실행시키고, 생성된 쓰레드 핸들(hThread)과 쓰레드 ID를 저장한다. 단계 S222에서 할당된 메모리 영역의 가장 앞부분에는 후킹을 실행할 코드가 있으므로 생성된 쓰레드에 의해 API 후킹이 이루어진다. 이후, 삽입 대상 프로세스에서 후킹된 API는 API 후킹 루틴을 거치게 된다.
도 4는 API 후킹 엔진이 삽입된 프로세스의 메모리를 도시한 구조도이다. 도면에서 (a)는 단계 S222에서 할당된 메모리의 영역이고, (b)와 (c)는 API 후킹 엔진으로서 (b)는 API 후킹 실행코드이고 (c)는 API 후킹 루틴이다. 즉, 단계 S222에서 할당된 메모리 영역에 API 후킹 엔진이 삽입되는데, API 후킹 엔진은 API 후킹 실행코드와 API 후킹 루틴으로 이루어진다. 이때, 후킹 쓰레드의 시작 주소가 API 후킹 실행코드이므로, 후킹 쓰레드에 의해 API 후킹이 이루어진다.
다음, 단계 S230은 프로세스에서 API를 후킹하여 후킹 루틴을 실행하는 단계이다. API 후킹 방법으로는 여러 가지가 있으나 본 명세서에서 사용한 방법은, API 처리 루틴의 첫 부분을 보관한 후 API 후킹 루틴으로의 점프 명령을 덮어쓰는(overwrite) 방법을 이용한다. 즉, 도 4에 도시된 바와 같이 시스템 DLL(d)의 API 처리 루틴에 API 후킹 루틴으로의 점프 명령을 삽입하여, API가 사용되어 API 처리루틴이 실행될 때 API 후킹 루틴이 먼저 실행될 수 있도록 한다.
이러한 방법은 이미 임의의 프로그램이 실행된 상태에서 API 후킹 엔진이 삽입되더라도, 해당 프로그램이 API를 호출하면 API 처리 루틴이 실행되기 전에 API 후킹 루틴이 먼저 실행되기 때문에, 이미 실행중이던 프로그램도 API 후킹이 가능해지는 장점이 있다. 따라서, 본 발명의 실시예에 따르면 이미 실행해 놓은 해킹 툴에 대해서도 API 후킹으로 인한 보안 기능이 실행되는 장점이 있다.
위의 단계 S230에서 API 후킹 루틴이 실행되면 후킹된 API를 분석하여 API 처리루틴의 실행 여부를 판단하는데, 이에 대한 설명은 후술하기로 한다.
단계 S250은 단계 S230의 API 후킹 루틴 실행 결과, API를 허용한 경우 원래의 API 처리 루틴을 실행하는 단계로서, 단계 S230에서 보관된 API 처리 루틴의 첫 부분을 이용하여 원래의 API 처리 루틴을 호출한다. 보관된 API 처리 루틴의 첫 부분을 기계어 코드로 어셈블리하여 명령어 길이를 알아 내고, 알아낸 명령어 길이에 따라 보관된 부분의 명령어를 실행하고, 일부만 보관된 명령의 경우에는 그 명령의 나머지부분을 원래의 API 처리 루틴에서 가져와 실행한다. 그리고, 원래의 API 처리 루틴으로 점프한다.
이제 API 후킹 루틴에서 API를 허용할 지를 판단하는 과정을 설명한다. 도 5는 API 후킹 루틴 실행 서브루틴을 도시한 상세 흐름도이다.
본 발명에 따른 API 후킹 엔진은 후킹할 API와 그에 따른 API 후킹 루틴을 연결한다. 즉, API 후킹 루틴이 호출되면 어떠한 API가 호출되었는 지를 알 수 있다. 따라서, OpenProcess, ReadProcessMemory, WriteProcessMemory 등과 같은 메모리 관련 API가 호출되면 메모리를 조작하려는 해킹 툴일 가능성이 있기 때문에 도 5의 API 후킹 루틴을 실행하고, SendInput, SendMessage, PostMessage, mouse_event, keybd_event 등과 같은 메시지 관련 API가 호출되면 마우스나 키보드 메시지를 전달하려는 오토마우스나 매크로 프로그램일 가능성이 있기 때문에 도 5의 API 후킹 루틴을 실행한다.
도 5를 참조하면, 먼저 현재 API를 사용한 프로세스, 즉 API 후킹 루틴을 호출한 현재 프로세스(current process) 정보를 얻는다(S231). 윈도우 시스템에서는 프로세스 컨텍스트(process context) 내에서 API 호출이 일어난다. 그러므로 GetCurrentProcessID() 명령을 사용하여 현재 컨텍스트의 PID를 얻을 수 있으며, 이 PID는 윈도우 환경 내에서 프로세스마다 유일한 값이 할당되므로, 이 PID를 알아내면 현재 프로세스를 알 수 있다.
현재 프로세스가 허용된 프로세스 즉, 게임 프로세스나 보안 프로세스일 경우(S232), 해당 API 처리를 허용하여 실제 API 처리 루틴을 호출한다(S237). 단, 일부 해킹 툴의 경우 게임 프로세스 안으로 해킹 툴의 DLL이 들어와 메모리 관련 API를 사용하기도 하는데, 이럴 경우를 대비하여 게임 프로세스가 자기 자신인 게임 프로세스를 대상으로 메모리 관련 API를 사용하면 해당 API 처리를 허용하지 않는다.
그러나, 현재 프로세스가 허용된 프로세스가 아니면(S232), API 파라메터를 분석하여 대상 프로세스와 작업의 종류를 알아낸다(S233). 대상 프로세스가 게임 프로세스이거나 보안 프로세스가 아니면(S234), 해당 API 처리를 허용하여 실제 API 처리 루틴을 호출한다(S237). 단계 S234에서 대상 프로세스가 게임 프로세스이거나 보안 프로세스이면 작업 종류를 파악하여 작업의 종류가 메모리 조작이나 메시지 전달이면(S235), 해당 API 처리 루틴을 차단한다(S236). 그러나, 단계 S235에서 작업의 종류가 메모리 조작이나 메시지 전달이 아니면(S235), 해당 API 처리를 허용하여 실제 API 처리 루틴을 호출한다(S237). 즉, 임의의 일반 프로세스(해킹 툴)가 게임 프로세스나 보안 프로세스를 대상으로 메시지 조작 API나 메시지 전달 API를 실행하면, 이를 불법적인 메시지 조작이나 메시지 전달인 것으로 인지하고 해당 API 처리 루틴의 실행을 차단한다.
일 예로서, OpenProcess, WriteProcessMemory, SendMessage API를 분석하여 불법적인 접근인 지를 판단하는 방법을 설명한다.
OpenProcess API에는 어떠한 권한으로 프로세스를 여는지, 열려고 하는 대상 프로세스의 PID 정보가 포함된다. 대상 프로세스의 PID가 게임 프로세스 또는 보안 프로세스의 PID이면, 게임 프로세스나 보안 프로세스를 열려는 시도이므로 해당 API 처리 루틴을 차단한다. 그러나, 바이러스 백신(anti-virus)이나 윈도우 탐색기(explorer) 등의 프로그램에서도 이 명령을 사용하여 대상 프로세스의 정보를 얻으려 하기 때문에, 대상 프로세스를 어떠한 권한으로 열 것인 지를 체크한다. 즉, 대상 프로세스가 게임 프로세스나 보안 프로세스이더라도 단지 프로세스의 이름이나 경로 정보를 얻으려는 경우에는 해당 API 처리 루틴을 허용하고, 그렇지 않은 경우에는 차단한다.
WriteProcessMemory API에는 메모리에 기록할 대상 프로세스의 핸들 정보가 포함된다. 이 대상 프로세스의 핸들 정보는 PID와는 달리 프로세스를 구별할 수 있는 유일한 값이 아니므로, 이 대상 프로세스의 핸들 정보를 PID로 변환해야 한다.
대상 프로세스의 핸들 정보를 PID로 변환하는 방법을 도 6을 참조하면서 설명하면 다음과 같다. 도 6은 프로세스 데이터베이스와 핸들 테이블을 도시한 구조도이다. 각 프로세스가 가지고 있는 프로세스 데이터베이스(PDB)(61)에 저장된 핸들 테이블(Handle Table)(62)을 조사하여, 대상 프로세스의 핸들이 가리키는 대상 프로세스의 PDB(63)를 얻는다. 이 대상 프로세스의 PDB(63)에 각 윈도우 버전마다 정해진 값을 배타적논리합연산(XOR) 연산하면, 그 연산 결과가 대상 프로세스의 PID가 된다. 이렇게 대상 프로세스의 PID가 얻어지면, 대상 프로세스의 PID와 게임 프로세스 또는 보안 프로세스의 PID를 비교하여 같으면 해당 API 처리 루틴을 차단한다. 이렇게 하면 불법적인 메모리 조작을 하려는 해킹 툴을 원천적으로 차단할 수 있다.
다음, SendMessage API에는 메시지를 전달할 윈도우 핸들 정보와 전달하고자 하는 메시지 종류가 포함된다. 이 윈도우 핸들 정보는 유일한 값이므로 게임의 윈도우 핸들과 비교하여 같으면 그 대상이 게임이므로 차단하는데, 전달하고자 하는 메시지 종류가 마우스나 키보드 메시지이면 차단한다. 이렇게 하면 오토마우스나 매크로 프로그램으로부터 게임을 원천적으로 보호할 수 있다.
본 명세서에서는 본 발명이 윈도우 운영체제 내에 적용한 실시예에 대해서만 기재하였으나, 본 발명은 이에 한정되지 아니한다. 즉, 본 발명은 어떠한 운영체제에든지 적용 가능하며, 운영체제에 따라서 API 후킹 루틴을 삽입하는 단계가 생략될 수도 있다.
이상에서 본 발명에 대한 기술 사상을 첨부 도면과 함께 서술하였지만, 이는 본 발명의 가장 양호한 일 실시예를 예시적으로 설명한 것이지 본 발명을 한정하는 것은 아니다. 또한, 이 기술 분야의 통상의 지식을 가진 자이면 누구나 본 발명의 기술 사상의 범주를 이탈하지 않는 범위 내에서 다양한 변형 및 모방이 가능함은 명백한 사실이다.
이상과 같은 본 발명에 따르면 특정 API를 사용하는 해킹 툴이나 오토마우스에 대한 원천 차단이 가능하기 때문에, 온라인 게임의 게임자와 온라인 게임 서버를 보호할 수 있는 잇점이 있다. 아울러, 온라인 게임 내에서 게임자들 간의 정당한 플레이와 선의의 경쟁이 가능하게 해주며, 궁극적으로 온라인 게임 문화를 건전하게 조성하는데 기여할 수 있는 잇점이 있다.
도 1은 본 발명의 한 실시예에 따른 윈도우 운영체제 환경에서 API 후킹 엔진을 적용한 예를 도시한 블록도,
도 2는 본 발명의 한 실시예에 따른 프로세스 불법 접근 및 조작 차단 방법을 도시한 동작 흐름도,
도 3은 도 2에 도시된 API 후킹 엔진 삽입 서브루틴을 도시한 상세 동작 흐름도,
도 4는 API 후킹 엔진이 삽입된 프로세스의 메모리를 도시한 구조도,
도 5는 도 2에 도시된 API 후킹 루틴 실행 서브루틴을 도시한 상세 동작 흐름도,
도 6은 프로세스 데이터베이스와 핸들 테이블을 도시한 구조도이다.
< 도면의 주요 부분에 대한 부호의 설명 >
100 : 윈도우 시스템 110 : 허용 프로세스
120 : 일반 프로세스 130 : API 후킹 루틴
140 : 시스템 DLL(dynamic linking library)

Claims (15)

  1. 삭제
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 컴퓨터 시스템에 API(Application Programming Interface) 처리 루틴의 실행을 허용 또는 차단하는 API 후킹 루틴을 설치하는 단계와; 상기 컴퓨터 시스템에서 실행 중인 프로세스가 사용하는 API를 후킹하는 단계와; 상기 후킹한 API에 대해 현재 프로세스를 검출하고, 상기 현재 프로세스의 상기 API 사용 권한과 상기 API의 대상 프로세스와 상기 API 작업 종류를 파악하며, 상기 현재 프로세스의 상기 API 사용 권한과 상기 API의 대상 프로세스와 상기 API 작업 종류에 따라 상기 API 후킹 루틴을 실행하고 상기 API 처리 루틴의 실행을 허용할 지를 판단하는 단계와; 상기 API 처리 루틴이 허용되면 상기 API 처리 루틴을 실행하는 단계를 포함하는 컴퓨터 시스템에 있어서,
    상기 API 처리 루틴을 허용할 지를 판단하는 단계는,
    상기 현재 프로세스가 상기 API 사용 권한이 허용된 프로세스이면 상기 API 처리 루틴을 허용하고,
    상기 현재 프로세스가 상기 API 사용 권한이 허용된 프로세스이고 상기 API 대상 프로세스가 상기 현재 프로세스를 대상으로, 메모리와 관련된 OpenProcess API, ReadProcessMemory API, WriteProcessMemory API를 사용하면, 상기 API 처리 루틴을 차단하는 것을 특징으로 하는 온라인 게임 클라이언트 보안을 위한 실시간 프로세스 불법 접근 및 조작 차단 방법.
  12. 제 11 항에 있어서, 상기 API 처리 루틴을 허용할 지를 판단하는 단계는,
    상기 현재 프로세스가 상기 API 사용 권한이 허용된 프로세스가 아니고 상기 API 대상 프로세스가 게임 프로세스와 보안 프로세스가 아니면, 상기 API 처리 루틴을 허용하는 것을 특징으로 하는 온라인 게임 클라이언트 보안을 위한 실시간 프로세스 불법 접근 조작 차단 방법.
  13. 제 11 항에 있어서, 상기 API 처리 루틴을 허용할 지를 판단하는 단계는,
    상기 현재 프로세스가 상기 API 사용 권한이 허용된 프로세스가 아니고 상기 API 대상 프로세스가 게임 프로세스 또는 보안 프로세스인 경우, 상기 API 작업 종류가 OpenProcess, ReadProcessMemory, WriteProcessMemory와 같은 메모리 조작과 관련된 API 또는 SendInput, SendMessage, PostMessage, mouse_event, keybd_event와 같은 메시지 전달과 관련된 API가 아니면, 상기 API 처리 루틴을 허용하는 것을 특징으로 하는 온라인 게임 클라이언트 보안을 위한 실시간 프로세스 불법 접근 조작 차단 방법.
  14. 제 11 항에 있어서, 상기 API 처리 루틴을 허용할 지를 판단하는 단계는,
    상기 현재 프로세스가 상기 API 사용 권한이 허용된 프로세스가 아니고 상기 API 대상 프로세스가 게임 프로세스 또는 보안 프로세스인 경우, 상기 API 작업 종류가 OpenProcess, ReadProcessMemory, WriteProcessMemory와 같은 메모리 조작과 관련된 API 또는 SendInput, SendMessage, PostMessage, mouse_event, keybd_event와 같은 메시지 전달과 관련된 API이면, 상기 API 처리 루틴을 차단하는 것을 특징으로 하는 온라인 게임 클라이언트 보안을 위한 실시간 프로세스 불법 접근 조작 차단 방법.
  15. 컴퓨터 시스템에 API(Application Programming Interface) 처리 루틴의 실행을 허용 또는 차단하는 API 후킹 루틴을 설치하는 단계와; 상기 컴퓨터 시스템에서 실행 중인 프로세스가 사용하는 API를 후킹하는 단계와; 상기 후킹한 API에 대해 현재 프로세스를 검출하고, 상기 현재 프로세스의 상기 API 사용 권한과 상기 API의 대상 프로세스와 상기 API 작업 종류를 파악하며, 상기 현재 프로세스의 상기 API 사용 권한과 상기 API의 대상 프로세스와 상기 API 작업 종류에 따라 상기 API 후킹 루틴을 실행하고 상기 API 처리 루틴의 실행을 허용할 지를 판단하는 단계와; 상기 API 처리 루틴이 허용되면 상기 API 처리 루틴을 실행하는 단계를 포함하는 컴퓨터 시스템에 있어서,
    상기 API 처리 루틴을 허용할 지를 판단하는 단계는,
    상기 현재 프로세스가 상기 API 사용 권한이 허용된 프로세스가 아니고 상기 API 대상 프로세스가 게임 프로세스 또는 보안 프로세스인 경우, 상기 API 작업 종류가 OpenProcess, ReadProcessMemory, WriteProcessMemory와 같은 메모리 조작과 관련된 API 또는 SendInput, SendMessage, PostMessage, mouse_event, keybd_event와 같은 메시지 전달과 관련된 API이면, 상기 API 처리 루틴을 차단하는 것을 특징으로 하는 온라인 게임 클라이언트 보안을 위한 실시간 프로세스 불법 접근 조작 차단 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1020030087149A 2003-12-03 2003-12-03 온라인 게임 클라이언트 보안을 위한 실시간 프로세스 불법 접근 및 조작 차단 방법 KR100483700B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020030087149A KR100483700B1 (ko) 2003-12-03 2003-12-03 온라인 게임 클라이언트 보안을 위한 실시간 프로세스 불법 접근 및 조작 차단 방법
CNA2004100960426A CN1624617A (zh) 2003-12-03 2004-11-26 阻断对游戏进程非法访问以及操作游戏进程的方法
JP2004347017A JP4145290B2 (ja) 2003-12-03 2004-11-30 プロセスのアクセス及び操作遮断方法並びにその方法をコンピュータに実行させるためのコンピュータで読み取り可能な記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020030087149A KR100483700B1 (ko) 2003-12-03 2003-12-03 온라인 게임 클라이언트 보안을 위한 실시간 프로세스 불법 접근 및 조작 차단 방법

Publications (1)

Publication Number Publication Date
KR100483700B1 true KR100483700B1 (ko) 2005-04-19

Family

ID=34737858

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030087149A KR100483700B1 (ko) 2003-12-03 2003-12-03 온라인 게임 클라이언트 보안을 위한 실시간 프로세스 불법 접근 및 조작 차단 방법

Country Status (3)

Country Link
JP (1) JP4145290B2 (ko)
KR (1) KR100483700B1 (ko)
CN (1) CN1624617A (ko)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009131371A2 (en) * 2008-04-22 2009-10-29 Ahnlab., Inc. Method for securing on-line electronic transaction program
KR100968268B1 (ko) 2007-11-20 2010-07-06 주식회사 안철수연구소 마우스 및 키보드 자동 입력 감지 방법
KR101071119B1 (ko) * 2009-09-24 2011-10-07 주식회사 잉카인터넷 핵 툴 사용 흔적을 이용한 게임 보안방법
WO2011149150A1 (ko) * 2010-05-25 2011-12-01 (주)잉카인터넷 온라인 게임에서 핵 툴 사용 정보 표시방법
WO2012020948A2 (ko) * 2010-08-10 2012-02-16 (주)잉카인터넷 접근차단 게임 핵 프로세스 검출 및 실행차단방법
KR101201495B1 (ko) 2010-08-10 2012-11-14 주식회사 잉카인터넷 컴퓨터시스템에서 자동 입력 차단장치 및 방법
KR101267725B1 (ko) 2010-08-30 2013-05-24 주식회사 엔씨소프트 온라인 게임의 봇 프로그램 패턴 수집방법
KR101308112B1 (ko) 2012-01-02 2013-09-12 (주)네오위즈게임즈 메모리 조작 방지 방법 및 클라이언트 단말

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4844102B2 (ja) 2005-11-30 2011-12-28 富士ゼロックス株式会社 サブプログラム及びそのサブプログラムを実行する情報処理装置
EP1901190A1 (en) * 2006-09-15 2008-03-19 Sony DADC Austria AG Method and system for managing access to add-on data files
KR100843701B1 (ko) * 2006-11-07 2008-07-04 소프트캠프(주) 콜 스택에 기록된 정보를 이용한 에이피아이 확인방법
US8523666B2 (en) 2007-05-25 2013-09-03 Microsoft Corporation Programming framework for closed systems
CN101414341B (zh) * 2007-10-15 2014-12-10 北京瑞星信息技术有限公司 一种软件自我保护的方法
CA2725992C (en) * 2008-05-30 2018-01-16 Irdeto Canada Corporation Authenticated database connectivity for unattended applications
KR101074624B1 (ko) * 2008-11-03 2011-10-17 엔에이치엔비즈니스플랫폼 주식회사 브라우저 기반 어뷰징 방지 방법 및 시스템
JP5305864B2 (ja) * 2008-11-28 2013-10-02 ソフトバンクモバイル株式会社 情報処理装置、情報処理方法及び情報処理プログラム
KR101005593B1 (ko) * 2009-04-17 2011-01-05 엔에이치엔비즈니스플랫폼 주식회사 훅을 이용한 컴퓨터 보안 서비스 제공 방법 및 장치
KR101042857B1 (ko) * 2009-09-03 2011-06-20 주식회사 잉카인터넷 해킹 프로세스의 실행 차단방법
JP5377748B2 (ja) 2010-02-18 2013-12-25 株式会社東芝 プログラム
US9003415B2 (en) 2010-05-25 2015-04-07 International Business Machines Corporation Method and apparatus having resistance to forced termination attack on monitoring program for monitoring a predetermined resource
JP5511506B2 (ja) * 2010-05-25 2014-06-04 インターナショナル・ビジネス・マシーンズ・コーポレーション 所定のリソースを監視する監視プログラムの強制終了攻撃に対する耐性を有する装置、所定のリソースを監視する監視プログラムの強制終了攻撃に対する耐性を付与する方法及び該方法を装置で実行することが可能なコンピュータプログラム
CN102073818A (zh) * 2011-01-17 2011-05-25 北京神州绿盟信息安全科技股份有限公司 一种漏洞检测设备和方法
CN103034806B (zh) * 2011-09-30 2016-08-10 腾讯科技(深圳)有限公司 处理操作的方法和终端
JP5825595B2 (ja) * 2012-01-16 2015-12-02 Kddi株式会社 Api実行制御装置およびプログラム
CN103632087B (zh) * 2012-08-21 2017-10-13 腾讯科技(深圳)有限公司 保护进程的方法和装置
CN104077523B (zh) * 2014-06-25 2018-10-16 珠海市君天电子科技有限公司 对软件进行处理的方法和装置
US9460284B1 (en) * 2015-06-12 2016-10-04 Bitdefender IPR Management Ltd. Behavioral malware detection using an interpreter virtual machine
CN105590060A (zh) * 2015-12-21 2016-05-18 北京金山安全软件有限公司 一种目标应用程序的保护方法及装置
CN109711153B (zh) * 2018-12-26 2021-03-19 北京北信源信息安全技术有限公司 一种windows进程保护方法及系统
CN112274916B (zh) * 2020-11-20 2024-05-31 杭州雾联科技有限公司 一种键鼠输入方法、装置、设备及介质

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100968268B1 (ko) 2007-11-20 2010-07-06 주식회사 안철수연구소 마우스 및 키보드 자동 입력 감지 방법
WO2009131371A2 (en) * 2008-04-22 2009-10-29 Ahnlab., Inc. Method for securing on-line electronic transaction program
WO2009131371A3 (en) * 2008-04-22 2010-01-21 Ahnlab., Inc. Method for securing on-line electronic transaction program
KR101071119B1 (ko) * 2009-09-24 2011-10-07 주식회사 잉카인터넷 핵 툴 사용 흔적을 이용한 게임 보안방법
WO2011149150A1 (ko) * 2010-05-25 2011-12-01 (주)잉카인터넷 온라인 게임에서 핵 툴 사용 정보 표시방법
WO2012020948A2 (ko) * 2010-08-10 2012-02-16 (주)잉카인터넷 접근차단 게임 핵 프로세스 검출 및 실행차단방법
WO2012020948A3 (ko) * 2010-08-10 2012-04-19 (주)잉카인터넷 접근차단 게임 핵 프로세스 검출 및 실행차단방법
KR101201495B1 (ko) 2010-08-10 2012-11-14 주식회사 잉카인터넷 컴퓨터시스템에서 자동 입력 차단장치 및 방법
KR101267725B1 (ko) 2010-08-30 2013-05-24 주식회사 엔씨소프트 온라인 게임의 봇 프로그램 패턴 수집방법
KR101308112B1 (ko) 2012-01-02 2013-09-12 (주)네오위즈게임즈 메모리 조작 방지 방법 및 클라이언트 단말

Also Published As

Publication number Publication date
JP2005166051A (ja) 2005-06-23
CN1624617A (zh) 2005-06-08
JP4145290B2 (ja) 2008-09-03

Similar Documents

Publication Publication Date Title
KR100483700B1 (ko) 온라인 게임 클라이언트 보안을 위한 실시간 프로세스 불법 접근 및 조작 차단 방법
JP6829718B2 (ja) 複数のソフトウェアエンティティにわたって悪意あるビヘイビアを追跡するためのシステムおよび方法
KR100645983B1 (ko) 불법 프로세스 검출 모듈 및 그 방법
JP5420734B2 (ja) オブジェクトへの制御されたアクセスを有するソフトウェアシステム
US20050091655A1 (en) Associating runtime objects with a set and controlling access to resources as a function thereof
JP6317435B2 (ja) マルウェア検出のための複雑なスコアリング
KR102206115B1 (ko) 인터프리터 가상 머신을 이용한 행동 멀웨어 탐지
US6779117B1 (en) Authentication program for a computer operating system
US20070028225A1 (en) Method and apparatus for preemptive monitoring of software binaries by instruction interception and dynamic recompilation
JP4828218B2 (ja) 自己記述アーチファクトおよびアプリケーション抽象化
CN102799817B (zh) 用于使用虚拟化技术进行恶意软件保护的系统和方法
KR101242127B1 (ko) Dll 인젝션 기능을 구비한 컴퓨팅 장치 및 dll 인젝션 방법
CN103530563A (zh) 用于更新经授权软件的系统和方法
DK2840496T3 (en) PROCEDURE, SYSTEM AND EXECUTABLE CODE TO MANAGE THE USE OF HARDWARE RESOURCES OF A COMPUTER SYSTEM
US20160246590A1 (en) Priority Status of Security Patches to RASP-Secured Applications
Bank Java security
CN104252594A (zh) 病毒检测方法和装置
US10417015B2 (en) Modified JVM with multi-tenant application domains and class differentiation
JP6787841B2 (ja) アクセス制御装置、アクセス制御方法およびアクセス制御プログラム
KR102463814B1 (ko) 서버 모니터링 방법 및 장치
KR100457405B1 (ko) 타이머 api 후킹 여부 판단방식에 의한 스피드 핵 사용여부 검출방법
JP7119480B2 (ja) アプリケーション実行権限管理装置、方法およびプログラム
JP2024513129A (ja) サイバーセキュリティ脅威に対するエンドポイント検出及び応答
AU2010202883B2 (en) Systems and Methods for Preventing Unauthorized Use of Digital Content
Al-Doori Securing Dynamic Aspect Weaving in Aspect-Oriented Programming (AOP)

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
J206 Request for trial to confirm the scope of a patent right
J301 Trial decision

Free format text: TRIAL DECISION FOR CONFIRMATION OF THE SCOPE OF RIGHT_DEFENSIVE REQUESTED 20051011

Effective date: 20061031

J2X1 Appeal (before the patent court)

Free format text: CONFIRMATION OF THE SCOPE OF RIGHT_DEFENSIVE

J302 Written judgement (patent court)

Free format text: JUDGMENT (PATENT COURT) FOR CONFIRMATION OF THE SCOPE OF RIGHT_DEFENSIVE REQUESTED 20061205

Effective date: 20070823

J303 Written judgement (supreme court)

Free format text: JUDGMENT (SUPREME COURT) FOR CONFIRMATION OF THE SCOPE OF RIGHT_DEFENSIVE REQUESTED 20070913

Effective date: 20080110

J206 Request for trial to confirm the scope of a patent right
J301 Trial decision

Free format text: TRIAL DECISION FOR CONFIRMATION OF THE SCOPE OF RIGHT_AFFIRMATIVE REQUESTED 20130405

Effective date: 20130906

FPAY Annual fee payment

Payment date: 20140203

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20150430

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20180402

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20190401

Year of fee payment: 15