KR101421633B1 - Speed Hack Detection System and Method - Google Patents
Speed Hack Detection System and Method Download PDFInfo
- Publication number
- KR101421633B1 KR101421633B1 KR1020130035713A KR20130035713A KR101421633B1 KR 101421633 B1 KR101421633 B1 KR 101421633B1 KR 1020130035713 A KR1020130035713 A KR 1020130035713A KR 20130035713 A KR20130035713 A KR 20130035713A KR 101421633 B1 KR101421633 B1 KR 101421633B1
- Authority
- KR
- South Korea
- Prior art keywords
- speed
- time
- hooking
- api function
- time information
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 47
- 238000001514 detection method Methods 0.000 title claims description 25
- 230000006870 function Effects 0.000 claims abstract description 76
- 230000008569 process Effects 0.000 claims abstract description 29
- 230000006911 nucleation Effects 0.000 claims description 5
- 238000010899 nucleation Methods 0.000 claims description 5
- 239000008186 active pharmaceutical agent Substances 0.000 description 103
- 238000010586 diagram Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 230000001186 cumulative effect Effects 0.000 description 3
- 230000007103 stamina Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000008570 general process Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
Images
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/70—Game security or game management aspects
- A63F13/75—Enforcing rules, e.g. detecting foul play or generating lists of cheating players
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/10—Services
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Tourism & Hospitality (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Multimedia (AREA)
- General Business, Economics & Management (AREA)
- Marketing (AREA)
- Primary Health Care (AREA)
- Strategic Management (AREA)
- Human Resources & Organizations (AREA)
- Economics (AREA)
- Virology (AREA)
- Debugging And Monitoring (AREA)
Abstract
Description
이 발명은 클라이언트 컴퓨터에서 스피드 핵이 사용되는지를 검출하는 시스템 및 방법에 관한 것으로서, 보다 상세하게는 스피드 핵에 의해 조작될 수 있는 시간 정보와 스피드 핵에 의해 조작될 수 없는 시간 정보를 각각 획득하여 비교함으로써, 클라이언트 컴퓨터에서의 스피드 핵의 사용 여부를 검출하는 시스템 및 방법에 관한 것이다.
The present invention relates to a system and method for detecting whether a speed nucleus is used in a client computer, and more particularly, to a system and method for detecting whether a speed nucleus is used in a client computer, To a system and method for detecting the use of speed nuclei in a client computer.
초고속인터넷이 널리 보급되면서 온라인 게임인구가 급속도로 증가하고 수많 은 온라인 게임들이 개발되었지만 아직까지 게임 보안에 대한 인식과 개념은 많이 부족하다. 컴퓨터 시스템에서 실행되는 악성 프로그램을 핵 또는 해킹프로그램이라고 하는데, 특히 게임에 작용하는 악성 프로그램을 게임 핵이라고 한다. 게임 핵은 게임의 메모리를 조작하여 능력치나 체력 등과 같은 특정 데이터를 바꾸어 주거나, 격투기 게임의 경우 타격 속도나 타격 횟수를 증가시키거나, 매크로 기능을 부여함으로써, 게임 유저가 게임을 손쉽게 이길 수 있도록 해준다. 이 때문에, 게이머들은 온라인 게임시 게임 핵을 설치하고 싶어한다.With the widespread use of high-speed Internet, the online game population has rapidly increased and numerous online games have been developed, but there is still a lack of awareness and concept of game security. A malicious program that runs on a computer system is called a nucleus or hacking program. In particular, a malicious program that acts on a game is called a game nucleus. The game nucleus allows the game user to easily win the game by manipulating the memory of the game to change specific data such as stamina or stamina, to increase the hit rate or the number of strikes in a fighting game, or to give a macro function . For this reason, gamers want to install game nuclei in online games.
이러한 게임 핵의 한 종류로서, 컴퓨터 시스템의 시간관련 정보를 변경하는 스피드 핵(speed hack)이 있다. 이 스피드 핵은 클라이언트 컴퓨터의 시간을 실제 시간보다 많이 흐르거나, 혹은 적게 흐른 것처럼 속여서 게임 프로그램의 개발자가 의도한 설계동작과 다르게 동작하도록 하는 악성 프로그램을 말한다. 스피드 핵을 사용할 경우, 게임에서의 캐릭터의 움직임이나 공격속도 등이 수 배 내지 수백 배 빨라지고 클라이언트가 게임 서버에게 보내는 패킷의 속도도 함께 빨라지게 한다. 한편, 골프게임이나 바둑, 고스톱과 같은 보드 게임에서는 스피드 핵을 이용하여 속도를 느리게 하기도 한다. 예를 들어, 골프 게임의 경우 타구의 정확도를 높이기 위해 순간적으로 속도를 느리게 하거나, 고스톱이나 바둑의 경우 자신의 차례에서 속도를 느리게 하여 상대방보다 더 많은 시간동안 생각을 할 수 있도록 하는데 사용한다.As a kind of game nucleus, there is a speed hack that changes time related information of a computer system. The speed core is a malicious program that causes the client computer's time to flow more or less than the actual time, so that the developer of the game program behaves differently from the intended design. When using a speed core, the movement and attack speed of the character in the game are several times to several hundred times faster, and the speed of the packet sent by the client to the game server is also accelerated. On the other hand, in golf games and board games such as Baduk and GoStop, speed nukes are used to slow down speed. For example, in a golf game, it is used to slow down the momentarily to improve the accuracy of the ball, or to slow down in the turn of the game in the case of go-tops or goalkeeps so that they can think for more time than their opponents.
이렇게 게임 클라이언트가 스피드 핵을 사용하면 정상 속도의 게임자보다 빠른 속도로 움직이면서 공격을 하고 캐릭터가 빠르게 성장하거나 게이머에게 부여되는 게임시간이 길어지기 때문에, 스피드 핵을 사용하지 않는 정상 사용자는 피해를 보게 된다. 아울러, 스피드 핵 사용 클라이언트가 단위 시간동안 게임 서버에게 보내는 패킷의 양이 증가하기 때문에, 게임 서버가 과도한 양의 패킷을 처리하면서 과부하가 걸리게 된다.So, if a game client uses speed nuke, it will move at a speed faster than the normal speed player, attack faster, and the character will grow faster or the game time given to the gamer will be longer. do. In addition, since the amount of packets sent by the speed nuclear client to the game server during the unit time increases, the game server is overloaded while processing an excessive amount of packets.
이와 같이, 온라인 게임에서 스피드 핵 사용을 제재하지 못하면 결국 온라인 게임 내 사용자간의 균형이 깨어져서 정상 사용자들의 불만이 커지게 되고, 정상 속도보다 훨씬 빠르게 성장하는 캐릭터로 인하여 게임 내의 다른 밸런스까지도 붕괴되는 심각한 문제를 야기할 수 있다. 이러한 문제를 해결하려면 게임 클라이언트가 스피드 핵을 사용하지 못하도록 차단하여야 하며, 이를 위해 클라이언트 컴퓨터에서 스피드 핵이 사용되는지 여부를 검출해야 한다.As such, failure to enforce speed nuclear use in online games will eventually lead to disruption of balance among users in online games, resulting in increased dissatisfaction among normal users, a serious problem in which even the balance in the game is collapsed due to the character growing much faster than normal speed . ≪ / RTI > To solve this problem, the game client must be prevented from using the speed core, and the client computer must detect whether or not the speed core is used.
클라이언트 컴퓨터에서 스피드 핵을 검출하는 선행기술로서, 대한민국 특허출원 제2003-88654호, "타이머 API 후킹 여부 판단 방식에 의한 스피드 핵 사용여부 검출방법"이 있다. 이 선행기술은 해커가 사용할 것으로 예상되는 타이머 관련 API의 후킹 여부를 판단하여 스피드 핵이 사용되는지를 검출한다. 그러나, 이러한 선행기술은 해커가 미리 예측된 타이머 관련 API를 후킹할 경우에는 검출가능하지만, 예측할 수 없는 새로운 타이머 관련 API를 후킹하여 내부 시간을 조작하는 경우에는 이를 검출할 수 없는 문제점이 있다.Korean Patent Application No. 2003-88654, "Method of detecting whether or not a speed nuclear is used by a determination method of timer API hooking" is known as a prior art for detecting speed nuclei in a client computer. This prior art detects whether a speed core is used by determining whether a timer related API expected to be used by a hacker is hooked. However, this prior art has a problem in that it can not detect when the internal time is manipulated by hooking a new timer-related API that can be detected but can not be predicted when the hacker hooks a timer-related API predicted in advance.
다른 선행기술로서, 대한민국 특허출원 제2005-90603호, "컴퓨터시스템에서 내부 시간 변경 감지방법"이 있다. 이 선행기술은 TSC, RTC 등의 정보를 사용하여 기준시간을 연산하고, 타이머 관련 API를 호출하여 시스템 시간을 추출하며, 기준시간과 시스템 시간을 비교함으로써, 스피드 핵 사용 여부를 검출한다. 그러나, 이러한 선행기술은 TSC, RTC 등의 정보를 획득하려면 커널모드모듈이 추가되어야 하고, TSC, RTC 등의 정보로부터 기준시간을 연산하려면 다량의 시스템 자원이 소모되는 문제점이 있다.Another prior art is Korean Patent Application No. 2005-90603, entitled " Internal Time Change Detection Method in a Computer System ". This prior art computes a reference time using information such as TSC and RTC, extracts a system time by calling a timer related API, and compares the reference time with a system time to detect whether or not a speed nucleus is used. However, in this prior art, a kernel mode module must be added in order to acquire information such as TSC and RTC, and a large amount of system resources are consumed in order to calculate a reference time from information such as TSC and RTC.
상술한 종래기술의 문제점을 해결하기 위하여 안출된 이 발명의 목적은, 게임프로세스의 메모리 영역에 스피드 핵에 의해 조작될 수 없는 비후킹 시간관련 API함수를 추가 로딩하고, 게임실행코드에서 참조하는 시스템 시간과 상기 비후킹 시간관련 API 함수를 통해 획득된 시간을 비교함으로써, 커널모드모듈을 사용하지 않고도 스피드 핵 사용 여부를 검출할 수 있는 스피드 핵 검출 시스템 및 방법을 제공하기 위한 것이다.
It is an object of the present invention, which is devised to solve the problems of the prior art described above, to provide a game system which loads a non-hooking time related API function which can not be manipulated by a speed core in a memory area of a game process, And comparing the obtained time with the time obtained through the API function related to the non-hooking time, thereby detecting the speed nuclear use without using the kernel mode module.
상술한 목적을 달성하기 위한 이 발명에 따른 스피드 핵 검출 시스템은, 게임프로세스의 메모리 영역에 시스템 DLL 파일의 복사본인 시스템 DLL 복사본을 로딩하는 환경설정부와,According to an aspect of the present invention, there is provided a speed nuclear detection system including: a configuration unit for loading a copy of a system DLL, which is a copy of a system DLL file, in a memory area of a game process;
상기 시스템 DLL 파일에 포함된 시간관련 API 함수와 상기 시스템 DLL 복사본에 포함된 비후킹 시간관련 API 함수를 각각 호출하는 시간관련 API 호출부와,A time related API call unit for calling a time related API function included in the system DLL file and a non - hooking time related API function included in the copy of the system DLL,
상기 시스템 DLL 파일에 포함된 시간관련 API 함수로부터 획득된 게임 참조 시간 정보와 상기 비후킹 시간관련 API 함수로부터 획득된 비후킹 시간 정보를 비교하여 상기 두 시간 정보의 차이값이 기설정된 임계값을 초과하면 스피드 핵 사용으로 판단하는 스피드 핵 판단부를 포함한 것을 특징으로 한다.Hooking time information obtained from the API function of the non-hooking time with the game reference time information obtained from the time-related API function included in the system DLL file and comparing the non-hooking time information obtained from the API function with the non-hooking time to exceed the predetermined threshold value Speed nucleus judging unit which judges the use of speed nuclear.
또한, 이 발명에 따른 스피드 핵 검출 방법은, 스피드 핵 검출 시스템이 게임프로세스의 메모리 영역에 시스템 DLL 파일의 복사본인 시스템 DLL 복사본을 로딩하는 제1단계와,According to another aspect of the present invention, there is provided a speed nuclear detection method comprising the steps of loading a copy of a system DLL, which is a copy of a system DLL file, into a memory area of a game process,
상기 스피드 핵 검출 시스템이 상기 시스템 DLL 파일에 포함된 시간관련 API 함수와 상기 시스템 DLL 복사본에 포함된 비후킹 시간관련 API 함수를 각각 호출하는 제2단계와,A second step in which the speed nuclear detection system calls a time related API function included in the system DLL file and a non-hooking time related API function included in the copy of the system DLL,
상기 스피드 핵 검출 시스템이 상기 시스템 DLL 파일에 포함된 시간관련 API 함수로부터 획득된 게임 참조 시간 정보와 상기 비후킹 시간관련 API 함수로부터 획득된 비후킹 시간 정보를 비교하여 상기 두 시간 정보의 차이값이 기설정된 임계값을 초과하면 스피드 핵 사용으로 판단하는 제3단계를 포함한 것을 특징으로 한다.
The speed nucleation detection system compares the game reference time information obtained from the time related API function included in the system DLL file with the non-hooking time information obtained from the API function related to the non-hooking time, And a third step of judging the use of the speed nuclear when the predetermined threshold value is exceeded.
이상과 같이 이 발명에 따르면, 게임실행코드에서 참조하는 시간 정보와 스피드 핵에 의해 조작될 수 없도록 보호된 시간 정보를 각각 획득하여 두 시간 정보를 비교하여, 게임실행코드에서 참조하는 시간 정보가 조작되었는 지를 판단함으로써, 스피드 핵 사용 여부를 검출할 수 있는 효과가 있다.
As described above, according to the present invention, the time information referenced in the game execution code and the time information protected so as not to be manipulated by the speed nucleus are obtained, respectively, and the two pieces of time information are compared, It is possible to detect whether the speed nuclear is used or not.
도 1은 일반적으로 윈도우즈 운영체제 하에서 동작하는 게임프로세스가 시간 정보를 획득하는 과정을 도시한 도면이다.
도 2는 일반적으로 윈도우즈 운영체제 하에서 동작하는 게임에 작용하는 스피드 핵이 동작하는 과정을 도시한 도면이다.
도 3은 이 발명에 따른 스피드 핵 검출 시스템을 도시한 구성 블록도이다.
도 4는 이 발명에 따른 스피드 핵 검출 방법을 도시한 동작 흐름도이다.FIG. 1 is a diagram illustrating a process in which a game process operating under a Windows operating system generally acquires time information.
FIG. 2 is a diagram illustrating a process of operating a speed core operating in a game generally operating under a Windows operating system.
3 is a block diagram of a configuration of a speed nuclear detection system according to the present invention.
4 is a flowchart illustrating a method of detecting a speed nucleus according to the present invention.
이하, 첨부된 도면을 참조하여 이 발명에 따른 스피드 핵 검출 시스템 및 방법에 대해 상세하게 설명한다.Hereinafter, a speed nuclear detection system and method according to the present invention will be described in detail with reference to the accompanying drawings.
먼저, 게임 프로세스가 윈도우즈 운영체제에서 시간 정보를 획득하는 과정과, 스피드 핵이 이 시간 정보를 조작하는 과정을 설명한다.First, the game process acquires time information in the Windows operating system and the process in which the speed nucleus manipulates this time information.
도 1은 윈도우즈 운영체제 하에서 동작하는 게임프로세스가 시간 정보를 획득하는 일반적인 과정을 도시한 도면이다.FIG. 1 is a diagram illustrating a general process in which a game process operating under a Windows operating system obtains time information.
윈도우즈 운영체제 하에서 임의의 게임이 실행되면, 게임실행코드(11)와 그 게임실행코드(11)에서 참조하는 API들에 관한 정보가 저장된 시스템 DLL파일(12)이 해당 게임프로세스에 할당된 메모리 영역에 로딩된다. 게임실행코드(11)가 실행되어 시스템 DLL 파일(12)의 임의의 시간관련 API 함수를 호출하면, 해당 시간관련 API 함수가 동작하여 윈도우 타이머(13)로부터 획득된 시스템 시간 정보가 게임실행코드(11)로 전달되도록 한다. 통상적으로 윈도우 타이머(13)는 하드웨어 클럭 카운터(14)로부터 시스템 시간 정보를 갱신한다.When an arbitrary game is executed under the Windows operating system, the
도 2는 윈도우즈 운영체제 하에서 동작하는 게임에 작용하는 스피드 핵이 동작하는 일반적인 과정을 도시한 도면이다.FIG. 2 is a diagram illustrating a general procedure for operating a speed core operating on a game operating under a Windows operating system.
게임프로세스에 할당된 메모리 영역에 게임실행코드(11)와 시스템 DLL파일(12)이 로딩된다. 스피드 핵(21)은 게임실행코드(11)가 호출하는 시간관련 API 함수를 후킹한다. 여기서, 후킹이라 함은 제어의 흐름을 가로채는 것을 말한다. 이와 같이 스피드 핵(21)에 의해 시간관련 API 함수가 후킹된 상태에서, 게임실행코드(11)가 시스템 DLL 파일(12)의 해당 시간관련 API 함수를 호출하면, 스피드 핵(21)으로 이동하여 스피드 핵(21)이 동작한다. 스피드 핵(21)은 윈도우 타이머(13)로부터 시스템 시간 정보를 획득하고, 획득된 시스템 시간 정보를 조작한 후 게임실행코드(11)에게 전달한다. 즉, 게임실행코드(11)에는 윈도우 타이머(13)에서 연산된 정상적인 시스템 시간 정보가 아닌 스피드 핵(21)에서 조작된 시간 정보가 입력된다.The
이러한 스피드 핵 동작 방식을 소프트웨어 방식의 스피드 핵이라 한다. 이 소프트웨어 방식의 스피드 핵은 게임에서 사용하고 있는 시간관련 API 함수들을 후킹하고 함수의 결과값(시스템 시간 정보)을 조작하여 게임 속도를 조절하는 방식을 말하는데, 스피드 핵이 후킹 대상으로 하는 시간관련 API 함수들에는 timeGetSystemTime API, timeGetTime API, timeSetEvent API, GetTickCount API, QueryPerformanceCounter API, GetMessageTime API, SetTimer API 등이 포함된다.This type of speed nuclear operation is called software-based speed nuclear. This software-based speed core is a method of hooking up time-related API functions used in the game and controlling the game speed by manipulating the result value of the function (system time information). The time-related API The functions include the timeGetSystemTime API, the timeGetTime API, the timeSetEvent API, the GetTickCount API, the QueryPerformanceCounter API, the GetMessageTime API, and the SetTimer API.
도 3은 이 발명에 따른 스피드 핵 검출 시스템(30)을 도시한 구성 블록도이다.FIG. 3 is a block diagram showing the structure of a speed
윈도우즈 운영체제 하에서 게임프로그램이 실행되면, 윈도우즈 운영체제는 게임프로세스에게 메모리 영역을 할당하고, 게임프로세스에 할당된 메모리 영역에 게임실행코드(11)와 시스템 DLL 파일(12)이 로딩된다. 통상적으로 시스템 DLL 파일(12)은 시간관련 API 함수(12b)뿐만 아니라 waitforsingleobject API, waitformultipleobject API 등과 같은 동기화 API 함수(12a)를 포함하는 바, 동기화 API 함수(12a)를 이용하여 동기화 조건이 설정되면, 동기화 API 실행루틴(15)이 구동하여 해당 동기화 조건에 부합되는 상태가 되면 이벤트(event)를 발생한다. 통상적으로 윈도우즈 운영체제(Windows OS)에서 동기화 API 실행루틴(15)과 윈도우 타이머(13)는 하드웨어 클럭 카운터(14)의 출력으로부터 시간 정보를 갱신한다.When the game program is executed under the Windows operating system, the Windows operating system allocates a memory area to the game process, and the
이 발명의 스피드 핵 검출 시스템(30)은 게임프로세스의 메모리 영역에 상기 시스템 DLL 파일(12)의 복사본인 시스템 DLL 복사본(12')을 로딩하고 동기화 API 함수(12a)를 호출하여 동기화 조건을 설정하는 환경설정부(31)와, 동기화 API 실행루틴으로부터 상기 동기화 조건에 따른 이벤트를 수신하여 API 호출 신호를 출력하는 보안 타이머(34)와, 상기 API 호출 신호에 따라 상기 시스템 DLL 파일(12)에 포함된 시간관련 API 함수(12b)와 상기 시스템 DLL 복사본(12')에 포함된 비후킹 시간관련 API 함수(12b')를 각각 호출하는 시간관련 API 호출부(33)와, 상기 시스템 DLL 파일(12)에 포함된 시간관련 API 함수(12b)로부터 획득된 게임 참조 시간 정보와 상기 비후킹 시간관련 API 함수(12b')로부터 획득된 비후킹 시간 정보를 비교하여 상기 두 시간 정보의 차이값이 기설정된 임계값을 초과하면 스피드 핵 사용으로 판단하는 스피드 핵 판단부(32)를 포함한다.The speed
상기 스피드 핵 판단부(32)는 기설정된 시간동안 상기 게임 참조 시간의 변화량과 상기 비후킹 시간의 변화량을 각각 누적하고, 상기 두 시간의 누적 변화량을 비교하여 스피드 핵 사용 여부를 판단한다.The speed
상기 시스템 DLL 파일(12)은 kernel32.dll 이고, 시간관련 API 함수(12b)는 GetTickCount API인 것이 바람직하지만 이에 한정되지는 않는다. 시간관련 API 함수(12b)에는 timeGetSystemTime API, timeGetTime API, timeSetEvent API, QueryPerformanceCounter API, GetMessageTime API, SetTimer API 등이 포함될 수 있다. 상기 시간관련 API 함수(12b)와 비후킹 시간관련 API 함수(12b')는 동일한 종류의 API일 수도 있고, 서로 다른 종류의 API일 수도 있다.Preferably, the
게임프로세스의 게임실행코드(11)는 시스템 DLL 파일(12)의 시간관련 API 함수(12b)를 호출하여 시간 정보를 획득하여 게임에 참조한다. 이때, 해당 시간관련 API 함수가 스피드 핵에 의해 후킹된 상태이면, 도 2와 같이 스피드 핵(21)에 의해 조작된 시간 정보가 게임실행코드(11)에 전달되어 게임에 참조된다. 반면에 해당 시간관련 API 함수가 스피드 핵에 의해 후킹된 상태가 아니면, 도 1과 같이 윈도우 타이머(13)의 시스템 시간 정보가 게임실행코드(11)에 전달되어 게임에 참조된다. 따라서, 시간관련 API 호출부(33)가 시스템 DLL 파일(12)의 시간관련 API 함수(12b)를 호출하여 획득한 시간 정보를 게임 참조 시간 정보라 한다.The
한편, 시스템 DLL 복사본(12')은 이 발명에 따른 스피드 핵 검출 시스템(30)에 의해 게임 프로세스에 추가 로딩되는 바, 스피드 핵(21)은 이 시스템 DLL 복사본(12')을 인지하지 못하며, 이 시스템 DLL 복사본(12')에 포함된 API 함수들을 후킹할 수 없다. 따라서, 시스템 DLL 복사본(12')에 포함된 시간관련 API 함수를 비후킹 시간관련 API 함수라 한다.On the other hand, since the system DLL copy 12 'is additionally loaded into the game process by the speed
상기와 같이 구성된 스피드 핵 검출 시스템(30)의 동작을 설명한다.The operation of the speed
스피드 핵 검출 시스템(30)은 게임과 함께 실행되는 것이 바람직하다. 환경설정부(31)는 게임프로세스의 메모리 영역에 로딩된 시스템 DLL 파일(12)의 복사본 즉, 시스템 DLL 복사본(12')을 게임 프로세스의 메모리 영역에 로딩한다. 그리고, 환경설정부(31)는 동기화 API 함수(예컨대, waitforsingleobject API)를 호출하여 동기화 조건을 설정한다. 이 발명에서는 특정 주기(예컨대, 0.1초)마다 한 번씩 이벤트를 발생하도록 동기화 조건을 설정한다. 이렇게 동기화 조건이 설정되면, 윈도우즈 운영체제의 동기화 API 실행루틴(15)이 해당 동기화 조건에 따라(예컨대, 0.1초마다 한 번씩), 이 발명의 스피드 핵 검출시스템(30)으로 이벤트를 발생한다.The speed
보안 타이머(34)는 동기화 API 실행루틴(15)으로부터 상기 이벤트가 입력되면 이를 기반으로 API 호출신호를 출력하고, 시간관련 API 호출부(33)는 API 호출신호에 따라 시스템 DLL 파일(12)의 시간관련 API 함수(12b)와 시스템 DLL 복사본(12')의 비후킹 시간관련 API 함수(12b')를 각각 호출한다.The
이때, 스피드 핵(21)이 사용되지 않는다면 시간관련 API 함수(12b)와 비후킹 시간관련 API 함수(12b')가 모두 윈도우 타이머(13)로부터 시스템 시간 정보를 획득하여 스피드 핵 판단부(32)에게 제공하게 되기 때문에, 스피드 핵 판단부(32)에는 동일한 두 시간 정보가 입력되고 누적된다.If the
그러나, 스피드 핵(21)이 사용된다면, 비후킹 시간관련 API 함수(12b')는 윈도우 타이머(13)로부터 시간 정보를 획득하여 스피드 핵 판단부(32)에게 제공하지만, 시간관련 API 함수(12b)는 도 2와 같이 스피드 핵(21)에 의해 후킹되어 스피드 핵(21)에 의해 조작된 시간 정보가 스피드 핵 판단부(32)에게 제공되기 때문에, 스피드 핵 판단부(32)에는 서로 다른 두 개의 시간 정보가 입력되고 누적된다. 이 경우, 게임실행코드(11)가 해당 시간관련 API 함수(12b)를 호출하면 스피드 핵에 의해 조작된 시간 정보가 게임실행코드(11)에 제공된다고 유추할 수 있다.However, if a
따라서, 스피드 핵 판단부(32)는 시간관련 API 함수(12b)로부터 획득된 게임 참조 시간 정보와 비후킹 시간관련 API 함수(12b')로부터 획득된 비후킹 시간 정보를 비교하여 스피드 핵이 사용되는 지를 판단할 수 있다. 이 발명에서는 두 시간 정보의 차이값이 기설정된 임계값보다 크면 스피드 핵 사용으로 판단한다.Accordingly, the speed
그러나, 호출되는 시간관련 API의 종류에 따라 획득된 시간 정보에 약간의 오차가 발생할 수 있다. 이 발명에서는 기설정된 시간동안 게임 참조 시간과, 비후킹 시간을 각각 누적하여, 그 시간의 누적 변화량의 차이값을 기반으로 스피드 핵 사용 여부를 판단한다.However, some errors may occur in the time information obtained depending on the type of API to be called. According to the present invention, the game reference time and the non-hooking time are respectively accumulated for a predetermined time, and the speed nuclear use is determined based on the difference value of the cumulative change amount of the time.
현재 사용되는 스피드 핵은 자신이 후킹한 시간관련 API를 호출한 주체프로세스를 식별하지 않는다. 즉, 해당 시간관련 API 함수를 게임 프로세스가 호출한 것인지, 아니면 이 발명과 같이 스피드 핵 검출시스템이 호출한 것인지를 식별하지 못하고 무조건 해당 시간관련 API 함수의 결과값인 시간 정보를 조작하여 리턴한다. 그러나, 앞으로 스피드 핵이 주체프로세스를 식별하여 선별적으로 결과값을 조작한다면 스피드 핵 사용을 검출할 수 없게 될 수도 있다. 이를 방지하기 위해, 시간관련 API 호출부를 게임 프로세스의 메모리 영역에 로딩하는 것이 바람직하다. 이는, 스피드 핵은 이 발명에 따른 시간관련 API 호출부가 시간관련 API 함수를 호출하는 것을 게임프로세스가 호출하는 것으로 판단하기 때문이다.The currently used speed core does not identify the subject process that called the time-related API that hooked itself. That is, it can not identify whether the time-related API function is called by the game process or the speed nuclear detection system as in the present invention, and unconditionally manipulates and returns the time information which is the result of the API function corresponding to the time. However, in the future, speed nukes may not be able to detect speed nuclear use if they identify the subject process and manipulate the results selectively. In order to prevent this, it is preferable to load the time-related API call unit into the memory area of the game process. This is because the speed core determines that the game process calls the time related API call according to the present invention to call the time related API function.
도 4는 이 발명에 따른 스피드 핵 검출 시스템에서의 스피드 핵 검출 방법을 도시한 동작 흐름도이다.4 is a flow chart illustrating a method of detecting speed nuclei in a speed nuclear detection system according to the present invention.
먼저, 환경설정부는 시스템 DLL 복사본을 게임 프로세스의 메모리 영역에 로딩한다(S41). 환경설정부는 동기화 API 함수(예컨대, waitforsingleobject API)를 호출하여 동기화 조건을 설정한다(S42).First, the environment setting unit loads a copy of the system DLL into the memory area of the game process (S41). The environment setting unit sets a synchronization condition by calling a synchronization API function (e.g., waitforsingleobject API) (S42).
동기화 API 실행루틴으로부터 이벤트가 입력되면(S43), 시간관련 API 호출부는 시스템 DLL 파일의 시간관련 API 함수와 시스템 DLL 복사본의 비후킹 시간관련 API 함수를 각각 호출한다(S44).When an event is input from the synchronization API execution routine (S43), the time related API call unit calls the time related API function of the system DLL file and the non-hooking time related API function of the system DLL copy, respectively (S44).
스피드 핵 판단부는 시스템 DLL 파일의 시간관련 API 함수로부터 게임 참조 시간 정보를 획득하고 비후킹 시간관련 API 함수로부터 비후킹 시간 정보를 획득하여, 각각 기설정된 시간동안 누적한다(S45).The speed nucleus determiner obtains game reference time information from the time-related API function of the system DLL file, acquires non-hooking time information from the non-hooking time related API function, and accumulates them for a preset time (S45).
게임 참조 시간의 누적된 변화량과 비후킹 시간의 누적된 변화량을 비교하여(S46), 그 차이값이 임계값을 초과하면(S47), 스피드 핵이 사용되는 것으로 판단한다(S48). 그러나, 그 차이값이 임계값을 초과하지 않으면(S47), 스피드 핵이 사용되지 않는 것으로 판단한다(S49).The cumulative change amount of the game reference time is compared with the accumulated change amount of the non-hooking time (S46). If the difference exceeds the threshold value (S47), it is determined that the speed nucleus is used (S48). However, if the difference does not exceed the threshold value (S47), it is determined that the speed core is not used (S49).
이상에서 본 발명에 대한 기술사상을 첨부도면과 함께 서술하였지만, 이는 본 발명의 가장 양호한 실시예를 예시적으로 설명한 것이지 본 발명을 한정하는 것은 아니다. 또한, 이 기술분야의 통상의 지식을 가진 자라면 누구나 본 발명의 기술사상의 범주를 이탈하지 않는 범위 하에서 다양한 변형 및 모방이 가능함은 명백한 사실이다.
While the present invention has been described in connection with what is presently considered to be the most practical and preferred embodiments, it is to be understood that the invention is not limited to the disclosed embodiments. In addition, it is obvious that various modifications and variations can be made without departing from the scope of the technical idea of the present invention by anyone having ordinary skill in the art.
11 : 게임실행코드 12 : 시스템 DLL 파일
12a : 동기화 API 함수 12b : 시간관련 API 함수
12' : 시스템 DLL 복사본 12b' : 비후킹 시간관련 API 함수
13 : 윈도우 타이머 14 : 하드웨어 클럭 카운터
21 : 스피드 핵 30 : 스피드 핵 검출 시스템
31 : 환경 설정부 32 : 스피드 핵 판단부
33 : 시간관련 API 호출부 34 : 보안 타이머11: Game execution code 12: System DLL file
12a:
12 ': copy of
13: Windows Timer 14: Hardware Clock Counter
21: Speed Nuclear 30: Speed Nuclear Detection System
31: environment setting unit 32: speed nuclear judgment unit
33: Time related API call part 34: Security timer
Claims (8)
상기 시스템 DLL 파일에 포함된 시간관련 API 함수와 상기 시스템 DLL 복사본에 포함된 비후킹 시간관련 API 함수를 각각 호출하는 시간관련 API 호출부와,
상기 시스템 DLL 파일에 포함된 시간관련 API 함수로부터 획득된 게임 참조 시간 정보와 상기 비후킹 시간관련 API 함수로부터 획득된 비후킹 시간 정보를 비교하여 상기 두 시간 정보의 차이값이 기설정된 임계값을 초과하면 스피드 핵 사용으로 판단하는 스피드 핵 판단부를 포함한 것을 특징으로 하는 스피드 핵 검출 시스템.An environment setting unit for loading a copy of the system DLL, which is a copy of the system DLL file, in a memory area of the game process;
A time related API call unit for calling a time related API function included in the system DLL file and a non - hooking time related API function included in the copy of the system DLL,
Hooking time information obtained from the API function of the non-hooking time with the game reference time information obtained from the time-related API function included in the system DLL file and comparing the non-hooking time information obtained from the API function with the non-hooking time to exceed the predetermined threshold value And a speed nuclear determination unit that determines that the speed nuclear is used.
상기 환경설정부는 동기화 API 함수를 호출하여 동기화 조건을 설정하고,
상기 스피드 핵 검출 시스템은 동기화 API 실행루틴으로부터 상기 동기화 조건에 따른 이벤트를 수신하여 API 호출 신호를 상기 시간관련 API 호출부로 출력하는 보안 타이머를 더 포함한 것을 특징으로 하는 스피드 핵 검출 시스템.The method according to claim 1,
The environment setting unit sets a synchronization condition by calling a synchronization API function,
Wherein the speed nucleation detection system further comprises a security timer for receiving an event according to the synchronization condition from a synchronization API execution routine and outputting an API call signal to the time related API call unit.
상기 스피드 핵 판단부는 상기 게임 참조 시간 정보와 상기 비후킹 시간 정보로부터 기설정된 시간동안 게임 참조 시간의 변화량과 비후킹 시간의 변화량을 각각 누적하고, 상기 두 시간의 누적 변화량을 비교하여 스피드 핵 사용 여부를 판단하는 것을 특징으로 하는 스피드 핵 검출 시스템.The method according to claim 1,
The speed nucleus judging unit accumulates the variation amount of the game reference time and the variation amount of the non-hooking time from the game reference time information and the non-hooking time information, respectively, and compares the accumulated variation amounts of the two hours, To determine the speed of the nucleus.
상기 시간관련 API 호출부는 상기 게임프로세스의 메모리 영역에 로딩된 것을 특징으로 하는 스피드 핵 검출 시스템.The method according to claim 1,
Wherein the time related API call unit is loaded in a memory area of the game process.
상기 스피드 핵 검출 시스템이 상기 시스템 DLL 파일에 포함된 시간관련 API 함수와 상기 시스템 DLL 복사본에 포함된 비후킹 시간관련 API 함수를 각각 호출하는 제2단계와,
상기 스피드 핵 검출 시스템이 상기 시스템 DLL 파일에 포함된 시간관련 API 함수로부터 획득된 게임 참조 시간 정보와 상기 비후킹 시간관련 API 함수로부터 획득된 비후킹 시간 정보를 비교하여 상기 두 시간 정보의 차이값이 기설정된 임계값을 초과하면 스피드 핵 사용으로 판단하는 제3단계를 포함한 것을 특징으로 하는 스피드 핵 검출 방법.A speed nuclear detection system loading a copy of a system DLL, which is a copy of a system DLL file, into a memory area of a game process;
A second step in which the speed nuclear detection system calls a time related API function included in the system DLL file and a non-hooking time related API function included in the copy of the system DLL,
The speed nucleation detection system compares the game reference time information obtained from the time related API function included in the system DLL file with the non-hooking time information obtained from the API function related to the non-hooking time, And a third step of determining that the speed nuclear is used if the predetermined threshold value is exceeded.
상기 제1단계는, 상기 스피드 핵 검출 시스템이 동기화 API 함수를 호출하여 동기화 조건을 설정하는 단계를 더 포함하고,
상기 제2단계는, 상기 스피드 핵 검출 시스템이 동기화 API 실행루틴으로부터 상기 동기화 조건에 따른 이벤트가 수신되면 상기 시스템 DLL 파일에 포함된 시간관련 API 함수와 상기 시스템 DLL 복사본에 포함된 비후킹 시간관련 API 함수를 각각 호출하는 것을 특징으로 하는 스피드 핵 검출 방법.6. The method of claim 5,
The first step further comprises the step of the speed nuclear detection system calling a synchronization API function to set a synchronization condition,
The second step may include: when the speed nucleation detection system receives an event according to the synchronization condition from the synchronization API execution routine, the time related API function included in the system DLL file and the non-hooking time related API , Respectively.
상기 제3단계는, 상기 스피드 핵 검출 시스템이 상기 게임 참조 시간 정보와 상기 비후킹 시간 정보로부터 기설정된 시간동안 게임 참조 시간의 변화량과 비후킹 시간의 변화량을 각각 누적하고, 상기 두 시간의 누적 변화량을 비교하여 스피드 핵 사용 여부를 판단하는 것을 특징으로 하는 스피드 핵 검출 방법.6. The method of claim 5,
Wherein the speed nucleation detection system accumulates a variation amount of the game reference time and a variation amount of the non-hooking time from the game reference time information and the non-hooking time information for a predetermined time, To determine whether the speed nuclear is used or not.
상기 스피드 핵 검출 시스템의 적어도 일부가 상기 게임프로세스의 메모리 영역에 로딩된 것을 특징으로 하는 스피드 핵 검출 방법.
6. The method of claim 5,
Wherein at least a portion of the speed nuclear detection system is loaded into a memory area of the game process.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130035713A KR101421633B1 (en) | 2013-04-02 | 2013-04-02 | Speed Hack Detection System and Method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130035713A KR101421633B1 (en) | 2013-04-02 | 2013-04-02 | Speed Hack Detection System and Method |
Publications (1)
Publication Number | Publication Date |
---|---|
KR101421633B1 true KR101421633B1 (en) | 2014-07-23 |
Family
ID=51742693
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020130035713A KR101421633B1 (en) | 2013-04-02 | 2013-04-02 | Speed Hack Detection System and Method |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101421633B1 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109522712A (en) * | 2018-10-31 | 2019-03-26 | 武汉斗鱼网络科技有限公司 | Method, storage medium, equipment and the system being accelerated for detection system |
CN111124869A (en) * | 2018-10-30 | 2020-05-08 | 武汉斗鱼网络科技有限公司 | Program accelerated detection method, storage medium, device and system |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20060059795A (en) * | 2004-11-29 | 2006-06-02 | 주식회사 안철수연구소 | Method of sensing time modification of internal time by a computer program |
KR20070001304A (en) * | 2005-06-29 | 2007-01-04 | 케이티하이텔 주식회사 | Apparatus and method for providing pattern-matching data, and apparatus and method for protecting process from hacking using the same |
KR100979092B1 (en) | 2008-04-30 | 2010-08-31 | 주식회사 잉카인터넷 | method of judging whether an image-enhanced gamehack is used, and intercepting an image-enhanced gamehack |
KR101005593B1 (en) | 2009-04-17 | 2011-01-05 | 엔에이치엔비즈니스플랫폼 주식회사 | Method and Apparatus for Providing Security Service Using Hook |
-
2013
- 2013-04-02 KR KR1020130035713A patent/KR101421633B1/en active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20060059795A (en) * | 2004-11-29 | 2006-06-02 | 주식회사 안철수연구소 | Method of sensing time modification of internal time by a computer program |
KR20070001304A (en) * | 2005-06-29 | 2007-01-04 | 케이티하이텔 주식회사 | Apparatus and method for providing pattern-matching data, and apparatus and method for protecting process from hacking using the same |
KR100979092B1 (en) | 2008-04-30 | 2010-08-31 | 주식회사 잉카인터넷 | method of judging whether an image-enhanced gamehack is used, and intercepting an image-enhanced gamehack |
KR101005593B1 (en) | 2009-04-17 | 2011-01-05 | 엔에이치엔비즈니스플랫폼 주식회사 | Method and Apparatus for Providing Security Service Using Hook |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111124869A (en) * | 2018-10-30 | 2020-05-08 | 武汉斗鱼网络科技有限公司 | Program accelerated detection method, storage medium, device and system |
CN109522712A (en) * | 2018-10-31 | 2019-03-26 | 武汉斗鱼网络科技有限公司 | Method, storage medium, equipment and the system being accelerated for detection system |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101221169B1 (en) | Modifying rates of action in a virtual universe | |
KR101498614B1 (en) | Apparatus and method of deactivating malicious codes | |
KR100897849B1 (en) | Apparatus and Method for finding malicious process | |
US10445103B2 (en) | Mobile game data processing method and apparatus | |
WO2020019484A1 (en) | Simulator recognition method, recognition device, and computer readable medium | |
CN110090445B (en) | Plug-in detection method, client and server | |
TWI625152B (en) | Video game processing device and video game processing program | |
WO2014153975A1 (en) | Online game anti-cheating method and server | |
DK2840496T3 (en) | PROCEDURE, SYSTEM AND EXECUTABLE CODE TO MANAGE THE USE OF HARDWARE RESOURCES OF A COMPUTER SYSTEM | |
KR101421633B1 (en) | Speed Hack Detection System and Method | |
US20240009571A1 (en) | Game data processing method and apparatus, device, storage medium, and program product | |
CN106982151A (en) | The speed of service abnormal detection method, device and games system in a kind of game | |
CN106230644B (en) | Client acceleration detection method | |
KR100457405B1 (en) | Method of detecting whether speed hack is in use | |
CN113181656A (en) | Plug-in detection method, device and medium | |
CN106407016A (en) | Method and device for simulating multi-threading resource competition | |
CN108197471B (en) | Malicious software detection method and device | |
KR100653545B1 (en) | Method of sensing time modification of internal time by a computer program | |
US11327798B1 (en) | Accelerating an application code portion based on a received configuration | |
KR101267725B1 (en) | Pattern collecting method of bot program for online game | |
KR101530531B1 (en) | Malicious Module Handling System and Method | |
CN106021106B (en) | A kind of course control method and user terminal | |
KR101826081B1 (en) | Device, system and method of taking action on hack tool for online game | |
KR102129576B1 (en) | Apparatus and method for detecting a Sybil account | |
US10142689B2 (en) | Server, terminal, information processing method, information processing program, and computer-readable recording medium storing information processing programs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20180716 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20190715 Year of fee payment: 6 |