KR20180047767A - Method of generating a computer program for efficiently defending against a return-oriented programing - Google Patents

Method of generating a computer program for efficiently defending against a return-oriented programing Download PDF

Info

Publication number
KR20180047767A
KR20180047767A KR1020160144466A KR20160144466A KR20180047767A KR 20180047767 A KR20180047767 A KR 20180047767A KR 1020160144466 A KR1020160144466 A KR 1020160144466A KR 20160144466 A KR20160144466 A KR 20160144466A KR 20180047767 A KR20180047767 A KR 20180047767A
Authority
KR
South Korea
Prior art keywords
command
variable
inputting
function
return
Prior art date
Application number
KR1020160144466A
Other languages
Korean (ko)
Other versions
KR101908573B1 (en
Inventor
원동호
이동훈
정재욱
김지예
문종호
강동우
이학준
Original Assignee
성균관대학교산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 성균관대학교산학협력단 filed Critical 성균관대학교산학협력단
Priority to KR1020160144466A priority Critical patent/KR101908573B1/en
Publication of KR20180047767A publication Critical patent/KR20180047767A/en
Application granted granted Critical
Publication of KR101908573B1 publication Critical patent/KR101908573B1/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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

According to the present specification, disclosed is a method for generating a computer program to effectively detect an ROP attack. The method for generating a computer program according to the present invention performs a compiling operation for converting a high-grade language into a machine language by using a processor. The processor comprises the steps of: (a) receiving a program generation command including a function and gadget; (b) setting a variable on a main function caller of a program requested to be generated, and inputting a command to initialize the variable value to ″0″; (c) searching a call command in the program requested to be generated, and inputting a command to increase the variable by ″1″ to a function including the searched call command; (d) searching a return command in the program requested to be generated, and inputting a function for reducing the variable by ″1″ to a gadget and a function including the searched return command; and (e) inputting a command for determining whether the value of the variable within the program requested to be generated is equal to or less than ″0″.

Description

효율적인 리턴-지향형 프로그래밍 공격을 방어할 수 있도록 컴퓨터 프로그램을 생성하는 방법{METHOD OF GENERATING A COMPUTER PROGRAM FOR EFFICIENTLY DEFENDING AGAINST A RETURN-ORIENTED PROGRAMING}METHOD OF GENERATING A COMPUTER PROGRAM FOR EFFICIENTLY DEFENDING AGAINST RETURN-ORIENTED PROGRAMING [0002]

본 발명은 리턴-지향형 프로그래밍 공격의 방어에 관한 것으로서, 구체적으로는 리턴-지향형 프로그래밍 공격을 방어할 수 있도록 컴퓨터 프로그램을 생성하는 방법에 관한 것이다.The present invention relates to defending a return-oriented programming attack, and more particularly, to a method of generating a computer program that is capable of defending a return-oriented programming attack.

리턴-지향형 프로그래밍 공격(Return-Oriented Programming attack, 이하 'ROP공격')이란 프로그램상의 콜-리턴(call-return) 관계에 끼어들어 프로세스 상에 오버플로우(overflow)를 일으키거나 프로그램이 의도하지 않은 가젯들을 실행시키는 공격이다.A return-oriented programming attack (ROP attack) is an attack that interrupts a call-return relationship in a program, overflows the process, To attack.

리턴-지향형 프로그래밍 공격(Return-Oriented Programming attack, 이하 'ROP 공격')이란 프로그램상의 콜-리턴(call-return) 관계에서 콜 명령에 대한 수행 없이 정상적인 프로그램 상에 존재하는 명령어들의 조합과 함께 연속적으로 비정상 리턴을 발생시켜서 악의적인 행위를 하게 만드는 공격 기법입니다.A return-oriented programming attack (ROP attack) is a program that performs a call-return relationship on a program with a combination of instructions present on the normal program without performing the call instruction. It is an attack technique that causes an abnormal return to cause malicious behavior.

ROP 공격을 설명하기 위해 먼저 콜-리턴 매카니즘에 대해서 설명하도록 하겠다.To explain the ROP attack, we first explain the call-return mechanism.

도 1은 콜-리턴 매카니즘의 참고도이다.Figure 1 is a reference diagram of the call-return mechanism.

도 1을 참조하면, 도면에 도시된 두 개의 함수를 확인할 수 있다. 이해의 편의를 위해 왼쪽에 도시된 함수를 '메인 함수호출자(caller)'라고 가정하고, 도면의 오른쪽에 도시된 함수를 '호출된 함수피호출자(callee)'라고 가정하겠다. 상기 메인 함수호출자(caller)의 두번 째 줄에 "CALL" 명령어가 기재된 것을 확인할 수 있다. 상기 "CALL" 명령어에 의해 프로세스는 "0X2002" 주소로 이동한다(①). 이때, 프로세서는 "CALL" 명령 다음에 실행되어야 하는 명령의 주소인 "0x1006"을 버퍼(buffer)스택(stack)에 저장해 놓는다(②). 그리고 프로세스는 호출된 함수피호출자(callee)의 "0x2002 ~ 0x2011"까지의 명령들을 순차적으로 실행한다. 그리고 프로세서는 "0x2011"의 명령인 "RETURN"에 의해 버퍼스택에 저장된 주소인 "0x1006"로 돌아와서 메인 함수호출자(caller)의 명령어를 실행한다(③).Referring to FIG. 1, the two functions shown in the figure can be identified. For convenience of explanation, it is assumed that a function shown on the left side is a 'main function caller', and a function shown on the right side of the drawing is called a called function callee. It can be confirmed that the "CALL" command is written in the second line of the main function caller. By the "CALL" command, the process moves to the address "0X2002" (①). At this time, the processor stores "0x1006", which is the address of the instruction to be executed after the "CALL" instruction, in the buffer stack (②). Then, the process sequentially executes the commands from "0x2002 to 0x2011" of the called callee of the called function. The processor returns to the address "0x1006" stored in the buffer stack by "RETURN" command of "0x2011" and executes the command of the main function caller (③).

상기 내용이 기본적인 프로그램의 콜-리턴 매카니즘이다. ROP 공격이란, 바로 이 콜-리턴 매카니즘을 이용하는 공격이다. 정상적인 프로그램의 의도된 흐름을 파괴하여 공격자가 원하는 코드를 리턴 명령으로 연결하여 악의적인 행위를 하게 만드는 공격이다.The above is the call-return mechanism of the basic program. An ROP attack is an attack using this call-return mechanism. It is an attack that destroys the intended flow of a normal program and connects the attacker with the desired code with a return command to cause malicious behavior.

도 2는 ROP 공격의 개념도이다.2 is a conceptual diagram of an ROP attack.

도 2를 참조하면, 3개의 구역으로 나누어진 것을 확인할 수 있다. 프로그램은 함수 및 가젯을 포함할 수 있다. 이때, "CALL" 명령 및 "RETURN" 명령을 모두 포함하는 것을 '메인 함수호출자(caller)' 또는 '호출된 함수피호출자(callee)'라고 할 수 있다. 그리고 "RETURN" 명령만을 포함("CALL" 명령 없음. 'without call')하는 것을 '가젯(gadjet)'이라고 할 수 있다. '가젯(gadget)'이란 끝이 리턴(return) 명령어로 끝나는 작은 코드 조각이며, ROP 공격의 기본 구성 단위이다. 도 2의 (a)는 메인 함수호출자(caller), 도 2의 (b)는 호출된 함수피호출자(callee), 도 2의 (c)는 가젯이다.Referring to FIG. 2, it can be seen that it is divided into three zones. A program can contain functions and gadgets. At this time, including both the "CALL" command and the "RETURN" command can be referred to as a "main function caller" or a "called function callee". And it can be called 'gadjet' to include only "RETURN" command (without "CALL" command, "without call"). A "gadget" is a small snippet of code that ends with a return command, and is the basic building block of an ROP attack. Figure 2 (a) is a main function caller, Figure 2 (b) is a called callee, and Figure 2 (c) is a gadget.

먼저 메인 함수호출자(caller)에서 "foo"함수를 호출하였고 호출된 "foo"함수 역시 실행중간에 "bar" 가젯을 호출을 한 것을 확인할 수 있다. ROP 공격이 없는 정상적인 경우, 상기 "bar" 가젯에서 "foo"함수로 다시 메인 함수호출자(caller)로 리턴될 것이다(도 2의 실선 화살표 방향). 그러나 ROP 공격이 있는 경우, 바로 가젯에서 "foo"함수로 리턴되지 못하고 다른 가젯이 호출될 수 있다. 이를 "하이잭"이라 표현하였다. ROP 공격에 의해 하이잭이 발생한 경우, 프로그래머가 의도하지 않은 가젯이 연속적으로 호출되는 상황이 발생할 수 있다. 따라서, 원래 실행되어야 하는 함수 또는 가젯은 실행되지 못하고 프로세서는 ROP 공격자가 의도한 가젯을 실행하는 결과가 일어난다.First, you can call the "foo" function in the main function caller and the "foo" function in the middle of the call to see that the "bar" gadget is called in the middle of execution. In the normal case without an ROP attack, the "bar" gadget will return to the main function caller again with the function "foo" (the solid arrow direction in FIG. 2). However, if there is an ROP attack, another gadget can be called without returning directly to the "foo" function in the gadget. This is referred to as "hijack". If a hijack occurs due to an ROP attack, there may be a situation in which the programmer does not intentionally call the gadget continuously. Therefore, the function or gadget that should be executed originally can not be executed, and the result is that the processor executes the intended gadget by the ROP attacker.

참고적인 예로서 ROP 공격은 콜-리턴 매카니즘에 필수인 버퍼스택를 침범해서 시작될 수 있다. 프로세서는 리턴되었을 때 "CALL" 명령 다음에 실행되어야 하는 명령의 주소를 버퍼스택에 저장하는데, 이때 ROP 공격자는 상기 버퍼스택에 저장된 리턴 주소에 침범해서 의도하지 않은 가젯으로 하이잭이 되도록 하는 것이다.As a reference, an ROP attack can be initiated by invading the buffer stack, which is essential for the call-return mechanism. The processor stores the address of the instruction that should be executed next to the "CALL" instruction on the buffer stack when it is returned, causing the ROP attacker to hijack the return address stored in the buffer stack and into the unintended gadget.

이러한, ROP 공격을 감지하고 방어하기 위한 종래의 기술로서 제로-섬 디팬더(Zero-Sum Defender)라고 불리는 기술이 있다.As a conventional technique for detecting and defending an ROP attack, there is a technique called a zero-sum defender.

도 3은 제로-섬 디팬더에 의한 ROP 공격 감지 방법의 개념도이다.3 is a conceptual diagram of a method of detecting an ROP attack by a zero-sum hypothesis.

도 3을 참조하여, 제로-섬 디팬더에 대해서 간략하게 설명하면 다음과 같다. 변수를 하나 설정하고, 콜 명령이 실행될 때마다 상기 변수의 값을 '+1' 증가시키고, 리턴이 될 때마다 상기 변수의 값을 다시 '-1' 감소시킨다. 정상적인 콜-리턴인 경우, 메인 함수호출자(caller)로 돌아올 때 변수의 값이 '0'이 된다. 반면, ROP 공격에 의해 의도하지 않은 가젯이 실행된 경우, 상기 가젯은 콜 없이 리턴만 실행되기 때문에 상기 변수의 값이 '0'이하로 내려갈 수 있다. 따라서 상기 변수의 값이 음수가 되었을 때 ROP 공격이 있는 것으로 판단하고 방어를 시작하는 것이다.Referring to FIG. 3, the zero-sum hypothesis will be briefly described as follows. Sets a variable, increments the value of the variable by '+1' every time the call instruction is executed, and decrements the value of the variable by '-1' each time it is returned. If it is a normal call-return, the value of the variable will be '0' when returning to the main function caller. On the other hand, when an unintended gadget is executed due to an ROP attack, the gadget is only returned without a call, so that the value of the variable may drop below '0'. Therefore, when the value of the variable becomes negative, it is determined that there is an ROP attack and the defense is started.

도 3에 도시된 예시는, 콜에 의해 함수(f1~f5)가 5번 호출되어, 변수의 현재 값은 '5'이다. 이때 ROP 공격이 시작되면 콜 함수 없이(즉, 변수를 '+1'과정없음) 리턴만 이루어지기 때문에 변수는 계속 감소하게 된다(즉, 변수를 '+1'과정없음). 그러다가 5번째 가젯이 실행된 이후, 다음 가젯이 실행되는 순간 상기 변수의 값이 '0'이하값이 되어 ROP 공격이 이루어진 것을 알 수 있는 것이다.In the example shown in Fig. 3, the functions f1 to f5 are called five times by the call, and the current value of the variable is '5'. At this time, when the ROP attack is started, the variable continues to be decremented (ie, there is no '+1' process) because only the return is made without the call function (that is, the variable is not '+1'). Then, after the fifth gadget is executed, when the next gadget is executed, the value of the variable becomes '0', which indicates that the ROP attack is performed.

그러나 이러한 제로-섬 디팬더의 경우, 콜 명령의 횟수보다 가젯의 개수가 적은 경우 ROP 공격자체를 감지하지 못하는 문제점이 있다.However, in the case of the zero-island divider, there is a problem that the ROP attack itself can not be detected when the number of gadgets is smaller than the number of call commands.

대한민국 등록특허공보 제10-1480821호Korean Patent Registration No. 10-1480821

본 명세서에 따른 효율적인 ROP 공격을 감지할 수 있는 방어 방법을 제공하는 것을 목적으로 한다.And an object of the present invention is to provide a defensive method capable of detecting an efficient ROP attack according to the present specification.

본 명세서에 기재된 해결과제는 이상에서 언급한 것들에 한정되지 않으며, 언급되지 아니한 다른 해결과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다. The solutions described herein are not limited to those mentioned above, and other solutions not mentioned may be clearly understood by those skilled in the art from the following description.

상술한 목적을 해결하기 위한 본 명세서에 따른 컴퓨터 프로그램 생성 방법은, 프로세서를 이용하여 고급언어를 기계어로 변환시켜주는 컴파일 작업을 수행하는 컴퓨터 프로그램을 생성하는 방법으로서, 상기 프로세서가 (a) 함수 및 가젯을 포함하는 프로그램 생성 명령을 수신하는 단계; (b) 상기 생성 요청된 프로그램의 메인 함수호출자(caller)상에 변수를 설정하고, 상기 변수값을 '0'으로 초기화하는 명령을 입력하는 단계; (c) 상기 생성 요청된 프로그램 내 콜 명령을 검색하여, 상기 검색된 콜 명령을 포함하는 함수에 상기 변수를 '1' 증가시키는 명령을 입력하는 단계; (d) 상기 생성 요청된 프로그램 내 리턴 명령을 검색하여, 상기 검색된 리턴 명령을 포함하는 함수 및 가젯에 상기 변수를 '1' 감소시키는 명령을 입력하는 단계; 및 (e) 상기 생성 요청된 프로그램 내 상기 변수의 값이 '0'이하인지 판단하는 명령을 입력 단계;를 포함할 수 있다.According to another aspect of the present invention, there is provided a method of generating a computer program for performing a compiling operation for converting a high-level language into a machine language using a processor, the method comprising the steps of: (a) Receiving a program creation command including a gadget; (b) setting a variable on a main function caller of the program requested to be created and inputting a command for initializing the variable value to '0'; (c) searching for a call command in the program requested to be generated and inputting a command for incrementing the variable by '1' to a function including the searched call command; (d) searching for a return instruction in the program requested to be generated, and inputting a command to decrease the variable by '1' to a function and a gadget including the searched return instruction; And (e) inputting a command to determine whether the value of the variable in the program requested to be generated is less than or equal to '0'.

본 명세서의 일 실시예에 따르면, 상기 (c) 단계는 상기 변수를 '1' 증가시키는 명령을 상기 검색된 콜 함수의 다음 행에(적절한 용어인가)호출자의 복귀행 입력하는 단계일 수 있다.According to an embodiment of the present invention, the step (c) may be a step of inputting a command for incrementing the variable by '1' to the caller's return line in the next line of the searched call function (appropriate term).

본 명세서의 일 실시예에 따르면, 상기 (d) 단계는 상기 변수를 '1' 감소시키는 명령을 상기 검색된 리턴 명령보다 앞선 행에 입력하는 단계일 수 있다.According to an embodiment of the present invention, the step (d) may be a step of inputting a command to decrease the variable by '1' in a line preceding the searched return command.

본 명세서의 일 실시예에 따르면, 상기 (e) 단계는 상기 (d) 단계에서 검색된 리턴 명령을 포함하는 함수 및 가젯 내에 명령을 입력하는 단계일 수 있다.According to an embodiment of the present invention, the step (e) may be a step of inputting a command in a gadget and a function including a return command retrieved in step (d).

바람직하게, 상기 (e) 단계는 상기 (d) 단계에서 검색된 리턴 명령의 바로 직전 행에 입력하는 단계일 수 있다.Preferably, the step (e) may be performed in a line immediately before the return instruction retrieved in step (d).

상술한 목적을 해결하기 위한 본 명세서에 따른 컴퓨터 프로그램은 프로세서로 하여금 고급언어를 기계어로 변환시켜주는 컴파일 작업을 수행하도록 하는 컴퓨터 프로그램으로서, (a) 함수 및 가젯을 포함하는 프로그램 생성 명령을 수신하는 단계; (b) 상기 생성 요청된 프로그램의 메인 함수호출자(caller)상에 변수를 설정하고, 상기 변수값을 '0'으로 초기화하는 명령을 입력하는 단계; (c) 상기 생성 요청된 프로그램 내 콜 명령을 검색하여, 상기 검색된 콜 명령을 포함하는 함수에 상기 변수를 '1' 증가시키는 명령을 입력하는 단계; (d) 상기 생성 요청된 프로그램 내 리턴 명령을 검색하여, 상기 검색된 리턴 명령을 포함하는 함수 및 가젯에 상기 변수를 '1' 감소시키는 명령을 입력하는 단계; 및 (e) 상기 생성 요청된 프로그램 내 상기 변수의 값이 '0'이하인지 판단하는 명령을 입력 단계;를 수행하도록 작성되어 컴퓨터로 독출 가능한 기록 매체에 기록된 컴퓨터 프로그램일 수 있다.According to an aspect of the present invention, there is provided a computer program for causing a processor to perform a compiling operation for converting a high-level language into a machine language, the computer program comprising: (a) receiving a program creation command including a function and a gadget step; (b) setting a variable on a main function caller of the program requested to be created and inputting a command for initializing the variable value to '0'; (c) searching for a call command in the program requested to be generated and inputting a command for incrementing the variable by '1' to a function including the searched call command; (d) searching for a return instruction in the program requested to be generated, and inputting a command to decrease the variable by '1' to a function and a gadget including the searched return instruction; And (e) inputting a command for determining whether the value of the variable in the program requested to be generated is less than or equal to '0', and recorded in a computer-readable recording medium.

상술한 컴퓨터 프로그램은 컴퓨터-판독 가능한 저장매체에 저장될 수 있다.The computer program described above may be stored in a computer-readable storage medium.

상기 컴퓨터-판독 가능한 저장매체는 컴퓨터-판독 가능한 저장매체; 및 상기 컴퓨터-판독 가능한 저장매체를 실행시키는 프로세서;를 포함하는 정보처리기기의 일 구성요소가 될 수 있다.The computer-readable storage medium comprising: a computer-readable storage medium; And a processor for executing the computer-readable storage medium.

본 명세서에 따른 는 다음과 같은 효과를 가진다.According to the present specification, the following effects are obtained.

첫째, 컴파일러 기반의 접근법을 가지므로, 프로그램 또는 모듈에 독립적으로 적용이 가능하고, 매우 낮은 성능 오버헤드만 요구된다.First, because it has a compiler-based approach, it can be applied independently to a program or module, requiring only very low performance overhead.

둘째, 원본 프로그램에 '콜' 및 '리턴'만 검색하여 명령어를 추가하기 때문에 빠른 프로그램 생성이 가능하다.Second, it is possible to create a fast program because only the 'call' and 'return' are searched and added to the original program.

셋째, 추가된 명령어가 단순하기 때문에 원본 프로그램의 크기를 증가시키는 양이 매우 적다.Third, the amount of increase in the size of the original program is very small because the added instruction is simple.

넷째, 종래 ROP 공격 탐지 시간에 비해 호출된 함수피호출자(callee)의 개수에 관계없이 빠른 ROP 탐지가 가능하다.Fourth, fast ROP detection is possible regardless of the number of called callees compared to the conventional ROP attack detection time.

본 명세서에 기재된 효과는 이상에서 언급된 것들에 한정되지 않으며, 언급되지 아니한 다른 효과들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.The effects described in the present specification are not limited to those mentioned above, and other effects not mentioned can be clearly understood by those skilled in the art from the following description.

도 1은 콜-리턴 매카니즘의 참고도이다.
도 2는 ROP 공격의 개념도이다.
도 3은 제로-섬 디팬더에 의한 ROP 공격 감지 방법의 개념도이다.
도 4는 본 명세서에 따른 컴퓨터 프로그램 생성 방법의 순서도이다.
도 5는 본 명세서에 따른 컴퓨터 프로그램 생성 방법에 의해 생성된 프로그램의 예시도이다.
도 6은 본 명세서에 따른 컴퓨터 프로그램 생성 방법에 의해 생성된 프로그램에서 ROP 공격 감지의 개념도이다.
도 7은 종래 기술과 본 명세서에 따라 생성된 프로그램의 ROP 공격 감시 시점의 비교도이다.
Figure 1 is a reference diagram of the call-return mechanism.
2 is a conceptual diagram of an ROP attack.
3 is a conceptual diagram of a method of detecting an ROP attack by a zero-sum hypothesis.
4 is a flowchart of a computer program creation method according to the present specification.
5 is an exemplary diagram of a program generated by a computer program creation method according to the present specification.
6 is a conceptual diagram of ROP attack detection in a program generated by a computer program creation method according to the present specification.
FIG. 7 is a comparative view of a ROP attack monitoring point of a program generated according to the prior art and the present specification.

이하, 첨부한 도면을 참조하여, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 설명한다. 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 용이하게 이해할 수 있는 바와 같이, 후술하는 실시예는 본 발명의 개념과 범위를 벗어나지 않는 한도 내에서 다양한 형태로 변형될 수 있다. 가능한 한 동일하거나 유사한 부분은 도면에서 동일한 도면부호를 사용하여 나타낸다.Hereinafter, embodiments of the present invention will be described with reference to the accompanying drawings so that those skilled in the art can easily carry out the present invention. 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 or scope of the invention. Wherever possible, the same or similar parts are denoted using the same reference numerals in the drawings.

본 명세서에서 사용되는 전문용어는 단지 특정 실시예를 언급하기 위한 것이며, 본 발명을 한정하는 것을 의도하지는 않는다. 여기서 사용되는 단수 형태들은 문구들이 이와 명백히 반대의 의미를 나타내지 않는 한 복수 형태들도 포함한다.The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. The singular forms as used herein include plural forms as long as the phrases do not expressly express the opposite meaning thereto.

본 명세서에서 사용되는 "포함하는"의 의미는 특정 특성, 영역, 정수, 단계, 동작, 요소 및/또는 성분을 구체화하며, 다른 특정 특성, 영역, 정수, 단계, 동작, 요소, 성분 및/또는 군의 존재나 부가를 제외시키는 것은 아니다.Means that a particular feature, region, integer, step, operation, element and / or component is specified and that other specific features, regions, integers, steps, operations, elements, components, and / It does not exclude the existence or addition of a group.

본 명세서에서 사용되는 기술용어 및 과학용어를 포함하는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 일반적으로 이해하는 의미와 동일한 의미를 가진다. 사전에 정의된 용어들은 관련기술문헌과 현재 개시된 내용에 부합하는 의미를 가지는 것으로 추가 해석되고, 정의되지 않는 한 이상적이거나 매우 공식적인 의미로 해석되지 않는다.All terms including technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. Predefined terms are further interpreted as having a meaning consistent with the relevant technical literature and the present disclosure, and are not to be construed as ideal or very formal meanings unless defined otherwise.

이하에서는 도면을 중심으로 본 명세서에 따른 컴퓨터 프로그램 생성 방법을 설명하고자 한다.Hereinafter, a method of generating a computer program according to the present specification will be described with reference to the drawings.

도 4는 본 명세서에 따른 컴퓨터 프로그램 생성 방법의 순서도이다.4 is a flowchart of a computer program creation method according to the present specification.

본 명세서에 따른 컴퓨터 프로그램 생성 방법은 프로세서를 이용하여 고급언어를 기계어로 변환시켜주는 컴파일(compile) 작업을 수행하는 컴퓨터 프로그램을 생성하는 방법이다. 상기 고급언어랑 프로그래머가 알고리즘을 작성하기 위해 사용하는 소프트웨어로서, JAVA, C언어 등을 의미한다. A computer program creation method according to the present invention is a method for creating a computer program for performing a compile operation for converting a high-level language into a machine language using a processor. The software used by the high-level language and the programmer to write the algorithm, which means JAVA, C language, and the like.

본 명세서에 따른 컴퓨터 프로그램 생성 방법은 각 단계가 프로세서에 의해 동작될 수 있으므로, 이하 각 단계는 상기 프로세서에 의해 수행되는 단계로 이해할 수 있다.The computer program creation method according to the present invention can be understood as a step performed by the processor since each step can be operated by a processor.

먼저, 프로세서는 함수 및 가젯을 포함하는 프로그램 생성 명령을 수신할 수 있다(S10).First, the processor can receive a program creation command including a function and a gadget (S10).

다음으로, 프로세서는 상기 생성 요청된 프로그램의 메인 함수호출자(caller)상에 변수를 설정하고, 상기 변수값을 '0'으로 초기화하는 명령을 입력할 수 있다(S20).Next, the processor sets a variable on the main function caller of the generated program and inputs a command to initialize the variable to '0' (S20).

다음으로, 프로세서는 상기 생성 요청된 프로그램 내 콜 명령을 검색하여, 상기 검색된 콜 명령을 포함하는 함수에 상기 변수를 '1' 증가시키는 명령을 입력할 수 있다(S30).Next, the processor searches for a call command in the program requested to be generated, and inputs a command for incrementing the variable by '1' to a function including the searched command (S30).

다음으로, 프로세서는 상기 생성 요청된 프로그램 내 리턴 명령을 검색하여, 상기 검색된 리턴 명령을 포함하는 함수 및 가젯에 상기 변수를 '1' 감소시키는 명령을 입력할 수 있다(S40).Next, the processor may search for a return instruction in the program requested to be generated, and input a command to decrease the variable '1' to a function including the searched return instruction and a gadget (S40).

다음으로, 프로세서는 상기 생성 요청된 프로그램 내 상기 변수의 값이 '0'이하인지 판단하는 명령을 입력할 수 있다(S50).Next, the processor may input a command to determine whether the value of the variable in the program requested to be generated is less than or equal to '0' (S50).

본 명세서의 일 실시예에 따르면, 상기 S30 단계에서 상기 변수를 '1' 증가시키는 명령을 상기 검색된 콜 함수의 다음 행에(적절한 용어인가?)호출자의 복귀 행에 입력할 수 있다.According to an embodiment of the present invention, in step S30, a command for incrementing the variable by '1' may be input to the caller's return line in the next line of the searched call function (appropriate term?).

본 명세서의 일 실시예에 따르면, 상기 S40 단계에서 상기 변수를 '1' 감소시키는 명령을 상기 검색된 리턴 명령보다 앞선 행에 입력할 수 있다.According to an embodiment of the present invention, in step S40, a command for decrementing the variable by '1' may be input in a line preceding the searched return command.

본 명세서의 일 실시예에 따르면, 상기 S50 단계는에서 상기 검색된 리턴 명령을 포함하는 함수 및 가젯 내에 명령을 입력할 수 있다.According to an embodiment of the present invention, the step S50 may input a command in the gadget and the function including the retrieved return command.

바람직하게, 상기 S50 단계는에서 상기 검색된 리턴 명령의 바로 직전 행에 입력할 수 있다.Preferably, the step S50 may be performed in a row immediately before the searched return instruction.

도 5는 본 명세서에 따른 컴퓨터 프로그램 생성 방법에 의해 생성된 프로그램의 예시도이다.5 is an exemplary diagram of a program generated by a computer program creation method according to the present specification.

도 5를 참조하면, 도 1와 유사한 것을 확인할 수 있다. 다만, 도 5에 도시된 예시는, 도 1과 비교할 때, 콜 명령 다음에 변수를 증가시키는 명령어, 리턴 명령 이전에 변수를 감소시키는 명령어 및 변수값을 확인하는 명령이 추가된 것을 확인할 수 있다.Referring to Fig. 5, it can be seen that similar to Fig. However, in the example shown in Fig. 5, when compared with Fig. 1, it can be seen that an instruction to increase a variable after a call instruction, an instruction to decrease a variable before a return instruction, and an instruction to check a variable value are added.

도 6은 본 명세서에 따른 컴퓨터 프로그램 생성 방법에 의해 생성된 프로그램에서 ROP 공격 감지의 개념도이다.6 is a conceptual diagram of ROP attack detection in a program generated by a computer program creation method according to the present specification.

도 6을 참조하면, 먼저 메인 함수호출자(caller)에서 변수의 값이 '1'로 설정된 것을 확인할 수 있다. 그리고 f1 함수 및 f5 함수를 연속적으로 호출하여도 변수의 값이 증가하지 않고 '1'로 유지되는 것을 확인할 수 있다. 종래 제로-섬 디팬더와 차이점이다. 그리고 호출된 함수피호출자(callee)에서 리턴이 될 때마다, 변수의 값이 줄어들어서 '0'으로 바뀐다. 감소된 변수값은 리턴된 이후에 다시 증가하여 '1'로 유지된다. 따라서, ROP 공격이 없이 정상적인 경우에는 변수의 값이 '0'이하로 내려가지 않는다.Referring to FIG. 6, it can be confirmed that the value of the variable is set to '1' in the main function caller. Also, it can be confirmed that even if the f1 function and the f5 function are successively called, the value of the variable is maintained at '1' without increasing. It differs from the conventional zero-island divider. Each time a call is returned from a called callee, the value of the variable is reduced to zero. The reduced variable value is incremented again after returning and is maintained at '1'. Therefore, in a normal case without an ROP attack, the value of the variable does not fall below '0'.

반면, f5 함수 이후에 ROP 공격이 발생한 경우를 가정해보겠다. f5 함수 이후 리턴 명령어를 수행하는 과정에서 변수의 값은 '0'이 될 것이다. 그리고 ROP 공격에 의해 실행된 가젯 g1은 콜 명령이 없기 때문에 상기 변수를 증가시키지 않는다. 상기 변수를 증가시키지 않고 리턴 명령만 수행하기 때문에 상기 변수의 값은 '-1'이 될 것이다. 따라서 상기 변수의 값이 '0' 이하로 내려간 것을 감지하여 ROP 공격을 감지할 수 있다.On the other hand, suppose that an ROP attack occurs after the f5 function. The value of the variable will be '0' in the process of return command after f5 function. And the gadget g1 executed by the ROP attack does not increase the variable because there is no call instruction. The value of the variable will be '-1' because it does not increase the variable but performs only the return instruction. Therefore, the ROP attack can be detected by sensing that the value of the variable has fallen below '0'.

도 7은 종래 기술과 본 명세서에 따라 생성된 프로그램의 ROP 공격 감시 시점의 비교도이다.FIG. 7 is a comparative view of a ROP attack monitoring point of a program generated according to the prior art and the present specification.

도 7을 참조하면, 종래 제로-섬 디팬더의 경우 정상적으로 호출된 함수피호출자(callee)의 개수(n)에 비례하여 가젯이 실행될 때에 ROP 공격의 탐지가 가능하다. 반면, 본 명세서에 따른 프로그램의 경우, 정상적으로 호출된 함수피호출자(callee)의 개수에 관계없이 가젯이 2번이상 실행될 때에 바로 ROP 공격의 탐지가 가능하다.Referring to FIG. 7, it is possible to detect an ROP attack when the gadget is executed in proportion to the number (n) of normally invoked function callees in the case of the conventional zero-sum hypothesis. On the other hand, in the case of the program according to the present specification, it is possible to detect an ROP attack immediately when the gadget is executed more than once, irrespective of the number of function callees normally called.

본 명세서에 따른 컴퓨터 프로그램 생성 방법은 프로세서로 하여금 고급언어를 기계어로 변환시켜주는 컴파일 작업을 수행하도록 하는 컴퓨터 프로그램으로 구현될 수 있다.The method of generating a computer program according to the present invention may be implemented as a computer program for causing a processor to perform a compiling operation for converting an advanced language to a machine language.

이 경우, 상기 컴퓨터 프로그램은 컴퓨터-판독 가능한 저장매체에 저장될 수 있다.In this case, the computer program may be stored in a computer-readable storage medium.

상기 저장 매체는 기계로 읽을 수 있는 매체이다. 기계로 읽을 수 있는 매체라는 용어는, 기계가 정보를 읽어 들일 수 있도록 정보를 읽는 물리적 기구에 의해 검출될 수 있는 유형의 정보를 저장하고 상기 기계에게 데이터를 제공하는 매체로 정의될 수 있다. 상기 저장 매체는 비휘발성 매체(non-volatile media) 및 휘발성 매체(volatile media)를 포함할 수 있다. 상기 기계로 읽을 수 있는 매체는, 이에 한정되지 않지만, 플로피 디스크(floppy disk), 플렉서블 디스크(flexible disk), 하드 디스크, 자기 테이프, 시디롬(compact disc read-only memory: CD-ROM), 광학 디스크, 펀치 카드(punchcard), 페이퍼 테이프(papertape), 램, 피롬(Programmable Read-Only Memory: PROM), 이피롬(Erasable PROM: EPROM) 및 플래시-이피롬(FLASH-EPROM) 중의 적어도 하나가 될 수 있다.The storage medium is a machine readable medium. The term machine readable medium may be defined as a medium that stores and provides data to a type of information that can be detected by a physical mechanism that reads information so that the machine can read the information. The storage medium may include non-volatile media and volatile media. The machine-readable medium includes, but is not limited to, a floppy disk, a flexible disk, a hard disk, a magnetic tape, a compact disc read-only memory (CD-ROM) , A punch card, a papertape, a ram, a programmable read-only memory (PROM), an erasable PROM (EPROM), and a flash-EPROM have.

또한, 상기 컴퓨터-판독 가능한 저장매체는, 컴퓨터-판독 가능한 저장매체; 및 상기 컴퓨터-판독 가능한 저장매체를 실행시키는 프로세서;를 포함하는 정보처리기기의 일 구성요소가 될 수 있다.The computer-readable storage medium may further comprise: a computer-readable storage medium; And a processor for executing the computer-readable storage medium.

본 명세서에서 설명된 정보처리기기란, 휴대폰, 스마트 폰(smart phone), 노트북 컴퓨터(laptop computer), 디지털방송용 단말기, PDA(personal digital assistants), PMP(portable multimedia player), 네비게이션, 슬레이트 PC(slate PC), 태블릿 PC(tablet PC), 울트라북(ultrabook), 웨어러블 디바이스(wearable device, 예를 들어, 워치형 단말기 (smartwatch), 글래스형 단말기 (smart glass), HMD(head mounted display)) 등이 될 수 있다.The information processing device described in the present specification may be a mobile phone, a smart phone, a laptop computer, a digital broadcasting terminal, a personal digital assistant (PDA), a portable multimedia player (PMP), a navigation device, a slate PC PCs), tablet PCs, ultrabooks, wearable devices (e.g., smartwatches, smart glass, HMDs (head mounted displays), etc.) .

본 명세서에서 설명되는 실시예와 첨부된 도면은 본 발명에 포함되는 기술적 사상의 일부를 예시적으로 설명하는 것에 불과하다. 따라서, 본 명세서에 개시된 실시예들은 본 발명의 기술적 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이므로, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아님은 자명하다. 본 발명의 명세서 및 도면에 포함된 기술적 사상의 범위 내에서 당업자가 용이하게 유추할 수 있는 변형 예와 구체적인 실시 예는 모두 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.The embodiments and the accompanying drawings described in the present specification are merely illustrative of some of the technical ideas included in the present invention. Accordingly, the embodiments disclosed herein are for the purpose of describing rather than limiting the technical spirit of the present invention, and it is apparent that the scope of the technical idea of the present invention is not limited by these embodiments. It will be understood by those of ordinary skill in the art that various changes in form and details may be made therein without departing from the spirit and scope of the invention as defined by the appended claims.

Claims (12)

프로세서를 이용하여 고급언어를 기계어로 변환시켜주는 컴파일 작업을 수행하는 컴퓨터 프로그램을 생성하는 방법에 있어서, 상기 프로세서가
(a) 함수 및 가젯을 포함하는 프로그램 생성 명령을 수신하는 단계;
(b) 상기 생성 요청된 프로그램의 메인 함수호출자(caller)상에 변수를 설정하고, 상기 변수값을 '0'으로 초기화하는 명령을 입력하는 단계;
(c) 상기 생성 요청된 프로그램 내 콜 명령을 검색하여, 상기 검색된 콜 명령을 포함하는 함수에 상기 변수를 '1' 증가시키는 명령을 입력하는 단계;
(d) 상기 생성 요청된 프로그램 내 리턴 명령을 검색하여, 상기 검색된 리턴 명령을 포함하는 함수 및 가젯에 상기 변수를 '1' 감소시키는 명령을 입력하는 단계; 및
(e) 상기 생성 요청된 프로그램 내 상기 변수의 값이 '0'이하인지 판단하는 명령을 입력 단계;를 포함하는 것을 특징으로 하는 컴퓨터 프로그램 생성 방법.
A method of generating a computer program for performing a compiling operation for converting an advanced language into a machine language using a processor,
(a) receiving a program creation instruction including a function and a gadget;
(b) setting a variable on a main function caller of the program requested to be created and inputting a command for initializing the variable value to '0';
(c) searching for a call command in the program requested to be generated and inputting a command for incrementing the variable by '1' to a function including the searched call command;
(d) searching for a return instruction in the program requested to be generated, and inputting a command to decrease the variable by '1' to a function and a gadget including the searched return instruction; And
(e) inputting a command to determine whether the value of the variable in the program requested to be generated is less than or equal to '0'.
청구항 1에 있어서,
상기 (c) 단계는, 상기 변수를 '1' 증가시키는 명령을 상기 검색된 콜 함수의 다음 행에(적절한 용어인가?)호출자의 복귀 행에 입력하는 단계인 것을 특징으로 하는 컴퓨터 프로그램 생성 방법.
The method according to claim 1,
Wherein the step (c) is a step of inputting a command for incrementing the variable by '1' to the caller's return line in the next line of the searched call function (appropriate term?).
청구항 1에 있어서,
상기 (d) 단계는, 상기 변수를 '1' 감소시키는 명령을 상기 검색된 리턴 명령보다 앞선 행에 입력하는 단계인 것을 특징으로 하는 컴퓨터 프로그램 생성 방법.
The method according to claim 1,
Wherein the step (d) comprises the step of inputting a command for decrementing the variable by '1' in a line preceding the searched return command.
청구항 1에 있어서,
상기 (e) 단계는, 상기 (d) 단계에서 검색된 리턴 명령을 포함하는 함수 및 가젯 내에 명령을 입력하는 단계인 것을 특징으로 하는 컴퓨터 프로그램 생성 방법.
The method according to claim 1,
Wherein the step (e) is a step of inputting a command in a gadget and a function including a return command retrieved in step (d).
청구항 4에 있어서,
상기 (e) 단계는, 상기 (d) 단계에서 검색된 리턴 명령의 바로 직전 행에 입력하는 단계인 것을 특징으로 하는 컴퓨터 프로그램 생성 방법.
The method of claim 4,
Wherein the step (e) is a step of inputting a line immediately before the return instruction retrieved in the step (d).
프로세서로 하여금 고급언어를 기계어로 변환시켜주는 컴파일 작업을 수행하도록 하는 컴퓨터 프로그램으로서,
(a) 함수 및 가젯을 포함하는 프로그램 생성 명령을 수신하는 단계;
(b) 상기 생성 요청된 프로그램의 메인 함수호출자(caller)상에 변수를 설정하고, 상기 변수값을 '0'으로 초기화하는 명령을 입력하는 단계;
(c) 상기 생성 요청된 프로그램 내 콜 명령을 검색하여, 상기 검색된 콜 명령을 포함하는 함수에 상기 변수를 '1' 증가시키는 명령을 입력하는 단계;
(d) 상기 생성 요청된 프로그램 내 리턴 명령을 검색하여, 상기 검색된 리턴 명령을 포함하는 함수 및 가젯에 상기 변수를 '1' 감소시키는 명령을 입력하는 단계; 및
(e) 상기 생성 요청된 프로그램 내 상기 변수의 값이 '0'이하인지 판단하는 명령을 입력 단계;를 수행하도록 작성되어 컴퓨터로 독출 가능한 기록 매체에 기록된 컴퓨터 프로그램.
A computer program for causing a processor to perform a compiling operation for converting an advanced language into a machine language,
(a) receiving a program creation instruction including a function and a gadget;
(b) setting a variable on a main function caller of the program requested to be created and inputting a command for initializing the variable value to '0';
(c) searching for a call command in the program requested to be generated and inputting a command for incrementing the variable by '1' to a function including the searched call command;
(d) searching for a return instruction in the program requested to be generated, and inputting a command to decrease the variable by '1' to a function and a gadget including the searched return instruction; And
(e) inputting a command to determine whether the value of the variable in the program requested to be generated is less than or equal to '0', and recorded in a recording medium readable by a computer.
청구항 6에 있어서,
상기 (c) 단계는, 상기 변수를 '1' 증가시키는 명령을 상기 검색된 콜 함수의 다음 행에(적절한 용어인가?)호출자의 복귀 행에 입력하는 단계인 것을 특징으로 하는 컴퓨터 프로그램.
The method of claim 6,
Wherein the step (c) is a step of inputting a command for incrementing the variable by '1' to the caller's return line in the next line of the searched call function (appropriate term?).
청구항 6에 있어서,
상기 (d) 단계는, 상기 변수를 '1' 감소시키는 명령을 상기 검색된 리턴 명령보다 앞선 행에 입력하는 단계인 것을 특징으로 하는 컴퓨터 프로그램.
The method of claim 6,
Wherein the step (d) is a step of inputting a command for decrementing the variable by '1' in a line preceding the searched return command.
청구항 6에 있어서,
상기 (e) 단계는, 상기 (d) 단계에서 검색된 리턴 명령을 포함하는 함수 및 가젯 내에 명령을 입력하는 단계인 것을 특징으로 하는 컴퓨터 프로그램.
The method of claim 6,
Wherein the step (e) is a step of inputting a command in a gadget and a function including a return command retrieved in step (d).
청구항 9에 있어서,
상기 (e) 단계는, 상기 (d) 단계에서 검색된 리턴 명령의 바로 직전 행에 입력하는 단계인 것을 특징으로 하는 컴퓨터 프로그램.
The method of claim 9,
Wherein the step (e) is a step of inputting a line immediately before a return instruction retrieved in the step (d).
청구항 6 내지 청구항 10 중 어느 한 청구항에 따른 컴퓨터 프로그램이 저장된 것을 특징으로 하는 컴퓨터-판독 가능한 저장매체.A computer-readable storage medium characterized in that a computer program according to any one of claims 6 to 10 is stored. 청구항 11에 따른 컴퓨터-판독 가능한 저장매체; 및
상기 컴퓨터-판독 가능한 저장매체를 실행시키는 프로세서;를 포함하는 것을 특징으로 하는 정보처리기기.
A computer-readable storage medium according to claim 11; And
And a processor for executing the computer-readable storage medium.
KR1020160144466A 2016-11-01 2016-11-01 Method of generating a computer program for efficiently defending against a return-oriented programing KR101908573B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160144466A KR101908573B1 (en) 2016-11-01 2016-11-01 Method of generating a computer program for efficiently defending against a return-oriented programing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160144466A KR101908573B1 (en) 2016-11-01 2016-11-01 Method of generating a computer program for efficiently defending against a return-oriented programing

Publications (2)

Publication Number Publication Date
KR20180047767A true KR20180047767A (en) 2018-05-10
KR101908573B1 KR101908573B1 (en) 2018-10-16

Family

ID=62184573

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160144466A KR101908573B1 (en) 2016-11-01 2016-11-01 Method of generating a computer program for efficiently defending against a return-oriented programing

Country Status (1)

Country Link
KR (1) KR101908573B1 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7287283B1 (en) * 2003-09-25 2007-10-23 Symantec Corporation Return-to-LIBC attack blocking system and method
US20080133858A1 (en) * 2004-11-04 2008-06-05 Board Of Trustees Of Michigan State University Secure Bit
US20110138476A1 (en) * 2009-12-08 2011-06-09 Microsoft Corporation Software Fault Isolation Using Byte-Granularity Memory Protection
KR101480821B1 (en) 2012-01-16 2015-01-09 퀄컴 인코포레이티드 Dynamic execution prevention to inhibit return-oriented programming

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7287283B1 (en) * 2003-09-25 2007-10-23 Symantec Corporation Return-to-LIBC attack blocking system and method
US20080133858A1 (en) * 2004-11-04 2008-06-05 Board Of Trustees Of Michigan State University Secure Bit
US20110138476A1 (en) * 2009-12-08 2011-06-09 Microsoft Corporation Software Fault Isolation Using Byte-Granularity Memory Protection
KR101480821B1 (en) 2012-01-16 2015-01-09 퀄컴 인코포레이티드 Dynamic execution prevention to inhibit return-oriented programming

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"반환 지향 프로그래밍 공격에 대한 효율적인 방어 기법 설계 및 구현". 김 지홍외 3인, 정보과학회논문지 제41권 제12호, pp. 1018-1025, (2014.12.31)* *

Also Published As

Publication number Publication date
KR101908573B1 (en) 2018-10-16

Similar Documents

Publication Publication Date Title
US9229746B2 (en) Identifying load-hit-store conflicts
US10223528B2 (en) Technologies for deterministic code flow integrity protection
CN1269029C (en) Exception management for pipelined processor
US20140380101A1 (en) Apparatus and method for detecting concurrency error of parallel program for multicore
CN109643346B (en) Control flow integrity
US8924701B2 (en) Apparatus and method for generating a boot image that is adjustable in size by selecting processes according to an optimization level to be written to the boot image
CN109471697B (en) Method, device and storage medium for monitoring system call in virtual machine
KR102534334B1 (en) Detection of software attacks on processes in computing devices
US20130262090A1 (en) System and method for reducing semantic ambiguity
US20170103206A1 (en) Method and apparatus for capturing operation in a container-based virtualization system
US9304748B2 (en) Method for controlling inlining in a code generator
US11263314B2 (en) Processor checking method, checking device and checking system
KR20090064397A (en) Register-based instruction optimization for facilitating efficient emulation of an instruction stream
US7979682B2 (en) Method and system for preventing livelock due to competing updates of prediction information
US8024720B2 (en) Speculative inlining of overridden methods without using profiling information
US9639370B1 (en) Software instructed dynamic branch history pattern adjustment
US9158545B2 (en) Looking ahead bytecode stream to generate and update prediction information in branch target buffer for branching from the end of preceding bytecode handler to the beginning of current bytecode handler
US9588747B2 (en) Method and apparatus for converting programs
WO2019005458A1 (en) Branch prediction for fixed direction branch instructions
US9009691B1 (en) Using an inline stack to improve performance of an applications binary
KR101908573B1 (en) Method of generating a computer program for efficiently defending against a return-oriented programing
KR102571623B1 (en) Branch target buffer with early return lookahead
US10592489B2 (en) Supporting repetitive operations within an operating system
US20180004947A1 (en) Enhanced control transfer security
KR101341328B1 (en) User definition api function creation

Legal Events

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