KR100781554B1 - Method for preventing from debugging computer program in real time and recording material thereof - Google Patents

Method for preventing from debugging computer program in real time and recording material thereof Download PDF

Info

Publication number
KR100781554B1
KR100781554B1 KR1020050079134A KR20050079134A KR100781554B1 KR 100781554 B1 KR100781554 B1 KR 100781554B1 KR 1020050079134 A KR1020050079134 A KR 1020050079134A KR 20050079134 A KR20050079134 A KR 20050079134A KR 100781554 B1 KR100781554 B1 KR 100781554B1
Authority
KR
South Korea
Prior art keywords
debugging
computer program
computer
program
interrupt
Prior art date
Application number
KR1020050079134A
Other languages
Korean (ko)
Other versions
KR20060059792A (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 KR20060059792A publication Critical patent/KR20060059792A/en
Application granted granted Critical
Publication of KR100781554B1 publication Critical patent/KR100781554B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging

Abstract

실시간 컴퓨터 프로그램의 디버깅 방지 방법 및 그 기록 매체가 개시되어 있다. 본 발명은, A) 실행 중인 컴퓨터 프로그램에서 발생된 디버깅을 위한 인터럽트(Interrupt)에 상응하는 인터럽트 테이블을 후킹(Hooking)하는 단계와; B) 상기 디버깅이 발생된 상기 컴퓨터 프로그램이 안티-디버깅(Anti-Debugging)을 수행하기 위한 대상 프로그램인지 여부를 판단하는 단계와; C) 상기 컴퓨터 프로그램이 상기 안티-디버깅 대상 프로그램인 경우, 상기 인터럽트에 따른 디버깅(Debugging)이 수행되고 있다는 사실을 등록하는 단계와; D) 상기 등록된 디버깅 수행 사실을 상기 컴퓨터 프로그램으로 전송하는 단계와; E) 상기 컴퓨터 프로그램이 실행 중인 컴퓨터의 운영 체제(Operation System)의 오리지날 코드(Original Code)를 호출하는 단계를 포함하여, 실시간으로 컴퓨터 프로그램의 디버깅을 방지하여 역 어셈블링 되지 않도록 즉, 해킹을 방지할 수 있다.Disclosed are a method for preventing debugging of a real-time computer program and a recording medium thereof. The present invention includes the steps of: A) hooking an interrupt table corresponding to an interrupt for debugging generated in a running computer program; B) determining whether the computer program for which the debugging has occurred is a target program for performing anti-debugging; C) if the computer program is the anti-debugging target program, registering the fact that debugging according to the interruption is being performed; D) sending said registered debugging performance to said computer program; E) including the step of calling the original code of the operating system (Operation System) of the computer on which the computer program is running, to prevent debugging of the computer program in real time to prevent disassembly, that is to prevent hacking can do.

컴퓨터 프로그램, 해킹, 디버그, 브레이크 포인터, 인터럽트 Computer Program, Hack, Debug, Break Pointer, Interrupt

Description

실시간 컴퓨터 프로그램의 디버깅 방지 방법 및 그 기록 매체{METHOD FOR PREVENTING FROM DEBUGGING COMPUTER PROGRAM IN REAL TIME AND RECORDING MATERIAL THEREOF}Method for preventing debugging of real-time computer program and its recording medium {METHOD FOR PREVENTING FROM DEBUGGING COMPUTER PROGRAM IN REAL TIME AND RECORDING MATERIAL THEREOF}

도 1은 본 발명의 일 실시예에 따른 실시간 컴퓨터 프로그램의 디버깅 방지 방법을 설명하기 위한 순서도이다.1 is a flowchart illustrating a debugging prevention method of a real-time computer program according to an embodiment of the present invention.

도 2는 본 발명의 다른 실시예에 따른 실시간 컴퓨터 프로그램의 디버깅 방지 방법을 설명하기 위한 순서도이다.2 is a flowchart illustrating a method for preventing debugging of a real-time computer program according to another embodiment of the present invention.

도 3은 본 발명의 일 실시예에 따라 윈도우 NT 계열에서 구현되는 인터럽트의 핸들러 처리를 도시한 것이다.3 illustrates handler processing of interrupts implemented in the Windows NT series according to an embodiment of the present invention.

도 4는 본 발명의 일 실시예에 따라 윈도우 9x 계열에서 구현되는 인터럽트의 핸들러 처리를 도시한 것이다.4 illustrates handler processing of an interrupt implemented in the Windows 9x series according to an embodiment of the present invention.

본 발명은 컴퓨터 프로그램의 디버깅 방지에 관한 것으로, 보다 상세하게는 실행 중인 컴퓨터 프로그램이 역 어셈블링 되지 않도록 차단하기 위한 실시간 컴퓨터 프로그램의 디버깅 방지 방법 및 그 기록 매체에 관한 것이다.The present invention relates to preventing debugging of a computer program, and more particularly, to a debugging prevention method of a real-time computer program and a recording medium for blocking a running computer program from being disassembled.

디버거(Debugger)란 일반적으로 프로그램의 오류발생 원인을 찾기 위한 툴을 지칭하나, 이 외에 프로그램의 내용을 분석하고, 수정하는데 이용되기도 한다.Debuggers generally refer to tools for finding the source of errors in a program, but can also be used to analyze and correct the contents of a program.

상기 디버거는 브레이크 포인터(Break Pointer), 트레이스(Trace), 및 고우(Go) 등의 기능을 가지고 있어 사용자가 원하는 부분에서 프로그램을 중단시킬 수 있고, 프로그램을 명령어 단위로 수행시킴으로써 프로그램 디버깅을 수행하는 것이 가능하다. The debugger has functions such as a break point, trace, and go, so that the program can be stopped at a part desired by the user, and the program can be debugged by executing the program in units of instructions. It is possible.

상기 브레이크 포인터는 일반적인 디버깅 시스템에서 프로그램의 수행 진로 도중 사용자가 원하는 지점에서 프로그램이 빠져 나오게 하는 기능이다. 따라서, 프로그램이 실행 되는 도중 브레이크 포인터가 걸리면 소프트웨어 어보트(Software Abort)가 입력되어 수행을 중단하고 디버깅 할 수 있는 상태로 된다. 상기 소프트웨어 어보트는 외부의 하드웨어 인터럽트를 사용하여 프로그램이 어떤 무한 루프를 수행할 때나 프로그램 수행 중에 잠시 중단하고 강제로 디버깅을 할 수 있는 상태로 빠져나오게 하는 기능이다.The break pointer is a function for causing a program to exit at a point desired by a user during a course of executing a program in a general debugging system. Therefore, if the break pointer is caught while the program is running, the software abort is input to stop the execution and debug. The software abort is a function that causes an external hardware interrupt to exit a state in which the program can be paused and forced to debug while the program executes an infinite loop or during program execution.

상술한 브레이크 포인터, 트레이스, 및 고우 등의 기능을 포함하는 디버거를 통해 프로그램의 구조를 파악하여 다른 사람들이 만든 프로그램을 역 어셈플리(Assembly)하는 것이 가능하다. It is possible to grasp the structure of a program and to disassemble the program created by others through a debugger including the functions such as the break pointer, the trace, and the go.

따라서, 일반적으로 전문 해커(Hacker)들은 해킹 툴(Hacking Tool)을 제작하기 위하여 해킹 대상에 대한 분석을 수행해야 하는데, 이 때 사용되는 가장 유용한 툴(Tool)이 바로 상술한 디버거(Debugger)라는 프로그램이다. Therefore, in general, professional hackers have to perform an analysis on the hacking target in order to produce a hacking tool, and the most useful tool used at this time is a program called a debugger. to be.

그러므로, 정당 사용자가 아닌 불법 사용자가 컴퓨터 프로그램을 정당하지 않은 방법으로 디버깅함으로써 컴퓨터 프로그램이 해킹되어 변경되는 것을 방지할 필요성이 대두되고 있다.Therefore, there is a need to prevent a computer program from being hacked and changed by debugging a computer program in an illegal manner by an illegal user who is not a party user.

본 발명은 상기한 사정을 감안하여 창출된 것으로서, 본 발명의 목적은 실행 중인 컴퓨터 프로그램이 역 어셈블링 되지 않도록 차단하기 위한 실시간 컴퓨터 프로그램의 디버깅 방지 방법 및 그 기록 매체를 제공하는데 있다.SUMMARY OF THE INVENTION The present invention has been made in view of the above circumstances, and an object of the present invention is to provide a method for preventing debugging of a real-time computer program and a recording medium thereof for preventing a running computer program from being disassembled.

상기 목적을 달성하기 위한 본 발명의 제 1 관점에 따른 실시간 컴퓨터 프로그램의 디버깅 방지 방법은,
A-1) 유저 레벨의 코드(User Level Code)가 디버거의 실행 여부를 조회하는 단계;
Debugging prevention method of a real-time computer program according to a first aspect of the present invention for achieving the above object,
A-1) inquiring whether or not the debugger is executed by a user level code;

A-2) 상기 디버거가 동작하는 경우, 실행 중인 컴퓨터 프로그램에서 발생된 디버깅을 위한 인터럽트(Interrupt)에 상응하는 인터럽트 테이블을 후킹(Hooking)하는 단계;A-2) when the debugger is operating, hooking an interrupt table corresponding to an interrupt for debugging generated in a running computer program;

B) 상기 디버깅이 발생된 상기 컴퓨터 프로그램이 안티-디버깅(Anti-Debugging)을 수행하기 위한 대상 프로그램인지 여부를 판단하는 단계;B) determining whether the computer program where the debugging has occurred is a target program for performing anti-debugging;

C) 상기 컴퓨터 프로그램이 상기 안티-디버깅 대상 프로그램인 경우, 상기 인터럽트에 따른 디버깅(Debugging)이 수행되고 있다는 사실을 등록하는 단계;C) registering the fact that debugging according to the interruption is performed when the computer program is the anti-debugging target program;

D) 상기 등록된 디버깅 수행 사실을 상기 컴퓨터 프로그램으로 전송하는 단계; 및D) sending said registered debugging performance to said computer program; And

E) 상기 컴퓨터 프로그램이 실행 중인 컴퓨터의 운영 체제(Operation System)의 오리지날 코드(Original Code)를 호출하는 단계를 포함한다.E) calling an original code of an operating system of a computer on which the computer program is running.

상기 목적을 달성하기 위한 본 발명의 제 2 관점에 따른 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체는,
가-1) 유저 레벨의 코드(User Level Code)가 디버거의 실행 여부를 조회하는 단계;
A computer-readable recording medium having recorded thereon a program according to the second aspect of the present invention for achieving the above object,
(A) inquiring whether a user level code is executed or not;

가-2) 상기 디버거가 동작하는 경우, 실행 중인 컴퓨터 프로그램에서 발생된 디버깅을 위한 인터럽트(Interrupt)에 상응하는 인터럽트 테이블을 후킹(Hooking)하는 단계;A-2) hooking an interrupt table corresponding to an interrupt for debugging generated in a running computer program when the debugger operates;

나) 상기 인터럽트가 발생된 상기 컴퓨터 프로그램이 안티-디버깅(Anti-Debugging)을 수행하기 위한 대상 프로그램인지 여부를 판단하는 단계;B) determining whether the computer program generating the interrupt is a target program for performing anti-debugging;

다) 상기 컴퓨터 프로그램이 상기 안티-디버깅 대상 프로그램인 경우, 상기 인터럽트에 따른 디버깅(Debugging)이 수행되고 있다는 사실을 등록하는 단계;C) registering the fact that debugging according to the interruption is performed when the computer program is the anti-debugging target program;

라) 상기 등록된 디버깅 수행 사실을 상기 컴퓨터 프로그램을 실행시키는 프로세서에 전달하여, 상기 컴퓨터 프로그램의 실행을 종료하는 단계;D) transmitting the registered debugging execution fact to a processor for executing the computer program to terminate execution of the computer program;

마) 상기 컴퓨터 프로그램이 실행 중인 컴퓨터의 운영 체제(Operation System)의 오리지날 코드(Original Code)를 호출하는 단계;E) calling an original code of an operating system of a computer on which the computer program is running;

바) 상기 인터럽트 테이블의 소정 인터럽트에 설정된 안티-디버깅 트레이스(Anti-Debugging Trace)의 핸들러(Handler)가 변경되었는지 여부를 조회하는 단계; 및F) inquiring whether a handler of an anti-debugging trace set to a predetermined interrupt of the interrupt table has changed; And

사) 상기 조회 결과 상기 핸들러가 변경된 경우 상기 컴퓨터 프로그램에 상기 핸들러의 변경 사실을 전송하는 단계를 실현시키기 위한 프로그램을 기록한다.G) If the handler is changed as a result of the inquiry, the program for realizing the step of transmitting the change of the handler to the computer program is recorded.

따라서 본 발명에 의하면, 실시간으로 컴퓨터 프로그램의 디버깅을 방지하여 역 어셈블링 되지 않도록 즉, 해킹을 방지할 수 있다.Therefore, according to the present invention, it is possible to prevent debugging of a computer program in real time so that it is not disassembled, that is, hacking can be prevented.

이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예에 대하여 설명한 다.Hereinafter, with reference to the accompanying drawings will be described a preferred embodiment of the present invention.

도 1은 본 발명의 일 실시예에 따른 실시간 컴퓨터 프로그램의 디버깅 방지 방법을 설명하기 위한 순서도이다.1 is a flowchart illustrating a debugging prevention method of a real-time computer program according to an embodiment of the present invention.

컴퓨터에서 실행되고 있는 컴퓨터 프로그램에서 디버깅(Debugging)을 위한 인터럽트(Interrupt)가 발생된 경우, 상기 인터럽트에 상응하는 인터럽트 테이블을 후킹(Hooking)한다(S100, S110).When an interrupt for debugging occurs in a computer program running in the computer, the interrupt table corresponding to the interrupt is hooked (S100 and S110).

상기 디버깅을 위한 인터럽트는 인터럽트 테이블(Interrupt Description Table)에서 그 기능을 정의하기 위하여 인터럽트와 소정의 핸들러(Handler)를 매핑(Mapping)시키고 있다. 따라서, 인터럽트가 발생되는 경우 디버거가 상기 인터럽트를 감지하고 그 인터럽트에 따라 상술한 바와 같은 동작이 수행된다. 즉, 인터럽트가 발생함으로써 알 수 있는 소정의 정보가 사용자 단말기의 화면에 디스플레이 된다.The interrupt for debugging maps an interrupt and a predetermined handler to define its function in an interrupt description table. Thus, when an interrupt occurs, the debugger detects the interrupt and the operation as described above is performed according to the interrupt. That is, predetermined information that can be known by generating an interrupt is displayed on the screen of the user terminal.

부언하면, 상기 제1 및 제2 인터럽트가 발생되면 상기 인터럽트 테이블에 정의되어 있는 코드 주소에 따라 소정의 함수를 실행하도록 구현되어 있다. In other words, when the first and second interrupts are generated, a predetermined function is executed according to a code address defined in the interrupt table.

예컨대, CPU에는 255개의 인터럽트가 정의되어 있는데, 특히 인텔 마이크로 소프트 사에서 생산되는 CPU에서는 인터럽트 3(Interrupt 3) 및 인터럽트 1(Interrupt 1)이 디버깅을 수행하도록 지정되어 있다.For example, there are 255 interrupts defined on the CPU, especially for CPUs produced by Intel Microsoft Inc. and Interrupt 3 and Interrupt 1 are specified to perform debugging.

따라서, 상기 컴퓨터 프로그램에 디버깅을 수행하기 위한 브레이크 포인트(110), 및 트레이스 또는 싱글 스탭(120)의 발생은 상기 인터럽트 테이블에서 매핑된 핸들러의 앞 단에서 감지된다.Thus, the occurrence of a break point 110, and a trace or single step 120 for debugging in the computer program is detected at the front end of the handler mapped in the interrupt table.

부언하면, 상기 인터럽트 테이블에서 상기 인터럽트 1 및 3에 매칭되는 안티 디버거 트레이서 핸들러(Anti-Debugger Tracer Handler)를 설치하며, 상기 인터럽트 1 및 3의 본래의 기능을 수행하기 위한 핸들러는 따로 저장한다. 따라서, 상기 제1 및 제2 인터럽트가 발생되는 경우 안티 디버거 트레이서 핸들러(Anti-Debugger Tracer Handler)에 의해 다음의 동작이 수행된다.In other words, an anti-debugger tracer handler matching the interrupts 1 and 3 is installed in the interrupt table, and a handler for performing the original functions of the interrupts 1 and 3 is stored separately. Therefore, when the first and second interrupts are generated, the following operations are performed by an anti-debugger tracer handler.

즉, 상기 인터럽트에 상응하는 인터럽트 테이블을 후킹한 후, 상기 디버깅을 수행하기 위한 인터럽트가 발생된 컴퓨터 프로그램이 디버깅을 방지하기 위한 컴퓨터 프로그램인지 여부를 판단한다(S120). That is, after hooking the interrupt table corresponding to the interrupt, it is determined whether or not the computer program generating the interrupt for performing the debugging is a computer program for preventing debugging (S120).

이는 개발자들이 프로그램을 개발하는 과정에서 디버깅이 수행되는 경우는 안티-디버깅(Anti-Debugging) 대상 프로그램에서 제외하기 위함이다(S170).This is to exclude from the anti-debugging target program when debugging is performed during the development of the program by the developers (S170).

상기 단계 S120에서 상기 컴퓨터 프로그램이 디버깅을 방지하기 위한 즉, 안티-디버깅 대상 컴퓨터 프로그램인 경우, 디버깅이 수행되고 있음을 등록한다(S130).In step S120, when the computer program is to prevent debugging, that is, an anti-debugging target computer program, it is registered that debugging is being performed (S130).

또한, 주기적으로 바람직하게는 실시간으로 디버깅이 수행 사실을 상기 컴퓨터 프로그램으로 전달하여 상기 컴퓨터 프로그램 자체의 실행을 종료한다(S140).In addition, periodically, the execution of the computer program itself is terminated by transmitting the fact that debugging is performed in real time to the computer program (S140).

또한, 상기 안티 디버거 트레이서 핸들러가 변경되었는지 여부를 시스템 쓰레드(Tred)란 별도의 함수로 조회하여 상기 핸들러가 변경되었다면 상기 컴퓨터 프로그램에 디버깅이 수행되고 있다는 것이므로, 상기 컴퓨터 프로그램으로 상기 디버깅이 수행되고 있다는 것을 전달함으로써 상기 컴퓨터 프로그램이 종료하도록 한다(S360).In addition, if the anti-debugger tracer handler is changed, the system thread (Tred) is inquired as a separate function, and if the handler is changed, the debugging is performed on the computer program. Therefore, the debugging is performed by the computer program. The computer program is terminated by transferring the information (S360).

그러나, 상기 단계 S360에서 상기 핸들러가 변경되지 않은 경우에는 상기 컴퓨터의 운영 체제(Operation System)의 오리지날 코드(Original Code)를 호출하여 상기 컴퓨터의 타 프로그램들이 정상적으로 진행되도록 한다.However, if the handler is not changed in step S360, the original code of the operating system of the computer is called to allow other programs of the computer to proceed normally.

도 2는 본 발명의 다른 실시예에 따른 실시간 컴퓨터 프로그램의 디버깅 방지 방법을 설명하기 위한 순서도이다.2 is a flowchart illustrating a method for preventing debugging of a real-time computer program according to another embodiment of the present invention.

컴퓨터의 하드웨어와 바로 통신하기 위한 커널 레벨(Kornel level) 및 일반 프로그램을 구동시키기 위한 유저 레벨(User Level)로 분리하여 구현된다. It is implemented by separating the kernel level for directly communicating with the hardware of the computer and the user level for running general programs.

상기 유저 레벨의 소정의 코드(Code)가 상기 커널 레벨에서 동작하는 디버거의 실행 여부를 조회한다(S200).The predetermined code of the user level inquires whether a debugger operating at the kernel level is executed (S200).

이는 디버거를 수행하는 디버거용 프로그램이 안티-디버거 대상 프로그램에 실행되는 경우 이를 감지하여 상기 안티-디버거 대상 프로그램을 종료함으로써 역 어셈블링 되기 않도록 하기 위함이다.This is to detect when a debugger program that executes a debugger is executed in the anti-debugger target program and to prevent the disassembly by terminating the anti-debugger target program.

따라서, 상기 유저 레벨의 소정 코드는 상기 디버거의 드라이버(Driver)정보를 이용하여 크리에이트 파일(Create file)을 호출하여, 상기 크리에이트 파일이 오픈(Open)된 경우 상기 디버거가 동작하는 것으로 판단한다(S210). 상기 디버거의 일 예로는 소프트 아이스(Soft Ice) 가 있다.Therefore, the predetermined code of the user level calls the create file using the driver information of the debugger, and determines that the debugger operates when the create file is opened (S210). ). One example of the debugger is Soft Ice.

다른 응용 예에서, 상기 유저 레벨의 소정 코드는 커널 레벨로 컴퓨터의 윈도우 내부 정보를 소유한 소정의 함수를 호출한다. 그리고, 상기 윈도우 내부 정보 중 현재 실행 중인 드라이버 리스트(Driver List)에 상기 디버거의 드라이버가 포함되어 있는지 조회하여 상기 리스트에 포함되어 있는 경우, 상기 디버거가 동작하 는 것으로 판단한다. 상기 소정 함수의 일 예로는 NtQuerySystemInformation이 있다.In another application, the user-level predetermined code invokes a predetermined function that possesses the Windows internal information of the computer at the kernel level. If the driver list is included in the currently running driver list in the internal information of the window and the driver is included in the list, it is determined that the debugger operates. An example of the predetermined function is NtQuerySystemInformation.

디버거가 동작한다고 판단되면, 상기 디버거가 동작하는 대상 컴퓨터 프로그램이 디버거가 수행되지 않도록 설정된 컴퓨터 프로그램인지 여부를 판단하기 위하여, 상기 커널 레벨에 위치한 소정 함수를 호출하여 그 리턴 값을 수신한다(S215).If it is determined that the debugger operates, in order to determine whether the target computer program in which the debugger operates is a computer program configured to not execute the debugger, a predetermined function located at the kernel level is called to receive a return value (S215). .

상기 리턴 값이 안티 디버깅 대상 프로그램 리스트에 포함되는 경우, 상기 디버깅이 수행되고 있음을 등록하고, 상기 디버깅 수행 사실을 상기 컴퓨터 프로그램으로 전달하여 상기 컴퓨터 프로그램이 종료되도록 한다(S220, S230, S240).If the return value is included in the anti-debugging target program list, it registers that the debugging is being performed, and transmits the debugging performance to the computer program to terminate the computer program (S220, S230, S240).

상기 컴퓨터 프로그램이 종료되더라도 상기 컴퓨터의 다른 프로그램들은 제대로 구동되어야 하며, 또한, 상기 단계 S220의 판단 결과 디버깅이 수행되고 있는 프로그램이 안티-디버깅 대상 프로그램이 아닌 경우에도 종료되지 않고 실행되어야 하므로 컴퓨터 운영 시스템의 오리지날 코드를 호출한다(S250).Even if the computer program is terminated, other programs of the computer should be properly run, and as a result of the determination in step S220, the program being debugged should be executed without being terminated even when the program is not an anti-debugging target program. Call the original code (S250).

상술한 바와 같은 본 발명의 방법은 프로그램으로 구현되어 컴퓨터로 읽을 수 있는 형태로 기록매체 예컨대, 씨디롬, 램, 롬, 플로피 디스크, 하드 디스크, 광자기 디스크 등에 저장된다.As described above, the method of the present invention is implemented as a program and stored in a recording medium such as a CD-ROM, a RAM, a ROM, a floppy disk, a hard disk, a magneto-optical disk, and the like.

상술한 바와 같이 구성된 본 발명의 작동 상태에 대하여 보다 상세히 설명한다.The operating state of the present invention configured as described above will be described in more detail.

도 3은 본 발명의 일 실시예에 따라 윈도우 NT 계열에서 구현되는 인터럽트의 핸들러 처리를 도시한 것이다.3 illustrates handler processing of interrupts implemented in the Windows NT series according to an embodiment of the present invention.

실행 중인 컴퓨터 프로그램에 브레이크 포인트가 발생되면 컴퓨터 내부적으 로 인터럽트 3이 발생되며, 싱글 스탭에 의한 디버깅(Debugging)이 발생되면 컴퓨터 내부적으로 인터럽트 1이 발생된다(S310, S320).When a break point occurs in a running computer program, interrupt 3 is generated internally in the computer, and when debugging by a single step occurs, interrupt 1 is generated internally in the computer (S310 and S320).

상기 인터럽트 1 또는 상기 인터럽트 3이 발생되면, 상기 컴퓨터 내부에 존재하는 범용 레지스터인, CS(Code Segment) 레지스터, SS(Stack Segment) 레지스터, DS(Data Segment) 레지스터, FS 레지스터의 값을 저장한다(S330). When the interrupt 1 or the interrupt 3 is generated, values of the CS (Code Segment) register, the SS (Stack Segment) register, the DS (Data Segment) register, and the FS register, which are general-purpose registers existing in the computer, are stored ( S330).

그 후, 디버거 핸들러 안에서 윈도우즈(Windows)의 커널(Kenel) API를 사용하고 있기 때문에 커널 레벨과 유저 레벨의 값이 다른 FS 레지스터의 값만 커널 레벨의 값으로 세팅한다(S340).After that, since the kernel API of Windows is used in the debugger handler, only the value of the FS register having a different kernel level and user level value is set to the kernel level value (S340).

수정이 완료된 후 상기 디버깅이 발생되었다는 사실을 Work Item에 등록하고 APC(Asynchronous Procedure Call) 함수를 이용하여 상기 컴퓨터 프로그램에 전달한다(S350, S360). After the modification is completed, the fact that the debugging has occurred is registered in the Work Item and transmitted to the computer program using an Asynchronous Procedure Call (APC) function (S350, S360).

그리고, 이렇게 상기 컴퓨터 프로그램에 APC 함수를 이용하여 상기 디버깅 발생 사실을 전송하는 작업이 완료된 후 이전의 레지스터 값들로 원상 복구하고, 그리고 나서 본래의 인터럽트와 매핑되어 있는 핸들러를 호출하여 주게 된다(S370).Then, after the operation of transmitting the debugging occurrence fact by using the APC function to the computer program is completed, it is restored to the original register values, and then the handler mapped to the original interrupt is called (S370). .

이 때, 커널 디버거 핸들러가 존재하는 경우에는 커널 디버거 핸들러를 호출 한 후, 윈도우 운영 체계 핸들러를 호출한다(S380, S390).At this time, if there is a kernel debugger handler, the kernel debugger handler is called and then the Windows operating system handler is called (S380 and S390).

도 4는 본 발명의 일 실시예에 따라 윈도우 9x 계열에서 구현되는 인터럽트의 핸들러 처리를 도시한 것이다.4 illustrates handler processing of an interrupt implemented in the Windows 9x series according to an embodiment of the present invention.

윈도우 9x 계열의 경우 상술한 윈도우 NT 계열과의 차이점을 중심으로 설명 하며 동일한 부분에 있어서는 설명을 생략한다.In the case of the Windows 9x series, the description will be mainly focused on the differences from the above-described Windows NT series, and the descriptions thereof will be omitted.

디버거 트레이싱 핸들러에서 별도의 특별한 커널 레벨의 API(Application Protocol Interface)를 호출하지 않으며 단지 커널 레벨에 존재하는 전역 변수 즉, 모든 레지스터의 값을 저장한다(S430).The debugger tracing handler does not call a separate special kernel level application protocol interface (API) and stores only global variables, that is, values of all registers existing at the kernel level (S430).

또한, 인터럽트가 발생하게 되면 단지 코드 세그먼트(Code Segment) 및 스택 세그먼트(Stack Segment)만이 커널 레벨에 맞도록 수정되어 있으므로, 본 발명의 전역 변수를 수정하기 위해서는 데이터 세그먼트(Data Segment) 역시 커널 레벨에서 동작이 가능한 것으로 수정하여 주어야 하며, 상기 값은 스택 세그먼트와 동일한 값으로 세팅하면 된다(S440).In addition, when an interrupt occurs, only the code segment and the stack segment are modified to fit the kernel level. Thus, in order to modify the global variable of the present invention, the data segment is also required at the kernel level. The operation should be modified to be possible, and the value may be set to the same value as the stack segment (S440).

핸들러의 호출 즉, 디버깅이 수행되고 있음을 알리기 위한 플래그(Flag)라는 외부 메모리 변수를 설치하고, 상기 플래그를 체크한 후 APC 함수를 이용하여 상기 컴퓨터 프로그램에 상기 디버깅이 수행되고 있음을 알려준다(S450, S460).A call to a handler, that is, an external memory variable called flag is installed to indicate that debugging is being performed, the flag is checked and the computer program is notified to the computer program using an APC function (S450). , S460).

그리고, 이렇게 상기 컴퓨터 프로그램에 APC 함수를 이용하여 상기 디버깅 발생 사실을 전송하는 작업이 완료된 후 이전의 레지스터 값들로 원상 복구하고, 그리고 나서 본래의 인터럽트와 매핑되어 있는 핸들러를 호출하여 주게 되는 과정은 윈도우 NT 계열과 동일하다(S470, S480, S490).After the operation of transmitting the debugging occurrence fact to the computer program by using the APC function is completed, the process of restoring the previous register values to the original register values and then calling the handler mapped to the original interrupt is performed. Same as NT series (S470, S480, S490).

이상에서 상세히 설명한 바와 같이, 본 발명의 실시간 컴퓨터 프로그램의 디버깅 방지 방법 및 그 기록 매체에 의하면, 안티-디버깅 대상 컴퓨터 프로그램이 실행 중에 브레이크 포인터, 트레이스 등의 기능을 사용한 디버깅이 수행되는 경 우, 디버깅 사실을 안티-디버깅 대상 컴퓨터 프로그램에 전달함으로써, 실시간으로 디버거가 실행되는 것을 차단함으로써 컴퓨터 프로그램이 해킹되는 것을 방지하는 효과가 있다.As described in detail above, according to the method for preventing debugging of a real-time computer program of the present invention and a recording medium thereof, when debugging is performed using a function such as a break pointer or a trace while an anti-debugging target computer program is running, debugging is performed. By passing the fact to the computer program to be anti-debugged, it is possible to prevent the computer program from being hacked by blocking the debugger from running in real time.

따라서, 온라인 게임 등과 같이 사용자가 임의로 디버깅을 수행하여 프로그램에 대한 역 어셈블리를 수행하고 더 나아가 임의로 조작하는 것을 방지할 수 있을 뿐만 아니라, 정당한 권리를 갖고 디버깅을 수행하는 프로그램의 문제점을 발견하기 위하여 수행되는 디버깅에 대하여서는 비록 디버깅이 수행되더라도 프로그램이 종료되지 않도록 하는 효과가 있다.Therefore, it is possible not only to prevent the user from performing arbitrary assembly and further manipulation of the program by debugging arbitrarily, such as online games, but also to find a problem of a program that performs debugging with right rights. For debugging, the program does not terminate even if debugging is performed.

지금까지 본 발명을 바람직한 실시예를 참조하여 상세히 설명하였지만,본 발명이 상기한 실시예에 한정되는 것은 아니며, 이하의 특허청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변형 또는 수정이 가능한 범위까지 본 발명의 기술적 사상이 미친다 할 것이다. Although the present invention has been described in detail with reference to preferred embodiments, the present invention is not limited to the above-described embodiments, and the technical field to which the present invention belongs without departing from the gist of the present invention as claimed in the following claims. Anyone skilled in the art will have the technical idea of the present invention to the extent that various modifications or changes are possible.

Claims (15)

A-1) 유저 레벨의 코드(User Level Code)가 디버거의 실행 여부를 조회하는 단계; A-1) inquiring whether or not the debugger is executed by a user level code; A-2) 상기 디버거가 동작하는 경우, 실행 중인 컴퓨터 프로그램에서 발생된 디버깅을 위한 인터럽트(Interrupt)에 상응하는 인터럽트 테이블을 후킹(Hooking)하는 단계;A-2) when the debugger is operating, hooking an interrupt table corresponding to an interrupt for debugging generated in a running computer program; B) 상기 디버깅이 발생된 상기 컴퓨터 프로그램이 안티-디버깅(Anti-Debugging)을 수행하기 위한 대상 프로그램인지 여부를 판단하는 단계;B) determining whether the computer program where the debugging has occurred is a target program for performing anti-debugging; C) 상기 컴퓨터 프로그램이 상기 안티-디버깅 대상 프로그램인 경우, 상기 인터럽트에 따른 디버깅(Debugging)이 수행되고 있다는 사실을 등록하는 단계;C) registering the fact that debugging according to the interruption is performed when the computer program is the anti-debugging target program; D) 상기 등록된 디버깅 수행 사실을 상기 컴퓨터 프로그램으로 전송하는 단계; 및D) sending said registered debugging performance to said computer program; And E) 상기 컴퓨터 프로그램이 실행 중인 컴퓨터의 운영 체제(Operation System)의 오리지날 코드(Original Code)를 호출하는 단계를 포함하는 것을 특징으로 하는 실시간 컴퓨터 프로그램의 디버깅 방지 방법.E) a method of preventing debugging of a real-time computer program, comprising the step of calling the original code of the operating system (Operation System) of the computer on which the computer program is running. 제 1 항에 있어서, 상기 방법은,The method of claim 1, wherein the method is F) 상기 인터럽트 테이블의 소정 인터럽트에 설정된 안티-디버깅 트레이스(Anti-Debugging Trace)의 핸들러(Handler)가 변경되었는지 여부를 조회하는 단계; 및F) inquiring whether a handler of an anti-debugging trace set to a predetermined interrupt of the interrupt table has changed; And G) 상기 조회 결과 상기 핸들러가 변경된 경우 상기 컴퓨터 프로그램에 상기 핸들러의 변경 사실을 전송하는 것을 특징으로 하는 실시간 컴퓨터 프로그램의 디 버깅 방지 방법.G) The method of preventing debugging of a real-time computer program, if the handler is changed as a result of the inquiry, and transmits the change of the handler to the computer program. 제 1 항에 있어서, 상기 단계 D)는,The method of claim 1, wherein step D) D-1) 상기 등록된 디버깅 수행 사실을 상기 컴퓨터 프로그램을 실행시키는 프로세서에 전달하여, 상기 컴퓨터 프로그램의 실행을 종료하는 단계를 더 포함하는 것을 특징으로 하는 실시간 컴퓨터 프로그램의 디버깅 방지 방법.D-1) transmitting the registered debugging execution fact to a processor for executing the computer program, and terminating execution of the computer program. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서, 상기 단계 B)에서,The process according to any one of claims 1 to 3, wherein in step B), B-1) 상기 컴퓨터 프로그램이 안티-디버깅 대상 프로그램인지 판별하기 위하여 상기 컴퓨터의 커널(Kernel) 레벨에 위치한 소정의 함수를 호출하고 리턴(Return) 값을 수신하는 단계; 및B-1) calling a predetermined function located at a kernel level of the computer and receiving a return value to determine whether the computer program is an anti-debugging target program; And B-2) 상기 리턴 값을 안티-디버깅 대상 프로그램 리스트와 비교하여 일치하면 안티-디버깅 대상 프로그램으로 인식하는 단계를 더 포함하는 것을 특징으로 하는 실시간 컴퓨터 프로그램의 디버깅 방지 방법.B-2) comparing the return value with the anti-debugging target program list and recognizing it as an anti-debugging target program, further comprising the step of preventing debugging of a real-time computer program. 제 4 항에 있어서, 상기 단계 B-1)에서, 상기 커널 레벨에 위치한 소정의 함수를 호출하기 위하여,The method according to claim 4, wherein in step B-1), a predetermined function located at the kernel level is called. B-1a) 상기 컴퓨터의 레지스터 값들을 백업하는 단계; 및B-1a) backing up register values of the computer; And B-1b) 상기 레지스터 값들 중 소정의 레지스터 값을 커널에 위치한 각각의 레지스터 값으로 세팅하는 단계를 수행하는 것을 특징으로 하는 실시간 컴퓨터 프 로그램의 디버깅 방지 방법.B-1b) setting a predetermined register value among the register values to each register value located in the kernel. 제 5 항에 있어서, 상기 컴퓨터가 윈도우 NT 계열인 경우,6. The method of claim 5, wherein if the computer is a Windows NT family, 상기 세팅되는 레지스터는 FS 레지스터인 것을 특징으로 하는 실시간 컴퓨터 프로그램의 디버깅 방지 방법.And the register to be set is an FS register. 제 5 항에 있어서, 상기 상기 컴퓨터가 윈도우 9x 계열인 경우,6. The method of claim 5, wherein if the computer is a Windows 9x series, 상기 세팅되는 레지스터는 DS(Data Segment) 레지스터이며, 상기 DS 레지스터의 값은 SS(Stack Segment) 레지스터와 같은 값으로 세팅되는 것을 특징으로 하는 실시간 컴퓨터 프로그램의 디버깅 방지 방법.The setting register is a DS (Data Segment) register, and the value of the DS register is set to the same value as the SS (Stack Segment) register. 삭제delete 제 1 항에 있어서, 상기 단계 A-1)은,The method of claim 1, wherein step A-1) A-1a) 상기 유저 레벨의 코드(User Level Code)가 상기 디버거의 드라이버(Driver) 정보를 이용하여 크리에이트 파일(Createfile) 함수를 호출하는 단계; 및A-1a) calling the create file function by using the driver information of the debugger by the user level code; And A-1b) 상기 크리에이트 파일이 오픈(Open)된 경우는, 상기 디버거가 동작하는 것으로 판단하는 단계를 포함하는 것을 특징으로 하는 실시간 컴퓨터 프로그램의 디버깅 방지 방법.A-1b) when the create file is opened, determining that the debugger is operating. 제 1 항에 있어서, 상기 단계 A-1)은,The method of claim 1, wherein step A-1) A-11) 상기 유저 레벨의 코드(User Level Code)가 소정의 함수를 호출함으로써 상기 컴퓨터의 윈도우 내부 정보를 획득하는 단계; 및A-11) acquiring window internal information of the computer by the user level code calling a predetermined function; And A-12) 상기 컴퓨터의 윈도우 내부 정보 중 현재 실행 중인 드라이버 리스트에 상기 디버거의 드라이버가 포함되어 있는지 조회하는 단계를 포함하는 것을 특징으로 하는 실시간 컴퓨터 프로그램의 디버깅 방지 방법.A-12) A method for preventing debugging of a real-time computer program, comprising: inquiring whether a driver of the debugger is included in a list of currently running drivers of the internal information of the computer. 삭제delete 가-1) 유저 레벨의 코드(User Level Code)가 디버거의 실행 여부를 조회하는 단계; (A) inquiring whether a user level code is executed or not; 가-2) 상기 디버거가 동작하는 경우, 실행 중인 컴퓨터 프로그램에서 발생된 디버깅을 위한 인터럽트(Interrupt)에 상응하는 인터럽트 테이블을 후킹(Hooking)하는 단계;A-2) hooking an interrupt table corresponding to an interrupt for debugging generated in a running computer program when the debugger operates; 나) 상기 인터럽트가 발생된 상기 컴퓨터 프로그램이 안티-디버깅(Anti-Debugging)을 수행하기 위한 대상 프로그램인지 여부를 판단하는 단계;B) determining whether the computer program generating the interrupt is a target program for performing anti-debugging; 다) 상기 컴퓨터 프로그램이 상기 안티-디버깅 대상 프로그램인 경우, 상기 인터럽트에 따른 디버깅(Debugging)이 수행되고 있다는 사실을 등록하는 단계;C) registering the fact that debugging according to the interruption is performed when the computer program is the anti-debugging target program; 라) 상기 등록된 디버깅 수행 사실을 상기 컴퓨터 프로그램을 실행시키는 프로세서에 전달하여, 상기 컴퓨터 프로그램의 실행을 종료하는 단계;D) transmitting the registered debugging execution fact to a processor for executing the computer program to terminate execution of the computer program; 마) 상기 컴퓨터 프로그램이 실행 중인 컴퓨터의 운영 체제(Operation System)의 오리지날 코드(Original Code)를 호출하는 단계;E) calling an original code of an operating system of a computer on which the computer program is running; 바) 상기 인터럽트 테이블의 소정 인터럽트에 설정된 안티-디버깅 트레이스(Anti-Debugging Trace)의 핸들러(Handler)가 변경되었는지 여부를 조회하는 단계; 및F) inquiring whether a handler of an anti-debugging trace set to a predetermined interrupt of the interrupt table has changed; And 사) 상기 조회 결과 상기 핸들러가 변경된 경우 상기 컴퓨터 프로그램에 상기 핸들러의 변경 사실을 전송하는 단계를 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.G) A computer-readable recording medium having recorded thereon a program for realizing the step of transmitting the change of the handler to the computer program when the handler is changed as a result of the inquiry. 제 12 항에 있어서, 상기 단계 가-1)은,The method of claim 12, wherein step A-1), 가-1a) 상기 유저 레벨의 코드(User Level Code)가 상기 디버거의 드라이버(Driver) 정보를 이용하여 크리에이트 파일(Createfile) 함수를 호출하는 단계; 및A-1a) calling the create file function by using the driver information of the debugger by the user level code; And 가-1b) 상기 크리에이트 파일이 오픈(Open)된 경우는, 상기 디버거가 동작하는 것으로 판단하는 단계를 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.A-1b) A computer-readable recording medium having recorded thereon a program for realizing that the debugger is operated when the create file is opened. 제 12 항에 있어서, 상기 단계 가-1)은,The method of claim 12, wherein step A-1), 가-11) 상기 유저 레벨의 코드(User Level Code)가 소정의 함수를 호출함으로써 상기 컴퓨터의 윈도우 내부 정보를 획득하는 단계; 및(A) acquiring window internal information of the computer by calling a predetermined function by the user level code; And 가-12) 상기 컴퓨터의 윈도우 내부 정보 중 현재 실행 중인 드라이버 리스트에 상기 디버거의 드라이버가 포함되어 있는지 조회하는 단계 단계를 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.A-12) A computer-readable recording medium having recorded thereon a program for realizing a step of inquiring whether a driver of the debugger is included in a list of currently executed drivers of the internal information of the computer. 제 12항 내지 제 14 항 중 어느 한 항에 있어서, 상기 단계 나)에서,The method according to any one of claims 12 to 14, wherein in step b): 나-1) 상기 컴퓨터 프로그램이 안티-디버깅 대상 프로그램인지 판별하기 위하여 상기 컴퓨터의 커널(Kernel) 레벨에 위치한 소정의 함수를 호출하고 리턴(Return) 값을 수신하는 단계; 및B-1) calling a predetermined function located at a kernel level of the computer and receiving a return value to determine whether the computer program is an anti-debugging target program; And 나-2) 상기 리턴 값을 안티-디버깅 대상 프로그램 리스트와 비교하여 일치하면 안티-디버깅 대상 프로그램으로 인식하는 단계를 포함하며,B-2) comparing the return value with an anti-debug target program list and recognizing it as an anti-debug target program, 상기 커널 레벨에 위치한 소정의 함수를 호출하기 위하여,To call a function located at the kernel level, 나-1a) 상기 컴퓨터의 레지스터 값들을 백업하는 단계; 및B-1a) backing up register values of the computer; And 나-1b) 상기 레지스터 값들 중 소정의 레지스터 값을 커널에 위치한 각각의 레지스터 값으로 세팅하는 단계를 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.B-1b) A computer-readable recording medium having recorded thereon a program for realizing the step of setting a predetermined register value among the register values to each register value located in the kernel.
KR1020050079134A 2004-11-29 2005-08-27 Method for preventing from debugging computer program in real time and recording material thereof KR100781554B1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020040098897 2004-11-29
KR20040098897 2004-11-29

Publications (2)

Publication Number Publication Date
KR20060059792A KR20060059792A (en) 2006-06-02
KR100781554B1 true KR100781554B1 (en) 2007-12-03

Family

ID=37156913

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050079134A KR100781554B1 (en) 2004-11-29 2005-08-27 Method for preventing from debugging computer program in real time and recording material thereof

Country Status (1)

Country Link
KR (1) KR100781554B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11409635B2 (en) 2019-08-23 2022-08-09 Raytheon Company Hacker-resistant anti-debug system

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100893137B1 (en) * 2007-08-14 2009-04-16 주식회사 안철수연구소 Method for detecting a debugging of client in server
KR100939210B1 (en) * 2007-12-27 2010-01-28 주식회사 안철수연구소 Apparatus and method for prevention an debugging in a virtual environment
CN101246449B (en) * 2008-02-25 2011-08-10 华为技术有限公司 Tracking function invocation track method and device
KR101861952B1 (en) * 2017-01-25 2018-05-28 한양대학교 에리카산학협력단 Anti-debugging method for preventing software break point and apparatus therefor
JP7076014B2 (en) * 2018-05-29 2022-05-26 ライン プラス コーポレーション Java Debugger blocking method and system for program protection
CN114036056B (en) * 2021-11-16 2024-03-26 企查查科技股份有限公司 Anti-debug method, apparatus, device, storage medium, and program product

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000032364A (en) * 1998-11-13 2000-06-15 황한규 Blowing duct of air conditioner
US6237137B1 (en) 1997-10-15 2001-05-22 Dell Usa, L.P. Method and system for preventing unauthorized access to a computer program
JP2003005854A (en) 2001-04-20 2003-01-08 Matsushita Electric Ind Co Ltd Information processor
JP2005128773A (en) 2003-10-23 2005-05-19 Toshiba Corp Microprocessor and compiling method
KR20060018693A (en) * 2004-08-25 2006-03-02 삼성전자주식회사 Protection method for software and device thereof

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6237137B1 (en) 1997-10-15 2001-05-22 Dell Usa, L.P. Method and system for preventing unauthorized access to a computer program
KR20000032364A (en) * 1998-11-13 2000-06-15 황한규 Blowing duct of air conditioner
JP2003005854A (en) 2001-04-20 2003-01-08 Matsushita Electric Ind Co Ltd Information processor
JP2005128773A (en) 2003-10-23 2005-05-19 Toshiba Corp Microprocessor and compiling method
KR20060018693A (en) * 2004-08-25 2006-03-02 삼성전자주식회사 Protection method for software and device thereof

Cited By (1)

* Cited by examiner, † Cited by third party
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
KR20060059792A (en) 2006-06-02

Similar Documents

Publication Publication Date Title
KR100781554B1 (en) Method for preventing from debugging computer program in real time and recording material thereof
KR101519845B1 (en) Method For Anti-Debugging
US10896253B2 (en) Processor trace-based enforcement of control flow integrity of a computer system
RU2698776C2 (en) Method of maintaining database and corresponding server
US10055585B2 (en) Hardware and software execution profiling
US7293251B2 (en) Initiating and debugging a process in a high assurance execution environment
WO2021057057A1 (en) Target-code coverage testing method, system, and medium of operating system-level program
KR20120031745A (en) Malware auto-analysis system and method using kernel call-back mechanism
CN109101815B (en) Malicious software detection method and related equipment
US20140181794A1 (en) System and method for correct execution of software
JP2005317023A (en) Breakpoint logic unit, debug logic, and breakpoint method for data processing apparatus
US20190370106A1 (en) Unexpected event detection during execution of an application
US20100077385A1 (en) Debugger exception filtering with target-based rules
CN112231198B (en) Malicious process debugging method and device, electronic equipment and medium
US11361077B2 (en) Kernel-based proactive engine for malware detection
US9003236B2 (en) System and method for correct execution of software based on baseline and real time information
JP2008176352A (en) Computer program, computer device and operation control method
CN107291617B (en) Vulnerability analysis method based on implicit taint propagation
US20220335135A1 (en) Vulnerability analysis and reporting for embedded systems
KR20110057297A (en) Dynamic analyzing system for malicious bot and methods therefore
CN112685745B (en) Firmware detection method, device, equipment and storage medium
US11409635B2 (en) Hacker-resistant anti-debug system
CN113646763B (en) shellcode detection method and device
CN110516445B (en) Identification method and device for anti-detection malicious code and storage medium
US10460108B1 (en) Method and system to identify and rectify input dependency based evasion in dynamic analysis

Legal Events

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

Payment date: 20121123

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20131127

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20141127

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20151127

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20161128

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20171127

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20181127

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20191127

Year of fee payment: 13