KR20170079961A - Method for detectiing similarity of software and apparatus therefor - Google Patents

Method for detectiing similarity of software and apparatus therefor Download PDF

Info

Publication number
KR20170079961A
KR20170079961A KR1020150191066A KR20150191066A KR20170079961A KR 20170079961 A KR20170079961 A KR 20170079961A KR 1020150191066 A KR1020150191066 A KR 1020150191066A KR 20150191066 A KR20150191066 A KR 20150191066A KR 20170079961 A KR20170079961 A KR 20170079961A
Authority
KR
South Korea
Prior art keywords
software
similarity
bus mark
extracting
static analysis
Prior art date
Application number
KR1020150191066A
Other languages
Korean (ko)
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 KR1020150191066A priority Critical patent/KR20170079961A/en
Publication of KR20170079961A publication Critical patent/KR20170079961A/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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/3604Analysis of software for verifying properties of programs
    • 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
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/37Compiler construction; Parser generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Virology (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

소프트웨어의 도용 탐지에 이용할 수 있는 소프트웨어 유사도 측정 방법 및 장치에 관한 것이다. 개시된 소프트웨어 유사도 측정 방법은 제 1 소프트웨어에 대해 동적 분석을 통해 패킹 상태를 확인한 후, 패킹 상태일 경우에는 실행압축을 해제하는 단계와, 실행압축이 해제된 제 1 소프트웨어의 바이너리 파일로부터 정적 분석을 통해 버스마크를 추출하는 단계와, 추출된 버스마크와 제 2 소프트웨어의 버스마크를 비교하여 유사도를 산출한다. 동적 분석을 적용하여 암호화 또는 패킹된 소프트웨어를 대상으로 하여 유사도를 측정할 수 있으며, 정적 분석을 적용하여 유사도 측정의 한계가 없도록 한다. 아울러, 시스템 콜 함수의 수가 적거나 특징정보로 정의하기에 부적합할 경우에도 소프트웨어의 유사도를 측정할 수 있다.To a software similarity measurement method and apparatus that can be used to detect software theft. The disclosed software similarity measuring method comprises the steps of: confirming a packing state through a dynamic analysis for a first software, releasing an execution compression in the case of a packing state, and analyzing the analysis result from a binary file of the first software Extracting a bus mark; comparing the extracted bus mark with a bus mark of the second software to calculate a degree of similarity; Dynamic analysis can be applied to measure the similarity of encrypted or packed software, and static analysis is applied to avoid the limitations of similarity measurement. In addition, the degree of similarity of software can be measured even when the number of system call functions is small or is not suitable for defining as feature information.

Description

소프트웨어 유사도 측정 방법 및 장치{METHOD FOR DETECTIING SIMILARITY OF SOFTWARE AND APPARATUS THEREFOR}[0001] METHOD FOR DETECTING SIMILARITY OF SOFTWARE AND APPARATUS THEREFOR [0002]

소프트웨어 유사도 측정 방법 및 장치에 관한 것으로, 더욱 상세하게는 소프트웨어의 도용 탐지에 이용할 수 있는 소프트웨어 유사도 측정 방법 및 장치에 관한 것이다.And more particularly, to a software similarity measurement method and apparatus that can be used to detect software theft.

소프트웨어의 개발이 활발해짐에 따라, 소프트웨어의 도용 탐지에 이용할 수 있는 소프트웨어 유사도 측정 또한 매우 중요시되고 있다.As software development becomes more active, software similarity measurement, which can be used to detect software theft, is also becoming very important.

종래 기술의 일 예로서, 도용이 의심되는 측정 대상 소프트웨어에서 정적 또는 동적으로 버스마크(birthmark)를 추출한 후, 비교 대상 소프트웨어의 버스마크와 비교하여 유사도를 산출하는 방식이 있다. 소프트웨어 버스마크는 소프트웨어가 갖는 고유한 특징정보를 의미하며, 바이너리 자체를 비교하여 도용 여부를 판단하는데 활용될 수 있다.As one example of the prior art, there is a method of statistically or dynamically extracting a birthmark from a measurement target software suspected of being stolen, and then comparing the birthmark with a bus mark of the comparison target software to calculate the similarity. The software bus mark refers to unique feature information of the software, and can be used to compare the binary itself to judge whether or not it is stolen.

그러나, 정적으로 버스마크를 추출하는 유사도 측정 방식은 패킹된 소프트웨어를 대상으로 하여 유사도를 측정하기 어려운 문제점이 있다. 동적으로 버스마크를 추출하는 유사도 측정 방식은 소프트웨어의 실행 경로 외엔 유사도 측정의 한계가 있는 문제점이 있다.However, there is a problem that it is difficult to measure the degree of similarity with respect to the packed software in the similarity measurement method of statically extracting the bus mark. There is a problem that there is a limit to the degree of similarity measurement other than the execution path of the software.

종래 기술의 다른 예로서, 소프트웨어의 특정 행위를 특징정보로 정의하는 방식이 있다.As another example of the prior art, there is a method of defining a specific action of software as feature information.

그러나, 이러한 행위 기반 탐지 기술은 운영체제에서 제공받는 시스템 콜 함수의 수가 적거나 특징정보로 정의하기에 부적합할 경우에는 특징정보로 정의할 시스템 콜 함수가 없는 경우가 있기 때문에, 소프트웨어 유사도 측정에 적용하기는 부적합한 문제점이 있다.However, since this behavior-based detection technology may not have a system call function to be defined as feature information when the number of system call functions provided by the operating system is small or is not suitable for defining the feature information, There is an inadequate problem.

한국공개특허 제2014-0035608호, 공개일 2014년 03월 24일.Korean Patent Publication No. 2014-0035608, published on March 24, 2014.

종래 기술의 문제점을 해결하기 위해 제안한 것으로서, 동적 분석 및 정적 분석을 통해 소프트웨어의 유사도를 측정하는 소프트웨어 유사도 측정 장치 및 방법을 제공한다.The present invention provides a software similarity measuring apparatus and method for measuring similarity of software through dynamic analysis and static analysis.

제 1 관점에 따른 소프트웨어 유사도 측정 방법은, 제 1 소프트웨어에 대해 동적 분석을 통해 상태를 확인한 후, 암호화 또는 실행압축을 해제하는 단계를 포함할 수 있다. 그리고, 상기 암호화 또는 실행압축이 해제된 제 1 소프트웨어의 바이너리 파일로부터 정적 분석을 통해 버스마크를 추출하는 단계를 더 포함할 수 있다. 또, 상기 추출된 버스마크와 제 2 소프트웨어의 버스마크를 비교하여 유사도를 산출하는 단계를 포함할 수 있다.The method for measuring the degree of software similarity according to the first aspect may include a step of checking the status of the first software through dynamic analysis and then releasing encryption or execution decompression. The method may further include extracting a bus mark from the binary file of the first software whose encryption or execution compression is released through static analysis. The step of comparing the extracted bus mark with the bus mark of the second software may be used to calculate the degree of similarity.

제 2 관점에 따른 소프트웨어 유사도 측정 장치는, 동적 분석부와 정적 분석부 및 유사도 산출부를 포함할 수 있다. 동적 분석부는 제 1 소프트웨어에 대해 동적 분석을 통해 상태를 확인한 후, 암호화 또는 실행압축을 해제할 수 있다. 정적 분석부는 상기 암호화 또는 실행압축이 해제된 제 1 소프트웨어의 바이너리 파일로부터 정적 분석을 통해 버스마크를 추출할 수 있다. 유사도 산출부는 상기 추출된 버스마크와 제 2 소프트웨어의 버스마크를 비교하여 유사도를 산출할 수 있다.The software similarity measuring apparatus according to the second aspect may include a dynamic analyzing unit, a static analyzing unit, and a similarity calculating unit. The dynamic analysis unit can confirm the state of the first software through dynamic analysis, and then release the encryption or execution decompression. The static analysis unit may extract the bus mark through static analysis from the binary file of the first software whose encryption or execution decompression is released. The similarity calculating unit may calculate the similarity by comparing the extracted bus mark with the bus mark of the second software.

실시예에 의하면, 도용이 의심되는 측정 대상 소프트웨어에 대한 동적 분석 및 정적 분석을 통해 비교 대상 소프트웨어와의 유사도를 산출한다. 동적 분석을 적용하여 패킹 또는 암호화된 소프트웨어를 대상으로 하여 유사도를 측정할 수 있으며, 정적 분석을 적용하여 유사도 측정의 한계가 없도록 한다. 아울러, 시스템 콜 함수의 수가 적거나 특징정보로 정의하기에 부적합할 경우에도 소프트웨어의 유사도를 측정할 수 있다.According to the embodiment, the degree of similarity with the software to be compared is calculated through dynamic analysis and static analysis of the software to be measured, which is suspected of theft. Dynamic analysis can be used to measure similarity to packed or encrypted software, and static analysis is applied to avoid the limitations of similarity measurement. In addition, the degree of similarity of software can be measured even when the number of system call functions is small or is not suitable for defining as feature information.

나아가, 컴파일러의 종류와 컴파일 최적화 옵션에 대한 영향을 고려할 수 있으며, 이 경우에는 버스마크가 컴파일에 의한 영향으로 인해 변경될 경우에도 소프트웨어의 유사도를 측정할 수 있는 효과가 있다.Furthermore, it is possible to consider the effect of the compiler type and the compile optimization option. In this case, the similarity of the software can be measured even when the bus mark is changed due to the influence of the compilation.

도 1은 일 실시예에 따른 소프트웨어 유사도 측정 장치의 블록 구성도이다.
도 2는 일 실시예에 따른 소프트웨어 유사도 측정 방법을 설명하기 위한 흐름도이다.
1 is a block diagram of a software similarity measuring apparatus according to an embodiment of the present invention.
2 is a flowchart illustrating a method of measuring the degree of software similarity according to an exemplary embodiment of the present invention.

본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.BRIEF DESCRIPTION OF THE DRAWINGS The advantages and features of the present invention and the manner of achieving them will become apparent with reference to the embodiments described in detail below with reference to the accompanying drawings. The present invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. Rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the invention to those skilled in the art. To fully disclose the scope of the invention to those skilled in the art, and the invention is only defined by the scope of the claims.

본 발명의 실시예들을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명의 실시예에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. In the following description of the present invention, a detailed description of known functions and configurations incorporated herein will be omitted when it may make the subject matter of the present invention rather unclear. The following terms are defined in consideration of the functions in the embodiments of the present invention, which may vary depending on the intention of the user, the intention or the custom of the operator. Therefore, the definition should be based on the contents throughout this specification.

이하, 첨부된 도면들을 참조하여 본 발명의 실시예들에 대해 살펴보기로 한다.Hereinafter, embodiments of the present invention will be described with reference to the accompanying drawings.

도 1은 일 실시예에 따른 소프트웨어 유사도 측정 장치의 블록 구성도이다.1 is a block diagram of a software similarity measuring apparatus according to an embodiment of the present invention.

이에 나타낸 바와 같이 소프트웨어 유사도 측정 장치(100)는 동적 분석부(110)와 정적 분석부(120) 및 유사도 산출부(130)를 포함한다.As shown, the software similarity measuring apparatus 100 includes a dynamic analyzer 110, a static analyzer 120, and a similarity calculator 130.

동적 분석부(110)는 측정 대상 소프트웨어에 대해 동적 분석을 통해 상태를 확인한 후, 패킹 상태일 경우에는 실행압축을 해제하며, 암호화 상태일 경우에는 복호화하여 해제한다. 이러한 동적 분석부(110)는 측정 대상 소프트웨어가 입력될 수 있는 입력 인터페이스를 포함할 수 있다. 예컨대, 입력 인터페이스는 측정 대상 소프트웨어가 데이터 파일 형태로 입력되는 외부 인터페이스, 측정 대상 소프트웨어가 수신되는 통신모듈, 측정 대상 소프트웨어를 사용자가 입력할 수 있는 사용자 인터페이스 등을 포함할 수 있다.The dynamic analysis unit 110 checks the state of the software to be measured through dynamic analysis, and then releases the execution compression when it is in a packing state, and decrypts it when it is in an encryption state. The dynamic analysis unit 110 may include an input interface through which the software to be measured can be input. For example, the input interface may include an external interface through which the measurement target software is input in the form of a data file, a communication module through which the measurement target software is received, a user interface through which a user can input measurement target software, and the like.

정적 분석부(120)는 암호화 또는 실행압축이 해제된 측정 대상 소프트웨어의 바이너리 파일로부터 정적 분석을 통해 버스마크를 추출한다. The static analysis unit 120 extracts the bus mark from the binary file of the measurement target software whose encryption or execution compression is released through static analysis.

이러한 정적 분석부(120)는 정적 도구를 사용하여 측정 대상 소프트웨어의 컴파일러 종류를 추출한 후, 추출된 컴파일러 종류로 컴파일하여 바이너리 파일을 생성할 수 있다. 여기서, 적용 옵션별로 컴파일하여 복수의 바이너리 파일을 생성할 수 있다.The static analyzer 120 may extract a compiler type of the software to be measured using a static tool, and then compile the compiler into an extracted compiler type to generate a binary file. Here, it is possible to generate a plurality of binary files by compiling each application option.

아울러, 정적 분석부(120)는 연산코드(Opcode, operation code), API(Application Programming Interface) 호출 빈도, API 참조 순서, 제어 흐름 그래프, 또는 호출 그래프 중에서 적어도 어느 하나를 버스마크로서 추출할 수 있다.In addition, the static analysis unit 120 may extract at least one of an opcode, an operation code, an API (Application Programming Interface) calling frequency, an API reference order, a control flow graph, or a call graph as a bus mark .

또, 정적 분석부(120)는 바이너리 파일로부터 함수 단위 기준으로 연산코드를 추출할 수 있다. 여기서, 함수를 호출할 때에 API를 제외하고 연산코드를 추출할 수 있으며, IAT(Import Address Table)를 통하여 API 여부를 판단할 수 있다.Also, the static analysis unit 120 can extract an operation code on a function unit basis from a binary file. Here, when the function is called, the operation code can be extracted except for the API, and the API can be determined through the IAT (Import Address Table).

또한, 정적 분석부(120)는 비교 대상 소프트웨어의 소스코드가 존재하는 경우에, 동적 분석부(110)에 의해 암호화 또는 실행압축이 해제된 측정 대상 소프트웨어에 대한 디컴파일을 통해 소스코스를 생성할 수 있다. 여기서, IDA(Interactive DisAssembler) Pro 등의 디스어셈블러를 통해 소스코드를 생성할 수 있다.Also, in the case where the source code of the comparison target software exists, the static analysis unit 120 generates a source course by decompiling the measurement target software whose encryption or decryption is canceled by the dynamic analysis unit 110 . Here, the source code can be generated through a disassembler such as an IDA (Interactive Disassembler) Pro.

유사도 산출부(130)는 정적 분석부(120)에 의해 추출된 버스마크와 비교 대상 소프트웨어의 버스마크를 비교하여 유사도를 산출한다. 또는, 유사도 산출부(130)는 측정 대상 소프트웨어로부터 생성된 소스코드와 비교 대상 소프트웨어의 소스코드를 비교하여 유사도를 산출한다.The similarity calculating unit 130 compares the bus mark extracted by the static analyzing unit 120 with the bus mark of the comparison target software to calculate the similarity. Alternatively, the similarity calculation unit 130 compares the source code generated from the measurement target software with the source code of the comparison target software, and calculates the similarity.

이러한 유사도 산출부(130)는 산출된 유사도 값이 출력될 수 있는 출력 인터페이스를 포함할 수 있다. 예컨대, 출력 인터페이스는 산출된 유사도 값이 데이터 파일 형태로 출력되는 외부 인터페이스, 산출된 유사도 값이 송신되는 통신모듈, 산출된 유사도 값이 화면 데이터 형태로 출력되는 표시창 등을 포함할 수 있다.The similarity calculation unit 130 may include an output interface through which the calculated similarity value can be output. For example, the output interface may include an external interface for outputting the calculated similarity value in the form of a data file, a communication module for transmitting the calculated similarity value, and a display window for outputting the calculated similarity value in the form of screen data.

도 2는 일 실시예에 따른 소프트웨어 유사도 측정 방법을 설명하기 위한 흐름도이다.2 is a flowchart illustrating a method of measuring the degree of software similarity according to an exemplary embodiment of the present invention.

이에 나타낸 바와 같이 소프트웨어 유사도 측정 방법은 측정 대상 소프트웨어에 대해 동적 분석을 통해 상태를 확인한 후, 패킹 상태일 경우에는 실행압축을 해제함과 아울러 암호화 상태일 때는 복호화하여 해제하는 단계(S201 내지 S205)를 포함한다. 여기서, 동적 도구로서 DBI 툴(Dynamic Binary Instrumentation tool)을 사용하여 측정 대상 소프트웨어에 대해 패킹 상태 또는 언팩 상태를 확인할 수 있다. DBI 툴은 인텔(Intel)사에서 제작한 Pin Tool, DynamoRIO, 리눅스 기반의 Valgrind 등을 이용할 수 있다. 이러한 DBI 툴은 패킹되어 있거나 암호화된 컴퓨터프로그램을 실행하면서 실행프로그램을 분석하거나 추적할 수 있다.As shown in the figure, the software similarity measuring method includes steps (S201 to S205) of confirming the state of the software to be measured by dynamic analysis, releasing the execution compression when the state is a packing state, . Here, as a dynamic tool, a packing state or an unpacked state can be confirmed with respect to a measurement target software by using a DBI tool (Dynamic Binary Instrumentation tool). The DBI tools are available from Intel's Pin Tool, DynamoRIO, and Linux-based Valgrind. These DBI tools can analyze or track executable programs while running packed or encrypted computer programs.

그리고, 소프트웨어 유사도 측정 방법은 실행압축 해제된 측정 대상 소프트웨어의 바이너리 파일로부터 정적 분석을 통해 버스마크를 추출하는 단계(S207 내지 S213)를 더 포함한다. 이를 위해, 정적 도구를 사용하여 측정 대상 소프트웨어의 컴파일러 종류를 추출한 후, 추출된 컴파일러 종류로 컴파일하여 바이너리 파일을 생성할 수 있다. 여기서, 적용 옵션별로 컴파일하여 복수의 바이너리 파일을 생성할 수 있다. 아울러, 연산코드, API 호출 빈도, API 참조 순서, 제어 흐름 그래프, 또는 호출 그래프 중에서 적어도 어느 하나를 버스마크로서 추출할 수 있다. 또, 바이너리 파일로부터 함수 단위 기준으로 연산코드를 추출할 수 있다. 여기서, 함수를 호출할 때에 API를 제외하고 연산코드를 추출할 수 있으며, IAT를 통하여 API 여부를 판단할 수 있다.The software similarity measuring method further includes a step (S207 to S213) of extracting a bus mark from a binary file of the execution target decompressed software through static analysis. To do this, you can use a static tool to extract the compiler type of the target software and then compile it into the extracted compiler type to generate a binary file. Here, it is possible to generate a plurality of binary files by compiling each application option. At least one of the operation code, API call frequency, API reference order, control flow graph, or call graph can be extracted as a bus mark. In addition, an operation code can be extracted from a binary file on the basis of a function unit. Here, when calling the function, the operation code can be extracted except for the API, and it is possible to judge whether the API is through the IAT.

아울러, 소프트웨어 유사도 측정 방법은 비교 대상 소프트웨어의 상태를 확인하여 소스코드 및 바이너리 파일이 존재하는지를 판단하는 단계(S221, S223, S231)를 더 포함한다.In addition, the software similarity measuring method further includes steps (S221, S223, S231) for determining whether the source code and the binary file exist by confirming the status of the comparison target software.

그리고, 소프트웨어 유사도 측정 방법은 비교 대상 소프트웨어의 소스코드가 존재하는 경우에, 암호화 또는 실행압축이 해제된 측정 대상 소프트웨어에 대한 디컴파일을 통해 소스코스를 생성하는 단계(S225)를 더 포함한다.And, the software similarity measuring method further includes a step (S225) of generating a source course through decompilation of the measurement target software whose encryption or execution decompression is released when the source code of the comparison target software exists.

또, 소프트웨어 유사도 측정 방법은 비교 대상 소프트웨어의 바이너리 파일이 존재하지 않으면 적용 옵션별로 컴파일하여 복수의 바이너리 파일을 생성하는 단계(S233)를 더 포함한다.The software similarity measuring method further includes a step (S233) of generating a plurality of binary files by compiling the binary files of the comparison target software according to the applicable options if the binary files of the comparison target software do not exist.

아울러, 소프트웨어 유사도 측정 방법은 비교 대상 소프트웨어의 바이너리 파일로부터 정적 분석을 통해 버스마크를 추출하는 단계(S235)를 더 포함한다. 이를 위해, 정적 도구를 사용하여 적용 옵션별로 컴파일하여 복수의 바이너리 파일을 생성할 수 있다. 아울러, 연산코드, API 호출 빈도, API 참조 순서, 제어 흐름 그래프, 또는 호출 그래프 중에서 적어도 어느 하나를 버스마크로서 추출할 수 있다. 또, 바이너리 파일로부터 함수 단위 기준으로 연산코드를 추출할 수 있다. 여기서, 함수를 호출할 때에 API를 제외하고 연산코드를 추출할 수 있으며, IAT를 통하여 API 여부를 판단할 수 있다.In addition, the software similarity measuring method further includes a step (S235) of extracting a bus mark from the binary file of the comparison target software through static analysis. To do this, you can create multiple binary files by compiling each application option using a static tool. At least one of the operation code, API call frequency, API reference order, control flow graph, or call graph can be extracted as a bus mark. In addition, an operation code can be extracted from a binary file on the basis of a function unit. Here, when calling the function, the operation code can be extracted except for the API, and it is possible to judge whether the API is through the IAT.

다음으로, 소프트웨어 유사도 측정 방법은 측정 대상 소프트웨어와 비교 대상 소프트웨어를 비교하여 유사도를 산출하는 단계(S240)를 더 포함한다. 여기서, 측정 대상 소프트웨어에서 추출된 버스마크와 비교 대상 소프트웨어의 버스마크를 비교하여 유사도를 산출할 수 있다. 예컨대, k-gram, Jaccard 계수, LCS(Longest Common Subsequence), CS(Cosine Similarity), GCS(Greatest Common Subsequence), SCS (Shortest Common Subsequence) 등의 유사도 비교 알고리즘을 사용하여 버스마크의 유사도를 산출할 수 있다. 또는, 측정 대상 소프트웨어의 소스코드와 비교 대상 소프트웨어의 소스코드를 비교하여 유사도를 산출할 수 있다. 예컨대, MOSS(Measure of Software Similarity) 등의 유사도 비교 알고리즘을 사용하여 소스코드의 유사도를 산출할 수 있다.Next, the software similarity measuring method further includes a step S240 of calculating the similarity by comparing the software to be measured and the comparison target software. Here, the similarity can be calculated by comparing the bus mark extracted from the software to be measured with the bus mark of the comparison target software. For example, the degree of similarity of bus marks is calculated using a similarity comparison algorithm such as k-gram, Jaccard coefficient, LCS (Longest Common Subsequence), CS (Cosine Similarity), GCS (Greatest Common Subsequence) . Alternatively, the similarity can be calculated by comparing the source code of the software to be measured and the source code of the comparison target software. For example, the degree of similarity of the source code can be calculated using a similarity comparison algorithm such as MOSS (Measure of Software Similarity).

이하, 도 1 및 도 2를 실시예에 따른 소프트웨어 유사도 측정 장치에 의해 수행되는 소프트웨어 유사도 측정 과정에 대해 더 자세히 살펴보기로 한다.Hereinafter, the software similarity measuring process performed by the software similarity measuring apparatus according to the embodiment will be described in more detail with reference to FIGS. 1 and 2. FIG.

먼저, 동적 분석부(110)는 입력된 측정 대상 소프트웨어에 대해 동적 분석을 통해 상태를 확인(S201)한 후, 암호화 상태(S203)일 경우에는 복화화하여 해제하는 처리(S207)를 하고, 패킹 상태(S205)일 경우에는 실행압축을 해제하는 처리(S207)를 한다.First, the dynamic analysis unit 110 confirms the state of the input measurement target software through dynamic analysis (S201), and if it is the encrypted state (S203), performs the process of deciphering and releasing (S207) In the case of the state (S205), the process of releasing the execution compression (S207) is performed.

여기서, 동적 분석부(110)는 동적 도구로서 DBI 툴을 사용하여 측정 대상 소프트웨어에 대해 암호화 상태 또는 패킹 상태를 확인할 수 있다. DBI 툴은 인텔(Intel)사에서 제작한 Pin Tool, DynamoRIO, 리눅스 기반의 Valgrind 등을 이용할 수 있다. 이러한 DBI 툴은 패킹되어 있거나 암호화된 컴퓨터프로그램을 실행하면서 실행프로그램을 분석하거나 추적할 수 있다.Here, the dynamic analysis unit 110 can confirm the encryption state or the packing state of the measurement target software using the DBI tool as a dynamic tool. The DBI tools are available from Intel's Pin Tool, DynamoRIO, and Linux-based Valgrind. These DBI tools can analyze or track executable programs while running packed or encrypted computer programs.

이러한 동적 분석부(110)는 어떤 정보를 분석 및 추적할 지를 미리 DLL로 작성한 다음에 DBI 툴을 구동하면서 측정 대상 소프트웨어를 입력 받는다. 즉, 측정 대상 소프트웨어가 PIN 툴 상에서 수행되는 것이다.The dynamic analyzer 110 prepares what information is to be analyzed and tracked in advance as a DLL, and then receives the software to be measured while driving the DBI tool. That is, the measurement target software is executed on the PIN tool.

예컨대, 동적 분석부(110)는 UPX(Ultimate Packer for eXecutables) 패커로 패킹된 컴퓨터프로그램에 대해 동적 도구를 사용해 언팩 여부를 판단할 수 있다. 동적으로 실행되는 기계어를 추적할 수 있는 PIN 툴 등의 동적 도구를 실행하여 도용이 의심되는 측정 대상 소프트웨어에 대해 패킹 상태인지 또는 언팩 상태인지를 확인하는 것이다. UPX 패커는 실행압축 해제 과정에서 GetProcAddress API를 호출하면서 언팩을 한다. 따라서, PIN 툴을 이용해서 GetProcAddress API 호출을 모니터링 하게 되면 GetProcAddress API 호출 시점이 확인 가능하고, 마지막으로 호출되는 GetProcAddress API를 알 수 있다. GetProcAddress API 호출이 끝난 후 OEP(Original Entry Point)로 점프하는 명령어가 수행되기 때문에 GetProcAddress API가 끝난 시점을 언팩 시점이라고 판단할 수 있다.For example, the dynamic analysis unit 110 can determine whether an unpacked computer program is packed with a UPX (Ultimate Packer for eXecutables) packer by using a dynamic tool. Run a dynamic tool, such as a PIN tool that can track dynamically running machine words, to determine if the stolen software is packed or unpacked. The UPX packer invokes the GetProcAddress API during uncompression, and unpacks it. Therefore, if you use the PIN tool to monitor the GetProcAddress API call, you can see when the GetProcAddress API call is made and the last called GetProcAddress API. Since the command to jump to the original entry point (OEP) is executed after the GetProcAddress API call is finished, the point at which the GetProcAddress API ends can be determined as the unpacking point.

다음으로, 정적 분석부(120)는 정적 도구를 사용하여 측정 대상 소프트웨어의 바이너리 파일을 생성한다.Next, the static analysis unit 120 generates a binary file of the measurement target software using the static tool.

이를 위해, 정적 분석부(120)는 측정 대상 소프트웨어의 컴파일러 종류를 추출(S209)한 후, 추출된 컴파일러 종류로 컴파일하여 바이너리 파일을 생성할 수 있다. 여기서, 적용 옵션별로 컴파일하여 복수의 바이너리 파일을 생성(S211)할 수 있다. 이때, 정적 분석부(120)는 GCC(GNU Compiler Collection) 툴, PEiD 툴, DIE(Detect It Easy) 툴 등의 정적 도구를 사용할 수 있다.For this purpose, the static analysis unit 120 may extract the compiler type of the measurement target software (S209), and then compile the extracted compiler type to generate the binary file. Here, it is possible to generate a plurality of binary files (S211) by compiling for each application option. At this time, the static analysis unit 120 may use a static tool such as a GCC (GNU Compiler Collection) tool, a PEiD tool, or a DIE (Detect It Easy) tool.

예컨대, GCC 툴은 최적화를 위해 여러 가지 옵션을 제공하는데, 이들 옵션을 일괄적으로 묶어 제공하는 '-0', '-01', '-02', '-03', '-0s' 등의 적용 옵션을 사용할 수 있다. '-0' 또는 '-01'를 사용할 경우는 만들어지는 오브젝트 또는 실행 파일의 크기를 작게 하면서, 컴파일 시간이 길지 않는 범위에서 최적화를 수행한다. '-02'를 사용할 경우는 코드의 수행시간을 빠르게 하지만, 코드의 크기가 많이 커지지 않는 범위에서 최적화를 수행한다. '-0s'를 사용할 경우는 '-02'에서 제공하는 모든 최적화 기능을 사용하지만, 코드의 크기를 증가시키는 최적화 기능을 제외하고 최적화를 수행한다. '-03'사용할 경우는 코드의 크기는 신경 쓰지 않으며, 오직 빠른 실행을 위해 최적화를 수행한다. 그러면, 적용 옵션인 '-0', '-01', '-02', '-03', '-0s' 등의 최적화 옵션별로 바이너리 파일이 각각 생성된다.For example, the GCC tool provides several options for optimization, such as '-0', '-01', '-02', '-03', '-0s', etc. Application options are available. When '-0' or '-01' is used, optimization is performed in a range where the compile time is not long, while reducing the size of an object or an executable to be created. The use of '-02' speeds up the execution time of the code, but optimizes the code so that the size does not increase much. When using '-0s', it uses all the optimizations provided by '-02', but performs optimizations except optimizations that increase the size of the code. '-03' does not care about the size of the code, only optimizes for faster execution. Then binary files are created for each optimization option such as '-0', '-01', '-02', '-03', and '-0s'.

이어서, 정적 분석부(120)는 단계 S207에서 확인된 바이너리 파일이나 단계 S211에서 생성된 바이너리 파일을 대상으로 하여 소프트웨어 버스마크를 추출(S213)한다. 여기서, 연산코드, API(Application Programming Interface) 호출 빈도, API 참조 순서, 제어 흐름 그래프, 또는 호출 그래프 중에서 적어도 어느 하나를 버스마크로서 추출할 수 있다.Subsequently, the static analysis unit 120 extracts the software bus mark from the binary file identified in step S207 or the binary file generated in step S211 (S213). Here, at least one of an operation code, an API (Application Programming Interface) calling frequency, an API reference order, a control flow graph, or a call graph can be extracted as a bus mark.

예컨대, 정적 분석부(120)는 바이너리 파일로부터 함수 단위 기준으로 연산코드를 추출할 수 있다. 여기서, 함수를 호출할 때에 API를 제외하고 연산코드를 추출할 수 있으며, IAT(Import Address Table)를 통하여 API 여부를 판단할 수 있다. 단계 S211에서 생성된 바이너리 파일은 사용된 옵션에 따라 연산코드의 구성이나 순서 등에서 차이가 발생할 수 있으며, 정적 분석부(120)는 생성된 복수의 바이너리 파일에 대해 각각 연산코드를 추출할 수 있다.For example, the static analysis unit 120 may extract an operation code on a function unit basis from a binary file. Here, when the function is called, the operation code can be extracted except for the API, and the API can be determined through the IAT (Import Address Table). The binary file generated in step S211 may differ in the structure and order of the operation code depending on the options used, and the static analysis unit 120 may extract the operation code for each generated plurality of binary files.

그리고, 정적 분석부(120)는 비교 대상 소프트웨어, 즉 도용이 된 것으로 예상되는 컴퓨터프로그램의 버스마크가 확보되지 않은 상태인 경우에는 비교 대상 소프트웨어에 대해 상태를 확인하여, 소스코드와 바이너리 파일이 존재하는지를 파악한다.In the case where the bus mark of the comparison target software, that is, the computer program expected to be stolen, is not secured, the static analysis unit 120 checks the status of the comparison target software, and the source code and the binary file exist .

여기서, 비교 대상 소프트웨어의 소스코드가 존재하는 경우에, 정적 분석부(120)는 단계 S207에서 처리된 바이너리 파일에 대한 디컴파일을 통해 비교 대상 소프트웨어의 소스코스를 생성할 수 있다. 여기서, IDA(Interactive DisAssembler) Pro 등의 디스어셈블러를 통해 소스코드를 생성할 수 있다.Here, when the source code of the comparison target software is present, the static analysis unit 120 can generate the source course of the comparison target software through decompilation of the binary file processed in step S207. Here, the source code can be generated through a disassembler such as an IDA (Interactive Disassembler) Pro.

아울러, 정적 분석부(120)는 비교 대상 소프트웨어의 바이너리 파일이 존재하지 않은 경우에, 정적 분석을 통해 소프트웨어 버스마크를 추출한다.In addition, when the binary file of the comparison target software does not exist, the static analysis unit 120 extracts the software bus mark through the static analysis.

예컨대, 정적 분석부(120)는 비교 대상 소프트웨어에 대한 컴파일을 통해 바이너리 파일을 생성하고, 그 바이너리 파일로부터 연산코드를 추출할 수 있습니다. 이 경우에는 컴파일 옵션에 따라 바이너리 파일의 구성이 달라질 수 있다. 비교 대상 소프트웨어의 바이너리 파일이 존재할 경우에는 그 바이너리 파일로부터 연산코드를 추출할 수 있으며, 사용된 컴파일러 및 컴파일 옵션을 확인할 수 있다.For example, the static analysis unit 120 can generate a binary file by compiling the comparison target software, and extract the operation code from the binary file. In this case, the configuration of the binary file may vary depending on the compile option. If the binary file of the comparison target software exists, the operation code can be extracted from the binary file, and the compiler and the compile option used can be checked.

다음으로, 유사도 산출부(130)는 측정 대상 소프트웨어와 비교 대상 소프트웨어를 비교하여 유사도를 산출한다.Next, the similarity calculating unit 130 compares the measurement target software with the comparison target software to calculate the similarity.

여기서, 유사도 산출부(130)는 측정 대상 소프트웨어의 버스마크와 비교 대상 소프트웨어의 버스마크를 비교하여 유사도를 산출하며, 산출된 유사도 값을 출력(S240)할 수 있다. 예컨대, 유사도 산출부(130)는 k-gram, Jaccard 계수, LCS, CS, GCS, SCS 등의 유사도 비교 알고리즘을 사용하여 버스마크의 유사도를 산출할 수 있다. 또, 유사도 산출부(130)는 산출된 유사도 값을 화면 데이터의 형태로 출력하거나 로그 파일 형태로 출력할 수 있다.Here, the similarity calculating unit 130 compares the bus mark of the software to be measured with the bus mark of the comparison target software, calculates the similarity, and outputs the calculated similarity value (S240). For example, the similarity calculating unit 130 may calculate the similarity of bus marks using a similarity comparison algorithm such as k-gram, Jaccard coefficient, LCS, CS, GCS, SCS, The similarity degree calculating unit 130 may output the calculated similarity value in the form of screen data or in the form of a log file.

또는, 유사도 산출부(130)는 단계 S225에서 생성된 측정 대상 소프트웨어의 소스코드와 비교 대상 소프트웨어의 소스코드를 비교하여 유사도를 산출하며, 산출된 유사도 값을 출력(S240)할 수 있다. 예컨대, 유사도 산출부(130)는 MOSS 등의 유사도 비교 알고리즘을 사용하여 소스코드의 유사도를 산출할 수 있다. 또, 유사도 산출부(130)는 산출된 유사도 값을 화면 데이터의 형태로 출력하거나 로그 파일 형태로 출력할 수 있다.Alternatively, the similarity calculating unit 130 may compare the source code of the measurement target software generated in step S225 with the source code of the comparison target software, calculate the similarity, and output the calculated similarity value (S240). For example, the similarity calculation unit 130 may calculate the similarity of the source code using a similarity comparison algorithm such as MOSS. The similarity calculating unit 130 may output the calculated similarity value in the form of screen data or in the form of a log file.

지금까지 설명한 바와 같이 실시예에 의하면, 도용이 의심되는 측정 대상 소프트웨어에 대한 동적 분석 및 정적 분석을 통해 비교 대상 소프트웨어와의 유사도를 산출한다. 동적 분석을 적용하여 암호화 또는 패킹된 소프트웨어를 대상으로 하여 유사도를 측정할 수 있으며, 정적 분석을 적용하여 유사도 측정의 한계가 없도록 한다. 아울러, 시스템 콜 함수의 수가 적거나 특징정보로 정의하기에 부적합할 경우에도 소프트웨어의 유사도를 측정할 수 있다.As described so far, according to the embodiment, the degree of similarity with the software to be compared is calculated through dynamic analysis and static analysis of the software to be measured that is suspected of theft. Dynamic analysis can be applied to measure the similarity of encrypted or packed software, and static analysis is applied to avoid the limitations of similarity measurement. In addition, the degree of similarity of software can be measured even when the number of system call functions is small or is not suitable for defining as feature information.

나아가, 컴파일러의 종류와 컴파일 최적화 옵션에 대한 영향을 고려할 수 있으며, 이 경우에는 버스마크가 컴파일에 의한 영향으로 인해 변경될 경우에도 소프트웨어의 유사도를 측정할 수 있다.Furthermore, you can take into account the type of compiler and its impact on compile optimization options, in which case the similarity of the software can be measured even if the bus mark is changed due to compilation impact.

본 명세서에 첨부된 블록도의 각 블록과 흐름도의 각 단계의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수도 있다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 블록도의 각 블록 또는 흐름도의 각 단계에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 블록도의 각 블록 또는 흐름도 각 단계에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 블록도의 각 블록 및 흐름도의 각 단계에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다. Each block of the block diagrams attached hereto and combinations of steps of the flowchart diagrams may be performed by computer program instructions. These computer program instructions may be loaded into a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus so that the instructions, which may be executed by a processor of a computer or other programmable data processing apparatus, And means for performing the functions described in each step are created. These computer program instructions may also be stored in a computer usable or computer readable memory capable of directing a computer or other programmable data processing apparatus to implement the functionality in a particular manner so that the computer usable or computer readable memory It is also possible for the instructions stored in the block diagram to produce a manufacturing item containing instruction means for performing the functions described in each block or flowchart of the block diagram. Computer program instructions may also be stored on a computer or other programmable data processing equipment so that a series of operating steps may be performed on a computer or other programmable data processing equipment to create a computer- It is also possible that the instructions that perform the processing equipment provide the steps for executing the functions described in each block of the block diagram and at each step of the flowchart.

또한, 각 블록 또는 각 단계는 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실시예들에서는 블록들 또는 단계들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들 또는 단계들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들 또는 단계들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.Also, each block or each step may represent a module, segment, or portion of code that includes one or more executable instructions for executing the specified logical function (s). It should also be noted that in some alternative embodiments, the functions mentioned in the blocks or steps may occur out of order. For example, two blocks or steps shown in succession may in fact be performed substantially concurrently, or the blocks or steps may sometimes be performed in reverse order according to the corresponding function.

이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.The foregoing description is merely illustrative of the technical idea of the present invention, and various changes and modifications may be made by those skilled in the art without departing from the essential characteristics of the present invention. Therefore, the embodiments disclosed in the present invention are intended to illustrate rather than limit the scope of the present invention, and the scope of the technical idea of the present invention is not limited by these embodiments. The scope of protection of the present invention should be construed according to the following claims, and all technical ideas within the scope of equivalents should be construed as falling within the scope of the present invention.

100 : 소프트웨어 유사도 측정 장치
110 : 동적 분석부
120 : 정적 분석부
130 : 유사도 산출부
100: Software similarity measuring device
110: Dynamic Analysis Unit
120: static analysis section
130:

Claims (18)

제 1 소프트웨어에 대해 동적 분석을 통해 상태를 확인한 후, 암호화 또는 실행압축을 해제하는 단계와,
상기 암호화 또는 실행압축이 해제된 제 1 소프트웨어의 바이너리 파일로부터 정적 분석을 통해 버스마크를 추출하는 단계와,
상기 추출된 버스마크와 제 2 소프트웨어의 버스마크를 비교하여 유사도를 산출하는 단계를 포함하는
소프트웨어 유사도 측정 방법.
Checking the status of the first software through dynamic analysis and then releasing encryption or execution decompression;
Extracting a bus mark from a binary file of the first software whose encryption or execution decompression is released through static analysis;
And comparing the extracted bus mark with a bus mark of the second software to calculate a degree of similarity
Software similarity measurement method.
제 1 항에 있어서,
상기 버스마크를 추출하는 단계는, 정적 도구를 사용하여 상기 제 1 소프트웨어의 컴파일러 종류를 추출한 후, 추출된 컴파일러 종류로 컴파일하여 상기 바이너리 파일을 생성하는
소프트웨어 유사도 측정 방법.
The method according to claim 1,
The step of extracting the bus mark may include extracting a compiler type of the first software using a static tool and then compiling the compiler into an extracted compiler type to generate the binary file
Software similarity measurement method.
제 2 항에 있어서,
상기 버스마크를 추출하는 단계는, 적용 옵션별로 컴파일하여 복수의 바이너리 파일을 생성하는
소프트웨어 유사도 측정 방법.
3. The method of claim 2,
The step of extracting the bus mark may include a step of generating a plurality of binary files by compiling each application option
Software similarity measurement method.
제 1 항에 있어서,
상기 버스마크를 추출하는 단계는, 연산코드, API(Application Programming Interface) 호출 빈도, API 참조 순서, 제어 흐름 그래프, 또는 호출 그래프 중에서 적어도 어느 하나를 상기 버스마크로서 추출하는
소프트웨어 유사도 측정 방법.
The method according to claim 1,
The step of extracting the bus mark may include extracting at least one of an operation code, an application programming interface (API) calling frequency, an API reference order, a control flow graph, and a call graph as the bus mark
Software similarity measurement method.
제 4 항에 있어서,
상기 버스마크를 추출하는 단계는, 상기 바이너리 파일로부터 함수 단위 기준으로 상기 연산코드를 추출하는
소프트웨어 유사도 측정 방법.
5. The method of claim 4,
The extracting of the bus mark may include extracting the operation code from the binary file on a function unit basis
Software similarity measurement method.
제 5 항에 있어서,
상기 버스마크를 추출하는 단계는, 함수를 호출할 때에 API를 제외하고 상기 연산코드를 추출하는
소프트웨어 유사도 측정 방법.
6. The method of claim 5,
The step of extracting the bus mark may include extracting the operation code except the API at the time of calling the function
Software similarity measurement method.
제 6 항에 있어서,
상기 버스마크를 추출하는 단계는, IAT(Import Address Table)를 통하여 상기 API 여부를 판단하는
소프트웨어 유사도 측정 방법.
The method according to claim 6,
The step of extracting the bus mark may include determining whether the API is an IAT (Import Address Table)
Software similarity measurement method.
제 1 항에 있어서,
상기 제 2 소프트웨어의 소스코드가 존재하는 경우에, 상기 암호화 또는 실행압축이 해제된 제 1 소프트웨어에 대한 디컴파일을 통해 소스코스를 생성하는 단계와,
상기 제 1 소프트웨어의 소스코드와 상기 제 2 소프트웨어의 소스코드를 비교하여 유사도를 산출하는 단계를 더 포함하는
소프트웨어 유사도 측정 방법.
The method according to claim 1,
Generating a source course through decompilation for the first software for which the encryption or execution decompression is released if the source code of the second software exists;
And comparing the source code of the first software with the source code of the second software to calculate the similarity
Software similarity measurement method.
제 1 항 내지 제 8 항 중 어느 한 항의 소프트웨어 유사도 측정 방법을 프로세서가 수행하도록 하기 위하여
컴퓨터 판독 가능한 기록매체에 저장된 컴퓨터 프로그램.
A method for measuring a software similarity measure according to any one of claims 1 to 8,
A computer program stored on a computer readable recording medium.
제 1 항 내지 제 8 항 중 어느 한 항의 소프트웨어 유사도 측정 방법을 프로세서가 수행하도록 하는
컴퓨터 프로그램이 저장된 컴퓨터 판독 가능한 기록매체.
A method for determining a software similarity measure according to any one of claims 1 to 8,
A computer-readable recording medium storing a computer program.
제 1 소프트웨어에 대해 동적 분석을 통해 상태를 확인한 후, 암호화 또는 실행압축을 해제하는 동적 분석부와,
상기 암호화 또는 실행압축이 해제된 제 1 소프트웨어의 바이너리 파일로부터 정적 분석을 통해 버스마크를 추출하는 정적 분석부와,
상기 추출된 버스마크와 제 2 소프트웨어의 버스마크를 비교하여 유사도를 산출하는 유사도 산출부를 포함하는
소프트웨어 유사도 측정 장치.
A dynamic analysis unit for checking the status of the first software through dynamic analysis and then releasing encryption or execution compression;
A static analysis unit for extracting a bus mark from the binary file of the first software whose encryption or execution compression is released through static analysis;
And a degree of similarity calculating unit for comparing the extracted bus mark with a bus mark of the second software to calculate a degree of similarity
Software similarity measuring device.
제 11 항에 있어서,
상기 정적 분석부는, 정적 도구를 사용하여 상기 제 1 소프트웨어의 컴파일러 종류를 추출한 후, 추출된 컴파일러 종류로 컴파일하여 상기 바이너리 파일을 생성하는
소프트웨어 유사도 측정 장치.
12. The method of claim 11,
The static analysis unit extracts a compiler type of the first software using a static tool, compiles the extracted compiler type into an extracted compiler type, and generates the binary file
Software similarity measuring device.
제 12 항에 있어서,
상기 정적 분석부는, 적용 옵션별로 컴파일하여 복수의 바이너리 파일을 생성하는
소프트웨어 유사도 측정 장치.
13. The method of claim 12,
The static analysis unit compiles a plurality of binary files according to application options
Software similarity measuring device.
제 11 항에 있어서,
상기 정적 분석부는, 연산코드, API(Application Programming Interface) 호출 빈도, API 참조 순서, 제어 흐름 그래프, 또는 호출 그래프 중에서 적어도 어느 하나를 상기 버스마크로서 추출하는
소프트웨어 유사도 측정 장치.
12. The method of claim 11,
The static analysis unit may extract at least one of an operation code, an application programming interface (API) calling frequency, an API reference order, a control flow graph, or a call graph as the bus mark
Software similarity measuring device.
제 14 항에 있어서,
상기 정적 분석부는, 상기 바이너리 파일로부터 함수 단위 기준으로 상기 연산코드를 추출하는
소프트웨어 유사도 측정 장치.
15. The method of claim 14,
The static analysis unit extracts the operation code based on a function unit from the binary file
Software similarity measuring device.
제 15 항에 있어서,
상기 정적 분석부는, 함수를 호출할 때에 API를 제외하고 상기 연산코드를 추출하는
소프트웨어 유사도 측정 장치.
16. The method of claim 15,
The static analysis unit extracts the operation code except the API at the time of calling the function
Software similarity measuring device.
제 16 항에 있어서,
상기 정적 분석부는, IAT(Import Address Table)를 통하여 상기 API 여부를 판단하는
소프트웨어 유사도 측정 장치.
17. The method of claim 16,
The static analysis unit may determine whether the API is available through an IAT (Import Address Table)
Software similarity measuring device.
제 11 항에 있어서,
상기 정적 분석부는, 상기 제 2 소프트웨어의 소스코드가 존재하는 경우에, 상기 암호화 또는 실행압축이 해제된 제 1 소프트웨어에 대한 디컴파일을 통해 소스코스를 생성하며,
상기 유사도 산출부는, 상기 제 1 소프트웨어의 소스코드와 상기 제 2 소프트웨어의 소스코드를 비교하여 유사도를 산출하는
소프트웨어 유사도 측정 장치.

12. The method of claim 11,
Wherein the static analysis unit generates a source course through decompilation for the first software in which the encryption or execution decompression is released when the source code of the second software exists,
Wherein the similarity calculating unit compares the source code of the first software with the source code of the second software to calculate the similarity
Software similarity measuring device.

KR1020150191066A 2015-12-31 2015-12-31 Method for detectiing similarity of software and apparatus therefor KR20170079961A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150191066A KR20170079961A (en) 2015-12-31 2015-12-31 Method for detectiing similarity of software and apparatus therefor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150191066A KR20170079961A (en) 2015-12-31 2015-12-31 Method for detectiing similarity of software and apparatus therefor

Publications (1)

Publication Number Publication Date
KR20170079961A true KR20170079961A (en) 2017-07-10

Family

ID=59355910

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150191066A KR20170079961A (en) 2015-12-31 2015-12-31 Method for detectiing similarity of software and apparatus therefor

Country Status (1)

Country Link
KR (1) KR20170079961A (en)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190031030A (en) * 2017-09-15 2019-03-25 주식회사 인사이너리 Method and system for identifying an open source software package based on binary files
KR20190037895A (en) * 2017-09-29 2019-04-08 주식회사 인사이너리 Method and system for identifying an open source software package based on binary files
KR20190112524A (en) * 2018-03-26 2019-10-07 한국과학기술원 Architecture-independent similarity measuring method for program function
KR20190113408A (en) 2018-03-28 2019-10-08 한국과학기술원 Emulation based security analysis method for embedded devices
KR20200095122A (en) 2019-01-31 2020-08-10 단국대학교 산학협력단 Apparatus and method for feature information extraction and similarity comparison of android app considering obfuscation
KR20220083214A (en) * 2020-12-11 2022-06-20 한화시스템 주식회사 Protocol message format reversing apparatus and method thereof
CN115145633A (en) * 2022-07-25 2022-10-04 杭州师范大学 Code error automatic detection method based on control flow graph

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190031030A (en) * 2017-09-15 2019-03-25 주식회사 인사이너리 Method and system for identifying an open source software package based on binary files
KR20190037895A (en) * 2017-09-29 2019-04-08 주식회사 인사이너리 Method and system for identifying an open source software package based on binary files
US10296326B2 (en) 2017-09-29 2019-05-21 Insignary Inc. Method and system for identifying open-source software package based on binary files
KR20190112524A (en) * 2018-03-26 2019-10-07 한국과학기술원 Architecture-independent similarity measuring method for program function
KR20190113408A (en) 2018-03-28 2019-10-08 한국과학기술원 Emulation based security analysis method for embedded devices
KR20200095122A (en) 2019-01-31 2020-08-10 단국대학교 산학협력단 Apparatus and method for feature information extraction and similarity comparison of android app considering obfuscation
KR20220083214A (en) * 2020-12-11 2022-06-20 한화시스템 주식회사 Protocol message format reversing apparatus and method thereof
CN115145633A (en) * 2022-07-25 2022-10-04 杭州师范大学 Code error automatic detection method based on control flow graph

Similar Documents

Publication Publication Date Title
KR20170079961A (en) Method for detectiing similarity of software and apparatus therefor
US10409574B2 (en) Incremental whole program compilation of code
TWI791418B (en) Systems and methods for detection of malicious code in runtime generated code, and related computer program product
EP3161642B1 (en) Techniques for edit-and-continue and enhanced optimized debugging on optimized code
US10007784B2 (en) Technologies for control flow exploit mitigation using processor trace
US8671397B2 (en) Selective data flow analysis of bounded regions of computer software applications
US11119798B2 (en) Applying control flow integrity verification in intermediate code files
KR101920597B1 (en) Dynamic code extraction based automatic anti-analysis evasion and code logic analysis Apparatus
US20170024230A1 (en) Method, apparatus, and computer-readable medium for ofuscating execution of an application on a virtual machine
KR102006242B1 (en) Method and system for identifying an open source software package based on binary files
CN109522235B (en) A method of privacy leak detection for Android dynamic loading
Wang et al. Binary code retrofitting and hardening using SGX
Schrittwieser et al. Covert Computation—Hiding code in code through compile-time obfuscation
CN105279091A (en) According-to-requirement tracking method based on dynamic taint analysis and device thereof
CN104680043A (en) Method and device for protecting executable file
Liu et al. Fast numerical evaluation for symbolic expressions in Java
Kananizadeh et al. Development of dynamic protection against timing channels
KR101583306B1 (en) Analysis method and analysis apparatus of executable file applied virtualization obfuscation
CN107341403A (en) A kind of document conversion method and device
EP3547141B1 (en) Information processing apparatus, information processing method, and information processing program
Cesare et al. Static analysis of binaries
KR20170103279A (en) Device and method for configuring monitoring environment of application

Legal Events

Date Code Title Description
A201 Request for examination
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20151231

PA0201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20170111

Patent event code: PE09021S01D

AMND Amendment
E601 Decision to refuse application
PE0601 Decision on rejection of patent

Patent event date: 20170620

Comment text: Decision to Refuse Application

Patent event code: PE06012S01D

Patent event date: 20170111

Comment text: Notification of reason for refusal

Patent event code: PE06011S01I

PG1501 Laying open of application
AMND Amendment
PX0901 Re-examination

Patent event code: PX09011S01I

Patent event date: 20170620

Comment text: Decision to Refuse Application

Patent event code: PX09012R01I

Patent event date: 20170310

Comment text: Amendment to Specification, etc.

Patent event code: PX09012R01I

Patent event date: 20160105

Comment text: Amendment to Specification, etc.

PX0601 Decision of rejection after re-examination

Comment text: Decision to Refuse Application

Patent event code: PX06014S01D

Patent event date: 20170913

Comment text: Amendment to Specification, etc.

Patent event code: PX06012R01I

Patent event date: 20170818

Comment text: Decision to Refuse Application

Patent event code: PX06011S01I

Patent event date: 20170620

Comment text: Amendment to Specification, etc.

Patent event code: PX06012R01I

Patent event date: 20170310

Comment text: Notification of reason for refusal

Patent event code: PX06013S01I

Patent event date: 20170111

Comment text: Amendment to Specification, etc.

Patent event code: PX06012R01I

Patent event date: 20160105