KR20170079961A - Method for detectiing similarity of software and apparatus therefor - Google Patents
Method for detectiing similarity of software and apparatus therefor Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 35
- 238000004458 analytical method Methods 0.000 claims abstract description 62
- 230000003068 static effect Effects 0.000 claims abstract description 49
- 238000000691 measurement method Methods 0.000 claims abstract description 11
- 230000006835 compression Effects 0.000 claims abstract description 8
- 238000007906 compression Methods 0.000 claims abstract description 8
- 239000000284 extract Substances 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 10
- 230000006837 decompression Effects 0.000 claims description 8
- 230000008676 import Effects 0.000 claims description 4
- 230000006870 function Effects 0.000 abstract description 21
- 238000005259 measurement Methods 0.000 abstract description 21
- 238000012856 packing Methods 0.000 abstract description 6
- 238000005457 optimization Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 206010004950 Birth mark Diseases 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3604—Analysis of software for verifying properties of programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/37—Compiler construction; Parser generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software 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
소프트웨어 유사도 측정 방법 및 장치에 관한 것으로, 더욱 상세하게는 소프트웨어의 도용 탐지에 이용할 수 있는 소프트웨어 유사도 측정 방법 및 장치에 관한 것이다.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.
종래 기술의 문제점을 해결하기 위해 제안한 것으로서, 동적 분석 및 정적 분석을 통해 소프트웨어의 유사도를 측정하는 소프트웨어 유사도 측정 장치 및 방법을 제공한다.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
동적 분석부(110)는 측정 대상 소프트웨어에 대해 동적 분석을 통해 상태를 확인한 후, 패킹 상태일 경우에는 실행압축을 해제하며, 암호화 상태일 경우에는 복호화하여 해제한다. 이러한 동적 분석부(110)는 측정 대상 소프트웨어가 입력될 수 있는 입력 인터페이스를 포함할 수 있다. 예컨대, 입력 인터페이스는 측정 대상 소프트웨어가 데이터 파일 형태로 입력되는 외부 인터페이스, 측정 대상 소프트웨어가 수신되는 통신모듈, 측정 대상 소프트웨어를 사용자가 입력할 수 있는 사용자 인터페이스 등을 포함할 수 있다.The
정적 분석부(120)는 암호화 또는 실행압축이 해제된 측정 대상 소프트웨어의 바이너리 파일로부터 정적 분석을 통해 버스마크를 추출한다. The
이러한 정적 분석부(120)는 정적 도구를 사용하여 측정 대상 소프트웨어의 컴파일러 종류를 추출한 후, 추출된 컴파일러 종류로 컴파일하여 바이너리 파일을 생성할 수 있다. 여기서, 적용 옵션별로 컴파일하여 복수의 바이너리 파일을 생성할 수 있다.The
아울러, 정적 분석부(120)는 연산코드(Opcode, operation code), API(Application Programming Interface) 호출 빈도, API 참조 순서, 제어 흐름 그래프, 또는 호출 그래프 중에서 적어도 어느 하나를 버스마크로서 추출할 수 있다.In addition, the
또, 정적 분석부(120)는 바이너리 파일로부터 함수 단위 기준으로 연산코드를 추출할 수 있다. 여기서, 함수를 호출할 때에 API를 제외하고 연산코드를 추출할 수 있으며, IAT(Import Address Table)를 통하여 API 여부를 판단할 수 있다.Also, the
또한, 정적 분석부(120)는 비교 대상 소프트웨어의 소스코드가 존재하는 경우에, 동적 분석부(110)에 의해 암호화 또는 실행압축이 해제된 측정 대상 소프트웨어에 대한 디컴파일을 통해 소스코스를 생성할 수 있다. 여기서, IDA(Interactive DisAssembler) Pro 등의 디스어셈블러를 통해 소스코드를 생성할 수 있다.Also, in the case where the source code of the comparison target software exists, the
유사도 산출부(130)는 정적 분석부(120)에 의해 추출된 버스마크와 비교 대상 소프트웨어의 버스마크를 비교하여 유사도를 산출한다. 또는, 유사도 산출부(130)는 측정 대상 소프트웨어로부터 생성된 소스코드와 비교 대상 소프트웨어의 소스코드를 비교하여 유사도를 산출한다.The
이러한 유사도 산출부(130)는 산출된 유사도 값이 출력될 수 있는 출력 인터페이스를 포함할 수 있다. 예컨대, 출력 인터페이스는 산출된 유사도 값이 데이터 파일 형태로 출력되는 외부 인터페이스, 산출된 유사도 값이 송신되는 통신모듈, 산출된 유사도 값이 화면 데이터 형태로 출력되는 표시창 등을 포함할 수 있다.The
도 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
여기서, 동적 분석부(110)는 동적 도구로서 DBI 툴을 사용하여 측정 대상 소프트웨어에 대해 암호화 상태 또는 패킹 상태를 확인할 수 있다. DBI 툴은 인텔(Intel)사에서 제작한 Pin Tool, DynamoRIO, 리눅스 기반의 Valgrind 등을 이용할 수 있다. 이러한 DBI 툴은 패킹되어 있거나 암호화된 컴퓨터프로그램을 실행하면서 실행프로그램을 분석하거나 추적할 수 있다.Here, the
이러한 동적 분석부(110)는 어떤 정보를 분석 및 추적할 지를 미리 DLL로 작성한 다음에 DBI 툴을 구동하면서 측정 대상 소프트웨어를 입력 받는다. 즉, 측정 대상 소프트웨어가 PIN 툴 상에서 수행되는 것이다.The
예컨대, 동적 분석부(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
다음으로, 정적 분석부(120)는 정적 도구를 사용하여 측정 대상 소프트웨어의 바이너리 파일을 생성한다.Next, the
이를 위해, 정적 분석부(120)는 측정 대상 소프트웨어의 컴파일러 종류를 추출(S209)한 후, 추출된 컴파일러 종류로 컴파일하여 바이너리 파일을 생성할 수 있다. 여기서, 적용 옵션별로 컴파일하여 복수의 바이너리 파일을 생성(S211)할 수 있다. 이때, 정적 분석부(120)는 GCC(GNU Compiler Collection) 툴, PEiD 툴, DIE(Detect It Easy) 툴 등의 정적 도구를 사용할 수 있다.For this purpose, the
예컨대, 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
예컨대, 정적 분석부(120)는 바이너리 파일로부터 함수 단위 기준으로 연산코드를 추출할 수 있다. 여기서, 함수를 호출할 때에 API를 제외하고 연산코드를 추출할 수 있으며, IAT(Import Address Table)를 통하여 API 여부를 판단할 수 있다. 단계 S211에서 생성된 바이너리 파일은 사용된 옵션에 따라 연산코드의 구성이나 순서 등에서 차이가 발생할 수 있으며, 정적 분석부(120)는 생성된 복수의 바이너리 파일에 대해 각각 연산코드를 추출할 수 있다.For example, the
그리고, 정적 분석부(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
여기서, 비교 대상 소프트웨어의 소스코드가 존재하는 경우에, 정적 분석부(120)는 단계 S207에서 처리된 바이너리 파일에 대한 디컴파일을 통해 비교 대상 소프트웨어의 소스코스를 생성할 수 있다. 여기서, IDA(Interactive DisAssembler) Pro 등의 디스어셈블러를 통해 소스코드를 생성할 수 있다.Here, when the source code of the comparison target software is present, the
아울러, 정적 분석부(120)는 비교 대상 소프트웨어의 바이너리 파일이 존재하지 않은 경우에, 정적 분석을 통해 소프트웨어 버스마크를 추출한다.In addition, when the binary file of the comparison target software does not exist, the
예컨대, 정적 분석부(120)는 비교 대상 소프트웨어에 대한 컴파일을 통해 바이너리 파일을 생성하고, 그 바이너리 파일로부터 연산코드를 추출할 수 있습니다. 이 경우에는 컴파일 옵션에 따라 바이너리 파일의 구성이 달라질 수 있다. 비교 대상 소프트웨어의 바이너리 파일이 존재할 경우에는 그 바이너리 파일로부터 연산코드를 추출할 수 있으며, 사용된 컴파일러 및 컴파일 옵션을 확인할 수 있다.For example, the
다음으로, 유사도 산출부(130)는 측정 대상 소프트웨어와 비교 대상 소프트웨어를 비교하여 유사도를 산출한다.Next, the
여기서, 유사도 산출부(130)는 측정 대상 소프트웨어의 버스마크와 비교 대상 소프트웨어의 버스마크를 비교하여 유사도를 산출하며, 산출된 유사도 값을 출력(S240)할 수 있다. 예컨대, 유사도 산출부(130)는 k-gram, Jaccard 계수, LCS, CS, GCS, SCS 등의 유사도 비교 알고리즘을 사용하여 버스마크의 유사도를 산출할 수 있다. 또, 유사도 산출부(130)는 산출된 유사도 값을 화면 데이터의 형태로 출력하거나 로그 파일 형태로 출력할 수 있다.Here, the
또는, 유사도 산출부(130)는 단계 S225에서 생성된 측정 대상 소프트웨어의 소스코드와 비교 대상 소프트웨어의 소스코드를 비교하여 유사도를 산출하며, 산출된 유사도 값을 출력(S240)할 수 있다. 예컨대, 유사도 산출부(130)는 MOSS 등의 유사도 비교 알고리즘을 사용하여 소스코드의 유사도를 산출할 수 있다. 또, 유사도 산출부(130)는 산출된 유사도 값을 화면 데이터의 형태로 출력하거나 로그 파일 형태로 출력할 수 있다.Alternatively, the
지금까지 설명한 바와 같이 실시예에 의하면, 도용이 의심되는 측정 대상 소프트웨어에 대한 동적 분석 및 정적 분석을 통해 비교 대상 소프트웨어와의 유사도를 산출한다. 동적 분석을 적용하여 암호화 또는 패킹된 소프트웨어를 대상으로 하여 유사도를 측정할 수 있으며, 정적 분석을 적용하여 유사도 측정의 한계가 없도록 한다. 아울러, 시스템 콜 함수의 수가 적거나 특징정보로 정의하기에 부적합할 경우에도 소프트웨어의 유사도를 측정할 수 있다.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 소프트웨어의 바이너리 파일로부터 정적 분석을 통해 버스마크를 추출하는 단계와,
상기 추출된 버스마크와 제 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 소프트웨어의 컴파일러 종류를 추출한 후, 추출된 컴파일러 종류로 컴파일하여 상기 바이너리 파일을 생성하는
소프트웨어 유사도 측정 방법.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.
상기 버스마크를 추출하는 단계는, 적용 옵션별로 컴파일하여 복수의 바이너리 파일을 생성하는
소프트웨어 유사도 측정 방법.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.
상기 버스마크를 추출하는 단계는, 연산코드, 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.
상기 버스마크를 추출하는 단계는, 상기 바이너리 파일로부터 함수 단위 기준으로 상기 연산코드를 추출하는
소프트웨어 유사도 측정 방법.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.
상기 버스마크를 추출하는 단계는, 함수를 호출할 때에 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.
상기 버스마크를 추출하는 단계는, 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.
상기 제 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.
컴퓨터 판독 가능한 기록매체에 저장된 컴퓨터 프로그램.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.
컴퓨터 프로그램이 저장된 컴퓨터 판독 가능한 기록매체.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 소프트웨어의 바이너리 파일로부터 정적 분석을 통해 버스마크를 추출하는 정적 분석부와,
상기 추출된 버스마크와 제 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.
상기 정적 분석부는, 정적 도구를 사용하여 상기 제 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.
상기 정적 분석부는, 적용 옵션별로 컴파일하여 복수의 바이너리 파일을 생성하는
소프트웨어 유사도 측정 장치.13. The method of claim 12,
The static analysis unit compiles a plurality of binary files according to application options
Software similarity measuring device.
상기 정적 분석부는, 연산코드, 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.
상기 정적 분석부는, 상기 바이너리 파일로부터 함수 단위 기준으로 상기 연산코드를 추출하는
소프트웨어 유사도 측정 장치.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.
상기 정적 분석부는, 함수를 호출할 때에 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.
상기 정적 분석부는, 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.
상기 정적 분석부는, 상기 제 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.
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)
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 |
-
2015
- 2015-12-31 KR KR1020150191066A patent/KR20170079961A/en active Search and Examination
Cited By (8)
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 |