KR20200095122A - Apparatus and method for feature information extraction and similarity comparison of android app considering obfuscation - Google Patents

Apparatus and method for feature information extraction and similarity comparison of android app considering obfuscation Download PDF

Info

Publication number
KR20200095122A
KR20200095122A KR1020190012824A KR20190012824A KR20200095122A KR 20200095122 A KR20200095122 A KR 20200095122A KR 1020190012824 A KR1020190012824 A KR 1020190012824A KR 20190012824 A KR20190012824 A KR 20190012824A KR 20200095122 A KR20200095122 A KR 20200095122A
Authority
KR
South Korea
Prior art keywords
app
comparison
similarity
sha
intent
Prior art date
Application number
KR1020190012824A
Other languages
Korean (ko)
Other versions
KR102149466B1 (en
Inventor
조성제
김병철
Original Assignee
단국대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 단국대학교 산학협력단 filed Critical 단국대학교 산학협력단
Priority to KR1020190012824A priority Critical patent/KR102149466B1/en
Publication of KR20200095122A publication Critical patent/KR20200095122A/en
Application granted granted Critical
Publication of KR102149466B1 publication Critical patent/KR102149466B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

The present invention provides a technique for an apparatus for extracting a feature point and the similarity to check whether an original app is used for an obfuscated Android application and a method thereof. The apparatus comprises: a feature extraction unit extracting an implicit intent component including an intent-filter in a lower tag in the AndroidManifest.xml of the comparison app; and a comparison unit calculating the similarity by comparing the information extracted by the feature extraction unit with the original app.

Description

난독화를 고려한 안드로이드 앱의 특징정보 추출 및 유사도 비교 장치 및 방법 {APPARATUS AND METHOD FOR FEATURE INFORMATION EXTRACTION AND SIMILARITY COMPARISON OF ANDROID APP CONSIDERING OBFUSCATION}Apparatus and method for extracting feature information and comparing similarity of Android app considering obfuscation {APPARATUS AND METHOD FOR FEATURE INFORMATION EXTRACTION AND SIMILARITY COMPARISON OF ANDROID APP CONSIDERING OBFUSCATION}

본 발명은 난독화를 고려한 안드로이드 앱의 특징정보 추출 및 유사도 비교 장치 및 방법에 관한 것으로서, 보다 상세하게는 난독화된 안드로이드 앱을 대상으로 도용, 불법복제, 오픈소스 소프트웨어 무단 사용 등 지식재산권의 침해를 확인하기 위하여, 특징점을 추출하고 유사도를 비교하는 장치 및 방법에 관한 기술이다.The present invention relates to an apparatus and method for extracting feature information of an Android app and comparing similarity in consideration of obfuscation, and more specifically, infringement of intellectual property rights such as theft, illegal copying, and unauthorized use of open source software for obfuscated Android apps. In order to confirm, this is a technology related to an apparatus and method for extracting feature points and comparing similarities.

안드로이드에서 게임 앱(application), 헬스케어 앱, 금융 앱 등은 영업 비밀, 개인 정보, 금융 정보(신용카드 번호 등) 등의 지적재산(Intellectual Property)을 포함하고 있다. 악의적 개발자는 지적재산 가치가 높은 앱을 불법으로 도용하여 유사 앱 또는 불법복제 앱을 개발한 다음, 자신들의 영업 이익을 위해 온라인 마켓을 통해 유포, 배포하기도 한다. 이러한 경우, 원래 개발자의 지적재산권을 보호하기 위해, 유사 앱이나 불법복제 앱을 탐지하여 차단해야 한다.In Android, game applications, healthcare apps, and financial apps contain intellectual property such as trade secrets, personal information, and financial information (credit card number, etc.). Malicious developers may develop similar or pirated apps by illegally stealing apps with high intellectual property value, and then disseminate and distribute them through online markets for their own business profit. In this case, in order to protect the intellectual property rights of the original developer, similar apps or illegally copied apps must be detected and blocked.

하지만, 악의적인 개발자는 원본을 불법 도용한 사실을 은폐하기 위해, 코드 난독화(code obfuscation)를 적용하기도 한다.However, malicious developers sometimes apply code obfuscation to conceal the fact that the original was illegally stolen.

코드 난독화는 소스코드나 실행코드를 해석하기 어렵게 만드는 기술을 의미한다. 난독화는 대상에 따라 크게 소스코드 난독화와 바이너리 난독화(실행코드 난독화)로 나눌 수 있다. 소스코드 난독화는 C/C++/JAVA 등의 소스코드를 알아보기 힘든 형태로 바꾸는 기술이고, 바이너리 난독화는 컴파일 후 생성된 바이너리를 역공학으로 분석하기 어렵게 변환하는 기술이다. 난독화 기법에는 레이아웃 난독화(layout obfuscation), 제어 난독화(제어흐름 난독화, control obfuscation = control flow obfuscation), 데이터 난독화(data obfuscation), 예방적 변환(preventive transformations) 등이 있다.Code obfuscation refers to a technique that makes it difficult to interpret source code or executable code. Obfuscation can be largely divided into source code obfuscation and binary obfuscation (executable code obfuscation) depending on the target. Source code obfuscation is a technology that converts source codes such as C/C++/JAVA into a form that is difficult to recognize, while binary obfuscation is a technology that makes it difficult to analyze the binary generated after compilation by reverse engineering. Obfuscation techniques include layout obfuscation, control obfuscation (control flow obfuscation = control flow obfuscation), data obfuscation, and preventive transformations.

한편 오픈소스(open-source)란, 어떤 제품을 개발하는 과정에 필요한 소스 코드나 설계도를 누구나 접근해서 열람할 수 있도록 공개하는 것이다. 일반적으로 소스가 공개된 소프트웨어를 오픈소스 소프트웨어라고 한다. 또한 소프트웨어 외에 개발 과정이나 설계도가 공개되는 하드웨어에도 오픈소스 모델이 적용될 수 있고, 글꼴과 같은 데이터에도 오픈소스 개발 모델이 적용되는 경우가 있다.On the other hand, open-source is to open source codes or blueprints necessary for the process of developing a product so that anyone can access and read it. In general, open source software is called open source software. In addition, in addition to software, the open source model can be applied to hardware in which the development process or blueprint is disclosed, and the open source development model is sometimes applied to data such as fonts.

오픈소스에는 단순히 소스를 공개만 하는 것이 있고, 2차 창작을 허용하는 것도 있다. 하지만, 상업적 이용까지 자유롭게 허용하지 않는 경우가 많다.Some open source simply disclose the source, while others allow secondary creation. However, it is often not allowed freely for commercial use.

도 1을 참조하면, 오픈소스로부터 파생된 2차 저작물을 포함하여 어떤 오픈소스를 이용(배포, 수정, 확장, 개선)하기 위해서는, 해당 오픈소스의 라이선스를 준수해야 한다. 대표적인 오픈소스 라이선스로는, GPL 2.0, GPL 3.0, LGPL, MIT, Apache, BSD, EPL, MPL 등이 있다. Referring to FIG. 1, in order to use (distribute, modify, expand, or improve) any open source, including secondary works derived from open source, the license of the corresponding open source must be observed. Representative open source licenses include GPL 2.0, GPL 3.0, LGPL, MIT, Apache, BSD, EPL, and MPL.

오픈소스의 라이선스를 준수하지 않고 이용하면 지식재산권 침해가 된다. 따라서 소프트웨어 개발 기업들은 자체적으로 제작된 소프트웨어를 대상으로 오픈소스가 이용되었는지 별도의 검증과정을 실시한다.If you use it without complying with the open source license, it infringes intellectual property rights. Therefore, software development companies conduct a separate verification process for their own software to see if open source has been used.

하지만, 악의적 사용자는 오픈소스의 라이선스를 무단으로 이용하기 위해, 난독화 기술을 적용하고 있다. 일반적으로 난독화된 코드는 원본 오픈소스와 단순 비교로는 적용 여부를 판단하기가 어렵다. 즉, 종래 여러 문자열을 버스마크(Birth mark)로 이용하여 문자열간의 비교를 통해 자동으로 유사도를 평가하는 기술도 적용할 수 없게 된다.However, malicious users are applying obfuscation technology in order to use open source licenses without permission. In general, it is difficult to determine whether obfuscated code is applied by simple comparison with the original open source. That is, conventional techniques for automatically evaluating similarity through comparison between character strings using various character strings as a bus mark cannot be applied.

따라서, 애플리케이션이 난독화 되더라도 오픈소스 소프트웨어의 적용 여부를 확인할 수 있는 기술이 필요하다. 특히 소스코드가 주어지지 않고 실행코드만 주어진 경우에도, 난독화된 실행코드가 오픈소스로부터 생성된 것인지 또는 새로이 작성된 것인지를 식별할 수 있는 기술이 필요하다.Therefore, even if the application is obfuscated, there is a need for a technology that can check whether the open source software is applied. In particular, even when the source code is not given and only the executable code is given, there is a need for a technology that can identify whether the obfuscated executable code is created from open source or newly written.

공개특허공보 제10-2017-0079961호Unexamined Patent Publication No. 10-2017-0079961

이에 본 발명은 상기와 같은 종래의 제반 문제점을 해소하기 위해 제안된 것으로, 본 발명의 목적은 난독화된 안드로이드 앱을 대상으로 도용, 불법복제, 오픈소스 소프트웨어 무단 사용 등 지식재산권의 침해를 확인하기 위하여, 특징점을 추출하고 유사도를 비교하는 장치 및 방법에 관한 기술을 제공하는 것을 과제로 한다.Accordingly, the present invention has been proposed to solve the problems of the prior art, and the object of the present invention is to check the infringement of intellectual property rights such as theft, illegal copying, and unauthorized use of open source software for obfuscated Android apps. For this purpose, it is an object to provide a technique for an apparatus and a method for extracting feature points and comparing similarities.

상기와 같은 목적을 달성하기 위하여 본 발명의 기술적 사상에 의한 난독화를 고려한 안드로이드 앱의 특징정보 추출 및 유사도 비교 장치는 원본 앱과 비교 앱의 AndroidManifest.xml에서 태그 계층구조 및 하위 태그에 인텐트필터(Intent-filter)를 포함하는 인텐트(Intent) 컴포넌트를 추출하는 특징추출부; 및 상기 특징추출부에서 추출된 상기 원본 앱과 상기 비교 앱의 정보를 대비하여 유사도를 산출하는 비교부를 포함하는 것을 특징으로 한다.In order to achieve the above object, an apparatus for extracting feature information and comparing similarity of an Android app considering obfuscation according to the technical idea of the present invention is an intent filter in the tag hierarchy and lower tags in AndroidManifest.xml of the original app and the comparison app. A feature extractor for extracting an intent component including an (Intent-filter); And a comparison unit for calculating a similarity by comparing the information of the original app and the comparison app extracted by the feature extraction unit.

또한, 상기 특징추출부는 깊이우선탐색(Depth-First Search, DFS)을 이용하여 상기 태그 계층구조를 추출하는 것을 특징으로 할 수 있다.In addition, the feature extraction unit may be characterized in that it extracts the tag hierarchy using a depth-first search (DFS).

또한, 상기 태그 계층구조의 특징을 이용하여 상기 원본 앱과 상기 비교 앱의 문자열(String)을 생성하는 변환부를 더 포함하는 것을 특징으로 할 수 있다.In addition, it may be characterized in that it further comprises a conversion unit for generating a string (String) of the original app and the comparison app by using the feature of the tag hierarchy.

또한, 상기 변환부는 상기 태그 계층구조의 문자열 중 상기 인텐트 컴포넌트와 관련된 문자 위치에 상기 인텐트 컴포넌트의 이름(name)을 추가하는 것을 특징으로 할 수 있다.In addition, the conversion unit may be characterized in that adding a name of the intent component to a character position related to the intent component in the string of the tag hierarchy.

또한, 상기 변환부는 상기 인텐트 컴포넌트의 이름을 기 설정된 문자열 길이로 변환하는 것을 특징으로 할 수 있다.In addition, the conversion unit may be characterized in that it converts the name of the intent component into a preset string length.

또한, 상기 변환부는 상기 인텐트 컴포넌트의 이름을 해시함수로 시그니처(signature)화 하는 것을 특징으로 할 수 있다.In addition, the conversion unit may be characterized in that the name of the intent component is signed with a hash function.

또한, 상기 해시함수는 MD5, SHA-1, SHA-2(SHA-224, SHA-256, SHA-384, SHA-512), SHA-3 중 하나인 것을 특징으로 할 수 있다.In addition, the hash function may be one of MD5, SHA-1, SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512), and SHA-3.

또한, 상기 비교부는 상기 변환부가 생성한 비교 앱의 문자열과, 상기 원본 앱을 이용하여 생성된 문자열을 최장공통부분수열(Longest Common Subsequence, LCS) 알고리즘으로 비교하여 유사도를 산출하는 것을 특징으로 할 수 있다.In addition, the comparison unit may be characterized in that the comparison unit calculates the similarity by comparing the character string of the comparison app generated by the conversion unit and the character string generated using the original app with a Longest Common Subsequence (LCS) algorithm. have.

한편, 상기와 같은 목적을 달성하기 위하여 본 발명의 기술적 사상에 의한 난독화를 고려한 안드로이드 앱의 특징정보 추출 및 유사도 비교 방법은 특징추출부가 원본 앱과 비교 앱의 AndroidManifest.xml에서 태그 계층구조 및 하위 태그에 인텐트필터(Intent-filter)를 포함하는 인텐트(Intent) 컴포넌트를 추출하는 단계; 및 비교부가 상기 특징추출부에서 추출된 상기 원본 앱과 상기 비교 앱의 정보를 대비하여 유사도를 산출하는 단계를 포함하는 것을 특징으로 한다.On the other hand, in order to achieve the above object, in the method of extracting feature information and comparing similarity of an Android app in consideration of obfuscation according to the technical idea of the present invention, the feature extraction unit has a tag hierarchy and subordinate structure in AndroidManifest. Extracting an intent component including an intent-filter in the tag; And calculating a similarity by comparing the information of the original app and the comparison app extracted by the feature extraction unit by a comparison unit.

또한, 상기 특징추출부는 깊이우선탐색(Depth-First Search, DFS)을 이용하여 상기 태그 계층구조를 추출하는 것을 특징으로 할 수 있다.In addition, the feature extraction unit may be characterized in that it extracts the tag hierarchy using a depth-first search (DFS).

또한, 상기 비교부가 상기 특징추출부에서 추출된 상기 원본 앱과 상기 비교 앱의 정보를 대비하여 유사도를 산출하는 단계 전, 변환부가 상기 태그 계층구조의 특징을 이용하여 상기 원본 앱과 상기 비교 앱의 문자열(String)을 생성하는 단계를 더 포함하는 것을 특징으로 할 수 있다.In addition, before the step of calculating the similarity by comparing the information of the original app and the comparison app extracted by the feature extraction unit by the comparison unit, the conversion unit uses the tag hierarchy feature to determine the comparison between the original app and the comparison app. It may be characterized in that it further comprises the step of generating a string (String).

또한, 상기 변환부는 상기 태그 계층구조의 문자열 중 상기 인텐트 컴포넌트와 관련된 문자 위치에 상기 인텐트 컴포넌트의 이름(name)을 추가하는 것을 특징으로 할 수 있다.In addition, the conversion unit may be characterized in that adding a name of the intent component to a character position related to the intent component in the string of the tag hierarchy.

또한, 상기 변환부는 상기 인텐트 컴포넌트의 이름을 기 설정된 문자열 길이로 변환하는 것을 특징으로 할 수 있다.In addition, the conversion unit may be characterized in that it converts the name of the intent component into a preset string length.

또한, 상기 변환부는 상기 인텐트 컴포넌트의 이름을 해시함수로 시그니처(signature)화 하는 것을 특징으로 할 수 있다.In addition, the conversion unit may be characterized in that the name of the intent component is signed with a hash function.

또한, 상기 해시함수는 MD5, SHA-1, SHA-2(SHA-224, SHA-256, SHA-384, SHA-512), SHA-3 중 하나인 것을 특징으로 할 수 있다.In addition, the hash function may be one of MD5, SHA-1, SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512), and SHA-3.

또한, 상기 비교부는 상기 변환부가 생성한 비교 앱의 문자열과, 상기 원본 앱을 이용하여 생성된 문자열을 최장공통부분수열(Longest Common Subsequence, LCS) 알고리즘으로 비교하여 유사도를 산출하는 것을 특징으로 할 수 있다.In addition, the comparison unit may be characterized in that the comparison unit calculates the similarity by comparing the character string of the comparison app generated by the conversion unit and the character string generated using the original app with a Longest Common Subsequence (LCS) algorithm. have.

본 발명에 의한 상기와 같은 목적을 달성하기 위하여 본 발명의 기술적 사상에 의한 난독화를 고려한 안드로이드 앱의 특징정보 추출 및 유사도 비교 장치 및 방법에 따르면,In order to achieve the above object according to the present invention, according to an apparatus and method for extracting feature information and comparing similarity of an Android app in consideration of obfuscation according to the technical idea of the present invention,

첫째, 난독화의 영향을 받지 않는 태그 계층구조와 난독화 되지 않는 인텐트의 컴포넌트 이름을 비교하므로, 무단 도용, 불법복제, 오픈소스 소프트웨어 무단 사용 등 지식재산권을 침해한 앱이 난독화된 경우에도 원본 앱과의 유사도를 매우 정확하게 산정할 수 있다.First, since the tag hierarchy that is not affected by obfuscation is compared with the component name of the intent that is not obfuscated, even if the app infringing intellectual property rights such as unauthorized theft, illegal copying, and unauthorized use of open source software is obfuscated. The similarity to the original app can be calculated very accurately.

둘째, 컴포넌트의 이름을 해시함수(MD5, SHA-1, SHA-2, SHA-3 등)로 시그니처(signature)화하기 때문에 컴포넌트 이름이 유사도 상승에 기여하는 정도가 증대되고, 원본 앱과 비교 앱의 컴포넌트 이름이 상이한 경우에는 시그니처가 완전히 상이하게 변환되기 때문에 유사도 상승에 영향을 주지 않게 된다.Second, since the component name is signed with a hash function (MD5, SHA-1, SHA-2, SHA-3, etc.), the degree to which the component name contributes to the increase in similarity increases, and the comparison app with the original app If the component names of are different, the signature is converted completely differently, so it does not affect the increase of similarity.

셋째, 원본 앱을 무단으로 이용한 애플리케이션은 멀웨어와 같은 악의적인 동작이 포함될 확률이 높으므로, 애플리케이션의 멀웨어 진단에도 기여할 수 있게 된다.Third, applications that use the original app without permission have a high probability of including malicious actions such as malware, and thus can contribute to the application's malware diagnosis.

도 1은 오픈소스 소프트웨어의 라이선스 종류를 나타낸 도면.
도 2는 본 발명의 실시예에 따른 난독화를 고려한 안드로이드 앱의 특징정보 추출 및 유사도 비교 장치의 구성도.
도 3은 예시 AndroidManifest.xml의 내용과 태그를 계층구조로 표현한 것을 나타낸 도면.
도 4는 원본 앱의 AndroidManifest.xml와, 오픈소스 적용 후 난독화된 비교 앱의 AndroidManifest.xml를 비교하여 나타낸 도면.
도 5는 종래기술의 방법으로 원본 앱의 컴포넌트 이름을 나열한 문자열과, 난독화된 비교 앱의 컴포넌트 이름을 나열한 문자열을 비교한 경우의 유사도 연산 결과를 나타낸 도면.
도 6은 AndroidManifest.xml에서 태그 계층구조를 부가하여 나타낸 도면.
도 7은 AndroidManifest.xml의 태그 계층구조가 서브트리로 변환되는 방법을 나타낸 도면.
도 8은 서브트리를 문자열(string)로 변환하고, 암시적 인텐트 컴포넌트의 이름이 관련 노드의 뒤에 추가된 것을 나타낸 도면.
도 9는 실험적으로 생성된 서브트리의 문자열을 나타낸 도면.
도 10은 원본 앱의 문자열과 비교 앱의 문자열을 이용하여 유사도를 연산하는 과정과 결과의 예시를 나타낸 도면.
도 11은 본 발명의 실시예에 따른 난독화를 고려한 안드로이드 앱의 특징정보 추출 및 유사도 비교 방법의 순서도.
1 is a diagram showing a license type of open source software.
2 is a configuration diagram of an apparatus for extracting feature information and comparing similarity of an Android app in consideration of obfuscation according to an embodiment of the present invention.
3 is a diagram showing the contents and tags of an example AndroidManifest.xml expressed in a hierarchical structure.
4 is a view showing a comparison of AndroidManifest.xml of the original app and AndroidManifest.xml of a comparison app obfuscated after applying open source.
FIG. 5 is a diagram showing a similarity calculation result when a string listing component names of an original app and a string listing component names of an obfuscated comparison app are compared by a conventional method.
6 is a diagram showing the tag hierarchy added in AndroidManifest.xml.
7 is a diagram showing a method of converting the tag hierarchy of AndroidManifest.xml into a subtree.
Fig. 8 is a diagram showing that a subtree is converted to a string, and the name of an implicit intent component is added after a related node.
9 is a diagram showing a character string of an experimentally generated subtree.
10 is a view showing an example of a process and result of calculating a similarity by using a character string of an original app and a character string of a comparison app.
11 is a flowchart of a method of extracting feature information and comparing similarity of an Android app in consideration of obfuscation according to an embodiment of the present invention.

첨부한 도면을 참조하여 본 발명의 실시예들에 의한 난독화를 고려한 안드로이드 앱의 특징정보 추출 및 유사도 비교 장치 및 방법에 대하여 상세히 설명한다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.An apparatus and method for extracting feature information and comparing similarity of an Android app in consideration of obfuscation according to embodiments of the present invention will be described in detail with reference to the accompanying drawings. The present invention can be applied to various changes and may have various forms, and specific embodiments will be illustrated in the drawings and described in detail in the text. However, this is not intended to limit the present invention to a specific disclosure form, it should be understood to include all modifications, equivalents, or substitutes included in the spirit and scope of the present invention. In describing each drawing, similar reference numerals are used for similar components.

또한, 다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.In addition, unless otherwise defined, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art to which the present invention belongs. Terms, such as those defined in a commonly used dictionary, should be interpreted as having meanings consistent with meanings in the context of related technologies, and should not be interpreted as ideal or excessively formal meanings unless explicitly defined in the present application. Does not.

본 발명의 실시예에 따른 난독화를 고려한 안드로이드 앱의 특징정보 추출 및 유사도 비교 장치는 하나의 컴퓨터 장치에 설치 운영되거나, 복수의 컴퓨터 장치에 분산 설치되고 유선 또는 무선으로 각 컴퓨터 장치가 서로 연결되어 연동되는 것으로 실시될 수 있다.The device for extracting feature information and comparing similarity of an Android app in consideration of obfuscation according to an embodiment of the present invention is installed and operated on one computer device, or is distributedly installed on a plurality of computer devices, and each computer device is connected to each other by wire or wirelessly. It can be implemented as being interlocked.

도 2를 참조하면, 본 발명의 실시예에 따른 안드로이드 앱의 특징정보 추출 및 유사도 비교 장치(100)는, 원본 앱과 비교 앱의 AndroidManifest.xml에서 태그 계층구조 및 하위 태그에 인텐트필터(Intent-filter)를 포함하는 인텐트(Intent) 컴포넌트를 추출하는 특징추출부(120)를 포함한다. 또한 특징추출부(120)에서 추출된 원본 앱과 비교 앱의 정보를 원본 앱과 비교하여 유사도를 산출하는 비교부(160)를 포함한다.Referring to FIG. 2, an apparatus 100 for extracting feature information and comparing similarity of an Android app according to an embodiment of the present invention includes an intent filter for tag hierarchy and lower tags in AndroidManifest.xml of the original app and the comparison app. -filter) and a feature extractor 120 for extracting an intent component. In addition, it includes a comparison unit 160 for calculating a similarity by comparing the information of the original app and the comparison app extracted by the feature extraction unit 120 with the original app.

이 실시예에 적용되는 비교 앱 및 원본 앱은 모두 AndroidManifest.xml을 포함한다.Both the comparison app and the original app applied to this embodiment include AndroidManifest.xml.

안드로이드 애플리케이션을 디컴파일하면, AndroidManifest.xml을 조회할 수 있다. AndroidManifest.xml은 안드로이드 시스템이 애플리케이션을 실행하기 전에 반드시 가지고 있어야할 정보이기 때문에 안드로이드 애플리케이션마다 존재한다. AndroidManifest.xml에는 애플리케이션의 패키지 이름, 애플리케이션의 컴포넌트들, 애플리케이션이 필요한 접근허가(permissions), 애플리케이션이 필요한 하드웨어 및 소프트웨어 등을 선언하는 태그(tag)들의 계층 구조를 갖는다.If you decompile the Android application, you can search AndroidManifest.xml. AndroidManifest.xml exists for each Android application because it is information that the Android system must have before executing the application. AndroidManifest.xml has a hierarchical structure of tags that declare the package name of the application, components of the application, permissions required by the application, hardware and software required by the application, etc.

AndroidManifest.xml은 레이어(Layer)에 들어갈 수 있는 내용이 정해져 있으며, 총 5개의 층 구조를 가진다. 각 층 구조에 포함되는 내용은 다른 층의 노드에 포함될 수 없다. 인텐트 필터(Intent-filter)의 경우 시작과 끝 태그를 4번째 레이어에 명시하게 되어있으며, 인텐트 필터에 포함되는 내용은 5번째 레이어에 작성된다.AndroidManifest.xml has a set of contents that can be entered into a layer, and has a total of five layers. Contents included in each layer structure cannot be included in nodes of other layers. In the case of an intent-filter, start and end tags are specified on the fourth layer, and the content included in the intent filter is written on the fifth layer.

도 3을 참조하면, <activity> 컴포넌트는 자신의 하위 태그(자식 태그)로 <intent-filter>를 갖는다. 상기 <activity> 컴포넌트의 부모 태그는 <application> 태그이며, 이 경우의 <intent-filter>는 암시적 인텐트(implicit intent)를 나타낸다. <activity> 컴포넌트 이름은 com.example.project.FreneticActivity이며, 이 중 FreneticActivity는 클래스(class) 명을 나타낸다. 이 실시예의 설명에서는, 하위 태그에 인텐트 필터를 포함하는 컴포넌트를 인텐트 컴포넌트로 정의한다.Referring to FIG. 3, the <activity> component has <intent-filter> as its lower tag (child tag). The parent tag of the <activity> component is the <application> tag, and in this case, the <intent-filter> represents an implicit intent. The <activity> component name is com.example.project.FreneticActivity, of which FreneticActivity represents the class name. In the description of this embodiment, a component including an intent filter in a lower tag is defined as an intent component.

안드로이드에서 인텐트(intent)는 임의 행위(arbitrary action)를 가진 메시지(message)로서, 모든 애플리케이션들에게 방송(broadcast)되거나, 특정 애플리케이션에 전송될 수 있다. 애플리케이션의 액티비티(activity) 컴포넌트, 서비스 컴포넌트, 브로드캐스트 수신자(broadcast receiver) 컴포넌트는 인텐트에 의해 활성화된다. 어떤 애플리케이션이 시스템에 인텐트를 발송(issue)하면, 시스템은 각 애플리케이션의 AndroidManifiest.xml에 있는 인텐트 필터 선언에 기반하여 해당 인텐트를 처리할 애플리케이션 컴포넌트를 지정한다. 즉 인텐트는 컴포넌트들 간의 통신이나 애플리케이션들 간의 통신에 사용되는 정보이므로 난독화에 강인하다.In Android, an intent is a message with an arbitrary action, and can be broadcast to all applications or transmitted to a specific application. The application's activity component, service component, and broadcast receiver component are activated by the intent. When an application issues an intent to the system, the system specifies the application component to process the intent based on the intent filter declaration in each application's AndroidManifiest.xml. In other words, since intent is information used for communication between components or between applications, it is robust against obfuscation.

원본 앱이란, 최초 개발자(원 개발자)가 제작한 애플리케이션 또는 오픈소스 애플리케이션 등으로, 지식재산권이나 저작권을 보유한 별도의 제작자가 존재하는 애플리케이션을 의미한다. 원본 앱에는 기성의 안드로이드 앱, 오픈소스 소프트웨어 등이 포함된다. 기성의 안드로이드 앱은 오픈마켓 등 온라인에 게시되어 다운로드 및 설치할 수 있는 기존의 애플리케이션을 의미한다. 오픈소스 소프트웨어는 안드로이드 환경의 오픈소스인 것이 바람직하다. 오픈소스는 누구나 접근해서 열람할 수 있도록 공개된 소스코드이다.The original app is an application created by the first developer (original developer) or an open source application, and means an application in which a separate creator who holds intellectual property rights or copyright exists. Original apps include ready-made Android apps and open source software. Ready-made Android apps refer to existing applications that can be downloaded and installed by being posted online, such as in open markets. It is desirable that the open source software is open source in the Android environment. Open source is an open source code that anyone can access and read.

비교 앱은 지식재산권이나 저작권을 침해한 것으로 의심되는 애플리케이션이다. 비교 앱에는 가짜 애플리케이션, 불법복제 애플리케이션, 라이선스를 위반하고 무단으로 오픈소스를 적용한 애플리케이션 등이 포함된다.Comparison apps are applications suspected of infringing intellectual property rights or copyrights. Comparison apps include fake applications, pirated applications, and applications that violate the license and apply open source without permission.

도 4를 참조하면, AndroidManifest.xml은 태그가 계층적으로 구성되어 있다. 각 태그는 서브트리(sub tree) 관점으로 볼 때 하나의 노드를 의미한다.Referring to FIG. 4, AndroidManifest.xml has tags hierarchically configured. Each tag represents one node from the perspective of a sub tree.

태그에는 하위 태그가 포함될 수 있는데, 이 하위 태그에는 상위 태그의 특징 또는 상세 설명이 포함된다. 하위 태그는 서브트리 관점으로 볼 때 상위 노드의 아래에 위치하는 하위 노드로 볼 수 있다. 하위 태그는 식별력을 제공하기 위해 상위 태그보다 들여쓰기 하여 작성되는 특징이 있다.The tag may contain child tags, which include the characteristics or detailed description of the parent tag. From the perspective of the subtree, the lower tag can be viewed as a lower node located below the upper node. The lower tag has the characteristic that it is created by indenting the upper tag to provide identification.

도시된 바와 같이, 코드가 난독화되면 AndroidManifest.xml의 내용도 난독화 될 수 있다. 이때, 코드는 소스코드와 실행코드를 모두 포함한다.As shown, if the code is obfuscated, the contents of AndroidManifest.xml may also be obfuscated. In this case, the code includes both source code and execution code.

도 5는 원본 앱과 비교 앱의 기능이 사실상 동일하지만, 비교 앱의 컴포넌트 이름(name)이 난독화된 것이 특징이다. 원본 앱 AndroidManifest.xml의 컴포넌트 이름과 난독화된 비교 앱 AndroidManifest.xml의 컴포넌트 이름을 어떠한 가공 없이 최장공통부분수열(Longest Common Subsequence, LCS) 알고리즘으로 비교하면, 난독화된 컴포넌트 이름에 의해 유사도가 불과 11.11% 밖에 나오지 않는 것을 확인할 수 있다.FIG. 5 is characterized in that the functions of the original app and the comparison app are substantially the same, but the component name of the comparison app is obfuscated. Comparing the component name of the original app AndroidManifest.xml and the obfuscated comparison If the component name of the app AndroidManifest.xml is compared with the Longest Common Subsequence (LCS) algorithm without any processing, the similarity is only due to the obfuscated component name. It can be seen that only 11.11% comes out.

도 6을 참조하면, 난독화된 코드에서 버스마크(Birthmark)가 될 수 있는 특징정보를 탐구한 결과, AndroidManifest.xml의 전체적인 계층구조와 인텐트(Intent) 컴포넌트의 이름이 난독화되지 않는 것을 발견하였다. 소프트웨어 버스마크란 소프트웨어를 식별할 수 있는 고유한 특징정보를 의미한다. 인텐트 컴포넌트의 이름이 난독화 되지 않는 이유는, 인텐트가 컴포넌트 간 통신 또는 다른 애플리케이션과 통신하는데 이용되는 정보이기 때문이다. 즉, 인텐트가 수정되면 애플리케이션이 올바로 구동되지 않을 수 있기 때문에 난독화 대상에서 제외된다. 따라서, 이 실시예의 특징추출부(120)는 AndroidManifest.xml에서 하위 태그에 인텐트필터(Intent-filter)를 포함하는 인텐트(Intent) 컴포넌트를 추출하여 특징정보로 이용한다.Referring to FIG. 6, as a result of exploring feature information that can become a busmark in obfuscated code, it was found that the overall hierarchy structure of AndroidManifest.xml and the name of the Intent component are not obfuscated. I did. The software bus mark refers to unique feature information that can identify software. The reason why the name of the intent component is not obfuscated is that the intent is information used to communicate between components or to communicate with other applications. In other words, if the intent is modified, the application may not run properly, so it is excluded from obfuscation. Accordingly, the feature extraction unit 120 of this embodiment extracts an intent component including an intent-filter in a lower tag from AndroidManifest.xml and uses it as feature information.

특징추출부(120)는 인텐트 컴포넌트의 파싱(parsing) 시 마침표, 쉼표, 따옴표와 같은 특수문자를 제거하고, 클래스의 이름만 추출한다.When parsing the intent component, the feature extractor 120 removes special characters such as periods, commas, and quotation marks, and extracts only the name of the class.

인텐트 컴포넌트에는 명시적 인텐트(Explicit intent)와 암시적 인텐트(Implicit intent)가 있다. 명시적 인텐트란 호출 대상 컴포넌트의 이름이 특정되는 인텐트를 의미한다. 명시적 인텐트는 컴포넌트 태그의 마지막에 export="true"가 명시된다. 암시적 인텐트란 호출 대상 컴포넌트의 특성만 나열되고, 특정 컴포넌트를 지정하지 않는 인텐트를 의미한다.There are two types of intent components: explicit intent and implicit intent. An explicit intent means an intent in which the name of the component to be called is specified. For explicit intents, export="true" is specified at the end of the component tag. Implicit intent refers to an intent in which only the properties of the component to be called are listed and no specific component is specified.

특징추출부(120)가 추출하는 정보에는 AndroidManifest.xml의 태그 계층구조가 더 포함된다. 태그 계층구조는 상위 태그와, 상위 태그에 포함되는 하위 태그의 구조적 특징을 의미한다The information extracted by the feature extractor 120 further includes a tag hierarchy of AndroidManifest.xml. The tag hierarchy refers to the structural characteristics of the upper tag and the lower tag included in the upper tag.

특징추출부(120)는 AndroidManifest.xml에서 상위 태그와 하위 태그 간의 관계가 들여쓰기로 표현된 특징을 이용하여 태그 계층구조를 추출한다. 예를 들어, 선단에 공백이 없는 태그는 제1수준의 태그, 공백이 2개인 태그는 제2수준의 태그, 공백이 4개인 태그는 제3수준의 태그, 공백이 6개인 태그는 제4수준의 태그, 공백이 8개인 태그는 제5수준의 태그로 설정할 수 있다. 제2수준의 태그는 모두 제1수준 태그의 하위에 위치한 것이다. 제3수준의 태그는 가장 최근 개시된 제2수준의 태그의 하위에 위치한 것이다.The feature extractor 120 extracts a tag hierarchy using features in which the relationship between the upper tag and the lower tag is expressed in indentation in AndroidManifest.xml. For example, a tag with no space at the tip is a first level tag, a tag with 2 spaces is a second level tag, a tag with 4 spaces is a third level tag, and a tag with 6 spaces is a fourth level The tag of and the tag with 8 spaces can be set as the fifth level tag. All the tags of the second level are located below the tags of the first level. The third level tag is located below the most recently disclosed second level tag.

도 7을 참조하면, 태그 계층구조는 서브트리(sub tree) 구조로 표현될 수 있다. 서브트리에서 각 태그는 하나의 노드를 구성한다. Level 1에는 제1수준의 태그가 위치하고, Level 2에는 각각의 제2수준의 태그가 위치한다. Level 3에는 제3수준의 태그가 관련된 제2수준의 태그 하위에 위치하게 된다.Referring to FIG. 7, the tag hierarchy may be expressed in a sub tree structure. Each tag in the subtree constitutes a node. The first level tag is located on Level 1, and the second level tag is located on Level 2. In Level 3, the tag of the third level is located under the tag of the second level related.

특징추출부(120)는 서브트리를 깊이우선탐색(Depth-First Search, DFS) 기법을 이용하여 AndroidManifest.xml에서 태그 계층구조를 추출한다.The feature extractor 120 extracts the tag hierarchy from AndroidManifest.xml using a depth-first search (DFS) technique for the subtree.

도 8을 참조하면, 이 실시예는 태그 계층구조의 특징을 이용하여 원본 앱과 비교 앱의 문자열(String)을 생성하는 변환부(140)를 더 포함한다. 이 실시예의 변환부(140)는 제1수준의 태그(노드)는 0BN, 제2수준의 태그는 2BN, 제3수준의 태그는 4BN으로 변환하였다. 예를 들어, 도 8에 개시된 서브트리를 문자열로 변환한다면 OBN2BN...2BN4BN6BN8BN6BN...4BN으로 표현될 수 있다.Referring to FIG. 8, this embodiment further includes a conversion unit 140 for generating a string of an original app and a comparison app by using the feature of the tag hierarchy. The conversion unit 140 of this embodiment converted the first level tag (node) to 0BN, the second level tag to 2BN, and the third level tag to 4BN. For example, if the subtree disclosed in FIG. 8 is converted into a character string, it can be expressed as OBN2BN...2BN4BN6BN8BN6BN...4BN.

변환부(140)는 태그 계층구조의 문자열 중 상기 인텐트 컴포넌트와 관련된 문자 위치에 인텐트 컴포넌트의 이름(name), 즉, Java의 클래스 이름을 추가한다. 예를 들어, 제3수준의 태그 중 하나가 인텐트 컴포넌트이면, 해당 태그를 의미하는 문자열 '4BN'과 이어지는 다음 문자열 사이에 인텐트 컴포넌트의 이름을 삽입한다. 도 7의 AndroidManifest.xml에는 인텐트 컴포넌트의 이름으로 'ArxivAppWidgetProvider'와 'arXiv'가 있다. 변환부(140)는 'ArxivAppWidgetProvider'를 문자열 중 A노드에 해당되는 문자 뒤에 삽입하고, 'arXiv'를 B노드에 해당되는 문자 뒤에 삽입한다.The conversion unit 140 adds the name of the intent component, that is, the Java class name, to a character position related to the intent component in the string of the tag hierarchy. For example, if one of the tags of the third level is an intent component, the name of the intent component is inserted between the string '4BN' representing the tag and the following string. AndroidManifest.xml of FIG. 7 includes'ArxivAppWidgetProvider' and'arXiv' as the names of intent components. The conversion unit 140 inserts'ArxivAppWidgetProvider' after the character corresponding to node A in the string, and inserts'arXiv' after the character corresponding to node B.

도 9를 참조하면, 변환부(140)는 문자열에 인텐트 컴포넌트의 이름을 삽입할 때, 전체 문자열의 길이가 불규칙하게 되는 것을 방지하기 위해, 인텐트 컴포넌트의 이름을 기 설정된 문자열 길이로 변환한다.Referring to FIG. 9, when inserting the name of the intent component into a string, the conversion unit 140 converts the name of the intent component into a preset string length in order to prevent the length of the entire string from becoming irregular. .

변환부(140)는 인텐트 컴포넌트의 이름을 해시함수로 시그니처(signature)화한다. 해시함수에는 MD5, SHA-1, SHA-2, SHA-3 중 하나가 될 수 있다. SHA-2에는 SHA-224, SHA-256, SHA-384, SHA-512 등이 포함된다.The conversion unit 140 signs the name of the intent component with a hash function. The hash function can be one of MD5, SHA-1, SHA-2, and SHA-3. SHA-2 includes SHA-224, SHA-256, SHA-384, SHA-512, and more.

도 9의 실시예는 모든 인텐트 컴포넌트의 이름을 SHA-256를 이용하여 65자의 시그니처로 변환하였다.In the example of FIG. 9, the names of all intent components are converted into 65-character signatures using SHA-256.

도 10을 참조하면, 비교부(160)는 변환부(140)가 생성한 비교 앱의 문자열과, 원본 앱을 이용하여 생성된 문자열을 최장공통부분수열(Longest Common Subsequence, LCS) 알고리즘으로 비교하여 유사도(similarity)를 산출한다.Referring to FIG. 10, the comparison unit 160 compares the character string of the comparison app generated by the conversion unit 140 and the character string generated using the original app with a Longest Common Subsequence (LCS) algorithm. Calculate the similarity.

최장공통부분수열 알고리즘은 가장 긴 문자열 길이에서 가장 긴 공통 문자열의 길이를 나누는 것으로 연산된다. 최장공통부분수열 알고리즘은 두 문자열의 구성요소가 부분적으로 같더라도 구성요소의 순서가 같지 않다면 같은 문자열로 탐지하지 않는다. 이때, 가장 긴 문자열 길이는 원본 앱의 전체 문자열이 되고, 가장 긴 공통 문자열의 길이는 원본 앱의 문자열과 비교 앱의 문자열 중 연속으로 동일한 가장 긴 문자열이 된다.The longest common subsequence algorithm is calculated by dividing the length of the longest common string from the longest string length. The longest common subsequence algorithm does not detect the same character string even if the elements of two character strings are partially the same, if the order of the elements is not the same. At this time, the longest string length becomes the entire string of the original app, and the longest common string length becomes the longest string that is consecutively identical among the strings of the original app and the comparison app.

비교부(160)는 난독화의 영향을 받지 않는 태그의 계층구조와, 난독화되지 않는 인텐트 컴포넌트의 이름만을 비교하므로, 원본 앱을 포함하는 비교 앱이 Code 난독화, Renaming 난독화, Control flow graph 난독화, String 난독화를 포함한 모든 난독화 기법을 적용하더라도 원본 앱과의 유사도를 매우 높게 진단할 수 있게 된다.The comparison unit 160 compares only the hierarchical structure of tags that are not affected by obfuscation and the names of intent components that are not obfuscated, so that the comparison app including the original app is code obfuscated, renaming obfuscated, and control flow. Even if all obfuscation techniques including graph obfuscation and string obfuscation are applied, the similarity to the original app can be diagnosed very high.

이어서, 본 발명의 실시예에 따른 난독화를 고려한 안드로이드 앱의 특징정보 추출 및 유사도 비교 방법을 설명한다.Next, a method of extracting feature information of an Android app and comparing similarity in consideration of obfuscation according to an embodiment of the present invention will be described.

도 11을 참조하면, 이 실시예는 특징추출부(120)가 원본 앱과 비교 앱의 AndroidManifest.xml에서 태그 계층구조 및 하위 태그에 인텐트필터(Intent-filter)를 포함하는 인텐트(Intent) 컴포넌트를 추출하는 단계(S120), 비교부(160)가 특징추출부(120)에서 추출된 원본 앱과 비교 앱의 정보를 대비하여 유사도를 산출하는 단계(S160)를 포함한다.Referring to FIG. 11, in this embodiment, in this embodiment, the feature extractor 120 includes an intent including an intent-filter in a tag hierarchy and a lower tag in AndroidManifest.xml of the original app and the comparison app. A step of extracting a component (S120), and a step (S160) of comparing the information of the comparison app with the original app extracted by the feature extractor 120 by the comparison unit 160 (S160).

특징추출부(120)는 태그 계층구조의 추출 시 깊이우선탐색(Depth-First Search, DFS)을 이용한다.The feature extraction unit 120 uses a depth-first search (DFS) when extracting a tag hierarchy.

또한, S160 단계 전, 변환부(140)가 태그 계층구조의 특징을 이용하여 원본 앱과 비교 앱의 문자열(String)을 생성하는 단계(S142)를 더 포함한다.In addition, before step S160, the conversion unit 140 further includes a step (S142) of generating a string (String) of the original app and the comparison app by using the feature of the tag hierarchy.

변환부(140)는 태그 계층구조의 문자열 중 인텐트 컴포넌트와 관련된 문자 위치에 인텐트 컴포넌트의 이름(name)을 추가한다(S144).The conversion unit 140 adds the name of the intent component to a character position related to the intent component in the string of the tag hierarchy (S144).

변환부(140)는 인텐트 컴포넌트의 이름을 기 설정된 문자열 길이로 변환한다. 예를 들어, 인텐트 컴포넌트의 이름을 해시함수로 시그니처(signature)화 할 수 있다. 이때, 해시함수는 MD5, SHA-1, SHA-2(SHA-224, SHA-256, SHA-384, SHA-512), SHA-3 중 하나가 될 수 있다.The conversion unit 140 converts the name of the intent component into a preset string length. For example, the name of the intent component can be signed with a hash function. At this time, the hash function may be one of MD5, SHA-1, SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512), and SHA-3.

S160 단계에서 비교부는 상기 변환부가 생성한 비교 앱의 문자열과, 상기 원본 앱을 이용하여 생성된 문자열을 최장공통부분수열(Longest Common Subsequence, LCS) 알고리즘으로 비교하여 유사도를 산출한다.In step S160, the comparison unit calculates a similarity by comparing the character string of the comparison app generated by the conversion unit and the character string generated using the original app using a Longest Common Subsequence (LCS) algorithm.

이 실시예의 방법은 앞서 설명된 난독화를 고려한 안드로이드 앱의 특징정보 추출 및 유사도 비교 장치(100) 실시예의 특징을 더 포함할 수 있다.The method of this embodiment may further include features of the embodiment of the apparatus 100 for extracting feature information of an Android app and comparing similarity in consideration of obfuscation described above.

이상에서 본 발명의 바람직한 실시예를 설명하였으나, 본 발명은 다양한 변화와 변경 및 균등물을 사용할 수 있다. 본 발명은 상기 실시예를 적절히 변형하여 동일하게 응용할 수 있음이 명확하다. 따라서 상기 기재 내용은 다음 특허청구범위의 한계에 의해 정해지는 본 발명의 범위를 한정하는 것이 아니다.Although the preferred embodiments of the present invention have been described above, the present invention can use various changes, modifications, and equivalents. It is clear that the present invention can be equally applied by appropriately modifying the above embodiments. Therefore, the above description does not limit the scope of the present invention determined by the limits of the following claims.

100 : 안드로이드 앱의 특징정보 추출 및 유사도 비교 장치
120 : 특징추출부 140 : 변환부
160 : 비교부
100: Android app feature information extraction and similarity comparison device
120: feature extraction unit 140: conversion unit
160: comparison unit

Claims (16)

원본 앱과 비교 앱의 AndroidManifest.xml에서 태그 계층구조 및 하위 태그에 인텐트필터(Intent-filter)를 포함하는 인텐트(Intent) 컴포넌트를 추출하는 특징추출부; 및
상기 특징추출부에서 추출된 상기 원본 앱과 상기 비교 앱의 정보를 대비하여 유사도를 산출하는 비교부를 포함하는 것을 특징으로 하는 안드로이드 앱의 특징정보 추출 및 유사도 비교 장치.
A feature extractor for extracting an intent component including an intent-filter in a tag hierarchy and a lower tag in AndroidManifest.xml of the original app and the comparison app; And
And a comparison unit for calculating a similarity by comparing the information of the original app extracted by the feature extraction unit and the comparison app.
제1항에 있어서,
상기 특징추출부는 깊이우선탐색(Depth-First Search, DFS)을 이용하여 상기 태그 계층구조를 추출하는 것을 특징으로 하는 안드로이드 앱의 특징정보 추출 및 유사도 비교 장치.
The method of claim 1,
The feature extracting unit extracts the tag hierarchy using a depth-first search (DFS). Feature information extraction and similarity comparison device for an Android app, characterized in that.
제1항에 있어서,
상기 태그 계층구조의 특징을 이용하여 상기 원본 앱과 상기 비교 앱의 문자열(String)을 생성하는 변환부를 더 포함하는 것을 특징으로 하는 안드로이드 앱의 특징정보 추출 및 유사도 비교 장치.
The method of claim 1,
An apparatus for extracting feature information and comparing similarity of an Android app, further comprising a conversion unit for generating a string of the original app and the comparison app by using the tag hierarchy feature.
제3항에 있어서,
상기 변환부는 상기 태그 계층구조의 문자열 중 상기 인텐트 컴포넌트와 관련된 문자 위치에 상기 인텐트 컴포넌트의 이름(name)을 추가하는 것을 특징으로 하는 안드로이드 앱의 특징정보 추출 및 유사도 비교 장치.
The method of claim 3,
And the conversion unit adds a name of the intent component to a character position related to the intent component in the string of the tag hierarchy.
제4항에 있어서,
상기 변환부는 상기 인텐트 컴포넌트의 이름을 기 설정된 문자열 길이로 변환하는 것을 특징으로 하는 안드로이드 앱의 특징정보 추출 및 유사도 비교 장치.
According to claim 4,
The device for extracting feature information and comparing similarity of an Android app, wherein the conversion unit converts the name of the intent component into a preset string length.
제5항에 있어서,
상기 변환부는 상기 인텐트 컴포넌트의 이름을 해시함수로 시그니처(signature)화 하는 것을 특징으로 하는 안드로이드 앱의 특징정보 추출 및 유사도 비교 장치.
The method of claim 5,
The conversion unit signature (signature) the name of the intent component with a hash function, the feature information extraction and similarity comparison device of an Android app, characterized in that.
제6항에 있어서,
상기 해시함수는 MD5, SHA-1, SHA-2(SHA-224, SHA-256, SHA-384, SHA-512), SHA-3 중 하나인 것을 특징으로 하는 안드로이드 앱의 특징정보 추출 및 유사도 비교 장치.
The method of claim 6,
The hash function is one of MD5, SHA-1, SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512), and SHA-3 feature information extraction and similarity comparison of Android apps. Device.
제3항에 있어서,
상기 비교부는 상기 변환부가 생성한 비교 앱의 문자열과, 상기 원본 앱을 이용하여 생성된 문자열을 최장공통부분수열(Longest Common Subsequence, LCS) 알고리즘으로 비교하여 유사도를 산출하는 것을 특징으로 하는 안드로이드 앱의 특징정보 추출 및 유사도 비교 장치.
The method of claim 3,
The comparison unit calculates a similarity by comparing the character string of the comparison app generated by the conversion unit and the character string generated using the original app with a Longest Common Subsequence (LCS) algorithm. Feature information extraction and similarity comparison device.
특징추출부가 원본 앱과 비교 앱의 AndroidManifest.xml에서 태그 계층구조 및 하위 태그에 인텐트필터(Intent-filter)를 포함하는 인텐트(Intent) 컴포넌트를 추출하는 단계; 및
비교부가 상기 특징추출부에서 추출된 상기 원본 앱과 상기 비교 앱의 정보를 대비하여 유사도를 산출하는 단계를 포함하는 것을 특징으로 하는 안드로이드 앱의 특징정보 추출 및 유사도 비교 방법.
Extracting, by a feature extraction unit, an intent component including an intent-filter in a tag hierarchy and a lower tag from AndroidManifest.xml of the original app and the comparison app; And
And calculating a similarity by comparing the information of the original app and the comparison app extracted by the feature extracting unit by a comparison unit, and calculating a similarity.
제9항에 있어서,
상기 특징추출부는 깊이우선탐색(Depth-First Search, DFS)을 이용하여 상기 태그 계층구조를 추출하는 것을 특징으로 하는 안드로이드 앱의 특징정보 추출 및 유사도 비교 방법.
The method of claim 9,
The feature extracting unit extracts the tag hierarchy using a depth-first search (DFS).
제9항에 있어서, 상기 비교부가 상기 특징추출부에서 추출된 상기 원본 앱과 상기 비교 앱의 정보를 대비하여 유사도를 산출하는 단계 전,
변환부가 상기 태그 계층구조의 특징을 이용하여 상기 원본 앱과 상기 비교 앱의 문자열(String)을 생성하는 단계를 더 포함하는 것을 특징으로 하는 안드로이드 앱의 특징정보 추출 및 유사도 비교 방법.
The method of claim 9, before the comparison unit calculating a similarity by comparing the information of the original app extracted from the feature extraction unit and the comparison app,
And generating, by a conversion unit, a string of the original app and the comparison app by using the feature of the tag hierarchy.
제11항에 있어서,
상기 변환부는 상기 태그 계층구조의 문자열 중 상기 인텐트 컴포넌트와 관련된 문자 위치에 상기 인텐트 컴포넌트의 이름(name)을 추가하는 것을 특징으로 하는 안드로이드 앱의 특징정보 추출 및 유사도 비교 방법.
The method of claim 11,
And the conversion unit adds a name of the intent component to a character position related to the intent component among the strings of the tag hierarchy.
제12항에 있어서,
상기 변환부는 상기 인텐트 컴포넌트의 이름을 기 설정된 문자열 길이로 변환하는 것을 특징으로 하는 안드로이드 앱의 특징정보 추출 및 유사도 비교 방법.
The method of claim 12,
The converting unit converts the name of the intent component into a preset string length, characterized in that the feature information extraction and similarity comparison method of an Android app.
제13항에 있어서,
상기 변환부는 상기 인텐트 컴포넌트의 이름을 해시함수로 시그니처(signature)화 하는 것을 특징으로 하는 안드로이드 앱의 특징정보 추출 및 유사도 비교 방법.
The method of claim 13,
The conversion unit signature (signature) the name of the intent component with a hash function, characterized in that the feature information extraction and similarity comparison method of an Android app.
제14항에 있어서,
상기 해시함수는 MD5, SHA-1, SHA-2(SHA-224, SHA-256, SHA-384, SHA-512), SHA-3 중 하나인 것을 특징으로 하는 안드로이드 앱의 특징정보 추출 및 유사도 비교 방법.
The method of claim 14,
The hash function is one of MD5, SHA-1, SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512), and SHA-3 feature information extraction and similarity comparison of Android apps. Way.
제10항에 있어서,
상기 비교부는 상기 변환부가 생성한 비교 앱의 문자열과, 상기 원본 앱을 이용하여 생성된 문자열을 최장공통부분수열(Longest Common Subsequence, LCS) 알고리즘으로 비교하여 유사도를 산출하는 것을 특징으로 하는 안드로이드 앱의 특징정보 추출 및 유사도 비교 방법.
The method of claim 10,
The comparison unit calculates a similarity by comparing the character string of the comparison app generated by the conversion unit and the character string generated using the original app with a Longest Common Subsequence (LCS) algorithm. Feature information extraction and similarity comparison method.
KR1020190012824A 2019-01-31 2019-01-31 Apparatus and method for feature information extraction and similarity comparison of android app considering obfuscation KR102149466B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190012824A KR102149466B1 (en) 2019-01-31 2019-01-31 Apparatus and method for feature information extraction and similarity comparison of android app considering obfuscation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190012824A KR102149466B1 (en) 2019-01-31 2019-01-31 Apparatus and method for feature information extraction and similarity comparison of android app considering obfuscation

Publications (2)

Publication Number Publication Date
KR20200095122A true KR20200095122A (en) 2020-08-10
KR102149466B1 KR102149466B1 (en) 2020-08-28

Family

ID=72049691

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190012824A KR102149466B1 (en) 2019-01-31 2019-01-31 Apparatus and method for feature information extraction and similarity comparison of android app considering obfuscation

Country Status (1)

Country Link
KR (1) KR102149466B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114489784A (en) * 2020-11-11 2022-05-13 腾讯科技(深圳)有限公司 Data processing method, data display method, server, terminal, and storage medium

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150044490A (en) * 2013-10-16 2015-04-27 (주)이스트소프트 A detecting device for android malignant application and a detecting method therefor
KR20150096061A (en) * 2014-02-14 2015-08-24 한국과학기술원 The device for analyzing a malware based on similarity
KR20150098935A (en) * 2014-02-21 2015-08-31 주식회사 안랩 Apparatus and method for detection of repackaging
KR20170077322A (en) * 2015-12-28 2017-07-06 연세대학교 원주산학협력단 Methods and devices for determining stability of an application
KR20170079961A (en) 2015-12-31 2017-07-10 단국대학교 산학협력단 Method for detectiing similarity of software and apparatus therefor

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150044490A (en) * 2013-10-16 2015-04-27 (주)이스트소프트 A detecting device for android malignant application and a detecting method therefor
KR20150096061A (en) * 2014-02-14 2015-08-24 한국과학기술원 The device for analyzing a malware based on similarity
KR20150098935A (en) * 2014-02-21 2015-08-31 주식회사 안랩 Apparatus and method for detection of repackaging
KR20170077322A (en) * 2015-12-28 2017-07-06 연세대학교 원주산학협력단 Methods and devices for determining stability of an application
KR20170079961A (en) 2015-12-31 2017-07-10 단국대학교 산학협력단 Method for detectiing similarity of software and apparatus therefor

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114489784A (en) * 2020-11-11 2022-05-13 腾讯科技(深圳)有限公司 Data processing method, data display method, server, terminal, and storage medium

Also Published As

Publication number Publication date
KR102149466B1 (en) 2020-08-28

Similar Documents

Publication Publication Date Title
Tian et al. Software plagiarism detection with birthmarks based on dynamic key instruction sequences
Linares-Vásquez et al. Revisiting android reuse studies in the context of code obfuscation and library usages
US9336381B1 (en) Entropy-based detection of sensitive information in code
US9898587B2 (en) Software protection using an installation product having an entitlement file
EP3455764B1 (en) Method and apparatus for dynamic executable verification
US20190182053A1 (en) Technology validation and ownership
Hachez A comparative study of software protection tools suited for e-commerce with contributions to software watermarking and smart cards
Zhu Concepts and techniques in software watermarking and obfuscation
CN112115473A (en) Method for security detection of Java open source assembly
KR102149466B1 (en) Apparatus and method for feature information extraction and similarity comparison of android app considering obfuscation
US20050289358A1 (en) Method and system for sensitive information protection in structured documents
Huang et al. Smart contract watermarking based on code obfuscation
Chan et al. Jsbirth: Dynamic javascript birthmark based on the run-time heap
Kim et al. A birthmark-based method for intellectual software asset management
Chen et al. Software watermarking for java program based on method name encoding
KR101604891B1 (en) Method for detection software piracy and theft using partial information of executable file and apparatus using the same
Kang et al. Softmark: software watermarking via a binary function relocation
Kim et al. Smartmark: Software watermarking scheme for smart contracts
Dalla Preda et al. Exploiting number theory for dynamic software watermarking
Buiras et al. Dynamic enforcement of dynamic policies
JP2020505708A (en) Ways to secure software code
Kumar et al. A comparative analysis of static java bytecode software watermarking algorithms
Yu et al. Vulnerability-oriented directed fuzzing for binary programs
KR101097105B1 (en) Method and system for interworking with sw sourcecode obfuscation and version control system
Kumar et al. A Comparative analysis of static and dynamic Java Bytecode watermarking algorithms

Legal Events

Date Code Title Description
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant