KR100955725B1 - Method and System for Preventing Memory Hacking - Google Patents

Method and System for Preventing Memory Hacking Download PDF

Info

Publication number
KR100955725B1
KR100955725B1 KR1020070140783A KR20070140783A KR100955725B1 KR 100955725 B1 KR100955725 B1 KR 100955725B1 KR 1020070140783 A KR1020070140783 A KR 1020070140783A KR 20070140783 A KR20070140783 A KR 20070140783A KR 100955725 B1 KR100955725 B1 KR 100955725B1
Authority
KR
South Korea
Prior art keywords
program variable
encoding
program
memory
variable
Prior art date
Application number
KR1020070140783A
Other languages
Korean (ko)
Other versions
KR20090072620A (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 KR1020070140783A priority Critical patent/KR100955725B1/en
Publication of KR20090072620A publication Critical patent/KR20090072620A/en
Application granted granted Critical
Publication of KR100955725B1 publication Critical patent/KR100955725B1/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/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • 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/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • 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/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices

Abstract

다양한 메모리 해킹을 위한 방법이나 다양한 우회 경로가 존재하는 경우에도 메모리의 해킹을 차단할 수 있는 본 발명의 일 실시예에 다른 메모리 해킹 차단 방법은 소정 프로그램 변수가 사용될 때마다, 상기 프로그램 변수가 저장될 메모리 주소를 랜덤하게 선택하는 단계; 및 상기 프로그램 변수를 상기 선택된 주소에 저장하는 단계를 포함한다.

Figure R1020070140783

프로그램, 메모리, 해킹, 셔플, 변수

According to an embodiment of the present invention, in which a method for various memory hacking or various bypass paths exist, a memory hacking blocking method according to an embodiment of the present invention, which may block hacking of a memory, may be used. Randomly selecting an address; And storing the program variable at the selected address.

Figure R1020070140783

Program, memory, hack, shuffle, variable

Description

메모리 해킹 차단 방법 및 시스템{Method and System for Preventing Memory Hacking}Method and System for Preventing Memory Hacking

본 발명은 메모리 해킹 차단 방법 및 시스템에 관한 것으로서, 보다 상세하게는 컴퓨터 등의 디지털 처리 장치에 설치되어 동작하는 프로그램의 정보를 부당한 목적으로 획득하기 위한 해킹 특히 프로그램이 디지털 처리 장치의 메모리에 적재되어 동작하는 경우 메모리에 대한 해킹을 방지하기 위한 방법 및 시스템에 관한 것이다.BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a method and a system for preventing memory hacking, and more particularly, a hacking program for obtaining information of a program installed and operated in a digital processing device such as a computer for improper purposes, and being loaded in a memory of the digital processing device. A method and system for preventing hacking to memory when in operation.

최근 컴퓨터 등의 디지털 처리 장치의 발달과 더불어 이러한 디지털 처리 장치에 설치되어 동작하는 다양한 프로그램들이 개발되고 있다.Recently, with the development of digital processing devices such as computers, various programs installed and operating in such digital processing devices have been developed.

이러한 프로그램들은 개발자와 프로그래머가 많은 시간과 노력을 들여 개발한 것이므로 이러한 프로그램에 대한 타인의 불법 복제나 이용을 차단하기 위해 다양한 복제 방지 장치나 방법이 이용되고 있다.These programs are developed by developers and programmers with a lot of time and effort, and various copy protection devices and methods are used to prevent others from illegally copying or using such programs.

그러나 프로그램의 특성상 프로그램을 구성하는 정보들을 알아내는 경우 해당 프로그램의 불법적인 복제나 변경이 용이해 지게 된다.However, when the information constituting the program is found out due to the nature of the program, illegal copying or modification of the program becomes easy.

특히 프로그램을 구성하는 이러한 정보들을 알아내는 방법 중 프로그램의 실 행 코드와 데이터가 저장되는 영역인 메모리를 직접 조작하는 해킹(hacking)으로써, 프로그램 내에서 사용되는 변수, 상수값, 또는 코드를 조작하여 부당한 이익을 취하는 행위를 메모리 해킹이라고 한다.In particular, hacking is a method of finding out such information constituting a program by directly manipulating the memory, which is the area where the program's execution code and data are stored, by manipulating variables, constant values, or codes used in the program. Taking an unfair advantage is called memory hacking.

최근에는 메모리 에디터(Editor)를 통해 메모리를 수정하거나 메모리 해킹 전용 툴(Cheat Engine)을 사용함으로써 이러한 메모리 해킹이 보다 지능적으로 이루어지고 있다.Recently, such memory hacking is made more intelligent by modifying the memory through a memory editor or by using a dedicated memory hacking tool (Cheat Engine).

이하에서는 도 1과 도 2를 참조하여 종래의 메모리 해킹 방법에 대해 살펴보기로 한다.Hereinafter, a conventional memory hacking method will be described with reference to FIGS. 1 and 2.

먼저 도 1은 메모리 해킹 툴의 동작 원리를 개략적으로 도시한 도면이다.First, FIG. 1 schematically illustrates an operation principle of a memory hacking tool.

도 1에 도시된 바와 같이, 메모리 해킹 툴의 동작 원리는 값의 증감(Value Increment)의 변화에 대한 조건부 서치(Conditional Search)를 통해 실제 값이 저장되어 있는 주소를 검색한다.As shown in FIG. 1, the operation principle of the memory hacking tool searches an address where an actual value is stored through a conditional search for a change in a value increment.

따라서, 이러한 값 또는 파일이 변경되는 경우 이를 검색하여 검색된 값이나 파일들 즉 변수, 상수값, 또는 코드를 조작함으로써 메모리 해킹이 이루어지게 되는 것이다.Therefore, if such a value or a file is changed, a memory hack is performed by manipulating the retrieved value or file, that is, a variable, a constant value, or a code.

도 2는 종래의 메모리 접근 제어를 통한 메모리 해킹 차단 원리를 개략적으로 도시한 도면이다.2 is a view schematically illustrating a principle of memory hacking blocking through a conventional memory access control.

도 2에 도시된 바와 같이, 메모리 해킹은 먼저, 메모리 해킹 툴이 DLL 인젝션((Dynamic Linking Library Injection)의 방법으로 프로그램의 프로세스, 예를 들면 게임 프로세스 등에 침투하여 게임내 메모리에 접근함으로써 메모리에 저장되 어 있는 변수들을 조작하게 된다.As shown in FIG. 2, memory hacking is first stored in a memory hacking tool by accessing the in-game memory by penetrating a program process, for example, a game process, by a DLL injection method (Dynamic Linking Library Injection). Manipulate variables.

또한, 커널에서는 사용자 정의 드라이버를 이용하거나 커널과 프로세스의 연결을 통해 해킹이 이루어지게 된다.In addition, in the kernel, hacking is done by using a user-defined driver or by connecting a kernel and a process.

그러나 도 2에서 살펴 본 바와 같이 메모리 해킹을 위한 방법이나 경로가 너무나 다양하고 또한 이를 이용한 우회 경로도 다수 존재하기 때문에, 도 2에 도시된 메모리 해킹 방지 방법만을 이용하여 메모리 해킹을 완전하게 방지한다는 것은 사실상 불가능하다.However, as shown in FIG. 2, since there are so many methods or paths for hacking a memory and there are many bypass paths using the same, it is possible to completely prevent memory hacking using only the memory hacking prevention method shown in FIG. 2. It is virtually impossible.

따라서, 이러한 메모리 해킹을 근본적으로 차단하지 못하는 경우, 프로그램의 불법 복제나 이용뿐만 아니라 이러한 프로그램을 이용하여 통신망을 통해 서비스를 제공하는 경우 해당 서비스의 제공까지 제대로 이루어지지 못하게 되는 문제점이 있다.Therefore, if such a memory hack is not fundamentally blocked, there is a problem in that not only the illegal copying or use of the program but also the provision of the corresponding service when providing the service through the communication network using such a program.

본 발명은 상술한 문제점을 해결하기 위한 것으로서, 다양한 메모리 해킹을 위한 방법이나 다양한 우회 경로가 존재하는 경우에도 메모리의 해킹을 차단할 수 있는 메모리 해킹 차단 방법 및 시스템을 제공하는 것을 기술적 과제로 한다.The present invention has been made in view of the above-described problems, and it is a technical object of the present invention to provide a memory hacking blocking method and system that can block hacking of a memory even when various bypassing paths and various bypass paths exist.

또한, 본 발명은 메모리의 해킹을 방지함으로써 프로그램을 이용하여 통신망을 통해 서비스를 제공하는 경우 해당 서비스의 제공이 원활하게 이루어질 수 있도록 하는 메모리 해킹 차단 방법 및 시스템을 제공하는 것을 다른 기술적 과제로 한다.Another object of the present invention is to provide a memory hacking blocking method and system for smoothly providing a corresponding service when providing a service through a communication network by using a program by preventing hacking of the memory.

상술한 목적을 달성하기 위한 본 발명의 일 측면에 따른 메모리 해킹 차단 방법은 소정 프로그램 변수가 사용될 때마다, 상기 프로그램 변수가 저장될 메모리 주소를 랜덤하게 선택하는 단계; 및 상기 프로그램 변수를 상기 선택된 주소에 저장하는 단계를 포함한다.Memory hacking blocking method according to an aspect of the present invention for achieving the above object comprises the steps of: randomly selecting a memory address to be stored in the program variable each time a predetermined program variable is used; And storing the program variable at the selected address.

일 실시예에 있어서, 상기 메모리 해킹 차단 방법은 상기 프로그램 변수의 저장단계 이전에, 상기 프로그램 변수를 소정 인코딩 알고리즘을 이용하여 인코딩하는 단계를 더 포함하고, 이때, 상기 프로그램 변수 인코딩 단계에서, 상기 인코딩 알고리즘은 복수개의 인코딩 알고리즘 중 랜덤하게 선택되는 것을 특징으로 한다.The memory hacking blocking method may further include encoding the program variable using a predetermined encoding algorithm before the storing of the program variable, wherein in the program variable encoding step, the encoding is performed. The algorithm is characterized in that randomly selected from among a plurality of encoding algorithms.

한편, 상기 복수개의 인코딩 알고리즘은 소정 주기 단위로 업데이트 될 수 있다.Meanwhile, the plurality of encoding algorithms may be updated in predetermined periods.

일 실시예에 있어서, 상기 메모리 해킹 차단 방법은 상기 프로그램 변수가 호출되는 경우, 상기 프로그램 변수를 상기 인코딩 알고리즘과 매칭되는 디코딩 알고리즘을 이용하여 디코딩하는 단계; 및 디코딩된 상기 프로그램 변수를 제공하는 단계를 더 포함하는 것을 특징으로 한다.The memory hacking blocking method may further include decoding the program variable using a decoding algorithm matching the encoding algorithm when the program variable is called; And providing the decoded program variable.

상술한 목적을 달성하기 위한 본 발명의 다른 측면에 따른 메모리 해킹 방지 방법은 복수개의 인코딩 알고리즘 및 상기 각각의 인코딩 알고리즘과 매칭되는 복수개의 디코딩 알고리즘이 매칭되어 저장된 데이터베이스를 유지하는 단계; 소정 프로그램 변수가 사용될 때마다, 상기 프로그램 변수가 저장될 메모리 주소를 랜덤하게 선택하는 단계; 상기 데이터베이스로부터 복수개의 인코딩 알고리즘 중 어느 하나를 랜덤하게 선택하는 단계; 선택된 인코딩 알고리즘을 이용하여 상기 프로그램 변수를 인코딩하는 단계; 및 상기 인코딩된 프로그램 변수를 상기 선택된 주소에 저장하는 단계를 포함한다.Memory hacking prevention method according to another aspect of the present invention for achieving the above object comprises the steps of maintaining a database in which a plurality of encoding algorithms and a plurality of decoding algorithms matching each encoding algorithm is matched and stored; Each time a predetermined program variable is used, randomly selecting a memory address in which the program variable is to be stored; Randomly selecting any one of a plurality of encoding algorithms from the database; Encoding the program variable using a selected encoding algorithm; And storing the encoded program variable at the selected address.

일 실시예에 있어서, 상기 각각의 인코딩 및 디코딩 알고리즘은 모든 프로그램 변수 타입에 대해서 하나의 템플릿(Template) 내에 정의 되어 있는 것을 특징으로 한다.In one embodiment, each encoding and decoding algorithm is characterized in that it is defined in one template for all program variable types.

상술한 목적을 달성하기 위한 본 발명의 또 다른 측면에 따른 메모리 해킹 방지 시스템은 소정 프로그램 변수가 저장되는 메모리; 및 상기 프로그램 변수가 사용될 때마다, 상기 프로그램 변수가 저장될 메모리 주소를 랜덤하게 할당하는 주소 할당부를 포함한다.Memory hacking prevention system according to another aspect of the present invention for achieving the above object is a memory for storing a predetermined program variable; And an address allocator for randomly allocating a memory address where the program variable is to be stored each time the program variable is used.

상술한 바와 같이 본 발명에 따르면, 다양한 메모리 해킹을 위한 방법이나 다양한 우회 경로가 존재하는 경우에도 메모리의 해킹을 효과적으로 차단할 수 있는 효과가 있다.As described above, according to the present invention, even when there are various methods for hacking memory or various bypass paths, the hacking of the memory can be effectively blocked.

또한, 본 발명에 따르면, 메모리의 해킹을 방지함으로써 프로그램을 이용하여 통신망을 통해 서비스를 제공하는 경우 해당 서비스를 원활하게 제공할 수 있다는 효과가 있다.In addition, according to the present invention, by providing a service through a communication network by using a program by preventing the hacking of the memory has the effect that can provide a smooth service.

본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.As the invention allows for various changes and numerous embodiments, particular embodiments will be illustrated in the drawings and described in detail in the written description. However, this is not intended to limit the present invention to specific embodiments, it should be understood to include all modifications, equivalents, and substitutes included in the spirit and scope of the present invention.

이하, 첨부된 도면을 참조하여 본 발명의 실시예들을 상세히 설명하되, 도면 부호에 관계없이 동일하거나 대응하는 구성 요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings, and the same or corresponding components will be denoted by the same reference numerals regardless of the reference numerals, and redundant description thereof will be omitted.

도 3은 본 발명의 일 실시예에 따른 메모리 해킹 차단 시스템의 개략적인 구성을 도시한 도면이다.3 is a diagram illustrating a schematic configuration of a memory hacking blocking system according to an embodiment of the present invention.

도 3에 도시된 바와 같이, 본 발명의 일 실시예에 따른 메모리 해킹 차단 시스템(100)은 메모리(110), 주소 할당부(120), 인코더(130), 디코더(140), 및 셔플 엔진(150), 및 데이터베이스(160)를 포함할 수 있다.As shown in FIG. 3, the memory hacking blocking system 100 according to an embodiment of the present invention may include a memory 110, an address allocator 120, an encoder 130, a decoder 140, and a shuffle engine ( 150, and database 160.

메모리(110)는 데이터가 저장되는 영역으로서, 특히 본 발명에서는 소정 프로그램의 구동에 사용되는 다양한 프로그램 변수가 저장된다. 이러한 메모리(110)에는 프로그램의 변수뿐만 아니라 프로그램의 실행을 위한 다른 데이터 그리고 프로그램이 설치된 컴퓨터와 같은 디지털 처리 장치의 제어 및 구동에 필요한 다양한 데이터 등이 저장될 수 있음은 자명하다.The memory 110 is an area in which data is stored. In particular, in the present invention, various program variables used to drive a predetermined program are stored. It is apparent that the memory 110 may store not only variables of a program but also other data for executing the program and various data necessary for controlling and driving a digital processing apparatus such as a computer on which a program is installed.

일반적으로 프로그램 내에서 변수를 선언하면 해당 변수에 대한 값은 이러한 메모리(110)의 임의 영역에 고정되어 유지 관리된다.In general, when a variable is declared in a program, a value for the variable is fixed and maintained in an arbitrary area of the memory 110.

프로그램 정보를 부당한 목적으로 취득하는 해킹은 이러한 메모리(110)의 임의 영역에 고정 적으로 저장되는 변수를 알아내어 수행되는 경우가 대부분이다.Hacking for acquiring program information for improper purposes is usually performed by finding a variable that is fixedly stored in an arbitrary area of the memory 110.

따라서, 본 발명에서는 이러한 점을 방지하기 위해 프로그램 내에서 소정 프로그램 변수가 사용될 때마다 해당 프로그램 변수가 저장될 메모리(110)의 주소가 동적으로 변경되게 하는 것이다.Therefore, in the present invention, whenever a certain program variable is used in a program, the address of the memory 110 in which the program variable is to be stored is dynamically changed to prevent such a problem.

이를 위해, 주소 할당부(120)는 소정 프로그램 변수에 대한 호출로 인해 해당 프로그램 변수가 사용될 때마다 해당 프로그램 변수가 저장될 메모리 주소를 동적으로 변경한다.To this end, the address allocator 120 dynamically changes the memory address where the program variable is to be stored whenever the program variable is used due to a call to a predetermined program variable.

일 실시예에 있어선, 주소 할당부(120)는 프로그램 변수가 저장되는 메모리 주소를 변경하기 위해 운영체제(Operation System)에 새로운 메모리 영역의 할당을 요청하는 방식으로 메모리 주소를 변경할 수 있다.In one embodiment, the address allocator 120 may change the memory address by requesting an operation system to allocate a new memory area in order to change the memory address where the program variable is stored.

이 경우, 운영체제에 의해 새로운 메모리 영역이 할당된 후에는 곧바로 종래 에 할당된 메모리는 해제함으로써 메모리의 낭비를 막고 프로그램의 오류를 예방하는 것이 바람직하다. 메모리의 재할당에 의한 변수 저장 주소의 변경은 사용중인 운영체제의 정책에 따라 다양하게 적용될 수 있다.In this case, immediately after the new memory area is allocated by the operating system, it is desirable to release the conventionally allocated memory to prevent waste of memory and prevent program errors. Changing the variable storage address by reallocating memory can be variously applied according to the policy of the operating system in use.

구체적으로, 주소 할당부(120)는 프로그램 변수가 사용될 때마다 운영체제에 해당 변수에 대한 메모리 영역을 재할당해줄 것을 요청한다. 재할당에 의한 메모리 주소는 종래에 할당된 메모리 주소와 상이할 수 있으며, 재할당된 메모리 영역에 해당 변수가 저장되면, 종래에 할당된 메모리는 해제된다.Specifically, whenever the program variable is used, the address allocator 120 requests the operating system to reallocate a memory area for the variable. The memory address by reallocation may be different from the conventionally allocated memory address. When the variable is stored in the reallocated memory area, the conventionally allocated memory is released.

이와 같이, 프로그램 변수가 저장되는 메모리 주소를 동적으로 변경함으로써 해당 프로그램 변수가 저장되는 메모리 주소의 검색이 어렵게 된다.As described above, it is difficult to search the memory address where the program variable is stored by dynamically changing the memory address where the program variable is stored.

인코더(130)는 메모리 해킹을 보다 완벽하게 방지하기 위해, 프로그램 변수를 저장하기에 앞서, 소정의 인코딩 알고리즘을 이용하여 프로그램 변수를 인코딩한다. 즉, 본 발명에서는 프로그램 변수의 저장영역을 동적으로 변경함과 동시에 프로그램 변수를 인코딩하여 저장하는 것이다.Encoder 130 encodes the program variable using a predetermined encoding algorithm prior to storing the program variable in order to more completely prevent memory hacking. That is, in the present invention, the storage area of the program variable is dynamically changed and the program variable is encoded and stored.

일 실시예에 있어서, 인코더(130)에 의해 사용되는 인코딩 알고리즘은 프로그램 변수가 사용된 후 저장될 때마다 후술할 셔플엔진(150)에 의해 랜덤하게 선택된다. In one embodiment, the encoding algorithm used by the encoder 130 is randomly selected by the shuffle engine 150 to be described later whenever the program variables are used and stored.

디코더(140)는 프로그램 변수가 호출되는 경우, 해당 프로그램 변수가 인코딩되어 있으면, 해당 프로그램 변수의 인코딩에 이용된 인코딩 알고리즘과 매칭되는 디코딩 알고리즘을 이용하여 해당 프로그램 변수를 디코딩한다.When the program variable is called, if the program variable is encoded, the decoder 140 decodes the program variable by using a decoding algorithm matching the encoding algorithm used for encoding the program variable.

인코더(130)와 마찬가지로, 디코더(140)에 의해 이용되는 디코딩 알고리즘 또한 후술한 셔플엔지(150)에 의해 선택되어 제공된다.As with the encoder 130, the decoding algorithm used by the decoder 140 is also selected and provided by the shuffle engine 150 described later.

셔플엔진(150)은 프로그램 변수의 저장이 요구될 때마다 데이터베이스(160)에 저장된 복수개의 인코딩 알고리즘 중 어느 하나를 랜덤하게 선택하여 인코더(130)로 제공하고, 프로그램 변수가 호출되는 경우 해당 프로그램 변수의 인코딩에 사용된 인코딩 알고리즘과 매칭되는 디코딩 알고리즘을 선택하여 디코더(140)로 제공한다.The shuffle engine 150 randomly selects one of a plurality of encoding algorithms stored in the database 160 to the encoder 130 whenever a program variable is required to be stored, and when the program variable is called, the corresponding program variable. A decoding algorithm that matches the encoding algorithm used for encoding of the memory is selected and provided to the decoder 140.

즉, 본 발명에서는 프로그램 변수가 저장되는 메모리 주소를 동적으로 변경하는 것뿐만 아니라 해당 프로그램 변수를 인코딩할 인코딩 알고리즘도 동적으로 변경함으로써 메모리 해킹을 원천적으로 차단할 수 있게 되는 것이다.In other words, the present invention not only dynamically changes the memory address where a program variable is stored, but also dynamically changes an encoding algorithm for encoding the program variable, thereby being able to fundamentally block memory hacking.

일 실시예에 있어서, 셔플엔진(150)은 소정 주기 마다 다양한 인코딩 알고리즘 및 해당 인코딩 알고리즘에 매칭되는 디코딩 알고리즘을 데이터베이스(160)에 추가하여 사용 가능한 인코딩 및 디코딩 알고리즘의 범위를 확대함으로써 메모리 해킹의 차단을 더욱 견고히 할 수 있다.In one embodiment, the shuffle engine 150 blocks the hacking of memory by expanding the range of available encoding and decoding algorithms by adding various encoding algorithms and decoding algorithms matching the encoding algorithm to the database 160 at predetermined intervals. Can be further solidified.

따라서 종래의 메모리 해킹 방법과 같이 우회 접근을 통한 메모리 접근 등의 경우에도 프로그램 정보를 알아내는 것이 용이하지 않아 보다 효과적으로 메모리의 해킹을 차단할 수 있게 된다.Therefore, as in the conventional memory hacking method, it is not easy to find program information even in the case of a memory access through a bypass access, so that the hacking of the memory can be more effectively blocked.

이러한 셔플엔진이 프로그램 형태로 구현된 예가 도 4에 도시되어 있다.An example in which the shuffle engine is implemented in a program form is illustrated in FIG. 4.

도시된 바와 같이, 프로그램 특히 프로그램을 구성하는 함수의 변수에 대해 초기 셔플(Shuffle) 즉, 변수가 저장될 메모리의 주소를 동적으로 변경하도록 하는 셔플 오브젝트(Object)가 생성되면, 셔플엔진 복수개의 인코딩 및 디코딩 알고리 즘(Type A, Type B, Type C) 중 어느 하나를 랜덤하게 선택하여 선택된 인코딩 알고리즘을 인코더로 제공한다. 또한, 해당 프로그램 변수가 호출되면, 해당 프로그램 변수의 인코딩에 사용된 인코딩 알고리즘에 매칭되는 디코딩 알고리즘을 를 디코더로 제공한다.As shown, when an initial shuffle is generated for a variable of a program, particularly a function constituting the program, that is, a shuffle object for dynamically changing an address of a memory in which the variable is to be stored, And randomly select one of decoding algorithms (Type A, Type B, Type C) to provide the selected encoding algorithm to the encoder. In addition, when the corresponding program variable is called, the decoder provides a decoding algorithm matching the encoding algorithm used for encoding the corresponding program variable.

일 실시예에 있어서, 셔플엔진을 프로그램 형태로 구현하는 경우, 인코딩 및 디코딩 알고리즘들을 각 프로그램 변수의 타입 마다 별도로 정의하지 않고, 템플릿 개념을 적용하여 하나의 템플릿(Template) 내에서 다양한 프로그램 변수의 타입들을 함께 정의함으로써 적용의 용이성을 극대화할 수 있다.In one embodiment, when the shuffle engine is implemented in a program form, encoding and decoding algorithms are not defined separately for each type of program variable. Instead, various types of program variables in a template are applied by applying a template concept. By defining them together, the ease of application can be maximized.

즉, 동일한 인코딩 알고리즘이라 하더라도 프로그램 변수의 타입 별로, 예컨대 정수형(int) 타입이나 실수형(float) 타입 별로 각각 정의되는 것이 아니라, 모든 프로그램 변수 타입에 대해 하나의 템플릿 내에서 함께 정의된다.That is, even the same encoding algorithm is not defined for each type of program variable, for example, for an integer type or a float type, but is defined together in one template for all program variable types.

다시 도 3을 참조하면, 데이터베이스(160)에는 프로그램 변수의 인코딩 및 디코딩에 이용되는 복수개의 인코딩 및 디코딩 알고리즘이 저장되어 있다. 상술한 바와 같이, 데이터베이스(160)에 저장되는 인코딩 및 디코딩 알고리즘은 셔플엔진(150)에 의해 소정 주기마다 추가될 수 있다.Referring back to FIG. 3, the database 160 stores a plurality of encoding and decoding algorithms used for encoding and decoding program variables. As described above, the encoding and decoding algorithms stored in the database 160 may be added by the shuffle engine 150 at predetermined intervals.

상술한 실시예에 있어서는 데이터베이스(160)가 셔플엔진(150)과 별개의 구성요소인 것으로 기재하였지만, 변형된 실시예에 있어서는 이러한 데이터베이스(160)가 셔플엔진(150)과 통합되어 구성될 수도 있을 것이다.Although the database 160 is described as a separate component from the shuffle engine 150 in the above-described embodiment, the database 160 may be integrated with the shuffle engine 150 in a modified embodiment. will be.

또한, 상술한 실시예에 있어서는 주소 할당부(120)가 셔플엔진(150)과 별개의 구성요소인 것으로 기재하였지만, 변형된 실시예에 있어서는 이러한 주소 할당 부(120)는 셔플엔진(150)에 포함되는 하위 구성요소이거나, 셔플엔진(150)이 주소 할당부(120)의 기능을 동시에 수행할 수도 있을 것이다.In addition, in the above-described embodiment, the address allocator 120 is described as a separate component from the shuffle engine 150, but in the modified embodiment, the address allocator 120 is provided to the shuffle engine 150. It may be a subcomponent included or the shuffle engine 150 may perform the function of the address allocator 120 at the same time.

이하에서는 상술한 메모리 해킹 차단 시스템의 구성을 참조하여 본 발명의 일 실시예에 따른 메모리 해킹 차단 방법에 대해 살펴보기로 한다.Hereinafter, a memory hacking blocking method according to an embodiment of the present invention will be described with reference to the configuration of the above-described memory hacking blocking system.

도 5는 본 발명의 일 실시예에 따른 메모리 해킹 차단 방법을 보여주는 플로우차트이다. 도 5에 도시된 바와 같이, 먼저, 해당 프로그램의 변수가 사용될 때마다, 해당 프로그램 변수가 저장될 메모리 주소를 랜덤하게 선택한 후(제500단계), 선택된 메모리 주소를 해당 프로그램 변수에 할당한다(제510단계).5 is a flowchart illustrating a memory hacking blocking method according to an embodiment of the present invention. As shown in FIG. 5, first, whenever a variable of a corresponding program is used, randomly select a memory address in which the corresponding program variable is to be stored (operation 500), and then assign the selected memory address to the corresponding program variable (see step 500). Step 510).

다음으로, 복수개의 인코딩 알고리즘 중 어느 하나를 랜덤하게 선택하고(제520단계), 선택된 인코딩 알고리즘을 이용하여 해당 프로그램 변수를 인코딩한다(제530단계). Next, any one of a plurality of encoding algorithms is randomly selected (operation 520), and a corresponding program variable is encoded using the selected encoding algorithm (operation 530).

한편, 메모리에 저장된 프로그램 변수에 대한 새로운 접근 요청이 발생하는지를 판단하여(제540단계), 프로그램 변수에 대한 새로운 접근 요청이 발생하는 경우, 해당 프로그램 변수의 인코딩에 사용된 인코딩 알고리즘과 매칭되는 디코딩 알고리즘을 선택하고(제550단계), 선택된 디코딩 알고리즘을 이용하여 해당 프로그램 변수를 디코딩한다(제560단계). 한편, 이후, 해당 프로그램 변수를 다시 메모리에 저장하는 경우, 전술한 제500단계 내지 제530단계를 재실행한다.On the other hand, it is determined whether a new access request for the program variable stored in the memory occurs (step 540), and when a new access request for the program variable occurs, a decoding algorithm matching the encoding algorithm used for encoding the program variable In operation 550, the corresponding program variable is decoded using the selected decoding algorithm in operation 560. On the other hand, when the program variable is stored in the memory again, the above-described steps 500 to 530 are executed again.

상술한 실시예에 따른 메모리 해킹 방지 방법의 경우, 해당 프로그램 변수에 대한 메모리의 주소를 동적으로 변경하므로 해당 프로그램 변수가 고정된 메모리 주소에 존재하지 않게 되므로 중요 데이터는 고정된 메모리 주소에 존재하지 않아 야 한다는 Memory Non-Fixation이라는 특성을 만족하게 된다.In the memory hacking prevention method according to the above-described embodiment, since the memory address of the program variable is dynamically changed, the corresponding program variable does not exist in the fixed memory address, so important data does not exist in the fixed memory address. It should satisfy the characteristic of Memory Non-Fixation.

뿐만 아니라, 복수개의 인코딩 알고리즘 중 어느 하나를 랜덤하게 선택하여 프로그램 변수를 인코딩 함으로써 메모리 상에 저장되는 변수는 임의성을 가지게 되므로 메모리 상에 저장되는 데이터 값은 임의성을 가져야 한다는 Data Randomness라는 특성도 만족하게 된다.In addition, by randomly selecting any one of a plurality of encoding algorithms to encode a program variable, the variable stored in the memory has randomness, which satisfies the property of Data Randomness that the data value stored in the memory must have randomness. do.

또한 전술한 바와 같이, 셔플엔진의 구현 시 특정 인코딩 알고리즘에 대해 하나의 템플릿 내에서 다양한 타입의 프로그램의 변수들을 함께 정의함으로써 프로그램의 적용을 극대화할 수 있게 된다.In addition, as described above, in the implementation of the shuffle engine, it is possible to maximize the application of the program by defining variables of various types of programs together in one template for a specific encoding algorithm.

따라서 본 발명에 의하면 프로그램 변수에 대한 접근 요청이 발생할 때마다 해당 프로그램 변수가 저장되는 메모리 주소의 동적인 변경은 물론 저장되는 해당 변수를 인코딩 하기 위한 인코딩 알고리즘 또한 동적으로 변경함으로써 메모리 해킹을 방지를 위해 요구되는 요건을 만족하게 되며, 따라서 프로그램 변수에 대한 정보를 알아내는 것이 어렵게 되어 메모리 해킹을 용이하게 차단할 수 있게 된다.Therefore, according to the present invention, in order to prevent memory hacking by dynamically changing the encoding address for encoding the corresponding variable as well as the dynamic change of the memory address where the corresponding program variable is stored whenever an access request for the program variable occurs. The required requirements are met, thus making it difficult to find out information about program variables, which can easily block memory hacking.

상술한 다양한 실시예에 의한 메모리 해킹 차단 방법은 다양한 컴퓨터 수단을 이용하여 수행될 수 있는 프로그램 형태로도 구현될 수 있는데, 이때 메모리 해킹 차단 방법을 수행하기 위한 프로그램은 하드 디스크, CD-ROM, DVD, 롬(ROM), 램, 또는 플래시 메모리와 같은 컴퓨터로 판독할 수 있는 기록 매체에 저장된다.Memory hacking blocking method according to the various embodiments described above may be implemented in the form of a program that can be performed using a variety of computer means, the program for performing the memory hacking blocking method is a hard disk, CD-ROM, DVD , A computer-readable recording medium such as a ROM, a RAM, or a flash memory.

본 발명이 속하는 기술분야의 당업자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다.Those skilled in the art to which the present invention pertains will understand that the present invention can be implemented in other specific forms without changing the technical spirit or essential features.

그러므로, 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.Therefore, it is to be understood that the embodiments described above are exemplary in all respects and not restrictive. The scope of the present invention is shown by the following claims rather than the detailed description, and all changes or modifications derived from the meaning and scope of the claims and their equivalent concepts should be construed as being included in the scope of the present invention. do.

도 1은 일반적인 메모리 해킹 툴의 동작 원리를 개략적으로 도시한 도면.1 is a view schematically showing the principle of operation of a general memory hacking tool.

도 2는 종래의 메모리 접근 제어를 통한 메모리 해킹 차단 원리를 개략적으로 도시한 도면.2 is a schematic diagram illustrating a memory hacking blocking principle through a conventional memory access control.

도 3은 본 발명의 일 실시예에 따른 메모리 해킹 차단 시스템의 개략적인 구성을 도시한 도면.3 is a diagram illustrating a schematic configuration of a memory hacking blocking system according to an embodiment of the present invention.

도 4는 본 발명의 일 실시예에 따른 셔플엔진이 프로그램 형태로 구현된 일예를 보여주는 도면.4 is a diagram illustrating an example in which a shuffle engine is implemented in a program form according to an embodiment of the present invention.

도 5는 본 발명의 일 실시예에 따른 메모리 해킹 차단 방법을 보여주는 플로우차트.5 is a flowchart illustrating a memory hacking blocking method according to an embodiment of the present invention.

<도면의 주요부분에 대한 부호의 설명><Description of the symbols for the main parts of the drawings>

100: 메모리 해킹 차단 시스템 110: 메모리100: memory hack blocking system 110: memory

120: 주소 할당부 130: 인코더120: address assignment unit 130: encoder

140: 디코더 150: 셔플엔진140: decoder 150: shuffle engine

160: 데이터베이스160: database

Claims (13)

소정 프로그램 변수가 사용될 때마다, 상기 프로그램 변수가 저장될 메모리 주소를 랜덤하게 선택하는 단계; 및Each time a predetermined program variable is used, randomly selecting a memory address in which the program variable is to be stored; And 상기 프로그램 변수를 상기 선택된 주소에 저장하는 단계를 포함하되,Storing the program variable at the selected address; 상기 프로그램 변수의 저장단계 이전에,Before the storing step of the program variable, 상기 프로그램 변수를 소정 인코딩 알고리즘을 이용하여 인코딩하는 단계를 더 포함하며,Encoding the program variable using a predetermined encoding algorithm, 상기 프로그램 변수 인코딩 단계에서,In the program variable encoding step, 상기 인코딩 알고리즘은 복수개의 인코딩 알고리즘 중 랜덤하게 선택되는 것을 특징으로 하는 메모리 해킹 차단 방법.And the encoding algorithm is randomly selected from among a plurality of encoding algorithms. 삭제delete 삭제delete 제1항에 있어서,The method of claim 1, 상기 복수개의 인코딩 알고리즘은 소정 주기 단위로 업데이트 되는 것을 특징으로 하는 메모리 해킹 차단 방법.And the plurality of encoding algorithms are updated at predetermined intervals. 제1항에 있어서, The method of claim 1, 상기 프로그램 변수가 호출되는 경우, 상기 프로그램 변수를 상기 인코딩 알고리즘과 매칭되는 디코딩 알고리즘을 이용하여 디코딩하는 단계; 및When the program variable is called, decoding the program variable using a decoding algorithm matching the encoding algorithm; And 디코딩된 상기 프로그램 변수를 제공하는 단계를 더 포함하는 것을 특징으로 하는 메모리 해킹 차단 방법.And providing the decoded program variable. 복수개의 인코딩 알고리즘 및 상기 각각의 인코딩 알고리즘과 매칭되는 복수개의 디코딩 알고리즘이 매칭되어 저장된 데이터베이스를 유지하는 단계;Maintaining a database in which a plurality of encoding algorithms and a plurality of decoding algorithms matching the respective encoding algorithms are matched and stored; 소정 프로그램 변수가 사용될 때마다, 상기 프로그램 변수가 저장될 메모리 주소를 랜덤하게 선택하는 단계;Each time a predetermined program variable is used, randomly selecting a memory address in which the program variable is to be stored; 상기 데이터베이스로부터 복수개의 인코딩 알고리즘 중 어느 하나를 랜덤하게 선택하는 단계;Randomly selecting any one of a plurality of encoding algorithms from the database; 선택된 인코딩 알고리즘을 이용하여 상기 프로그램 변수를 인코딩하는 단계; 및Encoding the program variable using a selected encoding algorithm; And 상기 인코딩된 프로그램 변수를 상기 선택된 주소에 저장하는 단계를 포함하는 것을 특징으로 하는 메모리 해킹 차단 방법.Storing the encoded program variable at the selected address. 제6항에 있어서, The method of claim 6, 상기 프로그램 변수가 호출되는 경우, 상기 프로그램 변수의 인코딩에 사용된 인코딩 알고리즘과 매칭되는 디코딩 알고리즘을 이용하여 상기 프로그램 변수를 디코딩하는 단계; 및When the program variable is called, decoding the program variable using a decoding algorithm matching the encoding algorithm used for encoding the program variable; And 디코딩된 상기 프로그램 변수를 제공하는 단계를 더 포함하는 것을 특징으로 하는 메모리 해킹 차단 방법.And providing the decoded program variable. 제6항에 있어서,The method of claim 6, 상기 각각의 인코딩 및 디코딩 알고리즘은 모든 프로그램 변수 타입에 대해서 하나의 템플릿(Template) 내에 정의되어 있는 것을 특징으로 하는 메모리 해킹 차단 방법.Wherein each encoding and decoding algorithm is defined in one template for all program variable types. 제1항, 제4항 내지 제8항 중 어느 한 항에 기재된 방법을 수행하기 위한 프로그램이 기록된 컴퓨터 판독 가능한 기록 매체.A computer-readable recording medium having recorded thereon a program for performing the method according to any one of claims 1 to 4. 소정 프로그램 변수가 저장되는 메모리;A memory in which predetermined program variables are stored; 상기 프로그램 변수가 사용될 때마다, 상기 프로그램 변수가 저장될 메모리 주소를 랜덤하게 할당하는 주소 할당부; An address allocator for randomly allocating a memory address where the program variable is to be stored each time the program variable is used; 상기 프로그램 변수가 사용될 때마다 상기 프로그램 변수를 인코딩하는 인코더; An encoder for encoding the program variable each time the program variable is used; 상기 메모리 주소에 저장되어 있는 상기 프로그램 변수가 호출되는 경우, 상기 인코딩된 프로그램 변수를 디코딩하는 디코더;A decoder for decoding the encoded program variable when the program variable stored at the memory address is called; 복수개의 인코딩 알고리즘 및 상기 각각의 인코딩 알고리즘과 매칭되는 복수개의 디코딩 알고리즘이 매칭되어 저장된 데이터베이스; 및A database in which a plurality of encoding algorithms and a plurality of decoding algorithms matching the respective encoding algorithms are matched and stored; And 상기 데이터베이스로부터 복수개의 인코딩 알고리즘 중 어느 하나를 상기 프로그램 변수가 사용될 때마다 랜덤하게 선택하여 상기 인코더로 제공하고, 상기 프로그램 변수가 호출될 때마다 상기 선택된 인코딩 알고리즘에 매칭되어 있는 디코딩 알고리즘을 상기 디코더로 제공하는 셔플엔진을 포함하는 것을 특징으로 하는 메모리 해킹 차단 시스템.Any one of a plurality of encoding algorithms from the database is randomly selected each time the program variable is used and provided to the encoder, and a decoding algorithm matching the selected encoding algorithm is provided to the decoder each time the program variable is called. Memory hack blocking system comprising a shuffle engine provided. 삭제delete 삭제delete 제10항에 있어서,The method of claim 10, 상기 셔플엔진은 소정 주기로 상기 데이터베이스에 상기 인코딩 알고리즘 및 디코딩 알고리즘을 추가하는 것을 특징으로 하는 메모리 해킹 차단 시스템.And the shuffle engine adds the encoding algorithm and the decoding algorithm to the database at predetermined intervals.
KR1020070140783A 2007-12-28 2007-12-28 Method and System for Preventing Memory Hacking KR100955725B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020070140783A KR100955725B1 (en) 2007-12-28 2007-12-28 Method and System for Preventing Memory Hacking

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070140783A KR100955725B1 (en) 2007-12-28 2007-12-28 Method and System for Preventing Memory Hacking

Publications (2)

Publication Number Publication Date
KR20090072620A KR20090072620A (en) 2009-07-02
KR100955725B1 true KR100955725B1 (en) 2010-05-03

Family

ID=41329820

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070140783A KR100955725B1 (en) 2007-12-28 2007-12-28 Method and System for Preventing Memory Hacking

Country Status (1)

Country Link
KR (1) KR100955725B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101436742B1 (en) * 2013-05-27 2014-09-01 (주)스마일게이트엔터테인먼트 The method and system for defending memory hacking

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101674160B1 (en) 2014-01-29 2016-11-09 주식회사 센시콘 Apparatus and Method for preventing memory hacking in On-line banking

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000004442A (en) * 1998-06-30 2000-01-25 전주범 Memory coding apparatus
KR20010079245A (en) * 2001-06-27 2001-08-22 하태수 System and method for maintaining security in providing a streaming service
KR20060059759A (en) * 2004-11-29 2006-06-02 주식회사 안철수연구소 Method for preventing from inventing data of memory in a computer application program
KR20070043212A (en) * 2005-10-20 2007-04-25 프롬투정보통신(주) A method for handling crypto-algorithm and a crypto-module, supporting polymorphism and tamper-proof

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000004442A (en) * 1998-06-30 2000-01-25 전주범 Memory coding apparatus
KR20010079245A (en) * 2001-06-27 2001-08-22 하태수 System and method for maintaining security in providing a streaming service
KR20060059759A (en) * 2004-11-29 2006-06-02 주식회사 안철수연구소 Method for preventing from inventing data of memory in a computer application program
KR20070043212A (en) * 2005-10-20 2007-04-25 프롬투정보통신(주) A method for handling crypto-algorithm and a crypto-module, supporting polymorphism and tamper-proof

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101436742B1 (en) * 2013-05-27 2014-09-01 (주)스마일게이트엔터테인먼트 The method and system for defending memory hacking

Also Published As

Publication number Publication date
KR20090072620A (en) 2009-07-02

Similar Documents

Publication Publication Date Title
US8028340B2 (en) Piracy prevention using unique module translation
JP6474398B2 (en) Code stack management
US20060047959A1 (en) System and method for secure computing
JP2006065847A (en) System and method for secure execution of program code
CN1924814A (en) Control method of application program and apparatus therefor
KR20060096286A (en) Method and system for encoding metadata
US6928456B2 (en) Method of tracking objects for application modifications
JP2001175466A (en) Method and device for generating execution program, and method for executing execution program and computer-readable program storage medium
CN108073507B (en) Processing method and device for kernel crash field data
AU2009202442A1 (en) Skip list generation
CN104685443A (en) Pinning boot data for faster boot
KR100955725B1 (en) Method and System for Preventing Memory Hacking
US8274521B2 (en) System available cache color map
CN101079093A (en) Data processing device, method for processing data and computer program products
KR101442369B1 (en) Dual mode reader writer lock
US20230176900A9 (en) Reducing the startup latency of functions in a faas infrastructure
US20060095977A1 (en) Software protecting method and apparatus using the same
JP2007508613A (en) Storage area allocation for each application
US8800048B2 (en) Software protection through interdependent parameter cloud constrained software execution
JP2007122391A (en) Information processor which decodes and executes encoding program and memory management method
JP3033562B2 (en) Method for generating relocatable execution program and execution program generation device
US8200899B2 (en) Method and system for providing digital rights management files using caching
JP4557516B2 (en) ENCRYPTED PROGRAM GENERATION DEVICE AND ENCRYPTED PROGRAM GENERATION METHOD
WO2016186602A1 (en) Deletion prioritization
US20180101683A1 (en) Randomized heap allocation

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130329

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160329

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170328

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180405

Year of fee payment: 9