KR20160107712A - Apparatus and method for anti-debugging - Google Patents
Apparatus and method for anti-debugging Download PDFInfo
- Publication number
- KR20160107712A KR20160107712A KR1020150030835A KR20150030835A KR20160107712A KR 20160107712 A KR20160107712 A KR 20160107712A KR 1020150030835 A KR1020150030835 A KR 1020150030835A KR 20150030835 A KR20150030835 A KR 20150030835A KR 20160107712 A KR20160107712 A KR 20160107712A
- Authority
- KR
- South Korea
- Prior art keywords
- process module
- debugging
- main process
- main
- module
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 328
- 238000004886 process control Methods 0.000 claims description 25
- 230000007257 malfunction Effects 0.000 claims description 22
- 230000002155 anti-virotic effect Effects 0.000 claims description 6
- 241000700605 Viruses Species 0.000 claims description 5
- 238000004458 analytical method Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 5
- 230000003068 static effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 229960005486 vaccine Drugs 0.000 description 2
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000009385 viral infection Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
Description
본 발명은 안티디버깅 장치 및 방법에 관한 것으로, 메인 프로세스의 프로그램 실행시 안티디버깅 프로세스를 생성하여 부착하게 하는 안티디버깅 장치 및 방법에 관한 것이다. The present invention relates to an anti-debugging apparatus and method, and more particularly, to an anti-debugging apparatus and method for creating and attaching an anti-debugging process when a program of a main process is executed.
해킹은 프로그램을 분석하는 것으로부터 시작된다. 프로그램을 분석하여 로직을 파악해야 실질적으로 조작(Crack)을 할 수 있다. 프로그램을 분석하는 방법에는 두 가지 방법이 있다. 하나는 정적(Static) 분석 방법이고 다른 하나는 동적(Dynamic) 분석 방법이다.Hacking begins by analyzing the program. Analyzing the program and understanding the logic can actually make a crack. There are two ways to analyze the program. One is the static analysis method and the other is the dynamic analysis method.
정적 분석 방법은 프로그램 파일을 실행시키지 않고 파일 자체만을 분석하는 것으로, 바이너리 프로그램 파일을 디스어셈블리 도구(Tool)나 디컴파일 도구를 이용하여 분석한다. 이러한 도구들은 바이너리 프로그램 파일을 어셈블리나 그 밖의 고급 언어 형태로 변환하여 나타낼 수 있고 이를 분석하면 프로그램의 로직을 파악할 수 있다.The static analysis method analyzes only the file itself without executing the program file, and analyzes the binary program file using a disassembly tool or a decompilation tool. These tools can translate binary program files into assemblies or other high-level language forms and analyze them to understand the logic of the program.
동적 분석 방법은 정적 분석 방법과는 달리 프로그램을 실행시키고 디버깅 도구에서 프로그램의 실행 중인 코드(Code), 메모리 상태, 레지스터 상태 등을 보고 프로그램을 분석한다. 디버거를 이용한 분석 방법은 실행 중인 코드의 흐름을 보며 분석하기 때문에 프로그램의 로직을 파악하기 용이하며 실제 코드가 수행되는 부분과 그렇지 않은 부분을 판단할 수 있게 되며, 또한 분석 중에 메모리나 레지스터의 값을 수정할 수도 있다.Unlike the static analysis method, the dynamic analysis method executes the program, and analyzes the program by looking at the code, memory state, register state, etc. of the program in the debugging tool. Debugger analysis method is easy to understand the logic of the program because it analyzes and analyzes the flow of executing code. It can judge the part where the actual code is executed and the part that does not. Also, It can also be modified.
이러한 디버깅에 의한 분석 방법은 프로그램의 논리적 흐름이나 실행 중에 데이터를 실시간으로 변화시킬 수 있는 등 분석 범위가 정적 분석 방법보다 넓어 널리 이용되고 있다.The analysis method by debugging is widely used because it is broader than the static analysis method, such as the logical flow of the program or the data can be changed in real time during execution.
안티디버깅(Anti-Debugging)이란 디버깅을 방해하여 프로그램 분석을 방해하는 기술이다. 디버깅을 당한다면 해당 디버거 프로그램을 종료시키거나 에러를 발생시키는 방법 등 다양한 방법을 사용하여 분석을 방해할 수 있다. 종래의 안티디버깅 기술은 주로 디버깅 프로그램이 실행 중인지 여부를 확인하여 디버깅 대상 프로그램이 실행되지 않도록 한다. 하지만, 이 방법에 따르면, 새로운 디버깅 프로그램의 출현처럼 미리 예상하지 못한 상황이 발생하는 경우에 대처하기 어렵다는 문제점이 있다. Anti-Debugging is a technique that hinders debugging and hinders program analysis. If you are debugging, you can stop the analysis by using various methods such as terminating the debugger program or generating an error. The conventional anti-debugging technique mainly checks whether the debugging program is being executed and prevents the debugging target program from being executed. However, according to this method, there is a problem that it is difficult to cope with an unexpected situation such as the appearance of a new debugging program.
또한 특정 운영체제(Operating System)나 프로세서에 한정된 안티디버깅 기술이 사용되고 있다. 예를 들면, 윈도우즈 운영체제에서는 윈도우즈에서 제공하는 API(Application Program Interface)인 IsDebuggerPresent(), CheckRemoteDebuggerPresent() 및 NtGlobeFlag 값을 이용하여 디버깅 여부를 판단하는 방법이 사용된다. 하지만, 이 방법에는 리눅스, 유닉스, OS X 등에서는 이와 동일하거나 유사한 API를 제공하지 않아 사용할 수 없다는 문제점이 있다.Also, anti-debugging technology limited to a specific operating system or a processor is used. For example, in the Windows operating system, a method of judging whether debugging is performed by using IsDebuggerPresent (), CheckRemoteDebuggerPresent (), and NtGlobeFlag, which are application program interfaces (APIs) provided by Windows, is used. However, this method does not provide the same or similar API for Linux, Unix, OS X, etc., and thus can not be used.
이에, 본 발명자들은 프로세스의 상태를 감시하여 안티디버깅 방법을 제공하는 기술을 한국특허출원 2013-0138644호로 출원하였다. 하지만 한국특허출원 2013-0138644호의 기술도 안티디버깅을 완벽하게 제공하지 못하고 있다.Accordingly, the present inventors filed a Korean patent application No. 2013-0138644 for a technology for monitoring the state of a process and providing an anti-debugging method. However, the technology of Korean Patent Application No. 2013-0138644 does not provide anti-debugging completely.
상술한 문제점을 해결하기 위해, 본 발명은 원천적으로 해킹에 의한 디버깅을 방지할 수 있는 안티디버깅 장치 및 방법을 제공하는 것을 목적으로 한다. In order to solve the above-described problems, it is an object of the present invention to provide an anti-debugging apparatus and method capable of preventing debugging by hacking.
상술한 목적을 달성하기 위해, 본 발명의 일실시예에 따른 안티디버깅 장치는, 안티디버깅 프로세스 모듈을 생성하는 안티디버깅 프로세스 생성부와, 상기 안티디버깅 프로세스 생성부에 의해 생성된 상기 안티디버깅 프로세스 모듈에 자신의 프로세스 모듈을 부착시키는 안티디버깅 프로세스 부착부를 구비하는 메인 프로세스 모듈과, 및 상기 메인 프로세스 모듈에 자신의 프로세스 모듈을 부착시키는 메인 프로세스 부착부와, 상기 메인 프로세스 부착부에 의해 자신의 프로세스 모듈이 상기 메인 프로세스 모듈에 정상적으로 부착됨에 대한 정보를 상기 메인 프로세스 모듈에 제공하는 안티디버깅 프로세스 정보 제공부를 구비하는 안티디버깅 프로세스 모듈을 제공할 수 있다.In order to achieve the above object, an anti-debugging apparatus according to an embodiment of the present invention includes an anti-debugging process generating unit for generating an anti-debugging process module, an anti-debugging process module And an anti-debugging process attaching unit for attaching a process module of the process module to the process module, and a main process attaching unit attaching a process module of the process module to the main process module, And an anti-debugging process information providing unit for providing the main process module with information on whether the main process module is normally attached to the main process module.
상기 메인 프로세스 모듈은 상기 안티디버깅 프로세스 모듈로부터 상기 메인 프로세스 모듈에 정상적으로 부착됨에 대한 정보를 수신할 때까지 오동작을 실행시키는 오동작 실행부를 더 포함할 수 있다.The main process module may further include a malfunctioning execution unit for executing a malfunction until the main processing module receives information from the anti-debugging process module to normally attach to the main process module.
상기 메인 프로세스 모듈은 메인 프로그램이 실행되면 오동작을 실행시키도록 상기 오동작 실행부를 제어하고 또한 상기 안티디버깅 프로세스 모듈을 생성하도록 상기 안티디버깅 프로세스 생성부를 제어하는 메인 프로세스 제어부를 더 포함할 수 있다.The main process module may further include a main process control unit for controlling the malfunctioning execution unit to execute a malfunction when the main program is executed and controlling the anti-debugging process generating unit to generate the anti-debugging process module.
상기 메인 프로세스 제어부는 메인 프로그램이 실행되면 오동작을 실행시키도록 변조된 복호화 키를 생성하고, 상기 안티디버깅 프로세스 모듈로부터 변조된 복호화 키에 대한 수정된 원본 키가 제공되면 오동작을 정지시킬 수 있다.The main process control unit may generate a decryption key modulated to execute a malfunction when the main program is executed and stop the malfunction if the modified original key for the decryption key modulated from the anti-debugging process module is provided.
상기 안티디버깅 프로세스 모듈은 상기 안티디버깅 프로세스 부착부의 동작에 의해 자신의 프로세스 모듈에 상기 메인 프로세스 모듈이 부착된 경우 그 부착 결과를 상기 메인 프로세스 모듈에 제공할 수 있다.The anti-debugging process module may provide the attachment result of the main process module to the main process module when the main process module is attached to the process module of the anti-debugging process module.
상기 메인 프로세서 모듈은 상기 메인 프로세스 부착부의 동작에 의해 자신의 프로세스 모듈에 안티디버깅 프로세스 모듈이 부착된 경우 그 부착 결과를 상기 안티디버깅 프로세스 모듈에 제공할 수 있다.The main processor module may provide an attachment result of the anti-debugging process module to the anti-debugging process module when the process module is attached to the process module.
상기 안티디버깅 프로세스 모듈은 상기 메인 프로세서 모듈의 동작 프로그램이 바이러스에 감염되었음을 감지하면 바이러스 백신 프로그램을 제공할 수 있다.The anti-debugging process module may provide an antivirus program when it detects that an operation program of the main processor module is infected with a virus.
본 발명의 다른 실시예에 따른 메인 프로세스 모듈과 안티디버깅 프로세스 모듈을 구비한 안티디버깅 장치에서의 안티디버깅 방법은, 상기 메인 프로세스 모듈에서, 프로그램이 실행되면 안티디버깅 프로세스 모듈을 생성하는 단계와, 상기 메인 프로세스 모듈에서, 상기 안티디버깅 프로세스 모듈을 생성하는 단계에서 생성된 상기 안티디버깅 프로세스 모듈에 상기 메인 프로세스 모듈 자신의 프로세스 모듈을 부착시키는 단계와, 상기 안티디버깅 프로세스 모듈에서, 상기 메인 프로세스 모듈에 상기 안티디버깅 프로세스 모듈 자신의 프로세스 모듈을 부착시키는 단계와, 및 상기 안티디버깅 프로세스 모듈에서, 자신의 프로세스 모듈이 상기 메인 프로세스 모듈에 정상적으로 부착됨에 대한 정보를 상기 메인 프로세스 모듈에 제공하는 단계를 제공함으로써, 상술한 목적을 달성할 수 있다. An anti-debugging method in an anti-debugging apparatus having a main process module and an anti-debugging process module according to another embodiment of the present invention includes: generating an anti-debugging process module in the main process module when the program is executed; Attaching a process module of the main process module itself to the anti-debugging process module generated in the step of creating the anti-debugging process module in the main process module; and in the anti-debugging process module, Attaching a process module of the anti-debugging process module itself to the main process module, and providing, in the anti-debugging process module, information about that the process module of the anti-debugging process module is normally attached to the main process module, Thereby, it is possible to achieve the above object.
상술한 구성에 의해, 본 발명은 해킹 디버거 프로그램이 메인 프로세스 모듈에 부착될 수 없어 해킹으로부터 메인 프로세스 모듈의 동작을 보호할 수 있다.With the above-described configuration, the present invention can not attach the hacking debugger program to the main process module, thereby protecting the operation of the main process module from hacking.
또한, 본 발명은 안티디버깅 프로세스 모듈에 메인 프로세스 모듈이 부착되지 않아도, 해킹으로부터 메인 프로세스 모듈의 동작을 보호할 수 있다.In addition, the present invention can protect the operation of the main process module from hacking without the main process module being attached to the anti-debugging process module.
또한, 본 발명은 메인 프로그램이 바이러스에 감염된 경우에도 안티디버깅 프로그램에서 바이러스 백신을 제공하여 치료할 수 있다.In addition, the present invention can provide an antivirus program for an antivirus program even when the main program is infected with a virus.
도 1은 본 발명의 일실시예에 따른 안티디버깅 장치의 블록도를 도시하는 도면이다.
도 2는 도 1에서 설명되는 프로세스 부착의 개념을 도시하는 도면이다.
도 3은 도 1에 따른 안티디버깅 방법의 흐름도를 도시하는 도면이다.
도 4는 본 발명의 다른 실시예에 따른 안티디버깅 장치의 블록도를 도시하는 도면이다.
도 5는 도 4에서 설명되는 메인 프로세스의 오동작을 설명하는 도면이다.
도 6은 도 4에 따른 안티디버깅 방법의 흐름도를 도시하는 도면이다.
도 7은 도 6의 흐름도를 프로세스 다이어그램으로 도시하는 도면이다. 1 is a block diagram of an anti-debugging apparatus according to an embodiment of the present invention.
Fig. 2 is a view showing the concept of process attachment described in Fig. 1. Fig.
FIG. 3 is a flowchart showing an anti-debugging method according to FIG. 1. FIG.
4 is a block diagram of an anti-debugging apparatus according to another embodiment of the present invention.
5 is a diagram for explaining a malfunction of the main process described in Fig.
6 is a flowchart showing an anti-debugging method according to FIG.
FIG. 7 is a process diagram showing the flow chart of FIG. 6. FIG.
이하, 첨부된 도면을 참조하여 본 발명에 따른 안티디버깅 장치 및 방법의 바람직한 실시예를 설명한다. 참고로, 아래에서 본 발명을 설명함에 있어서, 본 발명의 구성요소를 지칭하는 용어들은 각각의 구성 요소들의 기능을 고려하여 명명된 것이므로, 본 발명의 기술적 구성요소를 한정하는 의미로 이해되어서는 안 될 것이다.Hereinafter, preferred embodiments of the anti-debugging apparatus and method according to the present invention will be described with reference to the accompanying drawings. In the following description of the present invention, it is to be understood that the terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the technical scope of the present invention. Will be.
도 1은 본 발명의 일실시예에 따른 안티디버깅 장치의 블록도를 도시하는 도면이다. 1 is a block diagram of an anti-debugging apparatus according to an embodiment of the present invention.
도 1에 도시된 바와 같이, 안티디버깅 장치는 메인 프로세스 모듈(100)과 안티디버깅 프로세스 모듈(150)을 포함한다. As shown in FIG. 1, the anti-debugging apparatus includes a
메인 프로세스 모듈(100)은 안티디버깅 프로세스 모듈(150)을 생성하는 안티디버깅 프로세스 생성부(110)와, 안티디버깅 프로세스 생성부(110)에 의해 생성된 안티디버깅 프로세스 모듈(150)에 자신의 프로세스 모듈을 부착시키는 안티디버깅 프로세스 부착부(115)와, 메인 프로세스 부착부(160)의 동작에 의해 안티디버깅 프로세스 모듈(150)이 자신의 프로세스 모듈에 부착되었음을 알리는 메인 프로세스 정보 제공부(120)와, 메인 프로세스 모듈(100)의 상태 정보 및/또는 안티디버깅 프로세스 모듈(150)로부터 수신한 안티디버깅 프로세스 모듈(150)과 관련된 상태 정보 등을 저장하기 위한 메인 프로세스 저장부(125)와, 및 메인 프로세스 저장부(125)에 저장된 상태 정보 등을 이용하여 메인 프로세스의 동작을 제어하는 메인 프로세스 제어부(130)를 포함한다.The
안티디버깅 프로세스 모듈(150)은 메인 프로세스 모듈(100)에 자신의 프로세스 모듈을 부착하는 메인 프로세스 부착부(160)와, 메인 프로세스 모듈(100)에 안티디버깅 정보, 예를 들면 메인 프로세스 부착부(160)에 의해 자신의 프로세스 모듈이 메인 프로세스 모듈(100)에 부착되었음을 알리는 안티디버깅 프로세스 정보 제공부(165)와, 안티디버깅 프로세스 모듈(150)의 상태 정보 및/또는 메인 프로세스 모듈(100)로부터 수신한 메인 프로세스 모듈(100)과 관련된 상태 정보 등을 저장하기 위한 안티디버깅 프로세스 저장부(170)와, 및 안티디버깅 프로세스 저장부(170)에 저장된 상태 정보 등을 이용하여 안티디버깅 프로세스의 동작을 제어하는 안티디버깅 프로세스 제어부(175)를 포함한다.The
도 2는 도 1에서 설명되는 프로세스 부착의 개념을 도시하는 도면이다. Fig. 2 is a view showing the concept of process attachment described in Fig. 1. Fig.
도 2에 도시된 바와 같이, 메인 프로세스 모듈(100)은 안티디버깅 프로세스 모듈(150)을 생성하고 부착되며, 안티디버깅 프로세스 모듈(150) 역시 메인 프로세스 모듈(100)에 부착된다. 이 경우 안티디버깅 프로세스 모듈(150)이 메인 프로세스 모듈(100)에 부착되어 있기 때문에 다른 디버거 프로그램이 부착될 수 없다. 따라서 해킹 디버거 프로그램이 메인 프로세스 모듈(100)에 부착될 수 없어 해킹으로부터 메인 프로세스 모듈(100)의 동작을 보호할 수 있다.As shown in FIG. 2, the
도 3은 도 1에 따른 안티디버깅 방법의 흐름도를 도시하는 도면이다. FIG. 3 is a flowchart showing an anti-debugging method according to FIG. 1. FIG.
메인 프로세스 제어부(130)는 메인 프로그램이 실행되면(S302), 먼저 안티디버깅 프로세스 생성부(110)를 동작시켜 안티디버깅 프로세스 모듈(150)을 생성한다(S304). 메인 프로세스 제어부(130)는 메인 프로세스 저장부(125)에 현재 안티디버깅 프로세스 모듈(150)을 생성하고 있음을 나타내는 상태 정보를 저장할 수 있다.When the main program is executed (S302), the main
메인 프로세스 제어부(130)는 이후 안티디버깅 프로세스 정보 제공부(165)로부터 안티디버깅 프로세스 모듈(150)의 생성에 대한 상태 정보가 제공되면 안티디버깅 프로세스 부착부(115)를 실행한다. 안티디버깅 프로세스 부착부(115)는 안티디버깅 프로세스 생성부(110)에 의해 생성된 안티디버깅 프로세스 모듈(150)에 자신의 프로세스 모듈을 부착한다(S306). 안티디버깅 프로세스 정보 제공부(165)는 안티디버깅 프로세스 부착부(115)의 동작에 의해 메인 프로세스 모듈(100)이 자신의 프로세스 모듈에 부착되었음을 알리는 상태 정보를 제공한다(S308). 메인 프로세스 제어부(130)는 안티디버깅 프로세스 부착부(115)로부터 제공된 상태 정보를 메인 프로세스 저장부(125)에 저장한다.The main
안티디버깅 프로세스 제어부(175)는 안티디버깅 프로세스 저장부(170)의 상태 정보가 소정의 값을 가지면 메인 프로세스 부착부(160)를 동작시켜 메인 프로세스 모듈(100)에 자신의 프로세스 모듈을 부착시킨다(S310). 메인 프로세스 정보 제공부(120)는 메인 프로세스 부착부(160)의 동작에 의해 안티디버깅 프로세스 모듈(150)이 자신의 프로세스 모듈에 부착되었음을 알리는 상태 정보를 제공한다(S312). 안티디버깅 프로세스 제어부(175)는 메인 프로세스 정보 제공부(120)로부터 제공된 상태 정보를 안티디버깅 프로세스 저장부(170)에 저장한다.When the state information of the anti-debugging process storage unit 170 has a predetermined value, the anti-debugging process control unit 175 operates the main
메인 프로세스 제어부(130)는 안티디버깅 프로세스 모듈(150)이 자신의 프로세스 모듈에 정상적으로 부착되었다고 판단되면 메인 프로그램을 정상적으로 실행시킨다(S314).If the
하지만, 도 1 내지 도 3에서 설명한 디버거 방지 프로세스 모듈보다 다른 프로세스 모듈이 먼저 선점하여 메인 프로세스 모듈(100)을 부착하면 다른 프로세스 모듈, 예를 들면 해킹 디버거 프로그램에 의해 디버깅이 가능하므로 보안에 문제가 발생할 수 있다.However, if another process module is preempted by the debugger prevention process module described with reference to FIGS. 1 to 3 and the
도 4는 본 발명의 다른 실시예에 따른 안티디버깅 장치의 블록도를 도시하는 도면이다.4 is a block diagram of an anti-debugging apparatus according to another embodiment of the present invention.
도 4에 도시된 바와 같이, 안티디버깅 장치는 메인 프로세스 모듈(410)과 안티디버깅 프로세스 모듈(450)을 포함한다. As shown in FIG. 4, the anti-debugging apparatus includes a
메인 프로세스 모듈(410)은 메인 프로그램이 실행되면 오동작을 실행시키는 오동작 실행부(410)와, 안티디버깅 프로세스 모듈(450)을 생성하는 안티디버깅 프로세스 생성부(415)와, 안티디버깅 프로세스 생성부(415)에 의해 생성된 안티디버깅 프로세스 모듈(450)에 자신의 프로세스 모듈을 부착하는 안티디버깅 프로세스 부착부(420)와, 메인 프로세스 부착부(460)의 동작에 의해 안티디버깅 프로세스 모듈(450)이 자신의 프로세스 모듈에 부착되었음을 알리는 메인 프로세스 정보 제공부(425)와, 메인 프로세스 모듈(410)의 메인 프로그램을 정상적으로 실행시키는 정상 동작 실행부(430)와, 메인 프로세스 모듈(410)의 상태 정보 및/또는 안티디버깅 프로세스 모듈(450)로부터 수신한 안티디버깅 프로세스 모듈(450)과 관련된 상태 정보 등을 저장하기 위한 메인 프로세스 저장부(435)와, 및 메인 프로세스 저장부(435)에 저장된 상태 정보 등을 이용하여 메인 프로세스의 동작을 제어하는 메인 프로세스 제어부(440)를 포함한다.The
안티디버깅 프로세스 모듈(450)은 메인 프로세스 모듈(410)에 자신의 프로세스 모듈을 부착하는 메인 프로세스 부착부(460)와, 메인 프로세스 모듈(410)에 안티디버깅 정보, 예를 들면 메인 프로세스 부착부(460)에 의해 자신의 프로세스 모듈이 메인 프로세스 모듈(410)에 부착되었음을 알리는 안티디버깅 프로세스 정보 제공부(465)와, 변조된 복호화 키를 원본 키로 수정하고 이 수정된 원본 키를 메인 프로세스 모듈(410)에 제공하는 정상 동작 정보 제공부(470)와, 메인 프로세스 모듈(410)이 바이러스 감염에 의해 프로그램이 정상적으로 동작하지 않을 경우 메인 프로그램을 해독시킬 수 있는 바이러스 백신을 제공하는 바이러스 백신 제공부(475)와, 안티디버깅 프로세스 모듈(450)의 상태 정보 및/또는 메인 프로세스 모듈(410)로부터 수신한 메인 프로세스 모듈(410)과 관련된 상태 정보 등을 저장하기 위한 안티디버깅 프로세스 저장부(480)와, 및 안티디버깅 프로세스 저장부(480)에 저장된 상태 정보 등을 이용하여 안티디버깅 프로세스의 동작을 제어하는 안티디버깅 프로세스 제어부(485)를 포함한다.The
도 5는 도 4에서 설명되는 메인 프로세스의 오동작을 설명하는 도면이다. 5 is a diagram for explaining a malfunction of the main process described in Fig.
도 5에 도시된 바와 같이, 메인 프로세스 모듈(410)은 안티디버깅 프로세스 모듈(450)을 생성하고 부착되나, 안티디버깅 프로세스 모듈(450)은 아직 메인 프로세스 모듈(410)에 부착되지 않은 상태를 도시한다. 이 경우 안티디버깅 프로세스 모듈(450)이 메인 프로세스 모듈(410)에 부착되어 있지 않기 때문에 다른 디버거 프로그램이 부착될 수 있다. 이 경우 도 4에 도시된 오동작 실행부(410)는 무한 루프를 돌거나 거짓 프로그램을 실행하거나 또는 소정의 시간 동안 안티디버깅 프로세스 모듈(450)에 메인 프로세스 모듈(410)이 부착되지 않으면 프로그램을 종료할 수 있다. 따라서 안티디버깅 프로세스 모듈(450)에 메인 프로세스 모듈(410)이 부착되지 않아도, 해킹으로부터 메인 프로세스 모듈(410)의 동작을 보호할 수 있다.5, the
도 6은 도 4에 따른 안티디버깅 방법의 흐름도를 도시하는 도면이고, 도 7은 도 6의 흐름도를 프로세스 다이어그램으로 도시하는 도면이다. Fig. 6 is a flowchart showing the anti-debugging method according to Fig. 4, and Fig. 7 is a process diagram showing the flowchart of Fig.
메인 프로세스 제어부(440)는 메인 프로그램이 실행되면(S602), 먼저 오동작 실행부(410)는 메인 프로그램이 오동작을 실행하게 하다(S604). 이를 위해 도 7에 도시된 바와 같이, 오동작 실행부(410)는 오동작을 실행하도록 변조된 복호화 키를 생성할 수 있다. When the main program is executed (S602), the main
메인 프로세스 제어부(440)는 이어서 안티디버깅 프로세스 생성부(415)를 동작시켜 안티디버깅 프로세스 모듈(450)을 생성한다(S606). 메인 프로세스 제어부(440)는 메인 프로세스 저장부(435)에 현재 안티디버깅 프로세스 모듈(450)을 생성하고 있음을 나타내는 상태 정보를 저장할 수 있다.The main
메인 프로세스 제어부(440)는 이후 안티디버깅 프로세스 정보 제공부(465)로부터 안티디버깅 프로세스 모듈(450)의 생성에 대한 상태 정보가 제공되면 안티디버깅 프로세스 부착부(420)를 실행한다. 안티디버깅 프로세스 부착부(420)는 안티디버깅 프로세스 생성부(415)에 의해 생성된 안티디버깅 프로세스 모듈(450)에 자신의 프로세스 모듈을 부착한다(S608). 안티디버깅 프로세스 정보 제공부(465)는 안티디버깅 프로세스 부착부(420)의 동작에 의해 메인 프로세스 모듈(410)이 자신의 프로세스 모듈에 부착되었음을 알리는 상태 정보를 제공한다(S610). 메인 프로세스 제어부(440)는 안티디버깅 프로세스 부착부(420)로부터 제공된 상태 정보를 메인 프로세스 저장부(435)에 저장한다.The main
안티디버깅 프로세스 제어부(485)는 안티디버깅 프로세스 저장부(480)의 상태 정보가 소정의 값을 가지면 메인 프로세스 부착부(460)를 동작시켜 메인 프로세스 모듈(410)에 자신의 프로세스 모듈을 부착시킨다(S612). 메인 프로세스 정보 제공부(425)는 메인 프로세스 부착부(460)의 동작에 의해 안티디버깅 프로세스 모듈(450)이 자신의 프로세스 모듈에 부착되었음을 알리는 상태 정보를 제공한다(S614). 안티디버깅 프로세스 제어부(485)는 메인 프로세스 정보 제공부(425)로부터 제공된 상태 정보를 안티디버깅 프로세스 저장부(480)에 저장한다.If the state information of the anti-debugging
메인 프로세스 제어부(440)는 안티디버깅 프로세스 모듈(450)이 자신의 프로세스 모듈에 정상적으로 부착되었다고 판단되면 메인 프로그램을 정상적으로 실행시킨다(S616). 이를 위해 도 7에 도시된 바와 같이, 정상 동작 정보 제공부(470)는 변조된 복호화 키를 원본 키로 수정하고 이 수정된 원본 키를 메인 프로세스 모듈(410)에 제공한다. 메인 프로세스 제어부(440)는 정상 동작 정보 제공부(470)로부터 원본 키를 수신하면 오동작 실행을 정지하도록 오동작 실행부(410)를 제어하고 정상 동작 실행부(430)를 실행시켜 정상 동작을 실행시킨다.If the
바이러스 백신 제공부(475)는 메인 프로세스 모듈(410)이 바이러스 감염에 의해 프로그램이 정상적으로 동작하지 않을 경우(S618) 메인 프로그램을 해독시킬 수 있는 바이러스 백신을 제공한다(S620).If the
본 발명의 실시예에 따른 안티디버깅 장치는 개인용 컴퓨터(PC: Personal Computer), 노트북 컴퓨터, 태블릿(Tablet), 개인 휴대 단말기(PDA: Personal Digital Assistant), 게임 콘솔, 휴대용 멀티미디어 플레이어(PMP: Portable Multimedia Player), 플레이스테이션 포터블(PSP: PlayStation Portable), 무선 통신 단말기(Wireless Communication Termainal), 스마트폰(Smart Phone), TV, 미디어 플레이어 등과 같은 사용자 단말기일 수 있다. The anti-debugging apparatus according to an embodiment of the present invention may be applied to a personal computer (PC), a notebook computer, a tablet, a personal digital assistant (PDA), a game console, a portable multimedia player (PMP) Player, a PlayStation Portable (PSP), a wireless communication terminal, a smart phone, a TV, a media player, and the like.
본 발명에 따른 안티디버깅 장치는 응용 서버와 서비스 서버 등 서버 단말기일 수 있다. 본 발명의 실시예에 따른 안티디버깅 장치는 각기 (i) 각종 기기 또는 유무선 통신망과 통신을 수행하기 위한 통신 모뎀 등의 통신 장치, (ii) 프로그램을 실행하기 위한 데이터를 저장하기 위한 메모리, (iii) 프로그램을 실행하여 연산 및 제어하기 위한 마이크로프로세서 등을 구비하는 다양한 장치를 의미할 수 있다. 적어도 일 실시예에 따르면, 메모리는 램(Random Access Memory: RAM), 롬(Read Only Memory: ROM), 플래시 메모리, 광 디스크, 자기 디스크, 솔리드 스테이트 디스크(Solid State Disk: SSD) 등의 컴퓨터로 판독 가능한 기록/저장매체일 수 있다. 적어도 일 실시예에 따르면, 마이크로프로세서는 명세서에 기재된 동작과 기능을 하나 이상 선택적으로 수행하도록 프로그램될 수 있다. 적어도 일 실시예에 따르면, 마이크로프로세서는 전체 또는 부분적으로 특정한 구성의 주문형반도체(Application Specific Integrated Circuit: ASIC) 등의 하드웨어로써 구현될 수 있다.The anti-debugging apparatus according to the present invention may be a server terminal such as an application server and a service server. (I) a communication device such as a communication modem for performing communication with various devices or wired / wireless communication networks, (ii) a memory for storing data for executing a program, (iii) ) Microprocessor for executing and controlling programs and the like. According to at least one embodiment, the memory may be a computer such as a random access memory (RAM), a read only memory (ROM), a flash memory, an optical disk, a magnetic disk, or a solid state disk Readable recording / storage medium. According to at least one embodiment, a microprocessor can be programmed to selectively perform one or more of the operations and functions described in the specification. In accordance with at least one embodiment, the microprocessor may be implemented in hardware, such as an Application Specific Integrated Circuit (ASIC), in wholly or partially of a particular configuration.
이상에서 설명된 본 발명의 실시예들은 본 발명의 기술 사상을 예시적으로 보여준 것에 불과하며, 본 발명의 보호 범위는 이하 특허청구범위에 의하여 해석되어야 마땅할 것이다. 또한, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것인 바, 본 발명과 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.The embodiments of the present invention described above are merely illustrative of the technical idea of the present invention, and the scope of protection of the present invention should be interpreted according to the claims. It will be apparent to those skilled in the art that various modifications and variations can be made in the present invention without departing from the spirit and scope of the invention as defined by the appended claims. It should be interpreted that it is included in the scope of right.
100: 메인 프로세스 모듈
110: 안티디버깅 프로세스 생성부
115: 안티디버깅 프로세스 부착부
120: 메인 프로세스 정보 제공부
125: 메인 프로세스 저장부
130: 메인 프로세스 제어부
150: 안티디버깅 프로세스 모듈
160: 메인 프로세스 부착부
165: 안티디버깅 프로세스 정보 제공부
170: 안티디버깅 프로세스 저장부
175: 안티디버깅 프로세스 제어부 100: main process module
110: Anti-debugging process generating unit
115: anti-debugging process attaching portion
120: main process information providing unit
125: main process storage unit
130: main process control section
150: Anti-debugging process module
160: main process attaching portion
165: Anti-debugging process information providing service
170: Anti-debugging process storage unit
175: Anti-debugging process control unit
Claims (10)
상기 메인 프로세스 모듈에 자신의 프로세스 모듈을 부착시키는 메인 프로세스 부착부와, 상기 메인 프로세스 부착부에 의해 자신의 프로세스 모듈이 상기 메인 프로세스 모듈에 정상적으로 부착됨에 대한 정보를 상기 메인 프로세스 모듈에 제공하는 안티디버깅 프로세스 정보 제공부를 구비하는 안티디버깅 프로세스 모듈을 포함하는 것을 특징으로 하는 안티디버깅 장치.A main process module including an anti-debugging process generating unit for generating an anti-debugging process module, and an anti-debugging process attaching unit attaching the process module to the anti-debugging process module generated by the anti-
A main process attaching unit for attaching a process module of the main process module to the main process module; and an anti-debugging unit for providing the main process module with information about the fact that the process module of the self process module is normally attached to the main process module by the main process attaching unit. And an anti-debugging process module including a process information providing unit.
상기 메인 프로세스 모듈은 상기 안티디버깅 프로세스 모듈로부터 상기 메인 프로세스 모듈에 정상적으로 부착됨에 대한 정보를 수신할 때까지 오동작을 실행시키는 오동작 실행부를 더 포함하는 것을 특징으로 하는 안티디버깅 장치.The method according to claim 1,
Wherein the main process module further comprises a malfunctioning execution unit for executing a malfunction until receiving information on the normal attachment to the main process module from the anti-debugging process module.
상기 메인 프로세스 모듈은 메인 프로그램이 실행되면 오동작을 실행시키도록 상기 오동작 실행부를 제어하고 또한 상기 안티디버깅 프로세스 모듈을 생성하도록 상기 안티디버깅 프로세스 생성부를 제어하는 메인 프로세스 제어부를 더 포함하는 것을 특징으로 하는 안티디버깅 장치.3. The method of claim 2,
Wherein the main process module further comprises a main process control unit for controlling the malfunction execution unit to execute a malfunction when the main program is executed and controlling the anti-debugging process generating unit to generate the anti-debugging process module Debugging device.
상기 메인 프로세스 제어부는 메인 프로그램이 실행되면 오동작을 실행시키도록 변조된 복호화 키를 생성하고, 상기 안티디버깅 프로세스 모듈로부터 변조된 복호화 키에 대한 수정된 원본 키가 제공되면 오동작을 정지시키는 것을 특징으로 하는 안티디버깅 장치.The method of claim 3,
Wherein the main process control unit generates a decryption key modulated to execute a malfunction when the main program is executed and stops the malfunction if the modified original key for the decryption key modulated from the anti-debugging process module is provided Anti-debugging device.
상기 안티디버깅 프로세스 모듈은 상기 안티디버깅 프로세스 부착부의 동작에 의해 자신의 프로세스 모듈에 상기 메인 프로세스 모듈이 부착된 경우 그 부착 결과를 상기 메인 프로세스 모듈에 제공하는 것을 특징으로 하는 안티디버깅 장치. 5. The method according to any one of claims 1 to 4,
Wherein the anti-debugging process module provides the attachment result of the main process module to the main process module when the main process module is attached to the process module of the anti-debugging process module by the operation of the anti-debugging process attaching unit.
상기 메인 프로세서 모듈은 상기 메인 프로세스 부착부의 동작에 의해 자신의 프로세스 모듈에 안티디버깅 프로세스 모듈이 부착된 경우 그 부착 결과를 상기 안티디버깅 프로세스 모듈에 제공하는 것을 특징으로 하는 안티디버깅 장치. 6. The method of claim 5,
Wherein the main processor module provides an attachment result of the anti-debugging process module to the anti-debugging process module when the anti-debugging process module is attached to its own process module by the operation of the main process attaching unit.
상기 안티디버깅 프로세스 모듈은 상기 메인 프로세서 모듈의 동작 프로그램이 바이러스에 감염되었음을 감지하면 바이러스 백신 프로그램을 제공하는 것을 특징으로 하는 안티디버깅 장치. The method according to claim 6,
Wherein the anti-debugging process module provides an antivirus program when it detects that an operation program of the main processor module is infected with a virus.
상기 메인 프로세스 모듈에서, 프로그램이 실행되면 안티디버깅 프로세스 모듈을 생성하는 단계와,
상기 메인 프로세스 모듈에서, 상기 안티디버깅 프로세스 모듈을 생성하는 단계에서 생성된 상기 안티디버깅 프로세스 모듈에 상기 메인 프로세스 모듈 자신의 프로세스 모듈을 부착시키는 단계와,
상기 안티디버깅 프로세스 모듈에서, 상기 메인 프로세스 모듈에 상기 안티디버깅 프로세스 모듈 자신의 프로세스 모듈을 부착시키는 단계와, 및
상기 안티디버깅 프로세스 모듈에서, 자신의 프로세스 모듈이 상기 메인 프로세스 모듈에 정상적으로 부착됨에 대한 정보를 상기 메인 프로세스 모듈에 제공하는 단계를 포함하는 것을 특징으로 하는 안티디버깅 방법. 1. An anti-debugging method in an anti-debugging apparatus having a main process module and an anti-debugging process module,
Generating, in the main process module, an anti-debugging process module when the program is executed;
Attaching a process module of the main process module to the anti-debugging process module generated in the step of creating the anti-debugging process module in the main process module;
Attaching the process module of the anti-debugging process module to the main process module in the anti-debugging process module; and
And providing the main process module with information about whether its process module is normally attached to the main process module in the anti-debugging process module.
상기 메인 프로세스 모듈에서, 상기 안티디버깅 프로세스 모듈로부터 상기 메인 프로세스 모듈에 정상적으로 부착됨에 대한 정보를 수신할 때까지 오동작을 실행시키는 단계를 더 포함하는 것을 특징으로 하는 안티디버깅 방법.9. The method of claim 8,
Further comprising the step of executing a malfunction in the main process module until receiving information on the normal attachment from the anti-debugging process module to the main process module.
상기 메인 프로세스 모듈에서, 프로그램이 실행되면 오동작을 실행시키도록 변조된 복호화 키를 생성하는 단계와, 및
상기 메인 프로세스 모듈에서, 상기 메인 프로세스 모듈에 정상적으로 부착됨에 대한 정보로 변조된 복호화 키에 대한 수정된 원본 키가 제공되면 오동작을 정지시키는 단계를 더 포함하는 것을 특징으로 하는 안티디버깅 방법. 10. The method of claim 9,
Generating, in the main process module, a decryption key modulated to execute a malfunction when a program is executed; and
Further comprising the step of stopping the malfunction if the modified original key is provided to the decryption key modulated with the information that the main process module is normally attached to the main process module.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150030835A KR101657950B1 (en) | 2015-03-05 | 2015-03-05 | Apparatus and method for anti-debugging |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150030835A KR101657950B1 (en) | 2015-03-05 | 2015-03-05 | Apparatus and method for anti-debugging |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160107712A true KR20160107712A (en) | 2016-09-19 |
KR101657950B1 KR101657950B1 (en) | 2016-09-21 |
Family
ID=57080242
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150030835A KR101657950B1 (en) | 2015-03-05 | 2015-03-05 | Apparatus and method for anti-debugging |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101657950B1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11409635B2 (en) | 2019-08-23 | 2022-08-09 | Raytheon Company | Hacker-resistant anti-debug system |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20080085131A (en) * | 2008-09-11 | 2008-09-23 | 주식회사 비즈모델라인 | System for cutting off and eliminating the worm virus automatically |
JP2011170836A (en) * | 2009-12-24 | 2011-09-01 | Kazuomi Oishi | Information processing apparatus and program, information processing method, and recording medium |
-
2015
- 2015-03-05 KR KR1020150030835A patent/KR101657950B1/en active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20080085131A (en) * | 2008-09-11 | 2008-09-23 | 주식회사 비즈모델라인 | System for cutting off and eliminating the worm virus automatically |
JP2011170836A (en) * | 2009-12-24 | 2011-09-01 | Kazuomi Oishi | Information processing apparatus and program, information processing method, and recording medium |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11409635B2 (en) | 2019-08-23 | 2022-08-09 | Raytheon Company | Hacker-resistant anti-debug system |
Also Published As
Publication number | Publication date |
---|---|
KR101657950B1 (en) | 2016-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3779745B1 (en) | Code pointer authentication for hardware flow control | |
KR102296754B1 (en) | secure storage device | |
ES2857102T3 (en) | Malware behavior detection using an interpretation virtual machine | |
US9858417B2 (en) | Detecting malicious computer code in an executing program module | |
KR101503785B1 (en) | Method And Apparatus For Protecting Dynamic Library | |
US10223527B2 (en) | Protecting computer code against ROP attacks | |
KR20210001057A (en) | Method for detecting and blocking ransomware | |
KR101638257B1 (en) | Method for protecting source code of application and apparatus for performing the method | |
CN109472135B (en) | Method, device and storage medium for detecting process injection | |
KR101657950B1 (en) | Apparatus and method for anti-debugging | |
CN110516445B (en) | Identification method and device for anti-detection malicious code and storage medium | |
US20220407695A1 (en) | Electronic device and control method thereof | |
JP2017204173A (en) | Data protection program, data protection method, and data protection system | |
US11556645B2 (en) | Monitoring control-flow integrity | |
Kirmani et al. | Analyzing detection avoidance of malware by process hiding | |
US20200364331A1 (en) | Process verification | |
KR20190072375A (en) | Apparatus and methods for detecting of stealth task using hardware task switching | |
KR101665850B1 (en) | Method for Protecting Program by Using Heterogeneous Processor Emulation | |
JP2006065555A (en) | Apparatus and method for developing program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AMND | Amendment | ||
X701 | Decision to grant (after re-examination) | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20190906 Year of fee payment: 4 |