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 PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 39
- 238000000605 extraction Methods 0.000 title claims abstract description 25
- 238000006243 chemical reaction Methods 0.000 claims description 31
- 239000000284 extract Substances 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 238000007373 indentation Methods 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 230000003449 preventive effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 238000012795 verification Methods 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/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
-
- 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/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- 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
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
Description
본 발명은 난독화를 고려한 안드로이드 앱의 특징정보 추출 및 유사도 비교 장치 및 방법에 관한 것으로서, 보다 상세하게는 난독화된 안드로이드 앱을 대상으로 도용, 불법복제, 오픈소스 소프트웨어 무단 사용 등 지식재산권의 침해를 확인하기 위하여, 특징점을 추출하고 유사도를 비교하는 장치 및 방법에 관한 기술이다.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.
이에 본 발명은 상기와 같은 종래의 제반 문제점을 해소하기 위해 제안된 것으로, 본 발명의 목적은 난독화된 안드로이드 앱을 대상으로 도용, 불법복제, 오픈소스 소프트웨어 무단 사용 등 지식재산권의 침해를 확인하기 위하여, 특징점을 추출하고 유사도를 비교하는 장치 및 방법에 관한 기술을 제공하는 것을 과제로 한다.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
이 실시예에 적용되는 비교 앱 및 원본 앱은 모두 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
특징추출부(120)는 인텐트 컴포넌트의 파싱(parsing) 시 마침표, 쉼표, 따옴표와 같은 특수문자를 제거하고, 클래스의 이름만 추출한다.When parsing the intent component, the
인텐트 컴포넌트에는 명시적 인텐트(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
특징추출부(120)는 AndroidManifest.xml에서 상위 태그와 하위 태그 간의 관계가 들여쓰기로 표현된 특징을 이용하여 태그 계층구조를 추출한다. 예를 들어, 선단에 공백이 없는 태그는 제1수준의 태그, 공백이 2개인 태그는 제2수준의 태그, 공백이 4개인 태그는 제3수준의 태그, 공백이 6개인 태그는 제4수준의 태그, 공백이 8개인 태그는 제5수준의 태그로 설정할 수 있다. 제2수준의 태그는 모두 제1수준 태그의 하위에 위치한 것이다. 제3수준의 태그는 가장 최근 개시된 제2수준의 태그의 하위에 위치한 것이다.The
도 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
특징추출부(120)는 서브트리를 깊이우선탐색(Depth-First Search, DFS) 기법을 이용하여 AndroidManifest.xml에서 태그 계층구조를 추출한다.The
도 8을 참조하면, 이 실시예는 태그 계층구조의 특징을 이용하여 원본 앱과 비교 앱의 문자열(String)을 생성하는 변환부(140)를 더 포함한다. 이 실시예의 변환부(140)는 제1수준의 태그(노드)는 0BN, 제2수준의 태그는 2BN, 제3수준의 태그는 4BN으로 변환하였다. 예를 들어, 도 8에 개시된 서브트리를 문자열로 변환한다면 OBN2BN...2BN4BN6BN8BN6BN...4BN으로 표현될 수 있다.Referring to FIG. 8, this embodiment further includes a
변환부(140)는 태그 계층구조의 문자열 중 상기 인텐트 컴포넌트와 관련된 문자 위치에 인텐트 컴포넌트의 이름(name), 즉, Java의 클래스 이름을 추가한다. 예를 들어, 제3수준의 태그 중 하나가 인텐트 컴포넌트이면, 해당 태그를 의미하는 문자열 '4BN'과 이어지는 다음 문자열 사이에 인텐트 컴포넌트의 이름을 삽입한다. 도 7의 AndroidManifest.xml에는 인텐트 컴포넌트의 이름으로 'ArxivAppWidgetProvider'와 'arXiv'가 있다. 변환부(140)는 'ArxivAppWidgetProvider'를 문자열 중 A노드에 해당되는 문자 뒤에 삽입하고, 'arXiv'를 B노드에 해당되는 문자 뒤에 삽입한다.The
도 9를 참조하면, 변환부(140)는 문자열에 인텐트 컴포넌트의 이름을 삽입할 때, 전체 문자열의 길이가 불규칙하게 되는 것을 방지하기 위해, 인텐트 컴포넌트의 이름을 기 설정된 문자열 길이로 변환한다.Referring to FIG. 9, when inserting the name of the intent component into a string, the
변환부(140)는 인텐트 컴포넌트의 이름을 해시함수로 시그니처(signature)화한다. 해시함수에는 MD5, SHA-1, SHA-2, SHA-3 중 하나가 될 수 있다. SHA-2에는 SHA-224, SHA-256, SHA-384, SHA-512 등이 포함된다.The
도 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
최장공통부분수열 알고리즘은 가장 긴 문자열 길이에서 가장 긴 공통 문자열의 길이를 나누는 것으로 연산된다. 최장공통부분수열 알고리즘은 두 문자열의 구성요소가 부분적으로 같더라도 구성요소의 순서가 같지 않다면 같은 문자열로 탐지하지 않는다. 이때, 가장 긴 문자열 길이는 원본 앱의 전체 문자열이 되고, 가장 긴 공통 문자열의 길이는 원본 앱의 문자열과 비교 앱의 문자열 중 연속으로 동일한 가장 긴 문자열이 된다.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
이어서, 본 발명의 실시예에 따른 난독화를 고려한 안드로이드 앱의 특징정보 추출 및 유사도 비교 방법을 설명한다.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
특징추출부(120)는 태그 계층구조의 추출 시 깊이우선탐색(Depth-First Search, DFS)을 이용한다.The
또한, S160 단계 전, 변환부(140)가 태그 계층구조의 특징을 이용하여 원본 앱과 비교 앱의 문자열(String)을 생성하는 단계(S142)를 더 포함한다.In addition, before step S160, the
변환부(140)는 태그 계층구조의 문자열 중 인텐트 컴포넌트와 관련된 문자 위치에 인텐트 컴포넌트의 이름(name)을 추가한다(S144).The
변환부(140)는 인텐트 컴포넌트의 이름을 기 설정된 문자열 길이로 변환한다. 예를 들어, 인텐트 컴포넌트의 이름을 해시함수로 시그니처(signature)화 할 수 있다. 이때, 해시함수는 MD5, SHA-1, SHA-2(SHA-224, SHA-256, SHA-384, SHA-512), SHA-3 중 하나가 될 수 있다.The
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
이상에서 본 발명의 바람직한 실시예를 설명하였으나, 본 발명은 다양한 변화와 변경 및 균등물을 사용할 수 있다. 본 발명은 상기 실시예를 적절히 변형하여 동일하게 응용할 수 있음이 명확하다. 따라서 상기 기재 내용은 다음 특허청구범위의 한계에 의해 정해지는 본 발명의 범위를 한정하는 것이 아니다.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)
상기 특징추출부에서 추출된 상기 원본 앱과 상기 비교 앱의 정보를 대비하여 유사도를 산출하는 비교부를 포함하는 것을 특징으로 하는 안드로이드 앱의 특징정보 추출 및 유사도 비교 장치.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.
상기 특징추출부는 깊이우선탐색(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.
상기 태그 계층구조의 특징을 이용하여 상기 원본 앱과 상기 비교 앱의 문자열(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.
상기 변환부는 상기 태그 계층구조의 문자열 중 상기 인텐트 컴포넌트와 관련된 문자 위치에 상기 인텐트 컴포넌트의 이름(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.
상기 변환부는 상기 인텐트 컴포넌트의 이름을 기 설정된 문자열 길이로 변환하는 것을 특징으로 하는 안드로이드 앱의 특징정보 추출 및 유사도 비교 장치.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.
상기 변환부는 상기 인텐트 컴포넌트의 이름을 해시함수로 시그니처(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.
상기 해시함수는 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.
상기 비교부는 상기 변환부가 생성한 비교 앱의 문자열과, 상기 원본 앱을 이용하여 생성된 문자열을 최장공통부분수열(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.
비교부가 상기 특징추출부에서 추출된 상기 원본 앱과 상기 비교 앱의 정보를 대비하여 유사도를 산출하는 단계를 포함하는 것을 특징으로 하는 안드로이드 앱의 특징정보 추출 및 유사도 비교 방법.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.
상기 특징추출부는 깊이우선탐색(Depth-First Search, DFS)을 이용하여 상기 태그 계층구조를 추출하는 것을 특징으로 하는 안드로이드 앱의 특징정보 추출 및 유사도 비교 방법.The method of claim 9,
The feature extracting unit extracts the tag hierarchy using a depth-first search (DFS).
변환부가 상기 태그 계층구조의 특징을 이용하여 상기 원본 앱과 상기 비교 앱의 문자열(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.
상기 변환부는 상기 태그 계층구조의 문자열 중 상기 인텐트 컴포넌트와 관련된 문자 위치에 상기 인텐트 컴포넌트의 이름(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.
상기 변환부는 상기 인텐트 컴포넌트의 이름을 기 설정된 문자열 길이로 변환하는 것을 특징으로 하는 안드로이드 앱의 특징정보 추출 및 유사도 비교 방법.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.
상기 변환부는 상기 인텐트 컴포넌트의 이름을 해시함수로 시그니처(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.
상기 해시함수는 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.
상기 비교부는 상기 변환부가 생성한 비교 앱의 문자열과, 상기 원본 앱을 이용하여 생성된 문자열을 최장공통부분수열(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.
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)
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)
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 |
-
2019
- 2019-01-31 KR KR1020190012824A patent/KR102149466B1/en active IP Right Grant
Patent Citations (5)
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)
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 |