KR101583306B1 - Analysis method and analysis apparatus of executable file applied virtualization obfuscation - Google Patents

Analysis method and analysis apparatus of executable file applied virtualization obfuscation Download PDF

Info

Publication number
KR101583306B1
KR101583306B1 KR1020140006644A KR20140006644A KR101583306B1 KR 101583306 B1 KR101583306 B1 KR 101583306B1 KR 1020140006644 A KR1020140006644 A KR 1020140006644A KR 20140006644 A KR20140006644 A KR 20140006644A KR 101583306 B1 KR101583306 B1 KR 101583306B1
Authority
KR
South Korea
Prior art keywords
virtualization
instruction
executable file
code
handler
Prior art date
Application number
KR1020140006644A
Other languages
Korean (ko)
Other versions
KR20150086682A (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 KR1020140006644A priority Critical patent/KR101583306B1/en
Publication of KR20150086682A publication Critical patent/KR20150086682A/en
Application granted granted Critical
Publication of KR101583306B1 publication Critical patent/KR101583306B1/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/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 가상화 난독화 기법이 적용된 실행 파일의 분석을 도울 수 있도록 실행 파일에 적용된 가상화 난독화 기법의 구성 요소를 추출하고 추출된 구성 요소에 대한 정보를 제공할 수 있도록 하는 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치에 관한 것이다.
본 발명을 이용함으로써, 실행 파일에 적용된 가상화 난독화 기법의 구성 요소를 파악할 수 있고 실행 파일에서 분석 대상을 용이하게 알 수 있고 실행 파일의 실제 제어 흐름을 알 수 있도록 한다.
The present invention relates to a virtual obfuscation method for extracting components of a virtualization obfuscation technique applied to an executable file to help analyze an executable file to which a virtualization obfuscation technique is applied and applying a virtualization obfuscation technique for providing information on the extracted components And an analyzing method and an analyzing apparatus of an executable file.
By using the present invention, components of the virtualization obfuscation technique applied to the executable file can be grasped, the analysis object can be easily recognized in the executable file, and the actual control flow of the executable file can be known.

Description

가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치{ANALYSIS METHOD AND ANALYSIS APPARATUS OF EXECUTABLE FILE APPLIED VIRTUALIZATION OBFUSCATION}TECHNICAL FIELD [0001] The present invention relates to an analysis method and an analysis apparatus for an executable file to which a virtualization obfuscation technique is applied.

본 발명은 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치에 관한 것으로서, 구체적으로는 가상화 난독화 기법이 적용된 실행 파일의 분석을 도울 수 있도록 실행 파일에 적용된 가상화 난독화 기법의 구성 요소를 추출하고 추출된 구성 요소에 대한 정보를 제공할 수 있도록 하는, 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치에 관한 것이다. The present invention relates to an analysis method and an analysis apparatus for an executable file to which a virtualization obfuscation technique is applied. More particularly, the present invention relates to a virtualization obfuscation technique applied to an executable file to help analyze an execution file to which a virtualization obfuscation technique is applied The present invention relates to an analysis method and apparatus for an executable file to which a virtualization obfuscation technique is applied, in which information about extracted and extracted components can be provided.

난독화(obfuscation) 기법은 프로그램 본래의 기능성을 유지하면서도 프로그램 내부의 구조를 변환시킴으로써 역공학을 어렵게 하기 위해서 사용되는 기법이다. 난독화 기법 중 하나인 가상화 난독화(virtualization obfuscation) 기법은 프로그램 중 보호하고자 하는 코드 영역을 다른 종류의 기계어로 변환(가상화 코드)시킴으로써 변환된 기계어에 대한 분석을 어렵게 만드는 기법이다. The obfuscation technique is a technique used to make reverse engineering difficult by transforming the structure inside the program while maintaining the original functionality of the program. One of the obfuscation techniques, virtualization obfuscation, is a technique that makes it difficult to analyze the translated machine language by converting the code area to be protected in the program into another kind of machine language (virtualization code).

가상화 난독화 기법이 적용된 프로그램의 가상화 코드를 해석하고 처리하기 위해서 소프트웨어적으로 구성된 가상 프로세서(virtual processor)가 이용된다. 가상 프로세서가 소프트웨어적으로 가상화 코드를 해석하고 대응하는 기능을 실제 프로세서에서 직접 수행하도록 구성되고 가상화 코드는 원본 코드로 복원될 필요가 없다. 이에 따라 가상화 난독화 기법을 분석하는 문제는 가상 프로세서를 분석하는 문제와 동일시된다. A virtual processor, which is composed of software, is used to interpret and process the virtualization code of the program to which the virtualization obfuscation technique is applied. The virtual processor is configured to interpret the virtualization code in software and perform the corresponding function directly on the actual processor, and the virtualization code need not be restored to the original code. Accordingly, the problem of analyzing the virtual obfuscation technique is identified with the problem of analyzing the virtual processor.

이러한 가상화 난독화 기법은 프로그램의 지적재산권을 보호하기 위해 설계되었다. 가상화 난독화 기법에 의해서 생성된 코드의 양이 원래의 코드의 양보다 많고 복잡한 내부 구조로 인해서 가상화 난독화 기법은 지적재산권 보호를 위한 적절한 수단으로 판단되고 있다. This virtual obfuscation technique is designed to protect the intellectual property of the program. Because the amount of code generated by the virtualization obfuscation technique is larger than the amount of original code and the complexity of the internal structure, the virtualization obfuscation technique is regarded as a suitable means for protection of intellectual property rights.

일반적으로 가상화 난독화 기법은 상용 소프트웨어 툴(Tool)을 이용하여 프로그램의 실행 파일에 적용된다. 가상화 난독화 기법을 적용하기 위한 상용 소프트웨어 툴은 Themida, Code Virtualizer, VMProtect 등이 있다. 이러한 상용 툴의 가상화 난독화 기법은 가상 프로세서를 포함하는 그 가상화 구조가 공개되지 않고 가상화 구조에서의 각 구성 요소별로 난독화 기법이 적용되어 분석을 더욱 어렵게 한다.In general, virtualization obfuscation techniques are applied to program executables using commercial software tools. Commercial software tools for applying virtualization obfuscation techniques include Themida, Code Virtualizer, and VMProtect. This commercial tool virtualization obfuscation technique does not disclose its virtualization structure including a virtual processor, and obfuscation technique is applied to each component in the virtualization structure to make analysis more difficult.

한편, 가상화 난독화 기법을 적용할 수 있는 상용 소프트웨어 툴은 누구나 구입하여 이용할 수 있는 툴이기에 악용될 소지가 있다. 특히 이러한 상용 소프트웨어 툴이 악성코드의 보호에 이용되어 진다면 악성 코드의 분석이 불가능하거나 일반적인 분석 시간에 비해 수백 배까지의 시간이 더 필요할 것으로 예상된다. On the other hand, commercially available software tools that can apply virtualization obfuscation techniques can be exploited because they are tools that can be purchased and used by anyone. Especially if these commercial software tools are used to protect malicious code, malicious code can not be analyzed or expected to be several hundred times longer than usual analysis time.

예를 들어, 프로그램을 분석하기 위해서 프로그램을 로딩하여 프로그램의 수행 순서를 검증할 수 있는 디버거(debugger)가 알려져 있다. 가상화 구조가 공개되지 않은 상태에서 이 디버거를 활용하여 가상화 난독화 기법이 적용된 가상화 코드들이 악성 코드 인지나 어떠한 기능을 수행하는 지를 식별하는 것은 사실상 불가능하다. 더욱이 디버거가 프로그램 카운터(PC) 등을 이용하여 여러 프로그램 코드 사이를 이동하기에 복잡한 구조로 얽혀 있는 가상화 코드가 악성 코드인지를 알기는 더더욱 어렵다. For example, a debugger is known that can load a program to analyze the program and verify the execution order of the program. It is virtually impossible to identify the virtualization code that uses virtualization obfuscation techniques using this debugger without knowing the virtualization structure is malicious code or what function it is performing. Furthermore, it is even more difficult for a debugger to move between various program codes using a program counter (PC) or the like, and to know whether the virtualization code entangled with the complicated structure is malicious code.

이와 같이 악성 코드에 가상화 난독화 기법을 적용하는 것은 쉬운 반면에 역난독화를 하는 것은 어렵기에 악성 코드에 대응하기가 점점 더 어려워지고 있는 실정이다. Thus, it is easy to apply the virtualization obfuscation technique to malicious code, but it is difficult to reverse obfuscate, and it is increasingly difficult to cope with malicious code.

이상으로 살펴본 바와 같이, 가상화 난독화 기법이 적용된 실행 파일로부터 가상화 난독화 기법에 적용된 가상화 구조를 추출하고 실행 파일의 분석이 가능하도록 하는, 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치가 필요하다.As described above, an analysis method and an analysis apparatus of an executable file that employs a virtualization obfuscation technique that extracts a virtualization structure applied to a virtualization obfuscation technique from an executable file to which the virtualization obfuscation technique is applied and enables analysis of the executable file need.

본 발명은, 상술한 문제점을 해결하기 위해서 안출한 것으로서, 실행 파일에 적용된 가상화 난독화 기법의 구성 요소를 파악할 수 있도록 하는 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치를 제공하는 데 그 목적이 있다. Disclosure of Invention Technical Problem [8] The present invention has been made to solve the above-mentioned problems, and it is an object of the present invention to provide an analysis method and analysis apparatus of an executable file to which a virtualization obfuscation technique for identifying components of a virtualization obfuscation technique applied to an executable file is applied. There is a purpose.

또한 본 발명은 실행 파일에 적용된 가상화 난독화 기법의 구성 요소를 식별하고 식별된 구성 요소에 관련된 로그 데이터를 제공할 수 있도록 하는 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치를 제공하는 데 그 목적이 있다. The present invention also provides an analysis method and apparatus for an executable file to which a virtualization obfuscation technique is applied to identify components of a virtualization obfuscation technique applied to an executable file and to provide log data related to the identified components It has its purpose.

또한 본 발명은 동적 트레이싱 기법을 이용하여 가상화 난독화 기법이 적용된 실행 파일의 핸들러 코드 간 제어 흐름을 알 수 있도록 하는 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치를 제공하는 데 그 목적이 있다. It is another object of the present invention to provide an analysis method and an analysis apparatus for an execution file to which a virtualization obfuscation technique is applied to enable a control flow between handler codes of an executable file to which a virtualization obfuscation technique is applied by using a dynamic tracing technique have.

또한 본 발명은 가상화 난독화 기법을 적용하는 상용 소프트웨어 툴에 의해서 생성된 실행 파일에 대하여 분석 가능하도록 하는 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치를 제공하는 데 그 목적이 있다. Another object of the present invention is to provide an analysis method and an analysis apparatus for an executable file to which a virtualization obfuscation technique for analyzing an executable file generated by a commercial software tool applying a virtualization obfuscation technique is applied.

본 발명에서 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다. It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory and are not restrictive of the invention, unless further departing from the spirit and scope of the invention as defined by the appended claims. It will be possible.

상기와 같은 목적을 달성하기 위한, 가상화 난독화 기법이 적용된 실행 파일의 분석 방법은 (b) 실행 파일에 기초하여 생성된 제 1 로그 데이터로부터 가상화 난독화 기법에 적용된 구성 요소를 식별하는 단계 및 (c) 식별된 구성 요소와 관련된 정보를 인식할 수 있는 제 2 로그 데이터를 생성하는 단계를 포함한다. According to another aspect of the present invention, there is provided a method of analyzing an execution file to which a virtualization obfuscation technique is applied, the method comprising: (b) identifying a component applied to a virtualization obfuscation technique from first log data generated based on an execution file; and c) generating second log data capable of recognizing information associated with the identified component.

또한 가상화 난독화 기법에 적용된 구성 요소는 실행 파일에 포함되는 가상화 명령어에 대응하는 핸들러 코드를 수행시키기 위한 디스패치 루프를 포함하고, 가상화 난독화 기법이 적용된 실행 파일의 분석 방법의 단계 (b)는, (b-1) 디스패치 루프의 코드 영역을 식별하는 단계를 포함한다. In addition, the component applied to the virtualization obfuscation method includes a dispatch loop for executing handler code corresponding to the virtualization instruction included in the executable file, and step (b) of the method for analyzing the execution file to which the virtualization obfuscation technique is applied, (b-1) identifying a code region of the dispatch loop.

또한 가상화 난독화 기법에 적용된 구성 요소는 디스패치 루프에 의해서 수행되는 복수의 핸들러 코드를 더 포함하고, 가상화 난독화 기법이 적용된 실행 파일의 분석 방법의 단계 (b)는, (b-2) 단계 (b-1)에서 식별된 디스패치 루프의 코드 영역의 명령어를 이용하여 복수의 핸들러 코드의 영역을 식별하는 단계를 더 포함한다.In addition, the component applied to the virtualization obfuscation technique further includes a plurality of handler codes executed by the dispatch loop, and step (b) of the method of analyzing an executable file to which the virtualization obfuscation technique is applied includes steps (b-2) b-1) of the plurality of handler codes using instructions in the code area of the dispatch loop identified in step (b-1).

또한 실행 파일은 상용 가상화 난독화 툴인 더미다를 적용하여 생성된 실행 파일이고, 가상화 난독화 기법이 적용된 실행 파일의 분석 방법의 단계 (b-1)은 가상화 명령어에 관련된 제 1 명령어와 가상화 명령어에 대응하는 핸들러 코드를 호출하기 위한 제 2 명령어를 인식하는 단계 및 인식된 제 1 명령어와 제 2 명령어의 위치로부터 디스패치 루프의 시작 주소와 종료 주소를 결정하는 단계를 포함한다. In addition, step (b-1) of the analysis method of the executable file to which the virtualization obfuscation technique is applied corresponds to the first instruction related to the virtualization instruction and the virtualization instruction corresponding to the virtualization instruction Recognizing a second instruction to call the handler code to determine a start address and an end address of the dispatch loop from the location of the recognized first instruction and the second instruction.

또한 가상화 난독화 기법이 적용된 실행 파일의 분석 방법은 상기 단계 (b) 이전에, (a) 동적 에뮬레이터(emulator)에 실행 파일을 로딩하고 동적 에뮬레이터에서 실행된 모든 명령어를 포함하고 실행 순서에 따라 모든 명령어를 표현할 수 있는 제 1 로그 데이터를 생성하고 기록하는 단계를 더 포함하고, 단계 (b)에서의 제 1 로그 데이터는 단계 (a)에서 생성되고 기록된 제 1 로그 데이터이다. The method of analyzing an execution file to which a virtualization obfuscation technique is applied may further include: (a) loading an executable file into a dynamic emulator, including all instructions executed in the dynamic emulator, Further comprising generating and recording first log data capable of expressing an instruction, wherein the first log data in step (b) is the first log data generated and recorded in step (a).

또한 단계 (c)에서 생성된 제 2 로그 데이터는 디스패치 루프의 시작 주소와 종료 주소를 나타내는 정보, 복수의 핸들러 코드 각각의 실행 회수를 나타내는 정보 및 복수의 핸들러 코드 간의 실행 순서를 나타내는 정보를 포함한다. The second log data generated in the step (c) includes information indicating a start address and an end address of the dispatch loop, information indicating the execution count of each of the plurality of handler codes, and information indicating execution order between the plurality of handler codes .

또한 단계 (c)에서 생성된 제 2 로그 데이터는 핸들러 코드의 시작 주소, 핸들러 코드에 포함된 명령어와 명령어에 포함된 피연산자 및 핸들러 코드의 실행 순서를 나타내는 정보를 더 포함한다. The second log data generated in step (c) further includes information indicating a start address of the handler code, an instruction contained in the handler code, an operand included in the instruction, and an execution order of the handler code.

또한 상기와 같은 목적을 달성하기 위한, 가상화 난독화 기법이 적용된 실행 파일의 분석 장치는 실행 파일에 기초하여 생성된 제 1 로그 데이터로부터 가상화 난독화 기법에 적용된 구성 요소를 식별하는 구성 요소 식별 모듈 및 식별된 구성 요소와 관련된 정보를 인식할 수 있는 제 2 로그 데이터를 생성하는 로그 생성 모듈을 포함한다. According to another aspect of the present invention, there is provided an apparatus for analyzing an execution file to which a virtualization obfuscation technique is applied, the apparatus comprising: a component identification module for identifying a component applied to a virtualization obfuscation technique from first log data generated based on an execution file; And a log generation module that generates second log data that can recognize information associated with the identified component.

또한 가상화 난독화 기법에 적용된 구성 요소는 실행 파일에 포함되는 가상화 명령어에 대응하는 핸들러 코드를 수행시키기 위한 디스패치 루프를 포함하고, 구성 요소 식별 모듈은 디스패치 루프의 코드 영역을 식별한다.Also, the components applied to the virtualization obfuscation technique include a dispatch loop for executing the handler code corresponding to the virtualization instruction included in the executable file, and the component identification module identifies the code area of the dispatch loop.

또한 가상화 난독화 기법에 적용된 구성 요소는 디스패치 루프에 의해서 수행되는 복수의 핸들러 코드를 더 포함하고, 구성 요소 식별 모듈은 식별된 디스패치 루프의 코드 영역의 명령어를 이용하여 복수의 핸들러 코드의 영역을 더 식별한다.In addition, the components applied to the virtualization obfuscation technique further include a plurality of handler codes executed by the dispatch loop, and the component identification module further uses the instructions of the code area of the identified dispatch loop to further define the area of the plurality of handler codes .

또한 실행 파일은 상용 가상화 난독화 툴인 더미다를 적용하여 생성된 실행 파일이고, 구성 요소 식별 모듈은, 가상화 명령어에 관련된 제 1 명령어와 가상화 명령어에 대응하는 핸들러 코드를 호출하기 위한 제 2 명령어를 인식하고 인식된 제 1 명령어와 제 2 명령어의 위치로부터 디스패치 루프의 시작 주소와 종료 주소를 결정하여, 디스패치 루프의 코드 영역을 식별한다.Further, the executable file is an executable file generated by applying dummy to the commercial virtualization obfuscation tool. The component identification module recognizes a first instruction related to the virtualization instruction and a second instruction for calling the handler code corresponding to the virtualization instruction The start and end addresses of the dispatch loop are determined from the positions of the recognized first and second instructions to identify the code region of the dispatch loop.

또한 가상화 난독화 기법이 적용된 실행 파일의 분석 장치는 실행 파일을 로딩하고 동적으로 실행된 모든 명령어를 포함하여 실행 순서에 따라 모든 명령어를 표현할 수 있는 제 1 로그 데이터를 생성하고 기록하는 에뮬레이션 모듈을 더 포함하고, 구성 요소 식별 모듈은 에뮬레이션 모듈을 통해 생성되고 기록된 제 1 로그 데이터로부터 가상화 난독화 기법에 적용된 구성 요소를 식별한다.Also, the analysis apparatus of the executable file to which the virtualization obfuscation technique is applied includes an emulation module for generating and recording first log data that can load all the executable files and include all the commands executed dynamically, And the component identification module identifies components applied to the virtualization obfuscation technique from the first log data generated and recorded through the emulation module.

상기와 같은 본 발명에 따른 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치는 실행 파일에 적용된 가상화 난독화 기법의 구성 요소를 파악할 수 있도록 하는 효과가 있다. The method and apparatus for analyzing an executable file to which the virtualization obfuscation technique according to the present invention is applied can be understood as an element of the virtual obfuscation technique applied to an executable file.

또한 상기와 같은 본 발명에 따른 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치는 실행 파일에 적용된 가상화 난독화 기법의 구성 요소를 식별하고 식별된 구성 요소에 관련된 로그 데이터를 제공할 수 있도록 하고 이에 따라 가상화 코드를 분석할 분석가에게 분석 대상을 용이하게 알 수 있도록 하는 효과가 있다. In addition, the method and apparatus for analyzing an executable file to which the virtualization obfuscation technique according to the present invention is applied can identify the components of the virtualization obfuscation technique applied to the executable file and provide log data related to the identified component So that the analyst who analyzes the virtualization code can easily understand the analysis target.

또한 상기와 같은 본 발명에 따른 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치는 동적 트레이싱 기법을 이용하여 가상화 난독화 기법이 적용된 실행 파일의 핸들러 코드 간 실제 제어 흐름을 알 수 있도록 하는 효과가 있다. Also, the method and apparatus for analysis and analysis of an executable file to which the virtualization obfuscation technique according to the present invention is applied may be configured to recognize the actual control flow between handler codes of an executable file to which the virtualization obfuscation technique is applied by using a dynamic tracing technique .

또한 상기와 같은 본 발명에 따른 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치는 가상화 난독화 기법을 적용하는 상용 소프트웨어 툴에 의해서 생성된 실행 파일에 대하여 분석 가능하도록 하는 효과가 있다. In addition, the method and apparatus for analyzing an executable file to which the virtualization obfuscation technique according to the present invention is applied can analyze an executable file generated by a commercial software tool applying the virtualization obfuscation technique.

본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.The effects obtained by the present invention are not limited to the above-mentioned effects, and other effects not mentioned can be clearly understood by those skilled in the art from the following description will be.

도 1은 가상화 난독화 기법이 적용된 실행 파일 분석 장치의 예시적인 하드웨어 블록도를 도시한 도면이다.
도 2는 가상화 난독화 기법의 구성 요소들을 도시한 도면이다.
도 3은 가상화 난독화 기법이 적용된 실행 파일 분석 방법의 예시적인 제어 흐름을 도시한 도면이다.
도 4는 상용 소프트웨어 툴인 더미다로 생성된 가상화 난독화 기법의 가상화 구조를 도시한 도면이다.
도 5는 본 발명에 따라 생성된 로그 데이터의 예시적인 정보를 도시한 도면이다.
도 6은 본 발명에 따라 생성된 로그 데이터의 또 다른 예시적인 정보를 도시한 도면이다.
도 7는 가상화 난독화 기법이 적용된 실행 파일의 분석을 위한 예시적인 기능 블록도를 도시한 도면이다.
1 is a diagram illustrating an exemplary hardware block diagram of an executable file analysis apparatus to which a virtual obfuscation technique is applied.
2 is a diagram illustrating the components of the virtualization obfuscation technique.
3 is a diagram illustrating an exemplary control flow of an executable file analysis method to which a virtual obfuscation technique is applied.
4 is a diagram illustrating a virtualization structure of a virtualization obfuscation technique generated by a commercial software tool dummy.
5 is a diagram showing exemplary information of log data generated according to the present invention.
6 is a diagram showing still another exemplary information of log data generated according to the present invention.
7 is a block diagram illustrating an exemplary functional block for analysis of an executable file to which a virtual obfuscation technique is applied.

상술한 목적, 특징 및 장점은 첨부된 도면을 참조하여 상세하게 후술 되어 있는 상세한 설명을 통하여 더욱 명확해 질 것이며, 그에 따라 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 또한, 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에 그 상세한 설명을 생략하기로 한다. 이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시 예를 상세히 설명하기로 한다.
The above and other objects, features and advantages of the present invention will become more apparent from the following detailed description of the present invention when taken in conjunction with the accompanying drawings, in which: It can be easily carried out. In the following description, well-known functions or constructions are not described in detail since they would obscure the invention in unnecessary detail. Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings.

도 1은 가상화 난독화 기법이 적용된 실행 파일 분석 장치(100)의 예시적인 하드웨어 블록도를 도시한 도면이다. 1 illustrates an exemplary hardware block diagram of an executable file analysis apparatus 100 to which a virtual obfuscation technique is applied.

도 1에 따르면 분석 장치(100)는 입력 인터페이스(101), 출력 인터페이스(103), 메모리(105), 대용량 저장 매체(107), 시스템 버스/제어 버스(109) 및 프로세서(111)를 포함한다. 이 중 일부의 블록은 분석 장치(100)의 변형 예에 따라 생략될 수 있다. 또는 도 1에 개시되지 않은 블록이 이 하드웨어 블록도에 더 포함될 수도 있다. 1, an analysis apparatus 100 includes an input interface 101, an output interface 103, a memory 105, a mass storage medium 107, a system bus / control bus 109 and a processor 111 . Some of these blocks may be omitted in accordance with a modification of the analyzing apparatus 100. Or a block not shown in Fig. 1 may be further included in this hardware block diagram.

분석 장치(100)의 각 하드웨어 블록을 간단히 살펴보면, 입력 인터페이스(101)는 가상화 난독화 기법이 적용된 실행 파일을 분석할 사용자(분석가)로부터 사용자 입력을 수신할 수 있는 인터페이스이다. 입력 인터페이스(101)는 키보드, 마우스, 터치 패널 등으로부터의 사용자 입력을 수신하고 이를 프로세서(111)로 전달하여 분석 대상인 실행 파일을 선택하거나 실행 파일의 분석을 시작하거나 분석을 중단할 수 있도록 한다. The input interface 101 is an interface that can receive user input from a user (analyst) to analyze an executable file to which the virtualization obfuscation technique is applied. The input interface 101 receives user input from a keyboard, mouse, touch panel, and the like and passes it to the processor 111 to select an executable file to be analyzed, to start analysis of the executable file, or to stop the analysis.

출력 인터페이스(103)는 사용자 입력에 따른 처리 결과나 처리 과정의 결과를 출력할 수 있는 인터페이스이다. 출력 인터페이스(103)는 스피커나 디스플레이 등으로 출력될 데이터를 스피커나 디스플레이 등에 요구되는 데이터 포맷으로 변환하여 출력한다. 출력 인터페이스(103)는 예를 들어 가상화 난독화 기법이 적용된 실행 파일의 분석으로 생성된 로그 데이터를 출력할 수 있다. The output interface 103 is an interface capable of outputting a processing result according to a user input or a result of a processing procedure. The output interface 103 converts data to be output to a speaker, a display, or the like into a data format required for a speaker, a display, or the like, and outputs the converted data. The output interface 103 can output log data generated by analyzing an executable file to which the virtualization obfuscation technique is applied, for example.

메모리(105)는 휘발성 메모리 및/또는 비휘발성 메모리를 포함한다. 메모리(105)는 각종 프로그램, 프로그램 모듈, 프로그램에서 이용되는 데이터를 임시로 저장하거나 영구히 저장할 수 있도록 구성된다. The memory 105 includes volatile memory and / or non-volatile memory. The memory 105 is configured to temporarily store or permanently store data used in various programs, program modules, and programs.

대용량 저장 매체(107)는 하디 디스크 및/또는 USB 메모리 등을 포함한다. 대용량 저장 매체(107)는 프로세서(111)상에서 수행되는 각종 프로그램들을 저장한다. The mass storage medium 107 includes a hard disk and / or a USB memory. The mass storage medium 107 stores various programs to be executed on the processor 111. [

예를 들어, 대용량 저장 매체(107)는 분석 대상으로서 가상화 난독화 기법이 적용된 하나 이상의 실행 파일 및 실행 파일을 분석하기 위한 분석 프로그램 파일을 저장한다. 이러한 파일들은 프로세서(111)에서 수행될 수 있다. 실행 파일과 분석 프로그램 파일은 입력 인터페이스(101)를 통해 메모리(105)에 로딩될 수 있고 프로세서(111)에서 수행될 수 있다. For example, the mass storage medium 107 stores at least one execution file to which the virtualization obfuscation technique is applied as an analysis target, and an analysis program file for analyzing the execution file. These files may be executed in the processor 111. The executable file and the analysis program file may be loaded into the memory 105 via the input interface 101 and executed in the processor 111. [

시스템 버스/제어 버스(109)는 블록간 데이터를 송수신할 수 있도록 한다. 시스템 버스/제어 버스(109)는 예를 들어 병렬 버스, 시리얼 버스, GPIO(General Purpose Input Output)이거나 이러한 버스나 GPIO의 조합으로 구성될 수 있다. The system bus / control bus 109 makes it possible to send and receive data between blocks. The system bus / control bus 109 may be, for example, a parallel bus, a serial bus, a general purpose input output (GPIO), or a combination of such buses or GPIOs.

프로세서(111)는 명령어를 수행할 수 있는 하나 이상의 실행 유닛(Execution Unit)을 포함하여 프로그램에 포함된 명령어들을 수행할 수 있다. 프로세서(111)는 사용자 입력에 따라 대용량 저장 매체(107)에 저장된 파일을 메모리(105)에 로딩하고 로딩된 파일을 처리할 수 있도록 구성된다. The processor 111 may include one or more execution units capable of executing instructions to perform instructions contained in the program. The processor 111 is configured to load a file stored in the mass storage medium 107 into the memory 105 and process the loaded file according to user input.

여기서 가상화 난독화 기법이 적용된 실행 파일의 구조를 간단히 살펴보면, 실행 파일은 가상화 난독화 기법이 적용된 가상화 코드와 가상화 코드를 처리하기 위한 가상 프로세서를 포함한다. 가상화 코드와 가상 프로세서는 실행 파일의 모든 섹션(Section) 또는 섹터(Sector)에 적용될 수 있거나 실행 파일을 생성한 프로그래머의 선택에 따라 일부 섹션이나 섹터에 적용될 수 있다. Here is a brief description of the structure of the executable file with the virtualization obfuscation technique. The executable file includes virtualization code with virtualization obfuscation technique and virtual processor for processing virtualization code. The virtualization code and virtual processor can be applied to every section or sector of an executable file or to some sections or sectors depending on the programmer's choice of generating the executable file.

프로세서(111)는 실행 파일에 저장된 가상화 코드를 명령어로 실행 유닛에 로딩하여 직접 처리할 수 없다. 대신에 실행 파일에 저장되고 가상화 코드를 처리하기 위한 가상 프로세서가 가상화 코드를 프로세서(111)가 처리할 수 있는 명령어로 실시간 변환하여 가상화 코드에 대응하는 기능을 수행한다. 이에 따라 가상화 코드는 실행 파일의 수행 시에 원본 코드로 복원되지 않고 디버거 등을 통해서도 용이하게 가상화 코드나 가상 프로세서를 식별하거나 다수의 난독화 기법의 적용으로 가상화 코드에 따른 제어 흐름을 해석하기가 사실상 불가능하다. The processor 111 can not directly process the virtualization code stored in the executable file by loading it as an instruction into the execution unit. Instead, the virtual processor for storing the virtualization code stored in the executable file performs real-time conversion of the virtualization code into an instruction that can be processed by the processor 111 to perform a function corresponding to the virtualization code. Therefore, the virtualization code is not restored to the original code at the time of execution of the executable file. It is easy to identify the virtualization code or the virtual processor through the debugger or the like, or interpret the control flow according to the virtualization code by applying a plurality of obfuscation techniques. impossible.

가상 프로세서와 가상화 코드는 가상화 난독화 기법을 적용하는 상용 소프트웨어 툴에 따라 다양한 형태와 구조를 취할 수 있다. Virtual processor and virtualization code can take many forms and structures depending on commercial software tools that apply virtualization obfuscation techniques.

도 2를 통해 대표적인 가상화 코드와 가상 프로세서의 구조를 살펴보면, 가상화 코드는 일련의 가상화 명령어로 구성된다. 그리고 가상화 코드는 실행 파일 상의 임의의 위치(주소) 영역에 저장되어 있다. 가상화 명령어는 1 바이트 또는 2 바이트로 구성되고 각각의 가상화 명령어는 특정 지정된 기능을 수행할 수 있다. Referring to FIG. 2, a typical virtualization code and a structure of a virtual processor are shown. The virtualization code includes a series of virtualization commands. The virtualization code is stored in an arbitrary location (address) area on the executable file. A virtualization instruction consists of one or two bytes, and each virtualization instruction can perform a specified function.

가상 프로세서는 가상화 코드의 가상화 명령어를 순차적으로 읽어 들이고 읽어 들인 가상화 명령어에 대응하는 기능을 하드웨어 블록도의 프로세서(111)상에 직접 수행할 수 있도록 구성된다. The virtual processor is configured to sequentially read the virtualization commands of the virtualization code and to directly execute the function corresponding to the read virtualization command on the processor 111 of the hardware block diagram.

대표적으로 가상 프로세서는 디스패치(dispatch) 루프 코드, 핸들러 테이블, 복수의 핸들러 코드를 포함한다. 디스패치 루프 코드는 가상화 명령어를 하나씩 읽어 들이고 대응하는 핸들러 코드를 수행할 수 있도록 한다. 핸들러 테이블은 핸들러 코드의 시작 주소를 저장하고 있다. 핸들러 테이블의 특정 주소에 저장되어 있는 시작 주소를 통해 디스패치 루프 코드는 특정 핸들러 코드를 호출할 수 있도록 구성된다. 핸들러 코드는 가상화 명령어에 대응하는 기능을 수행하는 코드이다. 핸들러 코드는 프로세서(111)의 실행 유닛에서 수행되는 명령어들로 구성되고 프로세서(111)상에서 핸들러 코드를 수행함으로써 가상화 명령어에 대응하는 기능을 프로세서(111)가 수행한다. Typically, the virtual processor includes a dispatch loop code, a handler table, and a plurality of handler codes. The dispatch loop code reads the virtualization instructions one by one and allows you to execute the corresponding handler code. The handler table stores the start address of the handler code. Through the start address stored at a specific address in the handler table, the dispatch loop code is configured to call specific handler code. The handler code is a code that performs a function corresponding to a virtualization command. The handler code is composed of instructions executed in an execution unit of the processor 111 and executed by the processor 111 corresponding to the virtualization instruction by executing the handler code on the processor 111. [

이와 같이 가상화 난독화 기법에 적용되는 구성 요소 들은 가상화 코드, 가상 프로세서의 디스패치 루프 코드, 핸들러 테이블 및 복수의 핸들러 코드를 포함한다. 이러한 구성 요소들은 가상화 난독화 기법을 적용한 상용 소프트웨어 툴의 대표적인 구성 요소들이고, 예를 들어 더미다(Themida v2.1.8)의 구성 요소들일 수 있다. 다른 상용 툴 역시 유사한 이름이나 형태로 구성된다. The components applied to the virtualization obfuscation technique include the virtualization code, the dispatch loop code of the virtual processor, the handler table, and a plurality of handler codes. These components are representative components of commercial software tools that employ virtualization obfuscation techniques, and may be components of, for example, Themida v2.1.8. Other commercial tools also have similar names or forms.

가상화 난독화 기법에 적용되는 구성 요소들은 실행 파일에 내장되고 실행 파일 내에 산재하며 점프(jump)나 부가적인 연산 적용으로 그 구성 요소를 용이하게 식별하거나 추출할 수 없어 문제가 발생한다. The components applied to the virtualization obfuscation technique are embedded in the executable file, scattered in the executable file, and problems arise because the components can not be easily identified or extracted by a jump or an additional operation.

이상과 같은 분석 장치(100)는 예를 들어 개인용 PC, 서버에 접속할 수 있는 터미널, 워크 스테이션 또는 복수의 터미널에 연결될 수 있는 분석 서버 등일 수 있다.
The analyzing apparatus 100 as described above may be, for example, a personal computer, a terminal capable of connecting to a server, a workstation, or an analysis server that can be connected to a plurality of terminals.

도 3은 가상화 난독화 기법이 적용된 실행 파일 분석 방법의 예시적인 제어 흐름을 도시한 도면이다. 도 3의 제어 흐름은 도 2의 예시적인 하드웨어 블록도의 분석 장치(100)상에서 수행될 수 있고 바람직하게는 대용량 저장 매체(107)에 저장된 분석 프로그램 등을 프로세서(111)가 로딩하여 수행함으로써 이루어질 수 있다. 본 발명에 따른 제어 흐름은 바람직하게 디버거와 같은 실시간 분석을 이용하지 않고 이미 생성된 로그 데이터를 활용하여 분석하는 정적 분석을 이용한다.3 is a diagram illustrating an exemplary control flow of an executable file analysis method to which a virtual obfuscation technique is applied. The control flow of FIG. 3 may be performed on the analysis apparatus 100 of the exemplary hardware block diagram of FIG. 2, and preferably by the processor 111 loading and executing an analysis program or the like stored in the mass storage medium 107 . The control flow according to the present invention preferably utilizes static analysis that utilizes log data that has been generated without using real-time analysis such as a debugger.

먼저 단계 S101 이전에, 분석 장치(100)를 이용하는 사용자가 분석 프로그램 중 하나인 동적 에뮬레이터(emulator)를 입력 인터페이스(101)를 통해 선택함으로써 본 제어 흐름이 시작(S100)한다. First, before the step S101, the control flow starts (SlOO) by the user using the analyzing apparatus 100 selecting through the input interface 101 a dynamic emulator which is one of the analysis programs.

이후 단계 S101에서, 분석 장치(100)는 동적 에뮬레이터에서 분석 대상 파일인 실행 파일을 입력 인터페이스(101)를 통한 사용자 입력으로 로딩한다. 그리고 분석 장치(100)는 동적 에뮬레이터를 이용하여 실행 파일을 실행시킨다. 이후 분석 장치(100)는 실행에 따른 모든 명령어를 포함하고 실행 순서에 따라 모든 명령어를 출력 인터페이스(103) 등을 통해 표현할 수 있는 로그 데이터(이하 '제 1 로그 데이터'라 한다)를 생성하고 메모리(105)나 대용량 저장 매체(107)에 기록한다. 이러한 제 1 로그 데이터는 프로세서(111)에서 수행되는 명령어와 명령어의 주소에 관련된 정보를 모두 포함하고 실행 파일의 수행에 따른 실행 순서에 따라 명령어들이 순차적으로 기록된 데이터이다. Thereafter, in step S101, the analysis apparatus 100 loads an execution file, which is an analysis object file, in the dynamic emulator as a user input through the input interface 101. [ The analysis apparatus 100 then executes the executable file using a dynamic emulator. The analysis apparatus 100 then generates log data (hereinafter, referred to as 'first log data') including all the commands according to the execution and expressing all commands through the output interface 103 according to the execution order, (105) or the mass storage medium (107). The first log data includes both instructions executed in the processor 111 and information related to the address of the instruction, and the instructions are sequentially recorded according to the execution order of the execution file.

동적 에뮬레이터는 예를 들어 리눅스 등에서 사용될 수 있고 동적 트레이싱(tracing)을 적용할 수 있도록 구성되고 바람직하게는 가상화 소프트웨어인 'QEMU'일 수 있다. The dynamic emulator can be used, for example, in Linux or the like, configured to be able to apply dynamic tracing, and preferably be 'QEMU', virtualization software.

제 1 로그 데이터는 적어도 디스패치 루프(일명 '메인 핸들러'라고도 한다, 이하에서는 혼용하여 사용하도록 한다)의 명령어들과 주소, 핸들러 코드의 명령어들과 주소들을 실행 순서에 따라 포함하고 있다. 따라서 제 1 로그 데이터에는 디스패치 루프와 핸들러 코드가 실행 순서에 따라 다수 개 존재하고 산재하고 있다. 디버거 등을 통한 실시간 분석에 비해, 기록된 제 1 로그 데이터가 실행 순서에 따라 프로세서(111)에서 이용될 수 있는 모든 명령어들을 포함하여 가상화 난독화 기법에 적용된 구성 요소들을 추출하고 사용자들에게 흐름을 표시하기에는 매우 유리하다. The first log data includes instructions and addresses of at least a dispatch loop (also referred to as a 'main handler', hereinafter, used interchangeably), addresses and handler code instructions and addresses in the order of execution. Accordingly, a plurality of dispatch loops and handler codes exist in the first log data according to the execution order and are scattered. Debugger, etc., the recorded first log data extracts the components applied to the virtualization obfuscation technique, including all the instructions that can be used in the processor 111 according to the execution order, It is very advantageous to display.

이후 단계 S103에서, 분석 장치(100)는 구성 요소의 식별과 분석을 위해 기록된 제 1 로그 데이터를 메모리(105) 등에 로딩한다. 이러한 단계 S103은 설계 변형에 따라 생략될 수 있다. Thereafter, in step S103, the analysis apparatus 100 loads the recorded first log data to the memory 105 or the like for identification and analysis of the components. This step S103 may be omitted according to the design variant.

단계 S105에서, 분석 장치(100)는 분석할 실행 파일에 기초하여 생성된 제 1 로그 데이터로(예를 들어 단계 S101에서 기록된 제 1 로그 데이터)부터 가상화 난독화 기법에 적용된 구성 요소를 식별한다. In step S105, the analysis apparatus 100 identifies the component applied to the virtual obfuscation technique from the first log data generated based on the executable file to be analyzed (for example, the first log data recorded in step S101) .

이러한 구성 요소는 제 1 로그 데이터의 분석을 통해 추출할 수 있다. 구체적으로 구성 요소는 분석 대상인 실행 파일에 포함되는 특정 가상화 명령어에 대응하는 특정 핸들러 코드를 수행 시키기 위해 수행되는 디스패치 루프와 디스패치 루프에 의한 호출로 수행되는 복수의 핸들러 코드를 포함한다. 또한 구성 요소는 가상화 코드와 핸들러 테이블을 더 포함할 수 있다. 이러한 구성 요소는 제 1 로그 데이터에 포함되고 실행 순서에 따라 수행되는 명령어들을 분석함으로써 추출될 수 있다. These components can be extracted through analysis of the first log data. Specifically, the component includes a dispatch loop executed to execute a specific handler code corresponding to a specific virtualization command included in an executable file to be analyzed, and a plurality of handler codes executed by a call by a dispatch loop. The component may further include a virtualization code and a handler table. These components can be extracted by analyzing the instructions included in the first log data and executed in accordance with the execution order.

단계 S105에서, 디스패치 루프나 복수의 핸들러 코드를 포함하는 구성 요소를 식별(또는 추출)하는 방법을 좀 더 구체적으로 살펴보면, 분석 장치(100)의 프로세서(111)는 제 1 로그 데이터로부터 디스패치 루프의 코드 영역을 먼저 식별한다. In step S105, the processor 111 of the analyzing apparatus 100 extracts from the first log data the contents of the dispatch loop or the plurality of handler codes, Identify the code area first.

디스패치 루프는 가상화 코드 영역의 1 바이트 또는 2 바이트 등의 가상화 명령어를 순차적으로 하나씩 읽어 들인다. 이후 디스패치 루프는 읽어 들인 가상화 명령어에 여러 연산을 복수 회 수행하여 핸들러 테이블의 주소를 결정하고 결정된 핸들러 테이블의 주소에 대응하는 핸들러 코드가 실행되도록 핸들러 테이블의 해당 주소에 기록된 주소(간접 점프)를 호출하도록 구성된다. The dispatch loop reads the virtualization instructions one by one, such as one or two bytes of the virtualization code area. The dispatch loop then performs several operations on the read virtualization instruction multiple times to determine the address of the handler table, and the address (indirect jump) recorded at the corresponding address in the handler table so that the handler code corresponding to the address of the determined handler table is executed .

상용 소프트웨어 툴인 더미다를 적용한 임의의 실행 파일에 대한 로그 데이터로 심층 분석한 결과, 더미다를 적용한 실행 파일은 도 4와 같은 가상화 구조로 이루어진 것을 알 수 있었다. 각각의 코드나 디스패치 루프나 핸들러 테이블은 실행 파일의 종류나 생성 시점에 따라서 다른 위치나 다른 크기로 생성될 수 있다. As a result of in-depth analysis of the log data of arbitrary executable files using the dummy data as the commercial software tool, it can be seen that the dummy executable file has the virtualization structure as shown in FIG. Each code, dispatch loop, or handler table can be created in different locations or sizes depending on the type of the executable file and the time of creation.

도 4를 통해서 가상화 구조를 간단히 살펴보면, 디스패치 루프는 가상화 코드에 액세스하여 하나의 가상화 명령어를 읽어 들이고 읽어 들인 가상화 명령어에 대해 연산을 수행하고 연산 결과에 따라 핸들러 테이블을 참조하여 핸들러 코드를 호출하도록 구성된다. 그리고 호출된 핸들러 코드는 프로세서(111)를 통해 가상화 명령어에 대응하는 실질적 기능을 수행하고 수행완료되면 디스패치 루프를 다시 호출(디스패치 루프의 시작 주소)하도록 구성된다. 이후 디스패치 루프는 다시 후속하는 가상화 명령어를 읽어 들이고 동일한 과정을 수행한다. 4, the dispatch loop accesses the virtualization code, reads one virtualization instruction, performs operations on the read virtualization instruction, and calls the handler code with reference to the handler table according to the operation result do. Then, the called handler code performs a substantial function corresponding to the virtualization instruction through the processor 111 and is configured to call the dispatch loop again (start address of the dispatch loop) when the execution is completed. The dispatch loop then reads the subsequent virtualization instructions and performs the same process.

이와 같이 디스패치 루프는 가상화 코드를 프로세서(111)를 통해 처리하기 위해 반복적으로 수행되고, 수행이 완료된 핸들러 코드는 다시 디스패치 루프를 호출하도록 구성된다. Thus, the dispatch loop is repeatedly executed to process the virtualization code through the processor 111, and the executed handler code is configured to call the dispatch loop again.

이러한 분석 결과를 토대로 디스패치 루프의 코드 영역을 식별할 수 있다. 디스패치 루프의 코드 영역은 앞서 살펴본 바와 같이 가상화 코드의 복수의 가상화 명령어를 수행하기 위해 반복적으로 수행되는 특징, 디스패치 루프의 첫 번째 명령어가 가상화 명령어와 관련되어 가상화 명령어를 프로세서(111)의 특정 레지스터에 로딩하는 특징, 디스패치 루프의 마지막 명령어가 특정 영역(핸들러 테이블의 영역)을 통해 결정된 하나의 핸들러 코드로 점프하는 명령어로 구성되는 특징 및 점프된 핸들러 코드는 다시 디스패치 루프의 첫 번째 명령어로 되돌아오는 특징이 있다.Based on these analysis results, the code area of the dispatch loop can be identified. The code region of the dispatch loop is characterized in that it is repeatedly executed to perform a plurality of virtualization instructions of the virtualization code as described above. The first instruction of the dispatch loop is associated with the virtualization instruction, and the virtualization instruction is transferred to a specific register A feature that loads the last instruction of the dispatch loop is composed of an instruction that jumps to one handler code determined through a specific area (area of the handler table), and a jumping handler code is a feature that returns to the first instruction of the dispatch loop again .

이러한 디스패치 루프의 특징들을 이용하여, 제 1 로그 데이터에서 디스패치 루프의 코드 영역을 식별할 수 있다.Using the features of this dispatch loop, it is possible to identify the code area of the dispatch loop in the first log data.

예를 들어 분석 장치(100)는 제 1 로그 데이터의 스캔(scan)을 통해서 디스패치 루프의 첫 번째 명령어와 마지막 명령어를 복 수회 인식할 수 있다. 그리고 분석 장치(100)는 가상화 명령어와 관련된 첫 번째 명령어에 대응하는 주소를 디스패치 루프의 시작 주소로 결정하고 핸들러 코드를 호출하기 위한 마지막 명령어에 대응하는 주소를 디스패치 루프의 종료 주소로 결정하여 디스패치 루프의 코드 영역을 식별할 수 있다. For example, the analyzing apparatus 100 can recognize the first instruction and the last instruction of the dispatch loop multiple times through a scan of the first log data. The analysis apparatus 100 determines the address corresponding to the first instruction associated with the virtualization instruction as the start address of the dispatch loop and the address corresponding to the last instruction for calling the handler code as the end address of the dispatch loop, Can be identified.

단계 S105에서, 디스패치 루프의 영역을 식별한 후에 다른 구성 요소는 용이하게 식별할 수 있다. In step S105, after identifying the area of the dispatch loop, other components can be easily identified.

예를 들어 분석 장치(100)는 제 1 로그 데이터의 모든 디스패치 루프의 코드 영역의 마지막 명령어에서 핸들러 테이블의 코드 영역을 알 수 있고 나아가 실제 호출된 핸들러 코드들의 시작 주소를 알 수 있다. 또한 핸들러 코드의 시작 주소의 명령어의 수행 후에 다시 디스패치 루프의 첫 번째 명령어를 호출하는 핸들러 코드의 명령어로 핸들러 코드의 종료 주소를 알 수 있다. 그리고 모든 디스패치 루프의 첫번째 주소의 명령어로 가상화 코드의 영역을 또한 식별할 수 있다. For example, the analyzing apparatus 100 can know the code area of the handler table in the last instruction of the code area of all the dispatch loops of the first log data, and further know the starting address of the actually called handler codes. Also, after the instruction of the start address of the handler code is executed, the end address of the handler code can be known by the instruction of the handler code which calls the first instruction of the dispatch loop again. You can also identify the area of the virtualization code with the instruction at the first address of all dispatch loops.

이러한 디스패치 루프 외의 다른 구성 요소들은 제 1 로그 데이터를 다시 스캐닝하고 식별된 디스패치 루프의 명령어를 통해 식별될 수 있다. Other components besides this dispatch loop may be identified through the instructions of the dispatch loop identified and rescan the first log data.

이후 단계 S107에서, 식별된 구성 요소에 관련된 정보를 사용자가 인식할 수 있도록 구성하여 로그 데이터(이하 '제 2 로그 데이터'라 한다)로 생성한다. 제 2 로그 데이터는 예를 들어 가상화 코드의 영역을 알 수 있도록 하는 시작 주소와 종료 주소를 나타내는 정보, 디스패치 루프의 코드 영역을 알 수 있도록 디스패치 루프의 시작 주소와 종료 주소를 나타내는 정보, 디스패치 루프의 명령어들을 나타내는 정보, 핸들러 코드 각각의 실행 회수를 나타내는 정보, 핸들러 코드 간 실행 순서를 나타내는 정보를 포함한다. Thereafter, in step S107, the information related to the identified component is configured to be recognizable by the user to generate log data (hereinafter referred to as "second log data"). The second log data includes, for example, information indicating a start address and an end address for identifying the area of the virtualization code, information indicating a start address and an end address of the dispatch loop so as to know the code area of the dispatch loop, Information indicating instructions, information indicating the number of times each handler code is executed, and information indicating the order of execution between handler codes.

또한 제 2 로그 데이터는 각각의 핸들러 코드의 시작 주소, 핸들러 코드에 포함된 명령어들, 각각의 명령어들의 피연산자, 실행 파일의 수행에서 핸들러 코드가 복수 회 실행된 경우에 핸들러 코드의 실행 순서를 나타내는 정보를 더 포함할 수 있다. The second log data includes information indicating a start address of each handler code, instructions included in the handler code, an operand of each instruction, an execution order of the handler code when the execution of the execution file is executed a plurality of times As shown in FIG.

이러한 제 2 로그 데이터는 디스패치 루프와 다른 구성 요소를 제 1 로그 데이터로부터 식별(또는 추출)함으로써 생성될 수 있다. 예를 들어 제 2 로그 데이터는 단계 S105에서 구성 요소의 식별 동안에 동시에 생성될 수 있거나 모든 구성 요소를 단계 S105에서 식별한 후에, 제 1 로그 데이터를 재차 스캐닝함으로써 해당 구성 요소의 정보를 생성할 수도 있다. This second log data may be generated by identifying (or extracting) the dispatch loop and other components from the first log data. For example, the second log data may be generated at the same time during identification of the component in step S105, or after all the components are identified in step S105, the information of the corresponding component may be generated by scanning again the first log data .

예를 들어 제 2 로그 데이터의 실행 회수는 디스패치 루프에서 호출하는 동일한 시작 주소(핸들러 테이블을 경유하여)를 카운팅함으로써 알 수 있고 핸들러 코드 간의 실행 순서는 명령어의 실행 순서에 따라 기록된 제 1 로그 데이터를 스캐닝하여 발견되는 핸들러 코드를 순서대로 나열함으로써 알 수 있다. For example, the execution count of the second log data can be known by counting the same start address (via the handler table) invoked in the dispatch loop, and the execution order between the handler codes can be determined by the execution order of the first log data And the handler codes to be found are listed in order.

이후 단계 S109에서, 분석 장치(100)는 생성된 제 2 로그 데이터를 출력 인터페이스(103)를 통해 출력하거나 대용량 저장 매체(107)에 저장할 수 있다. Thereafter, in step S109, the analysis apparatus 100 may output the generated second log data through the output interface 103 or may store it in the mass storage medium 107. [

도 5와 도 6은 생성되는 제 2 로그 데이터의 예시적인 형태를 도시한 도면이다. 도 5에서 알 수 있는 바와 같이, 제 2 로그 데이터는 가상화 코드의 영역 정보와 디스패치 루프의 영역 정보(① 참조), 디스패치 루프의 명령어들(② 참조), 복수의 핸들러 각각에 대한 영역 정보와 실행 회수(③ 참조) 및 복수의 핸들러 간의 실행 순서(④ 참조)를 포함한다. 5 and 6 illustrate exemplary forms of the generated second log data. 5, the second log data includes area information of the virtualization code and area information of the dispatch loop (see (1)), dispatch loop commands (see (2)), area information for each of the plurality of handlers, (See ③) and execution order between multiple handlers (see ④).

도 6은 특정 핸들러 코드에 관련하여 생성되는 제 2 로그 데이터를 도시한 도면이데, 도 6을 통해서 알 수 있는 바와 같이, 핸들러 코드의 시작 주소(① 참조), 명령어들(① 참조), 명령어에서의 피연산자의 타입(메모리, 레지스터, 상수, 주소)이나 값들(② 참조), 그리고 해당 핸들러 코드가 복수 회 실행된 경우에 몇 번째 실행인지를 알 수 있도록 하는 실행 순서 번호(③ 참조, 예를 들어 'H 1-115'에서 '1'이 첫번째 실행을 나타내는 실행 순서 번호임)를 나타내는 정보를 포함한다. FIG. 6 is a diagram showing second log data generated in association with a specific handler code. As can be seen from FIG. 6, the start address (refer to?) Of the handler code, the commands (Eg, memory, registers, constants, and addresses) or values (see ②), and the execution sequence number (see ③, for example) that tells you how many times the handler code is executed Quot; 1 " is the execution sequence number indicating the first execution in " H 1-115 ").

도 5와 도 6에서의 제 2 로그 데이터는 하나의 파일로 저장되거나 상이한 파일로 저장될 수 있다. 또한 도 5와 도 6의 제 2 로그 데이터는 하나의 창(window)을 통해 표시되거나 다른 여러 개의 창을 통해 표시될 수 있다. The second log data in FIGS. 5 and 6 may be stored in one file or in a different file. In addition, the second log data of FIGS. 5 and 6 may be displayed through one window or through several different windows.

도 5와 도 6에서 알 수 있는 바와 같이 본 발명에 따라 생성된 제 2 로그 데이터는 가상화 난독화 기법에 관련된 다양한 정보를 제공할 수 있다. 특히 가상화 난독화 기법에 적용된 구성 요소들을 정적 분석 방법을 통해 실제 실행 파일의 수행 흐름에 따라 식별하고 해당 정보를 표시할 수 있다. 또한 핸들러 코드가 수행된 회수를 제공하여 분석가로 하여금 어떤 핸들러 코드를 먼저 분석해야하는 지를 안내할 수 있고 핸들러 코드 간 제어 흐름을 제공하여 가상화 코드에 대한 분석을 용이하게 한다. As can be seen in FIGS. 5 and 6, the second log data generated according to the present invention may provide various information related to the virtual obfuscation technique. In particular, the components applied to the virtualization obfuscation technique can be identified and displayed in accordance with the execution flow of the actual executable file through the static analysis method. It also provides the number of times the handler code has been executed so that the analyst can guide which handler code needs to be analyzed first, and provides a control flow between handler codes to facilitate analysis of the virtualization code.

이후 입력 인터페이스(101)를 통한 사용자 입력에 따라 도 3의 본 제어 흐름은 종료(S200)될 수 있다. The control flow of FIG. 3 may then be terminated (S200) according to user input via the input interface 101. FIG.

도 3에 따른 제어 흐름은 분석 장치(100)의 프로세서(111)상에서 수행되는 하나의 프로그램을 수행함으로써 이루어지거나 복수의 프로그램을 수행함으로써 이루어질 수 있다. 예를 들어 단계 S101은 별도 하나의 프로그램(예를 들어 동적 에뮬레이터) 상에서 이루어지고 나머지 단계 S103 내지 단계 S109는 다른 프로그램(구성 요소를 추출하기 위한 분석 프로그램)을 이용하여 이루어질 수 있다.
The control flow according to FIG. 3 may be performed by executing one program executed on the processor 111 of the analysis apparatus 100 or by executing a plurality of programs. For example, the step S101 may be performed on another program (for example, a dynamic emulator), and the remaining steps S103 to S109 may be performed using another program (analysis program for extracting the components).

도 7은 가상화 난독화 기법이 적용된 실행 파일의 분석을 위한 예시적인 기능 블록도를 도시한 도면이다. 도 7의 기능 블록도는 도 1의 하드웨어 블록도 상에서 수행될 수 있다. 바람직하게는 도 7의 기능 블록도는 도 1의 프로세서(111)에서 수행되고 대용량 저장 매체(107) 등에 저장되어 있는 프로그램 등을 이용하여 구성될 수 있다. 7 is a diagram illustrating an exemplary functional block diagram for analysis of an executable file to which a virtual obfuscation technique is applied. The functional block diagram of Fig. 7 may be performed on the hardware block diagram of Fig. Preferably, the functional block diagram of FIG. 7 may be configured using programs or the like stored in the mass storage medium 107 or the like, which are performed by the processor 111 of FIG.

앞선 도 3의 제어 흐름을 통해 실행 파일의 분석에 대해서 상세히 살펴보았으므로 여기서는 간단히 살펴보도록 한다. The analysis of the executable file through the control flow of FIG. 3 has been described in detail.

도 7에 따른 분석 장치(100)는 에뮬레이션 모듈(151), 구성 요소 식별 모듈(153), 로그 생성 모듈(155)을 포함한다. 분석 장치(100)는 필요에 따라 특정 모듈을 생략할 수 있고 예를 들어 에뮬레이션 모듈(151)은 변형 예에 따라 생략될 수 있다. 여기서 기능 블록의 도면 부호(150번 대 이용)를 하드웨어 블록의 도면 부호와 구별할 수 있도록 부여하였다. The analysis apparatus 100 according to FIG. 7 includes an emulation module 151, a component identification module 153, and a log generation module 155. The analysis apparatus 100 may omit specific modules as needed, for example, the emulation module 151 may be omitted according to a modification. Here, the reference numerals of the function blocks (use number 150) are assigned to distinguish them from the reference numerals of the hardware blocks.

분석 장치(100)의 각 블록에 대해서 간단히 살펴보면, 에뮬레이션 모듈(151)은 사용자 입력에 따라 분석 대상인 실행 파일을 메모리(105)에 로딩하고 실행 파일의 수행에 따라 동적으로 대응하는 모든 명령어들을 실행하고 이후 실행된 모든 명령어를 포함하고 실행 순서에 따라 모든 명령어를 표현할 수 있는 제 1 로그 데이터를 생성하고 기록한다. 실행 파일은 가상화 난독화 기법을 적용하는 상용 소프트웨어 툴인 더미다를 적용하여 생성된 파일일 수 있다. The emulation module 151 loads the executable file to be analyzed in the memory 105 according to the user input and executes all instructions corresponding to the execution of the executable file dynamically according to the execution of the executable file And generates and records the first log data including all the executed commands and expressing all the commands according to the execution order. The executable file may be a file created by applying a dummy application, which is a commercial software tool that applies virtualization obfuscation techniques.

구성 요소 식별 모듈(153)은 실행 파일에 기초하여 생성된 제 1 로그 데이터로부터 실행 파일에 적용된 가상화 난독화 기법의 구성 요소를 식별한다. 예를 들어 구성 요소 식별 모듈(153)은 디스패치 루프, 복수의 핸들러 코드를 식별하고 나아가 가상화 코드와 핸들러 테이블을 더 식별할 수 있다. 제 1 로그 데이터는 바람직하게는 에뮬레이션 모듈(151)에 의해서 기록된 로그 데이터이다. The component identification module 153 identifies the components of the virtualization obfuscation technique applied to the executable file from the first log data generated based on the executable file. For example, the component identification module 153 can identify a dispatch loop, a plurality of handler codes, and further identify virtualization code and handler tables. The first log data is preferably log data recorded by the emulation module 151.

구체적으로 구성 요소 식별 모듈(153)은 제 1 로그 데이터를 스캐닝하여 디스패치 코드 영역을 식별한다. 디스패치 코드 영역은 제 1 로그 데이터를 스캐닝을 통해 반복적으로 수행되는 특징과 반복적으로 수행되는 코드 영역에서 가상화 명령어를 로딩하는 첫 번째 명령어와 핸들러 코드를 호출하기 위한 마지막 명령어를 가진다는 특징을 이용하여 디스패치 코드의 첫 번째 명령어와 마지막 명령어를 인식하고 이로부터 디스패치 코드의 시작 주소와 종료 주소를 결정하여 디스패치 코드의 영역을 식별할 수 있다. Specifically, the component identification module 153 scans the first log data to identify the dispatch code area. The dispatch code region has a feature that it is repeatedly performed by scanning the first log data, and has a first instruction for loading the virtualization instruction in the repeatedly executed code region and a last instruction for calling the handler code. You can identify the region of the dispatch code by recognizing the first and last instructions of the code and determining the start address and end address of the dispatch code from it.

또한 구성 요소 식별 모듈(153)은 식별된 디스패치 코드 영역의 명령어(예를 들어 마지막 명령어)를 이용하여 복수의 핸들러 코드 각각을 더 식별할 수 있다. 예를 들어 구성 요소 식별 모듈(153)은 제 1 로그 데이터에서 식별된 다수의 디스패치 코드의 영역의 마지막 명령어를 통해 호출되는 시작 주소(핸들러 테이블을 경유하여)를 인식한다. 나아가 구성 요소 식별 모듈(153)은 인식된 시작 주소 이후의 명령어의 수행에 따라 다시 디스패치 코드의 시작 주소로 호출하는 명령어를 인식하여 핸들러 코드의 시작 주소와 종료 주소를 포함하는 코드 영역을 식별할 수 있다. The component identification module 153 may further identify each of the plurality of handler codes using instructions (e.g., the last instruction) of the identified dispatch code area. For example, the component identification module 153 recognizes the start address (via the handler table) that is called via the last instruction of the area of the plurality of dispatch codes identified in the first log data. Further, the component identification module 153 recognizes a command to be called with the start address of the dispatch code again according to the execution of the instruction after the recognized start address, and identifies the code area including the start address and the end address of the handler code have.

로그 생성 모듈(155)은 구성 요소 식별 모듈(153)에서 식별된 구성 요소에 관련된 각종 정보를 사용자가 인식할 수 있도록 제 2 로그 데이터로 생성한다. 로그 생성 모듈(155)은 예를 들어 구성 요소에 관련된 영역 정보나 핸들러 코드의 실행 회수나 핸들러 코드 간 실행 순서나 구성 요소의 명령어들을 알 수 있도록 출력 인터페이스(103)를 통해 출력하거나 대용량 저장 매체(107)에 저장할 수 있다. The log generation module 155 generates second log data such that various information related to the components identified by the component identification module 153 can be recognized by the user. The log generation module 155 outputs the area information related to the component, the execution count of the handler code, the execution order between the handler codes, and the instruction of the component, through the output interface 103, 107).

도 7의 기능 블록들은 프로세서에서 수행될 수 있는 프로그램으로 구성될 수 있고 각각의 블록들이 별도의 프로그램이거나 하나의 프로그램에 통합되거나 복수의 프로그램에 통합될 수 있다. 예를 들어 에뮬레이션 모듈(151)은 하나의 프로그램(예를 들어 동적 에뮬레이터)으로 구성되고 구성 요소 식별 모듈(153)과 로그 생성 모듈(155)은 별도의 프로그램으로 구성될 수 있다.
The functional blocks of FIG. 7 may be configured as a program that can be executed in a processor, and each block may be a separate program, integrated into one program, or integrated into a plurality of programs. For example, the emulation module 151 may be constituted by one program (for example, a dynamic emulator), and the component identification module 153 and the log generation module 155 may be constituted by separate programs.

이상에서 설명한 본 발명은, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시 예 및 첨부된 도면에 의해 한정되는 것이 아니다. 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. The present invention is not limited to the drawings.

100 : 분석 장치
101 : 입력 인터페이스 103 : 출력 인터페이스
105 : 메모리 107 : 대용량 저장 매체
109 : 시스템 버스/제어 버스 111 : 프로세서
151 : 에뮬레이션 모듈 153 : 구성 요소 식별 모듈
155 : 로그 생성 모듈
100: Analyzer
101: input interface 103: output interface
105: memory 107: mass storage medium
109: system bus / control bus 111: processor
151: Emulation module 153: Component identification module
155: log generation module

Claims (12)

가상화 난독화 기법이 적용된 실행 파일의 분석 방법으로서,
(a) 동적 에뮬레이터(emulator)에 상기 실행 파일을 로딩하고 상기 동적 에뮬레이터에서 실행된 모든 명령어를 포함하고 실행 순서에 따라 상기 모든 명령어를 표현할 수 있는 제 1 로그 데이터를 생성하고 기록하는 단계;
(b) 상기 실행 파일에 기초하여 생성된 상기 제 1 로그 데이터로부터 상기 가상화 난독화 기법에 적용된 구성 요소를 식별하는 단계; 및
(c) 식별된 구성 요소와 관련된 정보를 인식할 수 있는 제 2 로그 데이터를 생성하는 단계를 포함하고,
상기 가상화 난독화 기법에 적용된 구성 요소는 상기 실행 파일에 포함되는 가상화 명령어에 대응하는 핸들러 코드를 수행시키기 위한 디스패치 루프와 상기 디스패치 루프에 의해서 수행되는 복수의 핸들러 코드를 포함하고,
상기 단계 (b)는,
(b-1) 상기 디스패치 루프의 코드 영역을 식별하는 단계; 및
(b-2) 상기 단계 (b-1)에서 식별된 상기 디스패치 루프의 코드 영역의 명령어를 이용하여 복수의 핸들러 코드의 영역을 식별하는 단계를 포함하고,
상기 단계 (b-1)은,
가상화 명령어에 관련된 제 1 명령어와 상기 가상화 명령어에 대응하는 핸들러 코드를 호출하기 위한 제 2 명령어를 인식하는 단계; 및
인식된 제 1 명령어와 제 2 명령어의 위치로부터 디스패치 루프의 시작 주소와 종료 주소를 결정하는 단계를 포함하는,
실행 파일의 분석 방법.
An analysis method of an executable file to which a virtualization obfuscation technique is applied,
(a) loading the executable file into a dynamic emulator, generating and recording first log data that includes all instructions executed in the dynamic emulator and can represent all of the instructions in an execution order;
(b) identifying components applied to the virtual obfuscation technique from the first log data generated based on the executable file; And
(c) generating second log data capable of recognizing information associated with the identified component,
Wherein the component applied to the virtualization obfuscation includes a dispatch loop for executing a handler code corresponding to a virtualization instruction included in the executable file and a plurality of handler codes executed by the dispatch loop,
The step (b)
(b-1) identifying a code region of the dispatch loop; And
(b-2) identifying an area of a plurality of handler codes using an instruction of a code area of the dispatch loop identified in step (b-1)
The step (b-1)
Recognizing a first instruction related to a virtualization instruction and a second instruction for calling a handler code corresponding to the virtualization instruction; And
Determining a start address and an end address of a dispatch loop from a location of the recognized first instruction and a second instruction,
How to analyze executable files.
삭제delete 삭제delete 제1항에 있어서,
상기 실행 파일은 상용 가상화 난독화 툴(tool)인 더미다(Themida)를 적용하여 생성된 실행 파일인, 실행 파일의 분석 방법.
The method according to claim 1,
Wherein the executable file is an executable file generated by applying the commercial virtualization obfuscation tool, Themida.
삭제delete 제1항에 있어서,
상기 단계 (c)에서 생성된 제 2 로그 데이터는 디스패치 루프의 시작 주소와 종료 주소를 나타내는 정보, 복수의 핸들러 코드 각각의 실행 회수를 나타내는 정보 및 복수의 핸들러 코드 간의 실행 순서를 나타내는 정보를 포함하는,
실행 파일의 분석 방법.
The method according to claim 1,
The second log data generated in the step (c) includes information indicating a start address and an end address of the dispatch loop, information indicating the execution count of each of the plurality of handler codes, and information indicating execution order between the plurality of handler codes ,
How to analyze executable files.
제6항에 있어서,
상기 단계 (c)에서 생성된 제 2 로그 데이터는 핸들러 코드의 시작 주소, 핸들러 코드에 포함된 명령어와 상기 명령어에 포함된 피연산자 및 핸들러 코드의 실행 순서를 나타내는 정보를 더 포함하는,
실행 파일의 분석 방법.
The method according to claim 6,
Wherein the second log data generated in the step (c) further includes information indicating a start address of the handler code, an instruction contained in the handler code, an operand included in the instruction, and an execution order of the handler code.
How to analyze executable files.
가상화 난독화 기법이 적용된 실행 파일의 분석 장치로서,
상기 실행 파일을 로딩하고 동적으로 실행된 모든 명령어를 포함하여 실행 순서에 따라 상기 모든 명령어를 표현할 수 있는 제 1 로그 데이터를 생성하고 기록하는 에뮬레이션 모듈;
상기 실행 파일에 기초하여 생성된 상기 제 1 로그 데이터로부터 상기 가상화 난독화 기법에 적용된 구성 요소를 식별하는 구성 요소 식별 모듈; 및
식별된 구성 요소와 관련된 정보를 인식할 수 있는 제 2 로그 데이터를 생성하는 로그 생성 모듈을 포함하고,
상기 가상화 난독화 기법에 적용된 구성 요소는 상기 실행 파일에 포함되는 가상화 명령어에 대응하는 핸들러 코드를 수행시키기 위한 디스패치 루프와 상기 디스패치 루프에 의해서 수행되는 복수의 핸들러 코드를 포함하고,
상기 구성 요소 식별 모듈은 상기 디스패치 루프의 코드 영역을 식별하고, 식별된 상기 디스패치 루프의 코드 영역의 명령어를 이용하여 복수의 핸들러 코드의 영역을 식별하고,
상기 구성 요소 식별 모듈은 가상화 명령어에 관련된 제 1 명령어와 상기 가상화 명령어에 대응하는 핸들러 코드를 호출하기 위한 제 2 명령어를 인식하고 인식된 제 1 명령어와 제 2 명령어의 위치로부터 디스패치 루프의 시작 주소와 종료 주소를 결정하여 상기 디스패치 루프의 코드 영역을 식별하는,
실행 파일의 분석 장치.
An apparatus for analyzing an execution file to which a virtualization obfuscation technique is applied,
An emulation module for loading the executable file and including first and second dynamically executed instructions to generate and record first log data capable of expressing all of the instructions in an execution order;
A component identification module for identifying a component applied to the virtual obfuscation technique from the first log data generated based on the executable file; And
And a log generation module for generating second log data capable of recognizing information related to the identified component,
Wherein the component applied to the virtualization obfuscation includes a dispatch loop for executing a handler code corresponding to a virtualization instruction included in the executable file and a plurality of handler codes executed by the dispatch loop,
Wherein the component identification module identifies a code region of the dispatch loop, identifies an area of a plurality of handler codes using instructions in a code region of the identified dispatch loop,
The component identification module recognizes a first instruction related to the virtualization instruction and a second instruction for calling the handler code corresponding to the virtualization instruction and recognizes the start address of the dispatch loop from the position of the recognized first instruction and the second instruction Determining an end address to identify a code region of the dispatch loop,
Analyzer of the executable file.
삭제delete 삭제delete 제8항에 있어서,
상기 실행 파일은 상용 가상화 난독화 툴인 더미다를 적용하여 생성된 실행 파일인, 실행 파일의 분석 장치.
9. The method of claim 8,
Wherein the executable file is an executable file generated by applying a dummy variable that is a commercial virtualization obfuscation tool.
삭제delete
KR1020140006644A 2014-01-20 2014-01-20 Analysis method and analysis apparatus of executable file applied virtualization obfuscation KR101583306B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140006644A KR101583306B1 (en) 2014-01-20 2014-01-20 Analysis method and analysis apparatus of executable file applied virtualization obfuscation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140006644A KR101583306B1 (en) 2014-01-20 2014-01-20 Analysis method and analysis apparatus of executable file applied virtualization obfuscation

Publications (2)

Publication Number Publication Date
KR20150086682A KR20150086682A (en) 2015-07-29
KR101583306B1 true KR101583306B1 (en) 2016-01-07

Family

ID=53876194

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140006644A KR101583306B1 (en) 2014-01-20 2014-01-20 Analysis method and analysis apparatus of executable file applied virtualization obfuscation

Country Status (1)

Country Link
KR (1) KR101583306B1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102430335B1 (en) * 2020-10-21 2022-08-08 국방과학연구소 Method For Enhancing Obfuscation Of Virtual Code And Apparatus Thereof

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
K. Coogan et al., Deobfuscation of Virtualization-Obfuscated Software: A Semantics-Based Approach, Proceedings of the 18th ACM conference on Computerand communications security, 2011.10.*
김성호, 동적 오염 분석을 이용한 가상화 기법으로 난독화된 바이너리 코드 분석 기법, 한양대학교 전자컴퓨터통신공학과 석사학위논문, 2013.8.*

Also Published As

Publication number Publication date
KR20150086682A (en) 2015-07-29

Similar Documents

Publication Publication Date Title
US10380343B1 (en) System and method for programmatic runtime de-obfuscation of obfuscated software utilizing virtual machine introspection and manipulation of virtual machine guest memory permissions
US9501643B1 (en) Systems and methods for detecting malicious executable files containing an interpreter by combining emulators
US7620941B1 (en) Mechanism for lossless user-level tracing on an architecture supporting PC-relative addressing
US9208060B1 (en) Emulation-based expression evaluation for diagnostic tools
KR101228899B1 (en) Method and Apparatus for categorizing and analyzing Malicious Code Using Vector Calculation
US9710355B2 (en) Selective loading of code elements for code analysis
KR20110070468A (en) Apparatus for executing instrumentation and method thereof
CN109145534B (en) Anti-confusion system and method for software virtual machine protection
US10129275B2 (en) Information processing system and information processing method
US20200143061A1 (en) Method and apparatus for tracking location of input data that causes binary vulnerability
JP6728874B2 (en) Determine valid input for unknown binary program
KR20180129623A (en) Apparatus for statically analyzing assembly code including assoxiated multi files
JP2016149123A (en) Method of determining valid input for unknown binary module and non-transitory computer-readable medium
KR101583306B1 (en) Analysis method and analysis apparatus of executable file applied virtualization obfuscation
US20070061781A1 (en) Stochastic testing directed by static test automation
CN112861138A (en) Software security analysis method and analysis device, electronic device, and storage medium
JP5952218B2 (en) Information processing apparatus and information processing method
KR101116770B1 (en) Apparatus for?diagnosing and curing malicious code and method thereof
Lin et al. VMRe: A reverse framework of virtual machine protection packed binaries
KR102421394B1 (en) Apparatus and method for detecting malicious code using tracing based on hardware and software
US11886589B2 (en) Process wrapping method for evading anti-analysis of native codes, recording medium and device for performing the method
KR101977265B1 (en) Method and apparatus for detection original entry point of packed executable files
CN109472133A (en) A kind of sandbox monitoring method and device
US10108528B2 (en) High-performance processor instruction tracing
JP6642114B2 (en) Determine valid input sequence for unknown binary program

Legal Events

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

Payment date: 20181025

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20191017

Year of fee payment: 5