KR20200060180A - Method of call graph extraction in android apps, recording medium and apparatus for performing the method - Google Patents
Method of call graph extraction in android apps, recording medium and apparatus for performing the method Download PDFInfo
- Publication number
- KR20200060180A KR20200060180A KR1020190007853A KR20190007853A KR20200060180A KR 20200060180 A KR20200060180 A KR 20200060180A KR 1020190007853 A KR1020190007853 A KR 1020190007853A KR 20190007853 A KR20190007853 A KR 20190007853A KR 20200060180 A KR20200060180 A KR 20200060180A
- Authority
- KR
- South Korea
- Prior art keywords
- call relationship
- function
- android app
- function call
- generating
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/53—Decompilation; Disassembly
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
Description
본 발명은 안드로이드 앱의 호출 관계도 생성 방법, 이를 수행하기 위한 기록매체 및 장치에 관한 것으로서, 더욱 상세하게는 안드로이드 앱의 자바(Java) 코드 및 네이티브(Native) 코드 상의 호출 관계도를 생성하는 안드로이드 앱의 호출 관계도 생성 방법, 이를 수행하기 위한 기록매체 및 장치에 관한 것이다.The present invention relates to a method for generating a call relationship diagram of an Android app, a recording medium and a device for performing the same, and more specifically, Android for generating a call relationship diagram on Java code and native code of an Android app The calling relationship of the app also relates to a method of generating, a recording medium and a device for performing the same.
안드로이드 앱의 호출 관계도 생성 방법으로는 안드로이드 앱의 실행파일인 DEX(Dalvik Excutable) 파일을 추출하고, DEX 파일의 바이너리를 사람이 읽을 수 있는 코드로 보여주는 smali 코드로 변환하여 자바(Java) 코드 상의 함수 간 호출 관계를 알아내는 방법이 있다.As a method of creating the calling relationship of the Android app, the DEX (Dalvik Excutable) file, which is the executable file of the Android app, is extracted, and the binary of the DEX file is converted into smali code showing as human-readable code. There is a way to find out the calling relationship between functions.
여기에서 DEX 바이너리를 smali 코드로 변환하기 위해 apktool을 사용하는데, 디코딩을 방지하는 난독화 기법이 적용된 안드로이드 앱의 경우, apktool이 디코딩에 실패하여 DEX 파일 분석이 불가능하다.Here, apktool is used to convert the DEX binary to smali code, but in the case of an Android app with an obfuscation technique that prevents decoding, apktool fails to decode and analysis of the DEX file is impossible.
또한 종래의 방식은 DEX 파일을 디컴파일하여 자바 코드 상의 함수 호출 관계를 추출하는 것으로, C/C++과 같은 네이티브(Native) 코드 상의 함수 호출 관계는 추출할 수 없다는 한계점이 있다.Also, the conventional method is to decompile a DEX file to extract a function call relationship on Java code, and there is a limitation that a function call relationship on native code such as C / C ++ cannot be extracted.
본 발명은 DEX 파일 구조에 따라 자바 코드 상의 호출 관계를 추출함으로써 난독화가 적용된 안드로이드 앱의 함수 호출 관계를 파악하고, 네이티브 코드 상의 호출 관계 또한 추출하여 자바 코드로부터 네이티브 코드를 호출하는 관계를 포함하는 안드로이드 앱의 호출 관계도를 생성하는 안드로이드 앱의 호출 관계도 생성 방법, 이를 수행하기 위한 기록매체 및 장치를 제공한다.The present invention grasps the function call relationship of the Android app to which obfuscation is applied by extracting the call relationship on the Java code according to the DEX file structure, and also extracts the call relationship on the native code and includes the relationship to call the native code from the Java code. Provided is a method for generating a call relationship diagram of an Android app for generating a call relationship diagram of an app, and a recording medium and a device for performing the same.
본 발명의 기술적 과제는 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.The technical problem of the present invention is not limited to the technical problem mentioned above, and other technical problems not mentioned will be clearly understood by those skilled in the art from the following description.
상기 과제를 해결하기 위한 안드로이드 앱의 호출 관계도 생성 장치는 안드로이드 앱의 DEX(Dalvik Excutable) 파일 및 SO(Shared Object) 파일을 추출하는 안드로이드 앱 분석부, 상기 DEX 파일에서 Dalvik 명령어를 추출하는 DEX 파일 분석부, 상기 SO 파일에서 ARM 명령어를 추출하는 SO 파일 분석부 및 상기 Dalvik 명령어로부터 상기 안드로이드 앱의 자바(Java) 코드 상의 함수 호출 관계를 추출하고, 상기 ARM 명령어로부터 상기 안드로이드 앱의 네이티브(Native) 코드 상의 함수 호출 관계를 추출하며, 상기 자바 코드 상의 함수 호출 관계 및 상기 네이티브 코드 상의 함수 호출 관계를 연결하여 상기 안드로이드 앱의 호출 관계도를 생성하는 함수 호출 관계도 생성부를 포함한다.Android app analysis unit for extracting DEX (Dalvik Excutable) files and SO (Shared Object) files of Android apps, DEX files for extracting Dalvik commands from the DEX files Analysis unit, SO file analysis unit for extracting ARM instructions from the SO file and the function call relationship on the Java (Java) code of the Android app from the Dalvik instruction, and the native (Native) of the Android app from the ARM instruction It includes a function call relationship generator that extracts a function call relationship on the code and connects the function call relationship on the Java code and the function call relationship on the native code to generate a call relationship diagram of the Android app.
한편, 상기 안드로이드 앱의 호출 관계도를 시각화할 수 있도록 PDF 파일 또는 DOT 파일 형식으로 저장하는 시각화부를 더 포함할 수 있다.On the other hand, to visualize the call relationship diagram of the Android app may further include a visualization unit for saving in a PDF file or DOT file format.
또한, 상기 함수 호출 관계도 생성부는, 상기 Dalvik 명령어 중 다른 함수를 호출하는 invoke 명령어를 추출하고, 상기 invoke 명령어의 인자를 분석하여 상기 자바 코드 상의 함수 호출 관계를 추출할 수 있다.In addition, the function call relationship generation unit may extract an invoke command that calls another function among the Dalvik commands, and analyze the arguments of the invoke command to extract a function call relationship on the Java code.
또한, 상기 함수 호출 관계도 생성부는, 상기 ARM 명령어 중 다른 함수를 호출하는 branch 명령어를 추출하고, 상기 Branch 명령어의 인자를 분석하여 상기 네이티브 코드 상의 함수 호출 관계를 추출할 수 있다.In addition, the function call relation generation unit may extract a branch instruction that calls another function among the ARM instructions, and extract a function call relation on the native code by analyzing the arguments of the branch instruction.
또한, 상기 함수 호출 관계도 생성부는, 상기 자바 코드 상의 함수 호출 관계에 포함되는 호출 대상(callee) 함수의 접근제한자(access flags)의 네이티브 플래그 포함 여부에 따라 상기 자바 코드 상의 함수 호출 관계와 상기 네이티브 코드 상의 함수 호출 관계를 연결하여 자바 코드로부터 네이티브 코드를 호출하는 관계를 포함하는 상기 안드로이드 앱의 호출 관계도를 생성할 수 있다.In addition, the function call relationship generation unit, the function call relationship in the Java code according to whether the native flag of the access limit (access flags) of the call target function (callee) function included in the function call relationship in the Java code and the By linking the function call relationship on the native code, it is possible to generate a call relationship diagram of the Android app including a relationship that calls the native code from Java code.
한편, 본 발명의 안드로이드 앱의 호출 관계도 생성 방법은 안드로이드 앱의 DEX(Dalvik Excutable) 파일 및 SO(Shared Object) 파일을 추출하는 안드로이드 앱 분석 단계, 상기 DEX 파일에서 Dalvik 명령어를 추출하는 DEX 파일 분석 단계, 상기 SO 파일에서 ARM 명령어를 추출하는 SO 파일 분석 단계, 상기 Dalvik 명령어로부터 상기 안드로이드 앱의 자바(Java) 코드 상의 함수 호출 관계를 추출하고, 상기 ARM 명령어로부터 상기 안드로이드 앱의 네이티브(Native) 코드 상의 함수 호출 관계를 추출하며, 상기 자바 코드 상의 함수 호출 관계 및 상기 네이티브 코드 상의 함수 호출 관계를 연결하여 상기 안드로이드 앱의 호출 관계도를 생성하는 함수 호출 관계도 생성 단계를 포함한다.On the other hand, the method for generating a call relationship diagram of the Android app of the present invention is an Android app analysis step of extracting a DEX (Dalvik Excutable) file and a SO (Shared Object) file of the Android app, and a DEX file analysis for extracting the Dalvik command from the DEX file Step, SO file analysis step of extracting an ARM instruction from the SO file, extracting a function call relationship on the Java code of the Android app from the Dalvik instruction, and native code of the Android app from the ARM instruction And extracting a function call relationship on the Java code and connecting the function call relationship on the Java code and the function call relationship on the native code to generate a call relationship diagram of the Android app.
한편, 상기 안드로이드 앱의 호출 관계도를 콜 그래프(Call Graph)로 시각화할 수 있도록 PDF 파일 또는 DOT 파일 형식으로 저장하는 시각화 단계를 더 포함할 수 있다.Meanwhile, a visualization step of storing a call relationship diagram of the Android app in a PDF file or a DOT file format may be further included in order to visualize it as a call graph.
또한, 상기 함수 호출 관계도 생성 단계는, 상기 Dalvik 명령어 중 다른 함수를 호출하는 invoke 명령어를 추출하는 단계 및 상기 invoke 명령어의 인자를 분석하여 상기 자바 코드 상의 함수 호출 관계를 추출하는 단계를 포함할 수 있다.In addition, the function call relationship generating step may include extracting an invoke command that calls another function among the Dalvik commands and extracting a function call relationship on the Java code by analyzing the arguments of the invoke command. have.
또한, 상기 함수 호출 관계도 생성 단계는, 상기 ARM 명령어 중 다른 함수를 호출하는 branch 명령어를 추출하는 단계 및 상기 Branch 명령어의 인자를 분석하여 상기 네이티브 코드 상의 함수 호출 관계를 추출하는 단계를 포함할 수 있다.In addition, the step of generating a function call relationship may include extracting a branch instruction that calls another function among the ARM instructions and extracting a function call relationship on the native code by analyzing the arguments of the branch instruction. have.
또한, 상기 함수 호출 관계도 생성 단계는, 상기 자바 코드 상의 함수 호출 관계에 포함되는 호출 대상(callee) 함수의 접근제한자(access flags)를 확인하는 단계 및 상기 호출 대상 함수의 접근제한자가 네이티브 플래그를 포함하는 경우, 상기 호출 대상 함수와 상기 네이티브 플래그에 해당하는 네이티브 코드 상의 함수를 연결하여 자바 코드로부터 네이티브 코드를 호출하는 관계를 포함하는 상기 안드로이드 앱의 호출 관계도를 생성하는 단계를 포함할 수 있다.In addition, the step of generating the function call relationship also includes: checking access flags of a callee function included in a function call relationship on the Java code, and access limiters of the call target function are native flags If it includes, it may include the step of generating a call relationship diagram of the Android app including the relationship to call the native code from the Java code by connecting the function on the native code corresponding to the call target function and the native flag. have.
또한, 상기 안드로이드 앱의 호출 관계도 생성 방법을 수행하기 위한, 컴퓨터 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체일 수 있다.In addition, the call relationship of the Android app may also be a computer-readable recording medium in which a computer program is recorded for performing a method of generating.
본 발명에 따르면 DEX 파일 구조에 따라 자바 코드 상의 호출 관계를 추출함으로써 난독화가 적용된 안드로이드 앱의 함수 호출 관계를 파악할 수 있으며, 나아가 네이티브 코드 상의 호출 관계 또한 추출하여 자바 코드로부터 네이티브 코드를 호출하는 관계를 포함하는 안드로이드 앱의 호출 관계도를 생성할 수 있다. According to the present invention, by extracting the calling relationship on the Java code according to the DEX file structure, it is possible to grasp the function calling relationship of the Android app to which obfuscation is applied, and further extracting the calling relationship on the native code to extract the calling relationship on the Java code. It is possible to generate a call relationship diagram of an Android app.
또한 안드로이드 앱의 통합 호출 관계도는 안드로이드 앱의 동작 시퀀스 획득에 용이하게 사용될 수 있으며, 코드 상에서 실제로 전달되는 컨텐츠의 흐름 파악이 가능하여 자바 코드와 네이티브 코드 모두에서 사용되는 데이터 분석에 사용될 수 있을 것이다.In addition, the integrated call relationship diagram of the Android app can be easily used to obtain the operation sequence of the Android app, and it can be used to analyze data used in both Java code and native code because it is possible to grasp the flow of content actually delivered on the code. .
도 1은 본 발명의 일 실시예에 따른 안드로이드 앱의 호출 관계도 생성 장치의 블록도이다.
도 2는 본 발명의 다른 실시예에 따른 안드로이드 앱의 호출 관계도 생성 장치의 블록도이다.
도 3은 본 발명의 일 실시예에 따른 안드로이드 앱의 호출 관계도 생성 방법의 흐름도이다. 1 is a block diagram of an apparatus for generating a call relationship diagram of an Android app according to an embodiment of the present invention.
2 is a block diagram of an apparatus for generating a call relationship diagram of an Android app according to another embodiment of the present invention.
3 is a flowchart of a method for generating a call relationship diagram of an Android app according to an embodiment of the present invention.
후술하는 본 발명에 대한 상세한 설명은, 본 발명이 실시될 수 있는 특정 실시예를 예시로서 도시하는 첨부 도면을 참조한다. 이들 실시예는 당업자가 본 발명을 실시할 수 있기에 충분하도록 상세히 설명된다. 본 발명의 다양한 실시예는 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 여기에 기재되어 있는 특정 형상, 구조 및 특성은 일 실시예와 관련하여 본 발명의 정신 및 범위를 벗어나지 않으면서 다른 실시예로 구현될 수 있다. 또한, 각각의 개시된 실시예 내의 개별 구성요소의 위치 또는 배치는 본 발명의 정신 및 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 취하려는 것이 아니며, 본 발명의 범위는, 적절하게 설명된다면, 그 청구항들이 주장하는 것과 균등한 모든 범위와 더불어 첨부된 청구항에 의해서만 한정된다. 도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 기능을 지칭한다.For a detailed description of the present invention, which will be described later, reference is made to the accompanying drawings that illustrate, by way of example, specific embodiments in which the invention may be practiced. These examples are described in detail enough to enable those skilled in the art to practice the present invention. It should be understood that the various embodiments of the present invention are different, but need not be mutually exclusive. For example, the specific shapes, structures, and properties described herein can be implemented in other embodiments without departing from the spirit and scope of the invention in connection with one embodiment. In addition, it should be understood that the location or placement of individual components within each disclosed embodiment can be changed without departing from the spirit and scope of the invention. Therefore, the following detailed description is not intended to be taken in a limiting sense, and the scope of the present invention, if appropriately described, is limited only by the appended claims, along with all ranges equivalent to those claimed. In the drawings, similar reference numerals refer to the same or similar functions throughout several aspects.
이하, 도면들을 참조하여 본 발명의 바람직한 실시예들을 보다 상세하게 설명하기로 한다.Hereinafter, preferred embodiments of the present invention will be described in more detail with reference to the drawings.
도 1은 본 발명의 일 실시예에 따른 안드로이드 앱의 호출 관계도 생성 장치의 블록도이다.1 is a block diagram of an apparatus for generating a call relationship diagram of an Android app according to an embodiment of the present invention.
도 1을 참조하면, 본 발명의 일 실시예에 따른 안드로이드 앱의 호출 관계도 생성 장치(1)는 안드로이드 앱 분석부(10), DEX 파일 분석부(30), SO 파일 분석부(50) 및 함수 호출 관계도 생성부(70)를 포함할 수 있다.1, the
본 발명의 일 실시예에 따른 안드로이드 앱의 호출 관계도 생성 장치(1)는 안드로이드 앱의 DEX(Dalvik Excutable) 파일 및 SO(Shared Object) 파일을 정적 분석하여 자바(Java) 코드 상의 함수 호출 관계를 추출하고, 네이티브(Native) 코드 상의 함수 호출 관계를 추출할 수 있으며, 자바 코드 상의 함수 호출 관계와 네이티브 코드 상의 함수 호출 관계를 연결하여 안드로이드 앱의 전체 함수 호출 관계도를 생성할 수 있다.The
본 발명의 일 실시예에 따른 안드로이드 앱의 호출 관계도 생성 장치(1)는 안드로이드 앱의 호출 관계도 생성을 위한 소프트웨어(어플리케이션)가 설치되어 실행될 수 있으며, 안드로이드 앱 분석부(10), DEX 파일 분석부(30), SO 파일 분석부(50) 및 함수 호출 관계도 생성부(70)는 안드로이드 앱의 호출 관계도 생성을 위한 소프트웨어에 의해 제어될 수 있다.The
안드로이드 앱 분석부(10), DEX 파일 분석부(30), SO 파일 분석부(50) 및 함수 호출 관계도 생성부(70)의 구성은 통합 모듈로 형성되거나, 하나 이상의 모듈로 이루어질 수 있다. 그러나, 이와 반대로 각 구성은 별도의 모듈로 이루어질 수도 있다. The configuration of the Android
본 발명의 일 실시예에 따른 안드로이드 앱의 호출 관계도 생성 장치(1)는 이동성을 갖거나 고정될 수 있다. 본 발명의 일 실시예에 따른 안드로이드 앱의 호출 관계도 생성 장치(1)는 컴퓨터(computer), 서버(server) 또는 엔진(engine) 형태일 수 있으며, 디바이스(device), 기구(apparatus), 단말(terminal), UE(user equipment), MS(mobile station), MT(mobile terminal), UT(user terminal), SS(subscriber station), 무선기기(wireless device), PDA(personal digital assistant), 무선 모뎀(wireless modem), 휴대기기(handheld device) 등 다른 용어로 불릴 수 있다.The
이하, 도 1에 도시된 본 발명의 일 실시예에 따른 안드로이드 앱의 호출 관계도 생성 장치(1)의 각 구성에 대하여 구체적으로 설명한다.Hereinafter, each configuration of the call relationship diagram generating
안드로이드 앱 분석부(10)는 안드로이드 앱의 DEX 파일 및 SO(Shared Object) 파일을 추출할 수 있다.The Android
안드로이드 앱 분석부(10)는 안드로이드 앱의 압축을 해제하고, DEX 파일과 SO 파일을 탐색하여 추출할 수 있다.The Android
DEX 파일 분석부(30)는 DEX 파일에서 Dalvik 명령어를 추출할 수 있다.The DEX
DEX 파일 분석부(30)는 DEX 파일의 구조를 분석하여, DEX 파일에서 Dalvik 명령어를 추출할 수 있다.The DEX
DEX 파일의 구조는 공식 웹사이트 (https://source.android.com/ devices/tech/dalvik/dex-format.html)를 통해 확인할 수 있다. DEX 파일의 구조를 살펴보면 안드로이드 앱에서 사용되는 문자열, 타입, 변수, 클래스 타입, 메소드(함수), 클래스 정의부 등을 각 영역을 통하여 정의하고 있으며, DEX 파일의 헤더는 각 영역의 offset과 크기를 나타낸다. 특히, 클래스 정의부에는 클래스에 정의된 메소드(함수) 들을 참조하고 있으며, 각 메소드(함수) 들은 안드로이드 앱 실행 시 실제로 실행되는 Dalvik 명령어가 정의되어 있다. Dalvik 명령어의 종류, 수행하는 작업, opcode 또한 공식 웹사이트(https://source.android.com/devices/ tech/dalvik/dalvik-bytecode.html)를 통해 확인할 수 있다.The structure of the DEX file can be checked through the official website (https://source.android.com/ devices / tech / dalvik / dex-format.html). Looking at the structure of the DEX file, the string, type, variable, class type, method (function), and class definition part used in the Android app are defined through each area, and the header of the DEX file determines the offset and size of each area. Shows. In particular, the class definition section refers to the methods (functions) defined in the class, and each method (function) defines a Dalvik command that is actually executed when the Android app is executed. You can also check the type of Dalvik commands, tasks to be performed, and opcodes through the official website (https://source.android.com/devices/tech/dalvik/dalvik-bytecode.html).
DEX 파일 분석부(30)는 이러한 DEX 파일의 구조를 분석하여 DEX 파일에서 Dalvik 명령어를 추출할 수 있을 것이다.The DEX
SO 파일 분석부(50)는 SO 파일에서 ARM 명령어를 추출할 수 있다.The SO
SO 파일은 네이티브 코드를 컴파일하여 생기는 파일로, ELF(Executable and Linkable Format) 파일 형식을 따른다. ELF 파일의 헤더에는 컴파일된 OS와 명령어 set에 대한 정보, 프로그램 헤더 테이블, 섹션 헤더 테이블에 대한 정보 등이 포함될 수 있다. 특히, 섹션 헤더 테이블에는 ELF 파일의 각 섹션에 대한 정보가 저장되며, 각 엔트리에는 섹션의 이름과 타입, offset, size가 저장된다. 이때 섹션의 offset 및 size를 통하여 파일 내에서 섹션이 저장된 주소를 추출할 수 있으며, 섹션 중 ".text"와 같이 실제 실행되는 명령어를 저장하는 섹션이 존재한다. The SO file is a file created by compiling native code and follows the ELF (Executable and Linkable Format) file format. The header of the ELF file may include information on the compiled OS and instruction set, program header table, and section header table. In particular, information about each section of the ELF file is stored in the section header table, and the name, type, offset, and size of the section are stored in each entry. At this time, the address where the section is stored in the file can be extracted through the offset and size of the section, and there is a section that stores the actual executed command, such as ".text".
안드로이드 운영체제를 기반으로 한 모바일 디바이스는 대부분 ARM 32-bit 명령어 셋을 사용하므로, SO 파일 분석부(50)는 ".text"섹션의 명령어를 ARM 32-bit 명령어를 기반으로 하여 디컴파일하는 경우, ARM 명령어의 opcode와 인자값을 추출할 수 있을 것이다. 즉, SO 파일 분석부(50)는 SO 파일의 코드 섹션을 ARM 명령어로 디컴파일하여 ARM 명령어를 추출할 수 있다.Since most mobile devices based on the Android operating system use the ARM 32-bit instruction set, the SO
함수 호출 관계도 생성부(70)는 Dalvik 명령어로부터 안드로이드 앱의 자바 코드 상의 함수 호출 관계를 추출하고, ARM 명령어로부터 네이티브 코드 상의 함수 호출 관계를 추출할 수 있다. 그리고 함수 호출 관계도 생성부(70)는 자바 코드 상의 함수 호출 관계 및 네이티브 코드 상의 함수 호출 관계를 연결하여 안드로이드 앱의 호출 관계도를 생성할 수 있다.The function call
구체적으로는, 함수 호출 관계도 생성부(70)는 Dalvik 명령어 중 다른 함수를 호출하는 명령어를 필터링하여 자바 코드 상의 함수 호출 관계를 정의할 수 있다. 여기서 자바 코드 상에서는 함수를 메소드라 칭하는 것이 일반적이나, 본 실시예에서는 설명의 편의를 위해 자바 코드 상에서의 메소드를 함수로 지칭하여 설명한다.Specifically, the function call relationship
Dalvik 명령어 중 다른 함수를 호출하는 명령어는 아래 표 1과 같이 총 10개가 존재한다.Among Dalvik commands, there are 10 commands that call other functions, as shown in Table 1 below.
표 1을 참조하면, Dalvik 명령어에서 다른 함수를 호출하는 명령어는 invoke-* 형식을 갖는 명령어임을 확인할 수 있다.따라서 함수 호출 관계도 생성부(70)는 Dalvik 명령어 중 다른 함수를 호출하는 invoke 명령어를 추출할 수 있다.Referring to Table 1, it can be seen that the instruction that calls another function in the Dalvik instruction is an instruction having an invoke- * format. Therefore, the function
함수 호출 관계도 생성부(70)는 invoke 명령어를 분석하여 자바 코드 상의 함수 호출 관계를 추출할 수 있다. invoke 명령어의 인자는 호출 대상(Callee)이 되는 함수 타입에 대한 offset 값을 가지므로, 함수 호출 관계도 생성부(70)는 이러한 invoke 명령어의 인자를 분석하여 invoke 명령어의 호출 대상인 함수의 소속 클래스와 함수명, 파라미터와 리턴 타입을 획득할 수 있으며, 이를 토대로 자바 코드 상의 호출 주체(Caller)-호출 대상(Callee)의 함수 호출 관계를 추출할 수 있다.The function call
또한, 함수 호출 관계도 생성부(70)는 ARM 명령어 중 다른 함수를 호출하는 명령어를 필터링하여 네이티브 코드 상의 함수 호출 관계를 정의할 수 있다.Also, the function
ARM 명령어 중 다른 함수를 호출하는 명령어는 branch 명령어로 볼 수 있다. branch 명령어는 명령어 실행 도중 지정된 주소로 점프하며, 점프 후 되돌아올 주소를 저장하는 명령어로, 네이티브 코드 상에서 다른 함수를 호출하는 경우 해당 함수의 주소로 점프하는 방식으로 함수 호출을 수행할 수 있다.Among ARM instructions, instructions that call other functions are considered branch instructions. The branch instruction jumps to the specified address during instruction execution, and stores the address to return after the jump. When calling another function on the native code, the function call can be performed by jumping to the address of the corresponding function.
따라서 함수 호출 관계도 생성부(70)는 ARM 명령어 중 다른 함수를 호출하는 branch 명령어를 추출할 수 있다.Therefore, the function
함수 호출 관계도 생성부(70)는 branch 명령어를 분석하여 네이티브 코드 상의 함수 호출 관계를 추출할 수 있다. 안드로이드 운영체제에서는 미리 빌드된 라이브러리를 제공하는 Dynamic Link 방식을 채택하고 있는데, Dynamic Link는 실행파일에서 라이브러리 코드를 포함하지 않도록 하는 공유 라이브러리 방식이다. Dynamic Link 방식은 PLT(Procedure Linkable Table) 및 GOT(Global Offset Table)을 섹션을 필요로 한다. PLT 섹션은 프로그램이 호출하는 모든 함수를 나열하는 섹션이고, GOT는 PLT에서 참조하는 테이블로 프로그램에서 호출되는 함수의 실제 주소를 저장할 수 있다. 네이티브 코드 상에서는 함수를 호출하는 경우, PLT 섹션을 참조하여 다른 라이브러리의 함수를 호출할 수 있다. 따라서 함수 호출 관계도 생성부(70)는 branch 명령어의 PLT를 참조하여 branch 명령어가 라이브러리 함수를 호출하는 관계를 추출할 수 있으며, 이를 토대로 네이티브 코드 상의 호출 주체(Caller)-호출 대상(Callee)의 함수 호출 관계를 추출할 수 있다.The function call relationship
함수 호출 관계도 생성부(70)는 안드로이드 앱의 통합 호출 관계도를 생성하기 위해 자바 코드 상의 함수 호출 관계 및 네이티브 코드 상의 함수 호출 관계를 연결할 수 있다.The function call relationship
함수 호출 관계도 생성부(70)는 자바 코드 상의 함수 호출 관계에 포함되는 호출 대상(Callee) 함수의 접근제한자(access flags)의 네이티브 플래그 포함 여부에 따라 자바 코드 상의 함수 호출 관계와 네이티브 코드 상의 함수 호출 관계를 연결할 수 있다. 호출 대상(Callee) 함수의 접근제한자에 네이티브 플래그가 포함되는 경우, 해당 함수는 네이티브 코드 상의 함수로 볼 수 있기 때문이다.The function call relationship
예를 들면, 함수 호출 관계도 생성부(70)는 자바 코드 상의 함수 호출 관계에서 호출 대상(Callee) 함수의 접근제한자에 네이티브 플래그가 포함되는 경우, 네이티브 코드 상의 함수 호출 관계에서 해당 함수를 찾아 연결할 수 있다. 즉, 함수 호출 관계도 생성부(70)는 자바 코드로부터 네이티브 코드를 호출하는 관계를 포함하는 안드로이드 앱의 호출 관계도를 생성할 수 있다.For example, if the function call
한편, 도 2는 본 발명의 다른 실시예에 따른 안드로이드 앱의 호출 관계도 생성 장치의 블록도이다.Meanwhile, FIG. 2 is a block diagram of an apparatus for generating a call relationship diagram of an Android app according to another embodiment of the present invention.
본 발명의 다른 실시예에 따른 안드로이드 앱의 호출 관계도 생성 장치(2)는 도 1에 도시된 본 발명의 일 실시예에 다른 안드로이드 앱의 호출 관계도 생성 장치(1)와 비교하면, 시각화부(90)를 더 포함한다는 점에서 차이가 있을 뿐 나머지 다른 구성은 모두 동일하다. 따라서 이하에서는 시각화부(90)에 대해서만 설명하고 나머지 다른 구성에 대한 설명은 상술한 것으로 대체한다.The apparatus 2 for generating a call relationship diagram of an Android app according to another embodiment of the present invention is compared with the
시각화부(90)는 함수 호출 관계도 생성부(70)에서 생성한 안드로이드 앱의 호출 관계도를 PDF 파일, DOT 파일 또는 Text 파일 형식으로 저장할 수 있다. 시각화부(90)는 안드로이드 앱의 호출 관계도를 PDF 파일, DOT 파일 또는 Text 파일 형식으로 저장하여 콜 그래프의 시각화를 달성할 수 있다.The
이와 같은 본 발명의 안드로이드 앱의 호출 관계도 생성 장치는 자바 코드와 네이티브 코드 상의 호출 관계를 모두 표현하는 함수 호출 관계도를 생성할 수 있다. 본 발명의 안드로이드 앱의 호출 관계도 생성 장치는 DEX 파일 구조에 따라 자바 코드 상의 호출 관계를 추출함으로써 난독화가 적용된 안드로이드 앱의 함수 호출 관계를 파악할 수 있으며, 나아가 네이티브 코드 상의 호출 관계 또한 추출하여 자바 코드로부터 네이티브 코드를 호출하는 관계를 포함하는 안드로이드 앱의 호출 관계도를 생성할 수 있다. 이러한 안드로이드 앱의 호출 관계도는 안드로이드 앱의 동작 시퀀스 획득에 용이하게 사용될 수 있으며, 코드 상에서 실제로 전달되는 컨텐츠의 흐름 파악이 가능하여 자바 코드와 네이티브 코드 모두에서 사용되는 데이터 분석에 사용될 수 있을 것이다.The apparatus for generating a call relationship diagram of the Android app of the present invention may generate a function call relationship diagram representing both the call relationship on the Java code and the native code. The apparatus for generating a call relationship diagram of the Android app of the present invention can grasp the function call relationship of the Android app to which obfuscation is applied by extracting the call relationship on the Java code according to the DEX file structure, and further extract the call relationship on the native code to extract the Java code From, you can create a calling relationship diagram for your Android app, including a relationship that calls native code. The call relationship diagram of the Android app can be easily used to obtain the operation sequence of the Android app, and it can be used to analyze data used in both Java code and native code because it is possible to grasp the flow of content actually delivered on the code.
이하 도 3을 참조하여 본 발명의 일 실시예에 따른 안드로이드 앱의 호출 관계도 생성 방법에 대하여 설명한다.Hereinafter, a method for generating a call relationship diagram of an Android app according to an embodiment of the present invention will be described with reference to FIG. 3.
도 3은 본 발명의 일 실시예에 따른 안드로이드 앱의 호출 관계도 생성 방법의 흐름도이다.3 is a flowchart of a method for generating a call relationship diagram of an Android app according to an embodiment of the present invention.
본 발명의 일 실시예에 따른 안드로이드 앱의 호출 관계도 생성 방법은 도 2에 도시된 본 발명의 다른 실시예에 다른 안드로이드 앱의 호출 관계도 생성 장치(2)와 실질적으로 동일한 구성에서 진행될 수 있다. 따라서 도 2의 장치(2)와 동일한 구성요소는 동일한 도면부호를 부여하고, 반복되는 설명은 생략한다.The method for generating a call relationship diagram of an Android app according to an embodiment of the present invention may be performed in a substantially identical configuration to the device 2 for generating a call relationship diagram of another Android app according to another embodiment of the present invention shown in FIG. 2. . Therefore, the same components as the device 2 of FIG. 2 are given the same reference numerals, and repeated descriptions are omitted.
도 3을 참조하면, 안드로이드 앱 분석부(10)는 안드로이드 앱의 DEX 파일 및 SO 파일을 추출할 수 있다(S100).Referring to FIG. 3, the Android
안드로이드 앱 분석부(10)는 안드로이드 앱의 압축을 해제하고, DEX 파일과 SO 파일을 탐색하여 추출할 수 있다.The Android
DEX 파일 분석부(30)는 DEX 파일에서 Dalvik 명령어를 추출할 수 있다(S200).The DEX
DEX 파일 분석부(30)는 DEX 파일의 구조를 분석하여 DEX 파일에서 Dalvik 명령어를 추출할 수 있다.The DEX
SO 파일 분석부(50)는 SO 파일에서 ARM 명령어를 추출할 수 있다(S300).The SO
SO 파일 분석부(50)는 SO 파일의 코드 섹션을 ARM 명령어로 디컴파일하여 ARM 명령어를 추출할 수 있다.The SO
함수 호출 관계도 생성부(70)는 Dalvik 명령어로부터 안드로이드 앱의 자바 코드 상의 함수 호출 관계를 추출할 수 있다(S400).The function call relationship
함수 호출 관계도 생성부(70)는 Dalvik 명령어 중 다른 함수를 호출하는 invoke 명령어를 추출할 수 있다. 함수 호출 관계도 생성부(70)는 invoke 명령어를 분석하여 자바 코드 상의 함수 호출 관계를 추출할 수 있다. invoke 명령어의 인자는 호출 대상(Callee)이 되는 함수 타입에 대한 offset 값을 가지므로, 함수 호출 관계도 생성부(70)는 이러한 invoke 명령어의 인자를 분석하여 invoke 명령어의 호출 대상인 함수의 소속 클래스와 함수명, 파라미터와 리턴 타입을 획득할 수 있으며, 이를 토대로 자바 코드 상의 호출 주체(Caller)-호출 대상(Callee)의 함수 호출 관계를 추출할 수 있다.The function call
함수 호출 관계도 생성부(70)는 ARM 명령어로부터 안드로이드 앱의 네이티브 코드 상의 함수 호출 관계를 추출할 수 있다(S500).The function call
함수 호출 관계도 생성부(70)는 ARM 명령어 중 다른 함수를 호출하는 branch 명령어를 추출할 수 있다. 함수 호출 관계도 생성부(70)는 branch 명령어를 분석하여 네이티브 코드 상의 함수 호출 관계를 추출할 수 있다. 안드로이드 운영체제에서는 미리 빌드된 라이브러리를 제공하는 Dynamic Link 방식을 채택하고 있는데, Dynamic Link는 실행파일에서 라이브러리 코드를 포함하지 않도록 하는 공유 라이브러리 방식이다. Dynamic Link 방식은 PLT(Procedure Linkable Table) 및 GOT(Global Offset Table)을 섹션을 필요로 한다. PLT 섹션은 프로그램이 호출하는 모든 함수를 나열하는 섹션이고, GOT는 PLT에서 참조하는 테이블로 프로그램에서 호출되는 함수의 실제 주소를 저장할 수 있다. 네이티브 코드 상에서는 함수를 호출하는 경우, PLT 섹션을 참조하여 다른 라이브러리의 함수를 호출할 수 있다. 따라서 함수 호출 관계도 생성부(70)는 branch 명령어의 PLT를 참조하여 branch 명령어가 라이브러리 함수를 호출하는 관계를 추출할 수 있으며, 이를 토대로 네이티브 코드 상의 호출 주체(Caller)-호출 대상(Callee)의 함수 호출 관계를 추출할 수 있다.The function
함수 호출 관계도 생성부(70)는 자바 코드 상의 함수 호출 관계와 네이티브 코드 상의 함수 호출 관계를 연결하여 안드로이드 앱의 호출 관계도를 생성할 수 있다(S600).The function call relationship
함수 호출 관계도 생성부(70)는 안드로이드 앱의 통합 호출 관계도를 생성하기 위해 자바 코드 상의 함수 호출 관계 및 네이티브 코드 상의 함수 호출 관계를 연결할 수 있다.The function call relationship
함수 호출 관계도 생성부(70)는 자바 코드 상의 함수 호출 관계에 포함되는 호출 대상(Callee) 함수의 접근제한자(access flags)의 네이티브 플래그 포함 여부에 따라 자바 코드 상의 함수 호출 관계와 네이티브 코드 상의 함수 호출 관계를 연결할 수 있다. 호출 대상(Callee) 함수의 접근제한자에 네이티브 플래그가 포함되는 경우, 해당 함수는 네이티브 코드 상의 함수로 볼 수 있기 때문이다.The function call relationship
예를 들면, 함수 호출 관계도 생성부(70)는 자바 코드 상의 함수 호출 관계에서 호출 대상(Callee) 함수의 접근제한자에 네이티브 플래그가 포함되는 경우, 네이티브 코드 상의 함수 호출 관계에서 해당 함수를 찾아 연결할 수 있다. 즉, 함수 호출 관계도 생성부(70)는 자바 코드로부터 네이티브 코드를 호출하는 관계를 포함하는 안드로이드 앱의 호출 관계도를 생성할 수 있다.For example, if the function call
시각화부(90)는 안드로이드 앱의 호출 관계도를 PDF 파일 또는 DOT 파일 형식으로 저장할 수 있다(S700).The
시각화부(90)는 안드로이드 앱의 호출 관계도를 PDF 파일, DOT 파일 또는 Text 파일 형식으로 저장하여 콜 그래프의 시각화를 달성할 수 있다.The
이와 같은 본 발명의 일 실시예에 따른 안드로이드 앱의 호출 관계도 생성 방법은 어플리케이션으로 구현되거나 다양한 컴퓨터 구성요소를 통하여 수행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다.Such a method for generating a call relationship diagram of an Android app according to an embodiment of the present invention may be implemented as an application or implemented in the form of program instructions that can be executed through various computer components and recorded in a computer-readable recording medium. . The computer-readable recording medium may include program instructions, data files, data structures, or the like alone or in combination.
상기 컴퓨터 판독 가능한 기록 매체에 기록되는 프로그램 명령어는 본 발명을 위하여 특별히 설계되고 구성된 것들이거니와 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수도 있다.The program instructions recorded on the computer-readable recording medium are specially designed and configured for the present invention, and may be known and available to those skilled in the computer software field.
컴퓨터 판독 가능한 기록 매체의 예에는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD 와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 ROM, RAM, 플래시 메모리 등과 같은 프로그램 명령어를 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다.Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks, and magnetic tapes, optical recording media such as CD-ROMs, DVDs, and magneto-optical media such as floptical disks. media), and hardware devices specifically configured to store and execute program instructions such as ROM, RAM, flash memory, and the like.
프로그램 명령어의 예에는, 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 상기 하드웨어 장치는 본 발명에 따른 처리를 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.Examples of program instructions include not only machine language codes produced by a compiler, but also high-level language codes executable by a computer using an interpreter or the like. The hardware device may be configured to operate as one or more software modules to perform processing according to the present invention, and vice versa.
이상에서는 실시예들을 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.Although described above with reference to embodiments, those skilled in the art understand that various modifications and changes can be made to the present invention without departing from the spirit and scope of the present invention as set forth in the claims below. Will be able to.
1: 안드로이드 앱의 호출 관계도 생성 장치
10: 안드로이드 앱 분석부
30: DEX 파일 분석부
50: SO 파일 분석부
70: 함수 호출 관계도 생성부 1: Android app call relationship generating device
10: Android app analysis department
30: DEX file analysis unit
50: SO file analysis unit
70: function call relationship generator
Claims (11)
상기 DEX 파일에서 Dalvik 명령어를 추출하는 DEX 파일 분석부;
상기 SO 파일에서 ARM 명령어를 추출하는 SO 파일 분석부; 및
상기 Dalvik 명령어로부터 상기 안드로이드 앱의 자바(Java) 코드 상의 함수 호출 관계를 추출하고, 상기 ARM 명령어로부터 상기 안드로이드 앱의 네이티브(Native) 코드 상의 함수 호출 관계를 추출하며, 상기 자바 코드 상의 함수 호출 관계 및 상기 네이티브 코드 상의 함수 호출 관계를 연결하여 상기 안드로이드 앱의 호출 관계도를 생성하는 함수 호출 관계도 생성부;를 포함하는, 안드로이드 앱의 호출 관계도 생성 장치.Android app analysis unit for extracting DEX (Dalvik Excutable) files and SO (Shared Object) files of Android apps;
A DEX file analysis unit for extracting Dalvik commands from the DEX file;
An SO file analysis unit for extracting ARM instructions from the SO file; And
The function call relationship on the Java code of the Android app is extracted from the Dalvik instruction, the function call relationship on the native code of the Android app is extracted from the ARM instruction, and the function call relationship on the Java code and Including a function call relationship diagram generating unit for connecting the function call relationship on the native code to generate a call relationship diagram of the Android app; including, Android app call relationship generation device.
상기 안드로이드 앱의 호출 관계도를 시각화할 수 있도록 PDF 파일 또는 DOT 파일 형식으로 저장하는 시각화부;를 더 포함하는, 안드로이드 앱의 호출 관계도 생성 장치.According to claim 1,
Further comprising, a visualization unit for storing in a PDF file or DOT file format to visualize the call relationship diagram of the Android app; further comprising, a call relationship generating device for the Android app.
상기 함수 호출 관계도 생성부는,
상기 Dalvik 명령어 중 다른 함수를 호출하는 invoke 명령어를 추출하고, 상기 invoke 명령어의 인자를 분석하여 상기 자바 코드 상의 함수 호출 관계를 추출하는, 안드로이드 앱의 호출 관계도 생성 장치.According to claim 1,
The function call relationship diagram generating unit,
A device for generating a call relationship of an Android app, extracting an invoke command that calls another function among the Dalvik commands, and extracting a function call relationship on the Java code by analyzing the arguments of the invoke command.
상기 함수 호출 관계도 생성부는,
상기 ARM 명령어 중 다른 함수를 호출하는 branch 명령어를 추출하고, 상기 branch 명령어의 인자를 분석하여 상기 네이티브 코드 상의 함수 호출 관계를 추출하는, 안드로이드 앱의 호출 관계도 생성 장치.According to claim 1,
The function call relationship diagram generating unit,
A device for extracting a branch instruction that calls another function among the ARM instructions, and extracting a function call relation on the native code by analyzing the arguments of the branch instruction, and an apparatus for generating a call relation of an Android app.
상기 함수 호출 관계도 생성부는,
상기 자바 코드 상의 함수 호출 관계에 포함되는 호출 대상(callee) 함수의 접근제한자(access flags)의 네이티브 플래그 포함 여부에 따라 상기 자바 코드 상의 함수 호출 관계와 상기 네이티브 코드 상의 함수 호출 관계를 연결하여 자바 코드로부터 네이티브 코드를 호출하는 관계를 포함하는 상기 안드로이드 앱의 호출 관계도를 생성하는, 안드로이드 앱의 호출 관계도 생성 장치.According to claim 1,
The function call relationship diagram generating unit,
According to whether a native flag of an access flag of a callee function included in a function call relationship in the Java code is included, a function call relationship in the Java code and a function call relationship in the native code are connected to Java. An apparatus for generating a call relationship diagram of the Android app, which generates a call relationship diagram of the Android app including a relationship to call native code from the code.
상기 DEX 파일에서 Dalvik 명령어를 추출하는 DEX 파일 분석 단계;
상기 SO 파일에서 ARM 명령어를 추출하는 SO 파일 분석 단계;
상기 Dalvik 명령어로부터 상기 안드로이드 앱의 자바(Java) 코드 상의 함수 호출 관계를 추출하고, 상기 ARM 명령어로부터 상기 안드로이드 앱의 네이티브(Native) 코드 상의 함수 호출 관계를 추출하며, 상기 자바 코드 상의 함수 호출 관계 및 상기 네이티브 코드 상의 함수 호출 관계를 연결하여 상기 안드로이드 앱의 호출 관계도를 생성하는 함수 호출 관계도 생성 단계;를 포함하는, 안드로이드 앱의 호출 관계도 생성 방법.Android app analysis step of extracting DEX (Dalvik Excutable) files and SO (Shared Object) files of the Android app;
A DEX file analysis step of extracting a Dalvik command from the DEX file;
An SO file analysis step of extracting ARM instructions from the SO file;
The function call relationship on the Java code of the Android app is extracted from the Dalvik instruction, the function call relationship on the native code of the Android app is extracted from the ARM instruction, and the function call relationship on the Java code and And a function call relationship diagram generating step of generating a call relationship diagram of the Android app by connecting a function call relationship on the native code.
상기 안드로이드 앱의 호출 관계도를 콜 그래프(Call Graph)로 시각화할 수 있도록 PDF 파일 또는 DOT 파일 형식으로 저장하는 시각화 단계;를 더 포함하는, 안드로이드 앱의 호출 관계도 생성 방법.The method of claim 6,
A visualization step of storing the call relationship diagram of the Android app in a PDF file or DOT file format so that it can be visualized as a call graph; further comprising a method of generating a call relationship of the Android app.
상기 함수 호출 관계도 생성 단계는,
상기 Dalvik 명령어 중 다른 함수를 호출하는 invoke 명령어를 추출하는 단계; 및
상기 invoke 명령어의 인자를 분석하여 상기 자바 코드 상의 함수 호출 관계를 추출하는 단계;를 포함하는, 안드로이드 앱의 호출 관계도 생성 방법.The method of claim 6,
In the step of generating the function call relationship diagram,
Extracting an invoke command that calls another function among the Dalvik commands; And
And extracting a function call relationship on the Java code by analyzing the arguments of the invoke command.
상기 함수 호출 관계도 생성 단계는,
상기 ARM 명령어 중 다른 함수를 호출하는 branch 명령어를 추출하는 단계; 및
상기 branch 명령어의 인자를 분석하여 상기 네이티브 코드 상의 함수 호출 관계를 추출하는 단계;를 포함하는, 안드로이드 앱의 호출 관계도 생성 방법.The method of claim 6,
In the step of generating the function call relationship diagram,
Extracting a branch instruction that calls another function among the ARM instructions; And
And extracting a function call relationship on the native code by analyzing the argument of the branch command.
상기 함수 호출 관계도 생성 단계는,
상기 자바 코드 상의 함수 호출 관계에 포함되는 호출 대상(callee) 함수의 접근제한자(access flags)를 확인하는 단계; 및
상기 호출 대상 함수의 접근제한자가 네이티브 플래그를 포함하는 경우, 상기 호출 대상 함수와 상기 네이티브 플래그에 해당하는 네이티브 코드 상의 함수를 연결하여 자바 코드로부터 네이티브 코드를 호출하는 관계를 포함하는 상기 안드로이드 앱의 호출 관계도를 생성하는 단계;를 포함하는, 안드로이드 앱의 호출 관계도 생성 방법.The method of claim 6,
In the step of generating the function call relationship diagram,
Checking access flags of a callee function included in a function call relationship on the Java code; And
When the access limiter of the function to be called includes a native flag, the call of the Android app including a relationship of calling the native code from Java code by connecting the function to be called and a function on the native code corresponding to the native flag Generating a relationship diagram; including, a method of generating a call relationship diagram of the Android app.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20180144745 | 2018-11-21 | ||
KR1020180144745 | 2018-11-21 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200060180A true KR20200060180A (en) | 2020-05-29 |
KR102176742B1 KR102176742B1 (en) | 2020-11-09 |
Family
ID=70912076
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190007853A KR102176742B1 (en) | 2018-11-21 | 2019-01-22 | Method of call graph extraction in android apps, recording medium and apparatus for performing the method |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102176742B1 (en) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102314829B1 (en) * | 2021-01-29 | 2021-10-18 | 숭실대학교산학협력단 | Method for evaluating risk of data leakage in application, recording medium and device for performing the method |
KR102416292B1 (en) * | 2021-01-29 | 2022-07-01 | 숭실대학교 산학협력단 | Dynamic analysis method for android applications, recording medium and device for performing the method |
CN116185520A (en) * | 2022-12-08 | 2023-05-30 | 华中科技大学 | Construction method, system, equipment and medium for An Zhuo Diaoyong graph |
US11928220B2 (en) | 2021-01-29 | 2024-03-12 | Foundation Of Soongsil University-Industry Cooperation | Method for evaluating risk of data leakage in application, recording medium and device for performing the method |
CN116185520B (en) * | 2022-12-08 | 2024-06-11 | 华中科技大学 | An Zhuo Diaoyong diagram construction method, system, equipment and medium |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011170749A (en) * | 2010-02-22 | 2011-09-01 | Fujitsu Ltd | Simulation device and simulation method |
KR20150108364A (en) * | 2013-01-15 | 2015-09-25 | 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 | Systems and methods for building and using hybrid mobile applications |
KR20150133498A (en) * | 2014-05-20 | 2015-11-30 | 한양대학교 산학협력단 | Signature generation apparatus for generating signature of program and the method, malicious code detection apparatus for detecting malicious code of signature and the method |
KR20160025881A (en) * | 2014-08-28 | 2016-03-09 | 주식회사 안랩 | Apparatus and method for detecting malicious shared library file |
-
2019
- 2019-01-22 KR KR1020190007853A patent/KR102176742B1/en active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011170749A (en) * | 2010-02-22 | 2011-09-01 | Fujitsu Ltd | Simulation device and simulation method |
KR20150108364A (en) * | 2013-01-15 | 2015-09-25 | 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 | Systems and methods for building and using hybrid mobile applications |
KR20150133498A (en) * | 2014-05-20 | 2015-11-30 | 한양대학교 산학협력단 | Signature generation apparatus for generating signature of program and the method, malicious code detection apparatus for detecting malicious code of signature and the method |
KR20160025881A (en) * | 2014-08-28 | 2016-03-09 | 주식회사 안랩 | Apparatus and method for detecting malicious shared library file |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102314829B1 (en) * | 2021-01-29 | 2021-10-18 | 숭실대학교산학협력단 | Method for evaluating risk of data leakage in application, recording medium and device for performing the method |
KR102416292B1 (en) * | 2021-01-29 | 2022-07-01 | 숭실대학교 산학협력단 | Dynamic analysis method for android applications, recording medium and device for performing the method |
WO2022163908A1 (en) * | 2021-01-29 | 2022-08-04 | 숭실대학교 산학협력단 | Method for assessing data leakage risk within application, and recording medium and device for performing same |
US11928220B2 (en) | 2021-01-29 | 2024-03-12 | Foundation Of Soongsil University-Industry Cooperation | Method for evaluating risk of data leakage in application, recording medium and device for performing the method |
CN116185520A (en) * | 2022-12-08 | 2023-05-30 | 华中科技大学 | Construction method, system, equipment and medium for An Zhuo Diaoyong graph |
CN116185520B (en) * | 2022-12-08 | 2024-06-11 | 华中科技大学 | An Zhuo Diaoyong diagram construction method, system, equipment and medium |
Also Published As
Publication number | Publication date |
---|---|
KR102176742B1 (en) | 2020-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101857001B1 (en) | Android dynamic loading file extraction method, recording medium and system for performing the method | |
CN110414261B (en) | Data desensitization method, device, equipment and readable storage medium | |
KR102176742B1 (en) | Method of call graph extraction in android apps, recording medium and apparatus for performing the method | |
KR101545272B1 (en) | Method for Binary Obfuscating of Dalvix Executable File in Android | |
Kim et al. | ScanDal: Static analyzer for detecting privacy leaks in android applications | |
US9819758B2 (en) | Remote debugging into mobile web applications across devices | |
Lin et al. | Automated forensic analysis of mobile applications on Android devices | |
CN104680039B (en) | A kind of data guard method and device of application program installation kit | |
KR101861341B1 (en) | Deobfuscation apparatus of application code and method of deobfuscating application code using the same | |
US20180300222A1 (en) | Monitoring Activity of Software Development Kits Using Stack Trace Analysis | |
CN106203007B (en) | Code processing method and device and computing equipment | |
CN105574411A (en) | Dynamic unshelling method, device and equipment | |
US20150143348A1 (en) | Hybrid dynamic code compiling device, method, and service system thereof | |
Chen et al. | DroidCIA: A novel detection method of code injection attacks on HTML5-based mobile apps | |
CN112214736A (en) | Code encryption method and related assembly | |
US20130185626A1 (en) | METHOD, TERMINAL AND COMPUTER-READABLE RECORDING MEDIUM FOR COMPILING JAVASCRIPT INCLUDED IN WEB APPLICATION USING Ahead-Of-Time (AOT) | |
CN111008151B (en) | Program scanning method, terminal device and computer readable storage medium | |
Shim et al. | Static and dynamic analysis of Android malware and goodware written with unity framework | |
CN115659333A (en) | Sandbox based on binary instrumentation, memory isolation method and storage medium | |
US20180275976A1 (en) | Link time optimization in presence of a linker script using path based rules | |
CN105786465A (en) | Scripting language execution method and device | |
Ascia et al. | Making android apps data-leak-safe by data flow analysis and code injection | |
KR102314829B1 (en) | Method for evaluating risk of data leakage in application, recording medium and device for performing the method | |
CN111796832B (en) | Hot patch file generation method, device, equipment and storage medium | |
CN109445798B (en) | LuaJIT byte code processing method, device and storage medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |