KR20060059759A - Method for preventing from inventing data of memory in a computer application program - Google Patents

Method for preventing from inventing data of memory in a computer application program Download PDF

Info

Publication number
KR20060059759A
KR20060059759A KR1020050006586A KR20050006586A KR20060059759A KR 20060059759 A KR20060059759 A KR 20060059759A KR 1020050006586 A KR1020050006586 A KR 1020050006586A KR 20050006586 A KR20050006586 A KR 20050006586A KR 20060059759 A KR20060059759 A KR 20060059759A
Authority
KR
South Korea
Prior art keywords
program
memory data
api function
hooking
computer application
Prior art date
Application number
KR1020050006586A
Other languages
Korean (ko)
Other versions
KR100681696B1 (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 주식회사 안철수연구소
Publication of KR20060059759A publication Critical patent/KR20060059759A/en
Application granted granted Critical
Publication of KR100681696B1 publication Critical patent/KR100681696B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Storage Device Security (AREA)

Abstract

컴퓨터의 특정 응용 프로그램 실행 중 메모리 데이터 관련 API 함수를 후킹한 후, 상기 해킹 프로그램에 의한 메모리 데이터 접근을 차단함으로써 해당 함수의 실행 결과가 보호 하고자 하는 프로그램에 영향을 주지 못하도록 조기에 방지할 수 있도록 한 컴퓨터 응용 프로그램의 메모리 데이터 조작 방지 방법이 개시된다. 방법은, (A) 보호 프로그램 실행 도중, 후킹 핸들러가 메모리 데이터 접근관련 API 함수를 후킹하는 단계; (B) 소정 프로그램에 의해 상기 API 함수가 호출되면, 상기 후킹 핸들러가 소정 비교조건을 토대로 상기 소정 프로그램이 악의적인 비정상적 메모리 데이터 접근 프로그램인지를 판단하는 단계; 및 (C) 상기 단계(B)의 판단결과, 상기 소정 프로그램이 악의적인 비정상적 메모리 데이터 접근 프로그램일 경우, 상기 후킹 핸들러가 제어 처리부로 상기 판단결과를 보고하는 단계로 구성된다.After hooking the memory data API function during execution of a specific application program on the computer, it is possible to prevent the execution result of the function from affecting the program to be protected by blocking access to the memory data by the hacking program. A method of preventing memory data manipulation of a computer application is disclosed. The method includes (A) hooking a memory data access related API function by a hooking handler during execution of a protected program; (B) when the API function is called by a predetermined program, determining, by the hooking handler, whether the predetermined program is a malicious abnormal memory data access program based on a predetermined comparison condition; And (C) if the predetermined program is a malicious abnormal memory data access program as a result of the determination of step (B), the hooking handler reporting the determination result to a control processor.

해킹, 후킹, API, 핸들, 핸들러, PIDHacking, Hooking, API, Handle, Handler, PID

Description

컴퓨터 응용 프로그램의 메모리 데이터 조작 방지 방법{METHOD FOR PREVENTING FROM INVENTING DATA OF MEMORY IN A COMPUTER APPLICATION PROGRAM}METHOD FOR PREVENTING FROM INVENTING DATA OF MEMORY IN A COMPUTER APPLICATION PROGRAM}

본 명세서에서 첨부되는 다음의 도면 들은 본 발명의 바람직한 실시예를 예시하는 것이며, 후술하는 발명의 상세한 설명과 함께 본 발명의 기술사상을 더욱 이해 시키는 역할을 하는 것이므로, 본 발명은 그러한 도면에 기재된 사항에만 한정되어 해석되어서는 아니된다.The following drawings, which are attached in this specification, illustrate the preferred embodiments of the present invention, and together with the detailed description of the present invention which serves to further understand the technical spirit of the present invention, the present invention includes matters described in such drawings. It should not be construed as limited to.

도 1은 종래기술에 따른 일반적 프로그램 모델의 구성을 나타낸 예시도이다.1 is an exemplary view showing the configuration of a general program model according to the prior art.

도 2는 본 발명에 따른 컴퓨터 응용 프로그램의 메모리 데이터 조작 방지 방법을 설명하기 위한 시스템 모델이다.2 is a system model for explaining a memory data manipulation prevention method of a computer application program according to the present invention.

도 3은 본 발명에 따른 컴퓨터 응용 프로그램의 메모리 데이터 조작 방지 방법을 설명하기 위한 동작 흐름도이다.3 is a flowchart illustrating a method of preventing memory data manipulation of a computer application program according to the present invention.

도 4는 본 발명에 따른 후킹 핸들러의 동작을 보인 동작 흐름도이다.4 is an operation flowchart showing the operation of the hooking handler according to the present invention.

도 5는 본 발명에 따른 제어모듈의 동작을 보인 동작 흐름도이다.5 is an operation flowchart showing the operation of the control module according to the present invention.

* 도면의 주요부분에 대한 부호설명** Explanation of Codes on Major Parts of Drawings *

100: 프로그램100: Program

110: 실행파일110: executable

120: 시스템 DLL120: system DLL

130: IAT130: IAT

140, 420: 후킹 핸들러140, 420: hooking handler

150: 제어모듈150: control module

200: 감시 시스템200: surveillance system

210: 제어 처리부210: control processing unit

220: 후킹 처리부220: hooking processing unit

300: 시스템 메모리300: system memory

310: 제어 처리부 기록 메모리310: control processing unit recording memory

320: 후킹 핸들러 알림 기록 메모리320: hook handler notification history memory

400: 서비스 테이블400: service table

본 발명은 컴퓨터 응용 프로그램의 보안기술에 관한 것으로서, 보다 상세하게는 컴퓨터의 특정 응용 프로그램 실행 중 메모리 데이터 관련 API 함수를 후킹한 후, 상기 해킹 프로그램에 의한 메모리 데이터 접근을 차단함으로써 해당 함수의 실행 결과가 보호 하고자 하는 프로그램에 영향을 주지 못하도록 조기에 방지할 수 있도록 한 컴퓨터 응용 프로그램의 메모리 데이터 조작 방지 방법에 관한 것이다.The present invention relates to a security technology of a computer application program, and more particularly, after hooking a memory data-related API function during execution of a specific application program of a computer, the execution result of the function by blocking the memory data access by the hacking program. The present invention relates to a method of preventing manipulation of memory data of a computer application so that the program can be prevented from affecting a program to be protected early.

최근 들어, 정보 통신망과 PC의 발달 및 보급의 대중화에 인터넷이 결합되면서 기존에 오프라인으로 처리하였던 각종정보제공 서비스 및 상거래 행위들이 온라 인 방식으로 시간과 장소에 관계없이 처리가 가능하다. 이에 따라, 시스템 서버와 클라이언트 사이에 실시간 멀티미디어 통신이 가능해짐에 따라 온라인 네트웍을 이용한 각종 네트웍 게임이 개발되고, 가상현실(Virtual Reality)을 제공하는 컴퓨터 프로그램이 인터넷 네트워크에 의하여 급속도로 확산되고 있다.Recently, as the Internet is combined with the development and dissemination of information and communication networks and PCs, various information providing services and commerce activities that have been processed offline can be processed regardless of time and place in an online manner. Accordingly, as real-time multimedia communication is possible between the system server and the client, various network games using an online network are developed, and computer programs providing virtual reality are rapidly spreading by the Internet network.

이러한 인터넷을 이용한 컴퓨터 프로그램은 온라인으로 게임자체 뿐만 아니라 대화와 공동작업이 가능하도록 구성되어 있다. The computer program using the Internet is configured to enable dialogue and collaboration as well as the game itself online.

바둑이나 체스와 같이 두 사람이 참여하는 게임도 있지만 인터넷의 속성을 가장 잘 활용하는 것으로 다수의 사용자가 참여하는 머드(MUD; Multiple-user Dungeon 또는 Multi-user Dimension)게임이 있다. There are also games where two people participate, such as Baduk and Chess, but there are MUD (Multi-user Dungeon or Multi-user Dimension) games that make the best use of the Internet.

머드 게임은 롤 플레잉 게임과 어드벤처 게임을 혼합한 형태로 최초에는 텍스트 모드로만 운영되었으나 점차로 다양한 미디어를 통한 서비스로 발전하고 있는 네트워크 게임이다. 그리고, 머드 게임은 게임의 기본규칙 이외에는 주어진 각본없이 일정한 가상환경에서 게임 참가자가 각자의 상상력과 능력을 발휘하여 자기역할을 수행하고 한편으로는 다른 게임 참가자와 협동하면서 과제를 해결하도록 되어 있다.Mud games are a mix of role-playing and adventure games that were originally operated only in text mode, but are gradually evolving into services through various media. In addition, the mud game, in addition to the basic rules of the game, the game participant performs his role by performing his or her imagination and ability in a certain virtual environment without a given script, and solves a task by cooperating with other game participants.

그러나, 게임 참가자들이 컴퓨터 프로그램에 의한 자동입력 방법을 통해(예컨대, 오토마우스 프로그램을 이용하여 키보드/마우스 이벤트를 자동으로 발생) 자동으로 게임이 진행되도록 설정하는 방법을 동원하여 게임을 참여하는 경우가 있다. 이를 좀 더 상세히 설명하면 다음과 같다.However, there are cases where game participants participate in the game by using a method for automatically setting a game progress through an automatic input method using a computer program (for example, automatically generating a keyboard / mouse event using an auto mouse program). have. This will be described in more detail as follows.

도 1은 종래기술에 따른 일반적 프로그램 모델의 구성을 간략하게 나타내는 도면이다.1 is a view briefly showing the configuration of a general program model according to the prior art.

이에 도시한 바와 같이, 상기 모델은, 소정 운영체제에서의 프로그램(100) 및 상기 프로그램이 참조하는 시스템 메모리(300)를 포함한다.As shown here, the model includes a program 100 in a predetermined operating system and a system memory 300 to which the program refers.

상기 프로그램(100)은, 실행파일(110), 상기 실행파일(100)에 의해 수행되는API 함수를 소정 DLL 파일 별로 저장하고 있는 시스템 DLL(120) 및 상기 API 함수의 주소가 기재된 IAT(Import Address Table)(130)를 포함하며, 상기 각 프로그램 별로 별도의 IAT(130) 및 시스템 DLL(120)이 각각 포함된다.The program 100 may include an executable file 110, a system DLL 120 storing an API function performed by the executable file 100 for each predetermined DLL file, and an IAT (Import Address) including an address of the API function. Table (130), each of the separate IAT 130 and system DLL 120 is included for each program.

상기 시스템 DLL(Dynamic linking library)(120)은 상기 실행파일(110)이 처리하는 API 함수에 대한 순서정보를 갖는다. 이에 따라, 상기 시스템 DLL(120)은 적어도 하나 이상의 DLL 파일을 포함하며, 상기 DLL 파일은 적어도 하나 이상의 API 함수를 각각 포함한다.The system dynamic linking library (DLL) 120 has order information on an API function processed by the executable file 110. Accordingly, the system DLL 120 includes at least one DLL file, and each DLL file includes at least one API function.

이와 같이 구성된 일반적인 프로그램(예컨대, 게임 프로그램(100a))(100)이 운영체제에 의해 실행되고, 이와 더불어 게임에 악영향을 끼치는 메모리 접근 프로그램(예컨대, 해킹 프로그램 등)이 실행되면, 상기 실행파일(110)에 의하여 호출된 메모리 관련 API 함수(예를 들면, OpenProcess API 함수, Read/WriteProcessMemory API 함수 등)는 상기 메모리 접근 프로그램에 의해 자동으로 데이터 조작이 수행된다. 즉, 게임에 악영향을 끼치는 메모리 접근 프로그램이 API 함수 후킹방식이나 IAT 후킹방식을 이용하여 운영체제에서 지원하는 메모리 관련 API 함수 실행값을 변조시킨다.When the general program (for example, the game program 100a) 100 configured as described above is executed by the operating system, and a memory access program (for example, a hacking program, etc.) that adversely affects the game is executed, the execution file 110 is executed. Memory-related API functions (e.g., OpenProcess API functions, Read / WriteProcessMemory API functions, etc.) called by the < RTI ID = 0.0 >) are automatically manipulated by the memory access program. That is, a memory access program that adversely affects a game modulates execution values of memory-related API functions supported by an operating system using an API function hooking method or an IAT hooking method.

이와 같이, 정당하지 못한 방법을 이용하는 사용자가 증가함에 따라 게임 자 체가 공정하게 진행되지 못하게 되므로, 일반 사용자들이 피해를 입게 되는 문제점이 있었다.As such, as the number of users who use an unjust method increases, the game itself does not progress fairly, and thus there is a problem that general users are damaged.

이와 같은 피해는, 게임의 사용자 감소를 초래하게 되며, 결과적으로는 게임사의 매출에 직접적인 악영향을 끼치게 되는 문제점이 있었다.Such damages result in a decrease in the number of users of the game, and as a result, there is a problem that directly affects the game company's sales.

따라서, 컴퓨터 보안 업체들은 이를 조기에 막고 방지하기 위한 여러 가지 방법들을 연구 및 제안하고 있다.Therefore, computer security companies are researching and proposing various methods to prevent and prevent this early.

본 발명은 상기 문제점을 해결하기 위하여 창안된 것으로서, 본 발명의 목적은 컴퓨터의 특정 응용 프로그램 실행 중 메모리 데이터 관련 API 함수를 후킹한 후, 해킹 프로그램에 의해 상기 API 함수가 호출될 경우에 넘겨 받게 되는 고유한 번호(PID ; Process ID)를 체크하여, 상기 해킹 프로그램에 의한 메모리 데이터 접근을 차단함으로써 해당 함수의 실행 결과가 보호 하고자 하는 프로그램에 영향을 주지 못하도록 조기에 방지할 수 있도록 한 컴퓨터 응용 프로그램의 메모리 데이터 조작 방지 방법을 제공하는데 있다.The present invention was devised to solve the above problems, and an object of the present invention is to pass over when the API function is called by a hacking program after hooking an API function related to memory data during execution of a specific application program of a computer. By checking the unique number (PID; Process ID), it blocks the memory data access by the hacking program so that the execution result of the function can be prevented from affecting the program to be protected early. The present invention provides a method for preventing memory data manipulation.

상기와 같은 목적을 달성하기 위한 본 발명에 따른 컴퓨터 응용 프로그램의 메모리 데이터 조작 방지 방법은, (A) 보호 프로그램 실행 도중, 후킹 핸들러가 메모리 데이터 접근관련 API 함수를 후킹하는 단계; (B) 소정 프로그램에 의해 상기 API 함수가 호출되면, 상기 후킹 핸들러가 소정 비교조건을 토대로 상기 소정 프로그램이 악의적인 비정상적 메모리 데이터 접근 프로그램인지를 판단하는 단계; 및 (C) 상기 단계(B)의 판단결과, 상기 소정 프로그램이 악의적인 비정상적 메모리 데 이터 접근 프로그램일 경우, 상기 후킹 핸들러가 제어 처리부로 상기 판단결과를 보고하는 단계를 포함하는 것을 특징으로 한다.Memory data manipulation prevention method of a computer application program according to the present invention for achieving the above object, (A) during the execution of the protection program, the hooking handler hooks a memory data access-related API function; (B) when the API function is called by a predetermined program, determining, by the hooking handler, whether the predetermined program is a malicious abnormal memory data access program based on a predetermined comparison condition; And (C) if the predetermined program is a malicious abnormal memory data access program as a result of the determination of step (B), the hooking handler reporting the determination result to a control processor.

본 발명에 의하면, 컴퓨터의 특정 응용 프로그램이 실행 중 그 응용 프로그램의 메모리 데이터 접근관련 API 함수들을 주기적으로 후킹(Hooking) 함으로써 그 보호 하고자 하는 응용 프로그램의 메모리 데이터 변조를 미연에 방지할 수 있게 된다.According to the present invention, by hooking the API functions related to memory data access of the application program periodically during execution of a specific application program of the computer, it is possible to prevent the tampering of the memory data of the application program to be protected.

하기 설명 및 첨부 도면에서 구체적인 처리 흐름과 같은 많은 특정 상세 들이 본 발명의 보다 전반적인 이해를 제공하기 위해 나타나 있다. 이들 특정 상세 들 없이 본 발명이 실시될 수 있다는 것은 이 기술분야에서 통상의 지식을 가진 자에게 자명할 것이다. 그리고, 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능 및 구성에 대한 상세한 설명은 생략한다.Many specific details are set forth in the following description and in the accompanying drawings, in order to provide a more thorough understanding of the present invention. It will be apparent to those skilled in the art that the present invention may be practiced without these specific details. In addition, detailed description of well-known functions and configurations that may unnecessarily obscure the subject matter of the present invention will be omitted.

본 발명은 응용 프로그램 실행 중 메모리 데이터 접근관련 API 함수를 주기적으로 후킹한 후, 해킹 프로그램에 의해 상기 API 함수가 호출될 경우에 넘겨 받게 되는 고유한 번호(PID ; Process ID)를 체크하여, 상기 해킹 프로그램에 의한 메모리 데이터 접근을 초기에 차단할 수 있다. 또한, 실행 중인 상기 응용 프로그램에 대한 비정상적인 API 후킹 여부를 일정시간 간격으로 검사하고, 소정 조건에 사용되는 정보와 보호모듈 사이의 공유정보의 변조여부를 일정시간 간격으로 검사함으로써, 해킹 프로그램에 의한 응용 프로그램의 메모리 데이터 조작을 미연에 방지할 수 있다.The present invention periodically hooks an API function related to memory data access while executing an application program, and then checks a unique number (PID; Process ID) that is received when the API function is called by a hacking program. The program can initially block access to memory data. In addition, the application by the hacking program by checking whether the abnormal API hooking for the running application program at regular intervals, and whether the information used for a predetermined condition and the shared information between the protection module is modified at regular intervals. Memory data manipulation of the program can be prevented in advance.

이하, 첨부된 도면을 참조하여 본 발명에 따른 컴퓨터 응용 프로그램의 메모리 데이터 조작 방지 방법의 바람직한 실시예를 상술한다.Hereinafter, with reference to the accompanying drawings will be described a preferred embodiment of the memory data manipulation prevention method of a computer application program according to the present invention.

도 2는 본 발명에 따른 컴퓨터 응용 프로그램의 메모리 데이터 조작 방지 방법을 설명하기 위한 프로그램 모델이다.2 is a program model for explaining a method of preventing memory data manipulation of a computer application program according to the present invention.

이에 도시한 바와 같이, 상기 모델은, 소정 운영체제 하에서 구동되는 활성화된 게임 프로그램(100a), 상기 활성화된 프로그램들(100a, 100b,..., 100n) 중 악의적인 메모리 데이터 접근 프로그램을 체크/감시하는 감시 시스템(200) 및 상기 게임 프로그램에 의해 참조되는 시스템 메모리(300)를 포함한다.As shown here, the model checks / monitors a malicious memory data access program among the activated game programs 100a and the activated programs 100a, 100b,..., 100n that are run under a predetermined operating system. Monitoring system 200 and a system memory 300 referenced by the game program.

상기 감시 시스템(200)에 의해 보호 받는 상기 게임 프로그램(100a)은, 종래도 1에 도시된 활성화된 프로그램(100a, 100b,..., 100n)과는, 다음과 같은 점에서 다르다.The game program 100a protected by the monitoring system 200 is different from the activated programs 100a, 100b,..., 100n shown in FIG. 1 in the following points.

즉, 소정 운영체제 하에서, 본 발명에 의해 보호 대상인 게임 프로그램(100a)이 구동되면, a) 상기 감시 시스템(200)은 후킹 핸들러(140)의 실행 코드가 있는 DLL 파일을 제어모듈(150)로 인젝션 하여 시스템 DLL(120)의 메모리 데이터 접근 관련 API 함수를 후킹하고, b) 상기 감시 시스템(200)에 의해, IAT(130) 내의 상기 API 함수 주소는 상기 후킹 핸들러(140)의 주소로 덮어쓰기 되어 있으며, c) 소정 시간간격으로 API 함수의 후킹 변조여부를 판단하는 코드를 지닌 제어모듈(150)이 상기 게임 프로그램(100a)에 추가되고, d) 시스템 메모리(300)에 제어처리부 기록 메모리(310)와 후킹 핸들러 알림기록 메모리(320)를 각각 생성하여 공유시킨다.That is, under a predetermined operating system, when the game program 100a protected by the present invention is driven, a) the monitoring system 200 injects the DLL file containing the executable code of the hooking handler 140 into the control module 150. Hooking the memory data access related API function of the system DLL 120, and b) by the monitoring system 200, the API function address in the IAT 130 is overwritten with the address of the hooking handler 140. C) a control module 150 having a code for determining hooking modulation of an API function at a predetermined time interval is added to the game program 100a, and d) a control processor recording memory 310 in the system memory 300. ) And the hook handler notification recording memory 320 are shared.

이를 상술하면 다음과 같다.This will be described below.

상기 감시 시스템(200)은, 악의적인 메모리 데이터 접근 프로그램에 의한 입력 접근 발생시 상기 게임 프로그램(100a)을 제어하는 제어 처리부(210), 상기 게임 프로그램(100a) 구동시 API 함수 후킹 및/또는 IAT 후킹을 수행하는 후킹 처리부(220)를 포함한다.The monitoring system 200 may include a control processor 210 that controls the game program 100a when an input access by a malicious memory data access program occurs, and an API function hooking and / or IAT hooking when the game program 100a is driven. It comprises a hooking processing unit 220 to perform.

이때, 상기 후킹 처리부(220)는 상기 게임 프로그램(100a)이 활성화 되면, 상기 후킹 핸들러(140)의 실행코드가 있는 DLL 파일을 상기 제어모듈(150)로 인젝션(injection)한다. 이렇게 인젝션 되면, 해당 DLL 파일의 메모리 데이터 접근 관련 API 함수들이 후킹되고, 상기 후킹된 API 함수에 대한 핸들러 기능이 수행되며, 메모리 데이터의 입출력 정보를 상기 제어 처리부(210)로 통보하는 기능을 수행한다.In this case, when the game program 100a is activated, the hooking processor 220 injects the DLL file including the execution code of the hooking handler 140 into the control module 150. When the injection is performed, the API functions related to memory data access of the corresponding DLL file are hooked, a handler function for the hooked API function is performed, and a function of notifying input / output information of memory data to the control processor 210 is performed. .

이러한 상기 후킹 처리부(220)는 상기 게임 프로그램(100a) 내에 포함될 수도 있고, 상기 게임 프로그램(100a)과 독립적인 프로그램 형태로 존재할 수도 있으며, 또는 DLL 파일로 존재할 수도 있으나, 상술한 고유기능은 모두 동일하다.The hooking processor 220 may be included in the game program 100a, may exist in the form of a program independent from the game program 100a, or may exist as a DLL file, but all of the above-described unique functions are the same. Do.

한편, 상기 시스템 메모리(300)는 상기 제어 처리부(210)의 기록을 위한 제어 처리부 기록 메모리(310)와 상기 후킹 핸들러(140)에 의한 메모리 데이터 접근 감시결과를 기록하는 후킹 핸들러 알림 기록 메모리(320)를 포함한다. 여기서, 상기 제어 처리부(210)는 상기 제어 처리부 기록 메모리(310)에 보호대상 프로그램 ID 리스트와 상기 제어 처리부(210)와 통신하기 위한 이벤트 이름을 기록한다. 그리고, 상기 후킹 핸들러(140)는, 악의적인 메모리 데이터 접근 프로그램을 발견하 면, 해당 프로그램 ID, 해당 프로그램 이름, 호출 API 함수 명을 상기 시스템 메모리(300)에 기록한다.On the other hand, the system memory 300 is a hook handler notification recording memory 320 for recording the memory data access monitoring results by the control processor recording memory 310 and the hooking handler 140 for the recording of the control processor 210. ). Here, the control processor 210 records the protected program ID list and the event name for communicating with the control processor 210 in the control processor recording memory 310. If the hooking handler 140 finds a malicious memory data access program, the hooking handler 140 records the program ID, the program name, and the calling API function name in the system memory 300.

이하, 도 3 및 도 4를 참조하여, 본 발명에 따른 컴퓨터 응용 프로그램의 메모리 데이터 조작 방지 방법을 설명한다.Hereinafter, a method of preventing memory data manipulation of a computer application program according to the present invention will be described with reference to FIGS. 3 and 4.

도 3은 본 발명에 따른 컴퓨터 응용 프로그램의 메모리 데이터 조작 방지 방법을 설명하기 위한 동작 흐름도이다.3 is a flowchart illustrating a method of preventing memory data manipulation of a computer application program according to the present invention.

먼저, 상기 게임 프로그램(100a)이 구동되면, 상기 후킹 처리부(220)이 실행되어, 현재 실행중인 모든 프로그램과 이후 실행되는 프로그램들이 참고하는 메모리 데이터 접근 관련 API 함수들(예를 들면, 핸들을 취득해야만 접근 가능한 상위레벨의 OpenProcess 함수 등)을 후킹한다(S201). 이때, 상기 후킹 방법으로는, API 함수 후킹 방법 및 IAT 후킹 방법 중 어느 후킹 방법을 사용하여도 무방하다.First, when the game program 100a is driven, the hooking processor 220 is executed to acquire memory data access-related API functions (eg, handles) referenced by all programs currently executed and programs subsequently executed. Hook the upper level OpenProcess function, etc. only) (S201). In this case, as the hooking method, any hooking method among the API function hooking method and the IAT hooking method may be used.

상기 IAT 후킹 방법을 사용할 경우에는, 상기 API 함수 호출시 참조하는 IAT(130)에 상기 후킹 핸들러(140)의 주소가 덮어쓰기 되어 있기 때문에 상기 후킹 핸들러(140)가 실행되어 도 4와 같은 조건비교를 수행하게 되며, 상기 API 함수 후 킹 방법을 사용할 경우에는, 상기 API 함수 호출 시 호출 되는 함수의 최초 실행 코드의 일부가 변경되어 상기 후킹 핸들러(140)가 먼저 실행 되기 때문에 도 4와 같은 조건비교를 수행하게 된다(S202).In the case of using the IAT hooking method, since the address of the hooking handler 140 is overwritten in the IAT 130 referenced in the API function call, the hooking handler 140 is executed to compare the condition as shown in FIG. 4. In the case of using the king method after the API function, part of the first execution code of the function to be called when the API function is called is changed so that the hooking handler 140 is executed first. It will be performed (S202).

이어 상기 조건비교 결과, 해킹 프로그램에 의한 악의적인 메모리 데이터 접근으로 판명될 경우, 상기 후킹 핸들러(140)가 이를 상기 제어 처리부(210)로 통보하고, 상기 제어 처리부(210)가 현재 진행중인 게임 프로그램(100a)을 중지 시킨다 (S203-S204).Subsequently, when it is determined that malicious memory data is accessed by the hacking program, the hooking handler 140 notifies the control processor 210 to the control processor 210, and the control processor 210 is currently executing a game program ( 100a) is stopped (S203-S204).

이하, 도 4를 참조하여 상기 단계(S202)를 상세히 설명한다.Hereinafter, the step S202 will be described in detail with reference to FIG. 4.

먼저, 상기 후킹 핸들러(140)의 실행중, 현재 활성화된 프로그램이 메모리 데이터 접근관련 API 함수를 호출하면, 상기 후킹 핸들러(140)는 현재 상기 API 함수를 호출한 활성화된 프로그램이 보호대상 프로그램인지를 판단한다(S202a). 즉, 현재 활성화된 프로그램이 게임프로그램(100a)인지를 확인한다.First, during the execution of the hooking handler 140, if a currently activated program calls a memory data access related API function, the hooking handler 140 determines whether the currently activated program that has called the API function is a protected program. It determines (S202a). That is, it is checked whether the currently activated program is the game program 100a.

상기 단계(S202a)의 판단결과, 보호대상 프로그램이 아니면, 상기 API 함수 호출당시 파라미터를 통해 접근하려는 프로그램이 상기 게임 프로그램(100a)(예컨대, 보호대상 프로그램)에 속하는 프로그램인지를 판단한다(S202b). 즉, 상기 파라미터는 PID(Process ID)이며, 응용 프로그램이 상기 API 함수를 호출할 경우 획득하는 고유의 식별자이다.As a result of the determination in step S202a, if it is not the program to be protected, it is determined whether the program to be accessed through the parameter at the time of the API function call belongs to the game program 100a (for example, the program to be protected) (S202b). . That is, the parameter is a PID (Process ID) and a unique identifier obtained when an application program calls the API function.

상기 단계(202b)의 판단결과, 상기 윈도우가 게임 프로그램(100a)에 속하는 프로그램이라면, 악의적인 비정상적 메모리 데이터 접근으로 판단하여 상기 제어 처리부(210)에 보고한다(S202c). 이는 현재 활성화된 프로그램이 메모리 데이터 접근관련 API 함수를 호출한 프로그램이고, 상기 게임 프로그램(100a)은 아니면서 게임 프로그램(100a)의 메모리에 영향을 주는 프로그램이기 때문이다.As a result of the determination of step 202b, if the window is a program belonging to the game program 100a, it is determined that the malicious abnormal memory data is accessed and reported to the control processor 210 (S202c). This is because the currently activated program is a program that calls a memory data access-related API function, and is a program that affects the memory of the game program 100a instead of the game program 100a.

그러나, 상기 단계(202b)의 판단결과, 상기 파라미터 입력관련 윈도우가 게임 프로그램(100a)에 속하지 않는다면, 정상적인 접근으로 판단하여 해당 API 함수를 호출한다(S202d). 즉, 현재 활성화된 프로그램이 메모리 데이터 접근관련 API 함수를 호출했지만, 게임 프로그램(100a)과는 관련이 없으므로 정상적인 프로그램 으로 판단한다.However, as a result of the determination of step 202b, if the parameter input related window does not belong to the game program 100a, it is determined that the access is normal and the corresponding API function is called (S202d). That is, although the currently activated program calls the memory data access API function, it is not related to the game program 100a and thus is determined to be a normal program.

한편, 상기 단계(202a)의 판단결과, 보호대상 프로그램에 해당되면(즉, 게임프로그램이라면), 해당 API 함수를 호출한다(S202d).On the other hand, if the determination result of the step 202a corresponds to the program to be protected (that is, the game program), the corresponding API function is called (S202d).

상기 실시예에서는, Windows 9X 계열에서 상위 레벨의 메모리 데이터 접근관련 API 함수(예컨대, OpenProcess 함수 등)의 후킹에 대해서만 기술하였다.In the above embodiment, only the hooking of high-level memory data access API functions (eg, OpenProcess function, etc.) in the Windows 9X series is described.

그러나, Windows 9X 계열의 다른 API 함수(예컨대, ReadProcessMemory, WriteProcessMemory 함수 등) 역시 동일한 방법을 따르며, Windows NT 계열에서의 API 함수(OpenProcess 함수, Read/WriteProcessMemory 함수 등)는 전부 커널모드(Kernel Mode)의 서비스 테이블(Service Table)(400)을 후킹하게 된다.However, other API functions in the Windows 9X family (eg, ReadProcessMemory, WriteProcessMemory, etc.) follow the same method, and all API functions in the Windows NT family (OpenProcess, Read / WriteProcessMemory, etc.) are all in Kernel Mode. The service table 400 is hooked.

이하, 상기 일 실시예에 대한 다른 실시예로서, 상기 서비스 테이블(Service Table)의 후킹에 대하여 설명한다.Hereinafter, as another embodiment of the embodiment, hooking of the service table will be described.

상기 API 함수들이 호출 되었을 때, 내부적으로 커널에서 제공하는 함수를 다시 호출 하게 되는데, 상기 서비스 테이블(Service Table)은 이 커널에서 제공하는 함수들의 목록 테이블이며, 상기 API 함수들은 이 테이블에서 자신이 호출 하려는 커널의 함수 주소를 찾아 호출 하게 된다.When the API functions are called, internally the functions provided by the kernel are called again. The service table is a list table of functions provided by the kernel, and the API functions are called by this table. It finds the function address of the kernel to be called and calls it.

또한, 상기 서비스 테이블(Service Table)에 대한 후킹은 이 테이블(Table)에 저장된 함수 주소를 후킹 핸들러(420)가 자신의 주소로 바꾸는 것을 의미하며, 이후는 상기 API 함수 후킹과 동일하게 동작 한다. 상기 서비스 테이블(Service Table) 함수 후킹은 커널 모드 드라이버를 통해서 구현이 되므로 구현이 어려우나 해커에 의해 쉽게 발견 되지 않고, API 함수 후킹 보다 안정성이 높다.In addition, the hooking on the service table means that the hooking handler 420 replaces the function address stored in the table with its own address, and then operates the same as the hooking of the API function. Since the service table function hooking is implemented through a kernel mode driver, it is difficult to implement, but is not easily detected by a hacker, and is more stable than the API function hooking.

한편, 메모리 데이터 접근관련 API 함수의 후킹은, 각 프로그램 영역의 특정 API 함수들의 실행 코드 또는 해당 함수와 관련된 IAT(130) 내의 관련 함수 주소를 변경 하는 것 이므로, 쉽게 발견되어 변조됨으로써 무력화될 수 있다.On the other hand, the hooking of the memory data access-related API function, because it changes the execution code of the specific API functions of each program area or the relevant function address in the IAT 130 associated with the function, can be easily found and tampered with. .

따라서, 게임 프로그램(100a) 실행시, 상기 게임 프로그램(100a)에 도 5와 같은 동작을 수행하는 제어모듈(150)을 삽입하여, 본 발명에서 수행된 API 함수 후킹의 변조 여부를 판단할 수 있다(S205). 이와 같은 판단 역시, API 함수 후킹에 의해 후킹된 메모리 데이터 접근관련 API 함수의 변조여부 판단 및 IAT 후킹에 의해 후킹된 메모리 데이터 접근관련 API 함수의 변조여부 판단 두 가지로 나뉠 수 있다.Therefore, when the game program 100a is executed, the control module 150 performing the operation as shown in FIG. 5 may be inserted into the game program 100a to determine whether the API function hooking is performed. (S205). This determination can be divided into two types: determination of whether an API function hooked by an API function hooked by API function hooking and determination of whether an API function hooked by the memory data access hooked by IAT hooking.

먼저, API 함수 후킹의 경우, 상기 제어모듈(150)은, API 함수 주소의 첫 바이트가 JMP 코드인지의 여부를 판단한다(S205a). 상기 단계(205a)의 판단결과 JMP코드가 아니면, 상기 API 함수가 변조 되었음을 상기 제어 처리부(210)에 보고한다(S205b). First, in the case of API function hooking, the control module 150 determines whether the first byte of the API function address is a JMP code (S205a). If it is determined that the step 205a is not a JMP code, the control unit 210 reports that the API function has been modulated (S205b).

그러나, 상기 단계(205a)의 판단결과 JMP 코드이면, 상기 JMP 코드의 주소가 인젝션된 DLL의 코드영역을 가리키는지 판단한다(S205c). However, if it is determined that the step 205a is a JMP code, it is determined whether the address of the JMP code points to the code region of the injected DLL (S205c).

상기 단계(205c)의 판단결과, 인젝션된 DLL의 코드영역을 가르키면, 정상적으로 후킹된 API 함수이고(S205d), 상기 단계(205c)의 판단결과 가르키지 않으면, 상기 후킹된 API 함수가 변조된 것으로 판단하여 제어처리부(210)에 보고한다(S205b).If the determination result of the step 205c indicates that the code region of the injected DLL is a normally hooked API function (S205d), and if the determination result of the step 205c does not point, the hooked API function is modified. The determination is made and reported to the control processing unit 210 (S205b).

한편, IAT 후킹의 경우, 상기 제어모듈(150)은, 인젝션된 DLL의 메모리 주소 영역이 변조 되었는지를 아래와 같은 비교루틴을 통해 감시한다.On the other hand, in the case of IAT hooking, the control module 150 monitors whether the memory address area of the injected DLL has been modified through a comparison routine as follows.

즉, 상기 제어모듈(150)은 후킹 처리부(220)에서 후킹한 IAT(130)내의 입력 함수의 주소가 상기 후킹 처리부(220)의 실행 코드가 담겨진 인젝션된 DLL의 코드영역을 가르키는지 판단하여, 변조여부를 판단한다. 즉, 상기 판단결과, 인젝션된DLL 코드영역을 가르키면, 정상적으로 후킹된 API 함수이고, 가르키지 않으면, 상기 후킹된 API함수가 변조된 것으로 판단하여 제어처리부(210)에 알린다.That is, the control module 150 determines whether the address of the input function in the IAT 130 hooked by the hooking processor 220 indicates a code region of the injected DLL containing the execution code of the hooking processor 220. Determine if it is modulated. That is, if the pointed out result indicates the injected DLL code region, it is a normally hooked API function. If not, the hooked API function is determined to be modulated and notified to the control processor 210.

또 다른 한편으로, 각 프로그램별 API 함수 후킹 핸들러(140)에서 도 4와 같은 비교조건에 필요한 정보 및 메모리 데이터 접근 판단결과에에 따른 관련정보를 상기 제어 처리부(210)에 보고하기 위하여 인젝션된 DLL과 상기 제어 처리부(210) 간에 상기 시스템 메모리(300)를 공유한다.On the other hand, the DLL injected by the API function hooking handler 140 for each program to report the information necessary for the comparison condition as shown in FIG. 4 and the related information according to the memory data access determination result to the control processor 210. And the system memory 300 are shared between the control processor 210.

상기 시스템 메모리(300) 정보를 보호하기 위하여, 상기 시스템 메모리(300)를 두 부분으로 나눠 보호한다. 즉, 상기 두 부분은 상기 제어 처리부(210)에 의해 기록되는 저장영역인 제어 처리부 기록 메모리(310)와 메모리 데이터 접근 판단결과에 따른 관련정보가 기록되는 저장영역인 후킹 핸들러 알림 기록 메모리(320)로 구분된다. 예컨대, 상기 저장영역(310)에는 보호대상 프로그램 ID 리스트와 상기 제어 처리부(210)와 통신하기 위한 이벤트 이름이 기록되고, 상기 저장영역(320)에는 프로그램 ID, 프로그램 이름 및 API 함수 이름이 기록된다.In order to protect the system memory 300 information, the system memory 300 is divided into two parts. That is, the two portions are the control processing unit recording memory 310 which is a storage area recorded by the control processing unit 210 and the hooking handler notification recording memory 320 which is a storage area where related information according to the memory data access determination result is recorded. Separated by. For example, a list of protected program IDs and an event name for communicating with the control processor 210 are recorded in the storage area 310, and a program ID, a program name, and an API function name are recorded in the storage area 320. .

이어, 상기 제어 처리부(210)가 저장영역(310)의 기록정보 변조여부를 일정시간 간격으로 검사한다(S206).Subsequently, the control processor 210 checks whether or not the recording information is modulated in the storage area 310 at predetermined time intervals (S206).

즉, 상기 제어 처리부(210)는 상기 저장영역(310)의 내용이 변경되는 경우, 상기 저장영역(310)에 대한 CRC(Cyclic Redundancy Code) 값을 생성 또는 갱신하여 저장한 후, 일정 시간마다 상기 저장영역(310)에 대한 CRC 값을 상기 저장된 CRC 값과 비교하여 상기 시스템 메모리(300)의 공유정보 변조 여부를 판단함으로써, 컴퓨터 프로그램에 의한 자동입력을 보호한다.That is, when the content of the storage area 310 is changed, the control processor 210 generates or updates a Cyclic Redundancy Code (CRC) value for the storage area 310, and stores the same at a predetermined time. The CRC value of the storage area 310 is compared with the stored CRC value to determine whether the shared information of the system memory 300 is modulated, thereby protecting automatic input by a computer program.

한편, 상기 프로그램별로 공유하는 공유 메모리는 별도로 생성하지 않고, 인젝션되는 DLL의 쉐어드 섹션(Shared Section)을 활용할 수도 있다.Meanwhile, the shared memory shared by each program may be used without using a shared section of the DLL to be injected.

상기의 예에서는, 본 발명에 따른 후킹 핸들러에 의해, 악의적인 응용 프로그램이 메모리 테이터 접근관련 상위 레벨의 API 함수로 접근하는 것을 차단하는 동작이 전술 되었다.In the above example, the operation of blocking the malicious application program from accessing a higher level API function related to memory data access by the hooking handler according to the present invention has been described above.

이때, 하위레벨의 API 함수(예컨대, Read/WriteProcessMemory 함수 등)는 상기 상위레벨의 API 함수(예컨대, OpenProcess 함수 등)를 통해 획득한 핸들이 있어야만 사용 가능한 함수이다. 따라서, 상기 상위레벨의 API 함수를 방어하면 메모리 접근 차단 기능은 불필요해 보이지만, 임의로 프로세스 핸들을 생성할 수 있으므로, 상기 두 API 함수(ReadProcessMemory 함수, WriteProcessMemory 함수)를 호출할 수도 있게 된다. 따라서, 더욱 확실한 접근 차단을 위해 메모리 접근 함수들에 대한 보호 기능이 추가로 필요하다.In this case, the lower level API function (eg, Read / WriteProcessMemory function, etc.) is a function that can be used only when there is a handle acquired through the upper level API function (eg, OpenProcess function, etc.). Therefore, if the upper level API function is defended, the memory access blocking function may seem unnecessary, but since the process handle can be arbitrarily generated, the two API functions (ReadProcessMemory function and WriteProcessMemory function) can be called. Thus, additional protection for memory access functions is needed for more robust access blocking.

Windows 9X 계열 및 Windows NT 계열에서의 API 함수(Read/WriteProcessMemory 함수)에 대한 후킹 핸들러의 후킹방법 또한, 도 4의 비교조건을 토대로 수행되기 때문에 이에 대한 상술은 생략하기로 한다. The hooking method of the hooking handler for the API function (Read / WriteProcessMemory function) in the Windows 9X series and the Windows NT series is also performed based on the comparison condition of FIG. 4, and thus the detailed description thereof will be omitted.

이상에서는 본 발명을 특정의 바람직한 실시예로서 설명하였으나, 본 발명은 상기한 실시예에 한정되지 아니하며, 특허 청구의 범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변형이 가능할 것이다.Although the present invention has been described as a specific preferred embodiment, the present invention is not limited to the above-described embodiments, and the present invention is not limited to the above-described embodiments without departing from the gist of the present invention as claimed in the claims. Anyone with a variety of variations will be possible.

따라서, 본 발명에 의하면, 응용 프로그램 실행 중 메모리 데이터 접근관련 API 함수를 후킹한 후, 해킹 프로그램에 의해 상기 API 함수가 호출될 경우에 넘겨 받게 되는 고유한 번호(PID ; Process ID)를 체크하여, 상기 해킹 프로그램에 의한 메모리 데이터 접근을 초기에 차단할 수 있다.Therefore, according to the present invention, after hooking an API function related to memory data access while executing an application program, a unique number (PID; Process ID) received when the API function is called by a hacking program is checked, Memory data access by the hacking program may be initially blocked.

또한, 실행 중인 상기 응용 프로그램에 대한 비정상적인 API 후킹 여부를 일정시간 간격으로 검사하고, 소정 조건에 사용되는 정보와 보호모듈 사이의 공유정보의 변조여부를 일정시간 간격으로 검사함으로써, 해킹 프로그램에 의한 응용 프로그램의 메모리 데이터 조작을 미연에 방지할 수 있다.In addition, the application by the hacking program by checking whether the abnormal API hooking for the running application program at regular intervals, and whether the information used for a predetermined condition and the shared information between the protection module is modified at regular intervals. Memory data manipulation of the program can be prevented in advance.

Claims (20)

(A) 보호 프로그램 실행 도중, 후킹 핸들러가 메모리 데이터 접근관련 API 함수를 후킹하는 단계;(A) hooking a memory data access related API function by a hooking handler during execution of a protection program; (B) 소정 프로그램에 의해 상기 API 함수가 호출되면, 상기 후킹 핸들러가 소정 비교조건을 토대로 상기 소정 프로그램이 악의적인 비정상적 메모리 데이터 접근 프로그램인지를 판단하는 단계; 및(B) when the API function is called by a predetermined program, determining, by the hooking handler, whether the predetermined program is a malicious abnormal memory data access program based on a predetermined comparison condition; And (C) 상기 단계(B)의 판단결과, 상기 소정 프로그램이 악의적인 비정상적 메모리 데이터 접근 프로그램일 경우, 상기 후킹 핸들러가 제어 처리부로 상기 판단결과를 보고하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 응용 프로그램의 메모리 데이터 조작 방지 방법.And (C) if the predetermined program is a malicious abnormal memory data access program as a result of the determination in step (B), the hooking handler reporting the determination result to a control processing unit. To prevent memory data tampering 제 1 항에 있어서, 상기 단계(A)는, The method of claim 1, wherein step (A) comprises: IAT(Import Address Table) 후킹 및/또는 API 함수 후킹방법을 이용하는 것을 특징으로 하는 컴퓨터 응용 프로그램의 메모리 데이터 조작 방지 방법.A method of preventing manipulation of memory data in a computer application, using an import address table (IAT) hooking method and / or an API function hooking method. 제 1 항에 있어서, 상기 단계(B)는,The method of claim 1, wherein step (B) is B-1) 상기 후킹 핸들러가 현재 상기 API 함수를 호출한 활성화된 프로그램이 보호대상 프로그램인지를 판단하는 단계;B-1) determining, by the hooking handler, whether an active program that has called the API function is a protected program; B-2) 상기 단계(B-1)의 판단결과, 보호대상 프로그램이 아니면, 상기 API 함 수 호출당시 파라미터를 통해 접근하려는 프로그램이 보호대상 프로그램 인지를 판단하는 단계; 및B-2) as a result of the determination in step (B-1), if it is not a protected program, determining whether a program to be accessed through a parameter at the time of calling the API function is a protected program; And B-3) 상기 단계(B-2)의 판단결과, 보호대상 프로그램일 경우, 악의적인 비정상적 메모리 데이터 접근으로 판단하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 응용 프로그램의 메모리 데이터 조작 방지 방법.B-3) A method of preventing manipulation of memory data of a computer application program comprising determining that the program is protected by malicious abnormal memory data when the determination result of the step (B-2). 제 3 항에 있어서, 상기 단계(B-2)는,The method of claim 3, wherein step (B-2), 상기 단계(B-1)의 판단결과, 보호대상 프로그램에 해당되면, 원시 API 함수를 호출하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 응용 프로그램의 메모리 데이터 조작 방지 방법.The method of preventing the manipulation of the memory data of the computer application program, characterized in that further comprising the step of calling the native API function, if the protection target program, as a result of the step (B-1). 제 3 항에 있어서, 상기 상기 파라미터는, The method of claim 3, wherein the parameter is, PID(Process ID)이며, 컴퓨터 응용 프로그램이 상기 API 함수를 호출할 경우 획득하는 고유의 식별자인 것을 특징으로 하는 컴퓨터 응용 프로그램의 메모리 데이터 조작 방지 방법.PID (Process ID), and is a unique identifier obtained when a computer application calls the API function, memory data manipulation prevention method of a computer application, characterized in that. 제 3 항에 있어서, 상기 단계(B-3)는,The method of claim 3, wherein step (B-3), 상기 단계(B-2)의 판단결과, 보호대상 프로그램이 아닐 경우, 현재 활성화된 프로그램이 메모리 데이터 접근관련 API 함수를 호출했지만, 상기 보호대상 프로그램과는 관련이 없기 때문에 원시 API 함수를 호출하는 단계를 더 포함하는 것을 특 징으로 하는 컴퓨터 응용 프로그램의 메모리 데이터 조작 방지 방법.If it is determined that the step (B-2) is not a protected program, the currently activated program calls a memory data access related API function, but is not related to the protected program, and thus calling a native API function. Memory data manipulation prevention method of a computer application, characterized in that it further comprises. 제 1 항에 있어서, 상기 방법은,The method of claim 1, wherein the method is (D) 제어모듈이 상기 단계(A)에서 후킹된 API 함수의 변조여부를 일정시간 간격으로 모니터링하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 응용 프로그램의 메모리 데이터 조작 방지 방법.(D) the control module further comprises the step of monitoring the modulation of the API function hooked in the step (A) at a predetermined time interval, the method of preventing memory data manipulation of a computer application. 제 7 항에 있어서, 상기 단계(D)는,The method of claim 7, wherein the step (D), (D-1) 상기 후킹된 API 함수 주소의 첫 바이트가 JMP 코드인지의 여부를 판단하는 단계;(D-1) determining whether the first byte of the hooked API function address is a JMP code; (D-2) 상기 단계(D-1)의 판단결과, JMP 코드일 경우, 상기 JMP 코드의 주소가 인젝션된 DLL의 코드 영역을 가리키는지의 여부를 판단하는 단계; 및(D-2) determining that the address of the JMP code indicates a code region of the injected DLL when the determination result of the step (D-1) is a JMP code; And (D-3) 상기 단계(D-2)의 판단결과, 상기 인젝션된 DLL 코드영역을 가리킬 경우, 변조되지 않은 API 함수로 판단하고, 상기 단계(D-2)의 판단결과, 상기 인젝션된 DLL 코드영역을 가르키지 않을 경우, 상기 후킹된 API 함수가 변조된 것으로 판단하여 상기 제어 처리부로 알리는 단계를 포함하는 것을 특징으로 하는 컴퓨터 응용 프로그램의 메모리 데이터 조작 방지 방법.(D-3) When the determination result of the step (D-2) indicates the injected DLL code region, it is determined as an unmodulated API function, and as a result of the determination of the step (D-2), the injected DLL And notifying the control processor by determining that the hooked API function has been tampered with if it does not point to a code region. 제 8 항에 있어서, 상기 단계(D-2)는,The method of claim 8, wherein the step (D-2), 상기 단계(D-1)의 판단결과, JMP 코드가 아닐 경우, 상기 후킹된 API 함수가 변조된 것으로 판단하여 제어 처리부로 보고하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 응용 프로그램의 메모리 데이터 조작 방지 방법.If it is determined that the step (D-1) is not a JMP code, determining that the hooked API function has been modified to report to the control processing unit, characterized in that it further comprises the step of preventing memory data manipulation of the computer application Way. 제 1 항에 있어서, 상기 방법은,The method of claim 1, wherein the method is (E) 제어 처리부에 의해 기록되는 저장영역의 기록정보 변조여부를 일정시간 간격으로 검사하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 응용 프로그램의 메모리 데이터 조작 방지 방법.(E) a method of preventing memory data manipulation of a computer application program, further comprising the step of inspecting whether or not the recording information of the storage area recorded by the control processing unit is modulated at regular intervals. 제 10 항에 있어서, 상기 단계(E)는,The method of claim 10, wherein step (E) comprises: (E-1) 상기 저장영역 기록정보 변경 시에 상기 기록정보에 대한 CRC(Cyclic Redundancy Code) 값을 생성 또는 갱신하여 저장하는 단계; 및(E-1) generating or updating a Cyclic Redundancy Code (CRC) value for the recording information when the storage area recording information is changed; And (E-2) 상기 저장된 CRC(Cyclic Redundancy Code) 값을 일정시간 간격으로 상기 저장영역의 CRC(Cyclic Redundancy Code) 값과 비교하여 다르면 변조된 것으로 판단하여 상기 보호대상 프로그램을 중지시키는 단계를 포함하는 것을 특징으로 하는 컴퓨터 응용 프로그램의 메모리 데이터 조작 방지 방법.(E-2) comparing the stored Cyclic Redundancy Code (CRC) value with the Cyclic Redundancy Code (CRC) value of the storage area at a predetermined time interval, and determining that the stored Cyclic Redundancy Code (CRC) value has been modified to stop the protected program. A method of preventing manipulation of memory data of a computer application, characterized in that: (A) 보호 프로그램 실행 도중, 후킹 핸들러가 메모리 데이터 접근관련 API 함수를 후킹하는 단계;(A) hooking a memory data access related API function by a hooking handler during execution of a protection program; (B) 소정 프로그램에 의해 상기 API 함수가 호출되면, 상기 후킹 핸들러가 소정 비교조건을 토대로 상기 소정 프로그램이 악의적인 비정상적 메모리 데이터 접근 프로그램인지를 판단하는 단계; 및(B) when the API function is called by a predetermined program, determining, by the hooking handler, whether the predetermined program is a malicious abnormal memory data access program based on a predetermined comparison condition; And (C) 상기 단계(B)의 판단결과, 상기 소정 프로그램이 악의적인 비정상적 메모리 데이터 접근 프로그램일 경우, 상기 후킹 핸들러가 제어 처리부로 상기 판단결과를 보고하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 응용 프로그램의 메모리 데이터 조작 방지 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.And (C) if the predetermined program is a malicious abnormal memory data access program as a result of the determination in step (B), the hooking handler reporting the determination result to a control processing unit. A computer-readable recording medium having recorded thereon a program for executing a method of preventing memory data manipulation. 제 12 항에 있어서, 상기 단계(A)는,The method of claim 12, wherein step (A) comprises: IAT(Import Address Table) 후킹 및/또는 API 함수 후킹방법을 이용하는 것을 특징으로 하는 컴퓨터 응용 프로그램의 메모리 데이터 조작 방지 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.A computer-readable recording medium having recorded thereon a program for executing a method of preventing manipulation of memory data of a computer application, wherein the method of hooking an import address table (IAT) and / or an API function hooking method is used. 제 12 항에 있어서, 상기 단계(B)는,The method of claim 12, wherein step (B) comprises B-1) 상기 후킹 핸들러가 현재 상기 API 함수를 호출한 활성화된 프로그램이 보호대상 프로그램인지를 판단하는 단계;B-1) determining, by the hooking handler, whether an active program that has called the API function is a protected program; B-2) 상기 단계(B-1)의 판단결과, 보호대상 프로그램이 아니면, 상기 API 함수 호출당시 파라미터를 통해 접근하려는 프로그램이 보호대상 프로그램 인지를 판단하는 단계; 및B-2) as a result of the determination in step (B-1), if it is not a protected program, determining whether a program to be accessed through a parameter at the time of calling the API function is a protected program; And B-3) 상기 단계(B-2)의 판단결과, 보호대상 프로그램일 경우, 악의적인 비정상적 메모리 데이터 접근으로 판단하는 단계를 포함하는 것을 특징으로 하는 컴퓨 터 응용 프로그램의 메모리 데이터 조작 방지 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.B-3) If the result of the determination in the step (B-2), in the case of the program to be protected, executing the memory data manipulation prevention method of the computer application, characterized in that it comprises the step of determining the malicious abnormal memory data access. A computer-readable recording medium that contains a program for making a program. 제 14 항에 있어서, 상기 단계(B-2)는,The method of claim 14, wherein step (B-2), 상기 단계(B-1)의 판단결과, 보호대상 프로그램에 해당되면, 원시 API 함수를 호출하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 응용 프로그램의 메모리 데이터 조작 방지 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.As a result of the determination in the step (B-1), if the program to be protected, the method comprising the step of calling a native API function to a computer that records a program for executing the memory data manipulation prevention method of a computer application, characterized in that it comprises Readable record carrier. 제 12 항에 있어서, 상기 기록매체는,The method of claim 12, wherein the recording medium, (D) 제어모듈이 상기 단계(A)에서 후킹된 API 함수의 변조여부를 일정시간 간격으로 모니터링하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 응용 프로그램의 메모리 데이터 조작 방지 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.(D) a control module for monitoring a program at a predetermined time interval whether the modulation of the API function hooked in the step (A) program for executing a memory data manipulation prevention method of a computer application Recordable computer-readable recording media. 제 16 항에 있어서, 상기 단계(D)는,The method of claim 16, wherein the step (D), (D-1) 상기 후킹된 API 함수 주소의 첫 바이트가 JMP 코드인지의 여부를 판단하는 단계;(D-1) determining whether the first byte of the hooked API function address is a JMP code; (D-2) 상기 단계(D-1)의 판단결과, JMP 코드일 경우, 상기 JMP 코드의 주소가 인젝션된 DLL의 코드 영역을 가리키는지의 여부를 판단하는 단계; 및(D-2) determining that the address of the JMP code indicates a code region of the injected DLL when the determination result of the step (D-1) is a JMP code; And (D-3) 상기 단계(D-2)의 판단결과, 상기 인젝션된 DLL 코드영역을 가리킬 경우, 변조되지 않은 API 함수로 판단하고, 상기 단계(D-2)의 판단결과, 상기 인젝션된 DLL 코드영역을 가르키지 않을 경우, 상기 후킹된 API 함수가 변조된 것으로 판단하여 상기 제어 처리부로 알리는 단계를 포함하는 것을 특징으로 하는 컴퓨터 응용 프로그램의 메모리 데이터 조작 방지 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.(D-3) When the determination result of the step (D-2) indicates the injected DLL code region, it is determined as an unmodulated API function, and as a result of the determination of the step (D-2), the injected DLL Determining that the hooked API function has been tampered with and notifying the control processor if the code region does not point to a code region, the program having a program for executing a memory data manipulation prevention method of a computer application. Readable record carrier. 제 17 항에 있어서, 상기 단계(D-2)는,The method of claim 17, wherein the step (D-2), 상기 단계(D-1)의 판단결과, JMP 코드가 아닐 경우, 상기 후킹된 API 함수가 변조된 것으로 판단하여 제어 처리부로 보고하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 프로그램에 의한 자동입력 방지방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.If it is determined that the step (D-1) is not a JMP code, determining that the hooked API function is modulated and further comprising the step of reporting to the control processing unit, characterized in that the automatic input prevention method by a computer program A computer-readable recording medium having recorded thereon a program for executing the program. 제 12 항에 있어서, 상기 기록매체는,The method of claim 12, wherein the recording medium, (E) 제어 처리부에 의해 기록되는 저장영역의 기록정보 변조여부를 일정시간 간격으로 검사하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 응용 프로그램의 메모리 데이터 조작 방지 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.(E) checking whether or not the recording information of the storage area recorded by the control processing unit is modulated at a predetermined time interval to a computer having recorded thereon a program for executing a method of preventing memory data manipulation of a computer application program. Readable record carrier. 제 19 항에 있어서, 상기 단계(E)는,20. The method of claim 19, wherein step (E) comprises (E-1) 상기 저장영역 기록정보 변경 시에 상기 기록정보에 대한 CRC(Cyclic Redundancy Code) 값을 생성 또는 갱신하여 저장하는 단계; 및(E-1) generating or updating a Cyclic Redundancy Code (CRC) value for the recording information when the storage area recording information is changed; And (E-2) 상기 저장된 CRC(Cyclic Redundancy Code) 값을 일정시간 간격으로 상기 저장영역의 CRC(Cyclic Redundancy Code) 값과 비교하여 다르면, 변조된 것으로 판단하여 상기 보호대상 프로그램을 중지시키는 단계를 포함하는 것을 특징으로 하는 컴퓨터 응용 프로그램의 메모리 데이터 조작 방지 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.(E-2) if the stored Cyclic Redundancy Code (CRC) value is different from the Cyclic Redundancy Code (CRC) value of the storage area at regular intervals, determining that the stored Cyclic Redundancy Code (CRC) value is modulated and stopping the protected program. A computer-readable recording medium having recorded thereon a program for executing a method for preventing memory data manipulation of a computer application program.
KR1020050006586A 2004-11-29 2005-01-25 Method for preventing from inventing data of memory in a computer application program KR100681696B1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20040098909 2004-11-29
KR1020040098909 2004-11-29

Publications (2)

Publication Number Publication Date
KR20060059759A true KR20060059759A (en) 2006-06-02
KR100681696B1 KR100681696B1 (en) 2007-02-15

Family

ID=37156895

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050006586A KR100681696B1 (en) 2004-11-29 2005-01-25 Method for preventing from inventing data of memory in a computer application program

Country Status (1)

Country Link
KR (1) KR100681696B1 (en)

Cited By (15)

* 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
KR100943318B1 (en) * 2007-08-21 2010-02-19 소프트캠프(주) Clip board security method
KR100951852B1 (en) * 2008-06-17 2010-04-12 한국전자통신연구원 Apparatus and Method for Preventing Anomaly of Application Program
KR100955725B1 (en) * 2007-12-28 2010-05-03 엔에이치엔비즈니스플랫폼 주식회사 Method and System for Preventing Memory Hacking
WO2010093071A1 (en) * 2009-02-12 2010-08-19 주식회사 안철수연구소 Internet site security system and method thereof
KR101014814B1 (en) * 2009-07-22 2011-02-14 주식회사 즐게임 Kernel monitoring module installed computer system and kernel monitoring method thereof
WO2012020948A2 (en) * 2010-08-10 2012-02-16 (주)잉카인터넷 Method for detecting and blocking a game-hack process
KR101155123B1 (en) * 2010-10-26 2012-06-11 한국과학기술원 Apparatus and method for protecting memory of application from failure of kernel code
US20130151864A1 (en) * 2010-08-20 2013-06-13 Fasoo.Com Co., Ltd Clipboard protection system in drm environment and recording medium in which program for executing method in computer is recorded
WO2013103233A1 (en) * 2012-01-02 2013-07-11 (주)네오위즈게임즈 Method of preventing memory tampering, and client terminal
US8607094B2 (en) 2009-09-29 2013-12-10 Hyundai Motor Company Operational system test method
US8667294B2 (en) 2011-08-30 2014-03-04 Electronics And Telecommunications Research Institute Apparatus and method for preventing falsification of client screen
KR101438979B1 (en) * 2012-12-31 2014-09-11 현대자동차주식회사 Method and system for checking software
CN106997316A (en) * 2017-04-11 2017-08-01 上海联彤网络通讯技术有限公司 Detecting system and method that memory abnormal increases
KR20200087372A (en) * 2019-01-10 2020-07-21 (주)제니퍼소프트 Apparatus of capable auto profiling

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101052735B1 (en) * 2009-03-06 2011-07-29 주식회사 안철수연구소 Method for detecting presence of memory operation and device using same
KR20230113892A (en) 2022-01-24 2023-08-01 주식회사 에이치피에스피 Log Data Classification System of Computer Devices

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5757914A (en) * 1995-10-26 1998-05-26 Sun Microsystems, Inc. System and method for protecting use of dynamically linked executable modules
KR100195038B1 (en) * 1996-08-29 1999-06-15 양재신 Knobs installed on trunk lid of car
KR100461940B1 (en) * 2002-01-12 2004-12-14 주식회사 코어트러스트 Method and system of the information protection for digital contents
JP2004234053A (en) 2003-01-28 2004-08-19 Internatl Business Mach Corp <Ibm> Computer system, computer device, data protection method for storage device, and program

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100943318B1 (en) * 2007-08-21 2010-02-19 소프트캠프(주) Clip board security method
KR100955725B1 (en) * 2007-12-28 2010-05-03 엔에이치엔비즈니스플랫폼 주식회사 Method and System for Preventing Memory Hacking
WO2009131371A3 (en) * 2008-04-22 2010-01-21 Ahnlab., Inc. Method for securing on-line electronic transaction program
WO2009131371A2 (en) * 2008-04-22 2009-10-29 Ahnlab., Inc. Method for securing on-line electronic transaction program
US8621624B2 (en) 2008-06-17 2013-12-31 Electronics And Telecommunications Research Institute Apparatus and method for preventing anomaly of application program
KR100951852B1 (en) * 2008-06-17 2010-04-12 한국전자통신연구원 Apparatus and Method for Preventing Anomaly of Application Program
WO2010093071A1 (en) * 2009-02-12 2010-08-19 주식회사 안철수연구소 Internet site security system and method thereof
US8549631B2 (en) 2009-02-12 2013-10-01 Ahnlab, Inc. Internet site security system and method thereto
KR101014814B1 (en) * 2009-07-22 2011-02-14 주식회사 즐게임 Kernel monitoring module installed computer system and kernel monitoring method thereof
US8607094B2 (en) 2009-09-29 2013-12-10 Hyundai Motor Company Operational system test method
WO2012020948A3 (en) * 2010-08-10 2012-04-19 (주)잉카인터넷 Method for detecting and blocking a game-hack process
WO2012020948A2 (en) * 2010-08-10 2012-02-16 (주)잉카인터넷 Method for detecting and blocking a game-hack process
US20130151864A1 (en) * 2010-08-20 2013-06-13 Fasoo.Com Co., Ltd Clipboard protection system in drm environment and recording medium in which program for executing method in computer is recorded
US9098713B2 (en) * 2010-08-20 2015-08-04 Fasoo.Com Co., Ltd Clipboard protection system in DRM environment and recording medium in which program for executing method in computer is recorded
KR101155123B1 (en) * 2010-10-26 2012-06-11 한국과학기술원 Apparatus and method for protecting memory of application from failure of kernel code
US8667294B2 (en) 2011-08-30 2014-03-04 Electronics And Telecommunications Research Institute Apparatus and method for preventing falsification of client screen
KR101308112B1 (en) * 2012-01-02 2013-09-12 (주)네오위즈게임즈 Preventing Method of Memory Fabrication and Client Apparatus
WO2013103233A1 (en) * 2012-01-02 2013-07-11 (주)네오위즈게임즈 Method of preventing memory tampering, and client terminal
KR101438979B1 (en) * 2012-12-31 2014-09-11 현대자동차주식회사 Method and system for checking software
CN106997316A (en) * 2017-04-11 2017-08-01 上海联彤网络通讯技术有限公司 Detecting system and method that memory abnormal increases
CN106997316B (en) * 2017-04-11 2020-02-21 上海联彤网络通讯技术有限公司 System and method for detecting abnormal increase of memory
KR20200087372A (en) * 2019-01-10 2020-07-21 (주)제니퍼소프트 Apparatus of capable auto profiling

Also Published As

Publication number Publication date
KR100681696B1 (en) 2007-02-15

Similar Documents

Publication Publication Date Title
KR100681696B1 (en) Method for preventing from inventing data of memory in a computer application program
KR100685672B1 (en) Preventing method of computer programmed automatic input
Shieh et al. On a pattern-oriented model for intrusion detection
CN109033828B (en) Trojan horse detection method based on computer memory analysis technology
US9792196B1 (en) Framework for efficient security coverage of mobile software applications
JP6829718B2 (en) Systems and methods for tracking malicious behavior across multiple software entities
Hornyack et al. These aren't the droids you're looking for: retrofitting android to protect data from imperious applications
US5278901A (en) Pattern-oriented intrusion-detection system and method
US9009823B1 (en) Framework for efficient security coverage of mobile software applications installed on mobile devices
US7716495B2 (en) Protection against runtime function attacks
Berthome et al. Repackaging android applications for auditing access to private data
CN102893289A (en) Malware protection
US7607122B2 (en) Post build process to record stack and call tree information
CN106326735B (en) Method and apparatus for preventing injection
CN109783316B (en) Method and device for identifying tampering behavior of system security log, storage medium and computer equipment
CN115688106A (en) Method and device for detecting Java agent non-file-injection memory horse
CN111428240B (en) Method and device for detecting illegal access of memory of software
CN108388793A (en) A kind of virtual machine escape means of defence based on Initiative Defense
CN114238947A (en) Software protection method, system, equipment and medium for Windows system
TW201530348A (en) Personal electronic device and data loss prevention system and method thereof
KR100457405B1 (en) Method of detecting whether speed hack is in use
CN113297628A (en) Modification behavior auditing method, device, equipment and readable storage medium
CN108854066B (en) Method, device, computer equipment and storage medium for processing behavior state in game
US11806628B2 (en) Systems and methods for anti-cheat detection
CN112464228B (en) Application layer command auditing method, device and system and storage medium

Legal Events

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

Payment date: 20130228

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140206

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20150206

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20160210

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20170206

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20180206

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20190207

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20200206

Year of fee payment: 14