KR20140029562A - Encryption method for preventing decompile of andriod application - Google Patents
Encryption method for preventing decompile of andriod application Download PDFInfo
- Publication number
- KR20140029562A KR20140029562A KR1020120094179A KR20120094179A KR20140029562A KR 20140029562 A KR20140029562 A KR 20140029562A KR 1020120094179 A KR1020120094179 A KR 1020120094179A KR 20120094179 A KR20120094179 A KR 20120094179A KR 20140029562 A KR20140029562 A KR 20140029562A
- Authority
- KR
- South Korea
- Prior art keywords
- android application
- application
- class
- file
- dex file
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 56
- 230000002265 prevention Effects 0.000 claims abstract description 8
- 238000004806 packaging method and process Methods 0.000 claims abstract description 3
- 230000006837 decompression Effects 0.000 claims description 6
- 238000012790 confirmation Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 3
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/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/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Technology Law (AREA)
- Multimedia (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Stored Programmes (AREA)
Abstract
Description
본 발명은 안드로이드 어플리케이션의 디컴파일 방지를 위한 암호화 방법에 관한 것이다. 보다 상세하게는 안드로이드 어플리케이션을 암호화시켜 배포한 후 실행 시 복호화 함으로써 안드로이드 어플리케이션에 대한 디컴파일을 방지할 수 있는 안드로이드 어플리케이션의 디컴파일 방지를 위한 암호화 방법에 관한 것이다.The present invention relates to an encryption method for preventing decompilation of an Android application. More particularly, the present invention relates to an encryption method for preventing decompilation of an Android application that can decrypt an Android application by encrypting and distributing the Android application and decrypting the application after execution.
안드로이드란 2007년 11월 공개된 휴대폰 용 운영체제, 미들웨어, 및 응용 프로그램이 통합된 소프트웨어 플랫폼을 의미하며, 오픈 소스를 기반의 완전 개방형 플랫폼이라는 안드로이드의 특성상 누구나 이를 활용하여 소프트웨어 또는 기기를 개발할 수 있으므로 그 보급 및 활용이 급속도로 확대되고 있는 추세에 있다.Android means the software platform integrated with the operating system, middleware, and applications for mobile phones released in November 2007. Because Android is a completely open platform based on open source, anyone can use it to develop software or devices, Is spreading rapidly.
이에 따라, 최근 그 규모가 급속도로 확대되고 있는 스마트 기기용 응용 프로그램인 어플리케이션(application)의 경우에도 안드로이드 기반으로 제작되는 경우가 많아져 2011년 3월 기준으로 안드로이드 어플리케이션의 숫자가 25만개를 돌파하고 있다.As a result, applications for smart devices, which are rapidly expanding in recent years, are also being produced on the basis of Android. As of March 2011, the number of Android applications exceeded 250,000 have.
도 1은 종래의 안드로이드 어플리케이션 실행 과정에 대한 참고도이다.1 is a reference diagram for a conventional process of executing an Android application.
도 1에 도시된 바와 같이 종래의 안드로이드 어플리케이션의 경우 어플리케이션을 실행해주는 달빅 가상 머신(Dalvik Virtual machine)을 통해 어플리케이션의 코드가 실행되며, 실행 코드의 경우 어플리케이션에 포함된 덱스(dex) 파일에 저장이 이루어진다.As shown in FIG. 1, in the case of a conventional Android application, an application code is executed through a Dalvik virtual machine that executes an application. In the case of an execution code, the application is stored in a dex file included in an application .
그러나, 상기와 같은 방식으로 실행되는 안드로이드 어플리케이션의 경우 어플리케이션의 시장 규모의 확대와 동시에 크게 성행하고 있는 어플리케이션의 위변조에 활용되는 디컴파일을 방지하기가 용이하지 못한 문제점이 있었으며, 안드로이드 어플리케이션의 디컴파일 방지를 위해 단순히 덱스 파일에 포함된 실행 코드를 전부 암호화하는 경우에는 덱스 파일이 제대로 실행되지 못하는 문제점이 있었다.However, in the case of the Android application executed in the above-described manner, it is not easy to prevent decompilation which is used for forgery and falsification of the application, There is a problem in that the dex file can not be executed properly if the executable code included in the dex file is completely encrypted.
본 발명은 상기와 같은 문제점을 해결하고자 안출된 것으로 안드로이드 어플리케이션의 실행을 위한 덱스(dex) 파일을 암호화한 후 달빅 가상 머신에 의한 실행과정에서 암호화된 덱스 파일이 복호화되록 함으로써 디컴파일을 방지할 수 있는 안드로이드 어플리케이션의 디컴파일 방지를 위한 암호화 방법을 제공하는 것을 목적으로 한다.DISCLOSURE OF THE INVENTION An object of the present invention is to solve the above problems, and it is an object of the present invention to provide a method and apparatus for encrypting a dex file for execution of an Android application and decrypting the encrypted dex file during execution by the Dalvik virtual machine, The purpose of this section is to provide an encryption method for preventing decompilation of an Android application.
상기 목적을 달성하기 위한 본 발명의 바람직한 실시예에 따른 안드로이드 어플리케이션의 디컴파일 방지를 위한 암호화 방법은 안드로이드 어플리케이션의 디컴파일 방지를 위한 암호화 방법에 있어서, (a) 안드로이드 어플리케이션의 소스 파일에 디컴파일 방지 코드를 삽입한 후 컴파일(compile)하여 상기 안드로이드 어플리케이션의 실행을 위한 덱스(dex) 파일을 생성하는 단계; (b) 상기 덱스 파일을 암호화하는 단계; 및 (c) 상기 암호화된 덱스 파일과 미리 생성된 상기 암호화된 덱스 파일에 대한 복호화 로직이 포함된 라이브러리가 상기 안드로이드 어플리케이션에 포함되도록 상기 안드로이드 어플리케이션을 패키징하는 단계를 포함하는 것을 특징으로 한다.According to another aspect of the present invention, there is provided an encryption method for preventing undecompilation of an Android application, the encryption method comprising: (a) decoding a source file of an Android application, Generating a dex file for executing the Android application by compiling the code after inserting the code; (b) encrypting the dex file; And (c) packaging the Android application so that the library containing the encrypted dex file and decryption logic for the encrypted dex file generated in advance is included in the android application.
또한, 상기 (a) 단계에서 상기 디컴파일 방지 코드는 상기 안드로이드 어플리케이션 실행 시 상기 복호화 로직이 포함된 라이브러리를 호출하기 위한 코드이고, 상기 안드로이드 어플리케이션 실행 시 최초 실행되는 상기 어플리케이션 소스 파일의 어플리케이션 클래스(application class)와 서비스 클래스(service class) 시작 부분에 삽입될 수 있다.The decryption preventing code is a code for calling a library including the decryption logic when the Android application is executed. In the step (a), the decryption preventing code is an application class of the application source file class and a service class at the beginning of a service class.
또한, 상기 (b) 단계에서 상기 덱스 파일의 암호화는 상기 어플리케이션 클래스와 상기 서비스 클래스의 시작 부분을 제외한 나머지 부분에서 이루어질 수 있다.Also, in the step (b), the encryption of the dex file may be performed in the remainder of the application class and the start of the service class.
또한, 상기 (b) 단계는 (b1) 상기 덱스 파일에 포함된 복수 개의 클래스 각각에 대한 인덱스 정보 및 오프셋 정보와 각각의 클래스에 포함된 복수 개의 메소드의 인덱스 정보를 확인하는 단계; (b2) 상기 확인 결과를 이용하여 제1 비밀키를 생성하는 단계; (b3) 상기 제1 비밀키를 이용하여 상기 각각의 클래스에 포함된 복수 개의 메소드 별로 각각의 메소드에 대한 인덱스 정보가 포함된 제2 비밀키를 생성하는 단계; 및 (b4) 상기 복수 개의 메소드 각각에 대하여 생성된 상기 제2 비밀키를 이용하여 상기 복수 개의 클래스 별로 각각의 클래스에 포함된 상기 복수 개의 메소드를 암호화하는 단계를 포함할 수 있다.The step (b) includes the steps of: (b1) checking index information and offset information of each of a plurality of classes included in the Dex file and index information of a plurality of methods included in each class; (b2) generating a first secret key using the confirmation result; (b3) generating a second secret key including index information of each method for each of a plurality of methods included in each class using the first secret key; And (b4) encrypting the plurality of methods included in each class by the plurality of classes using the second secret key generated for each of the plurality of methods.
또한, 상기 (b2) 단계에서 상기 제1 비밀키는 상기 복수 개의 클래스 각각의 오프셋 정보 및 부모 클래스 정보를 조합하여 생성될 수 있다.In the step (b2), the first secret key may be generated by combining offset information and parent class information of each of the plurality of classes.
또한, 상기 (b3) 단계에서 상기 제2 비밀키는 상기 복수 개의 클래스 각각에 포함된 상기 복수 개의 메소드 별로 다른 값을 가질 수 있다.Also, in the step (b3), the second secret key may have a different value for each of the plurality of methods included in each of the plurality of classes.
본 발명에 의하면 안드로이드 어플리케이션을 암호화시켜 배포한 후 어플리케이션의 실행 시 별도의 복호화 모듈에 의해 복호화 되도록 하므로 안드로이드 어플리케이션에 대한 디컴파일을 방지할 수 있는 효과를 갖는다.According to the present invention, after an Android application is encrypted and distributed, it is decrypted by a separate decryption module when an application is executed, thereby preventing decompilation of an Android application.
도 1은 종래의 안드로이드 어플리케이션 실행 과정에 대한 참고도,
도 2는 본 발명의 바람직한 실시예에 따른 안드로이드 어플리케이션 디컴파일 방지를 위한 암호화 방법에 대한 순서도,
도 3은 도 2의 S20에 대한 상세 순서도, 및
도 4는 본 발명의 바람직한 실시예에 따른 안드로이드 어플리케이션 디컴파일 방지를 위한 암호화 방법이 적용된 어플리케이션 실행 과정에 대한 참고도이다.FIG. 1 is a reference diagram of a conventional execution process of an Android application,
2 is a flowchart of an encryption method for preventing decompression of an Android application according to a preferred embodiment of the present invention;
3 is a detailed flowchart of S20 in Fig. 2, and Fig.
4 is a reference diagram of an application execution process to which an encryption method for preventing decompilation of an Android application according to a preferred embodiment of the present invention is applied.
이하, 본 발명의 바람직한 실시예를 첨부한 도면들을 참조하여 상세하게 설명하도록 한다. 우선 각 도면의 구성 요소들에 참조 부호를 첨가함에 있어서, 동일한 구성 요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 이하에서 본 발명의 바람직한 실시예를 설명할 것이나, 본 발명의 기술적 사상은 이에 한정하거나 제한되지 않고 당업자에 의해 실시될 수 있음은 물론이다.Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings. In the drawings, the same reference numerals are used to designate the same or similar components throughout the drawings. Further, the preferred embodiments of the present invention will be described below, but it is needless to say that the technical idea of the present invention is not limited thereto and can be practiced by those skilled in the art.
도 2는 본 발명의 바람직한 실시예에 따른 안드로이드 어플리케이션 디컴파일 방지를 위한 암호화 방법에 대한 순서도 이다.2 is a flowchart illustrating an encryption method for preventing decompilation of an Android application according to a preferred embodiment of the present invention.
도 2에 도시된 바와 같이 S10에서 안드로이드 어플리케이션의 소스 파일에 디컴파일 방지 코드를 삽입한 후 컴파일(compile) 하여 상기 안드로이드 어플리케이션의 실행을 위한 덱스(dex) 파일을 생성하고, S20에서 상기 덱스 파일을 암호화 한다.As shown in FIG. 2, in step S10, a decompression prevention code is inserted into a source file of the Android application and compiled to generate a dex file for execution of the Android application. In step S20, Encrypt.
이때, S10에서 상기 디컴파일 방지 코드는 상기 안드로이드 어플리케이션 실행 시 상기 암호화된 덱스 파일에 대한 복호화를 수행하기 위한 복호화 로직이 포함된 라이브러리를 호출하기 위한 코드이고, 상기 안드로이드 어플리케이션 실행 시 최초 실행되는 어플리케이션 클래스(application class)와 서비스 클래스(service class)의 시작 부분에 삽입될 수 있으며, 상기 복호화 로직이 포함된 라이브러리는 미리 생성될 수 있다.At this time, the decompilation preventing code is a code for calling a library including decryption logic for decrypting the encrypted dex file when the Android application is executed, and an application class and may be inserted at the beginning of an application class and a service class, and a library including the decryption logic may be generated in advance.
또한, S20에서 상기 덱스 파일에 대한 암호화는 상기 어플리케이션 클래스와 상기 서비스 클래스의 시작 부분을 제외한 나머지 부분에서 이루어질 수 있고, S20에 대한 상세 과정은 이하 도 3을 참조하여 보다 상세하게 설명하도록 한다.In S20, the encryption of the Dex file may be performed in the remaining portion except for the application class and the start portion of the service class, and the detailed procedure of S20 will be described in detail with reference to FIG.
S30에서 상기 암호화된 덱스 파일과 상기 미리 생성된 상기 암호화된 덱스 파일에 대한 복호화 로직이 포함된 라이브러리가 상기 안드로이드 어플리케이션에 포함되도록 상기 안드로이드 어플리케이션을 패키징하면 종료가 이루어진다.In S30, when the Android application is packaged in the Android application so that a library including the encrypted dex file and the decryption logic for the encrypted dex file generated in advance is included in the Android application, the process is terminated.
도 3은 도 2의 S20에 대한 상세 순서도 이다.FIG. 3 is a detailed flowchart of S20 in FIG.
도 3에 도시된 바와 같이 S21에서 상기 덱스 파일에 포함된 복수 개의 클래스 각각에 대한 인덱스(index) 정보 및 오프셋(offset) 정보와 각각의 클래스에 포함된 복수 개의 메소드의 인덱스 정보를 확인한다.As shown in FIG. 3, in step S21, index information and offset information of each of a plurality of classes included in the Dex file and index information of a plurality of methods included in each class are checked.
S23에서 상기 확인 결과를 이용하여 상기 덱스 파일의 암호화를 위한 제1 비밀키(common key)를 생성한다.In step S23, a first secret key for encrypting the dex file is generated using the confirmation result.
이때, S23에서 상기 제1 비밀키는 상기 복수 개의 클래스 각각의 오프셋 정보 및 부모 클래스 정보를 조합하여 생성될 수 있고, 덱스 파일의 구현에 사용되는 클래스 오프셋 정보는 덱스 파일의 구현 형태에 따라 달라지므로 상기 제1 비밀키는 유일한 값을 가질 수 있게 된다.At this time, in S23, the first secret key may be generated by combining the offset information and the parent class information of each of the plurality of classes, and the class offset information used in the implementation of the dex file differs depending on the implementation form of the dex file The first secret key can have a unique value.
S25에서 상기 제1 비밀키를 이용하여 상기 각각의 클래스에 포함돈 복수 개의 메소드 별로 각각의 메소드에 대한 인덱스 정보가 포함된 제2 비밀키를 생성한다.In step S25, a second secret key including index information on each method is generated for each of a plurality of methods included in each class using the first secret key.
이때, S25에서 상기 제2 비밀키는 상기 복수 개의 클래스 각각에 포함된 상기 복수 개의 메소드 별로 다른 값을 가질 수 있다.At this time, in step S25, the second secret key may have a different value for each of the plurality of methods included in each of the plurality of classes.
S27에서 상기 복수 개의 메소드 각각에 대하여 생성된 상기 제2 비밀키를 이용하여 상기 복수 개의 클래스 별로 각각의 클래스에 포함된 상기 복수 개의 메소드를 암호화하면 종료가 이루어진다.In S27, if the plurality of methods included in each class are encrypted for each of the plurality of classes using the second private key generated for each of the plurality of methods, the process is terminated.
본 발명의 안드로이드 어플리케이션의 디컴파일 방지를 위한 암호화 방법의 경우 안드로이드 어플리케이션의 소스 파일에 디컴파일 방지 코드를 삽입한 후 컴파일 하여 덱스 파일을 생성하고, 상기 생성된 덱스 파일 중 상기 디컴파일 방지 코드가 삽입된 어플리케이션 클래스와 서비스 클래스의 시작 부분을 제외한 나머지 부분을 암호화하게 하므로 안드로이드 어플리케이션의 디컴파일을 방지할 수 있게 된다.In the case of the encryption method for preventing the decompression of the Android application of the present invention, the decompression prevention code is inserted into the source file of the Android application, and then the decompression prevention code is generated to generate a dex file. It encrypts the rest of the application class and the rest of the service class except for the beginning, thereby preventing the decompilation of the Android application.
또한, 본 발명의 안드로이드 어플리케이션의 디컴파일 방지를 위한 암호화 방법이 적용된 어플리케이션의 경우 도 4에 도시된 바와 같이 안드로이드 어플리케이션의 실행을 위한 암호화된 덱스 파일(도 4의 Encrypted App-Enc(dex))이 달빅 가상 머신(도 4의 Dalvik VM)에 의해 실행되기 전에 앞서서 상기 암호화된 덱스 파일에 포함된 디컴파일 방지 코드가 실행되며, 이에 따라 상기 암호화된 덱스 파일에 대한 복호화 로직이 포함된 라이브러리(도 4의 Converter(Decrypt Module)이 가 호출되어 상기 암호화된 덱스 파일에 대한 복호화가 수행된 후 달빅 가상 머신에 의해 상기 복호화된 덱스 파일의 실행이 이루어질 수 있다.In addition, in the case of an application to which the encryption method for preventing decompilation of the Android application of the present invention is applied, an encrypted dex file (Encrypted App-Enc (dex) in Fig. 4) for execution of the Android application The de-compiling prevention code included in the encrypted dex file is executed before being executed by the Dalvik virtual machine (the Dalvik VM in Fig. 4), and accordingly the library containing the decryption logic for the encrypted dex file (Decrypt Module) of the decrypted file is called and the decrypted decrypted file is decrypted, and then the decrypted decrypted file is executed by the dalvik virtual machine.
다시 말해서, 상기 암호화된 덱스 파일 실행 시 상기 디컴파일 방지 코드의 동작에 의해 상기 복호화 로직이 포함된 라이브러리가 호출되며, 도 3의 S21 내지 S25와 유사하게 상기 암호화된 덱스 파일에 포함된 복수 개의 클래스 각각에 대한 인덱스 정보 및 오프셋 정보와 각각의 클래스에 포함된 복수 개의 메소드의 인덱스 정보를 확인하고, 상기 확인 결과를 이용하여 상기 제1 비밀키를 생성하며, 상기 제1 비밀키를 이용하여 상기 각각의 클래스에 포함된 복수 개의 메소드 별로 각각의 메소드에 포함된 인덱스 정보가 포함된 상기 제2 비밀키를 생성한 후 상기 제2 비밀키를 이용하여 상기 복수 개의 클래스 각각에 포함된 상기 복수 개의 메소드 에 대한 복호화가 이루어질 수 있으며, 상기 복호화된 상기 복수 개의 클래스 각각에 포함된 상기 복수 개의 메소드가 메모리에 로드된 후 상기 복호화된 복수 개의 메소드를 참조하는 것에 의해 상기 복호화된 덱스 파일의 실행이 이루어질 수 있다.In other words, the library containing the decryption logic is called by the operation of the decryption prevention code when executing the encrypted dex file, and similarly to S21 to S25 of Fig. 3, a plurality of classes included in the encrypted dex file Index information and offset information of each class and index information of a plurality of methods included in each class, and generates the first secret key using the result of the check, The method comprising: generating the second secret key including index information included in each method for each of a plurality of methods included in the class of the class, And decrypting the plurality of classes included in each of the decrypted classes After the method is loaded into the memory, the decoded dex file can be executed by referring to the plurality of decrypted methods.
또한, 본 발명의 바람직한 실시예에 따른 안드로이드 어플리케이션 디컴파일 방지를 위한 암호화 방법은 이미 패키징이 완료된 안드로이드 어플리케이션 패키지 파일(apk 파일) 상에서도 적용이 가능한데, 이 경우 상기 안드로이드 어플리케이션 패키지 파일인 AndroidManifest.xml 파일(안드로이드 어플리케이션 구성과 관련된 모든 정보를 포함하는 파일)을 분석하여 서비스 클래스와 어플리케이션 클래스의 존재 유무를 검색하고 해당 클래스가 존재하지 않는 경우 어플리케이션 클래스를 AndroidManifest.xml 파일에 추가한다.In addition, the encryption method for preventing the decompilation of the Android application according to the preferred embodiment of the present invention can be applied to the already-packaged Android application package file (apk file). In this case, the AndroidManifest.xml file And a file containing all the information related to the configuration of the Android application) is searched for existence of the service class and the application class, and if the corresponding class does not exist, the application class is added to the AndroidManifest.xml file.
그리고, 도 2에 도시된 S20 내지 S30 단계를 수행하여 안드로이드 어플리케이션 패키지 파일에 대하여 본 발명의 안드로이드 어플리케이션의 디컴파일 방지를 위한 암호화 방법을 적용할 수 있게 된다.Then, the encryption method for preventing decompilation of the Android application of the present invention can be applied to the Android application package file by performing steps S20 to S30 shown in FIG.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위 내에서 다양한 수정, 변경, 및 치환이 가능할 것이다. 따라서 본 발명에 개시된 실시예 및 첨부된 도면들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예 및 첨부된 도면들에 의해서 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구 범위에 의해서 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리 범위에 포함되는 것으로 해석되어야 할 것이다.It will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the spirit and scope of the invention as defined by the appended claims. It will be possible. Therefore, the embodiments disclosed in the present invention and the accompanying drawings are intended to illustrate and not to limit the technical spirit of the present invention, and the scope of the technical idea of the present invention is not limited by these embodiments and the accompanying drawings . The scope of protection of the present invention should be construed according to the following claims, and all technical ideas within the scope of equivalents thereof should be construed as being included in the scope of the present invention.
Claims (6)
(a) 안드로이드 어플리케이션의 소스 파일에 디컴파일 방지 코드를 삽입한 후 컴파일(compile)하여 상기 안드로이드 어플리케이션의 실행을 위한 덱스(dex) 파일을 생성하는 단계;
(b) 상기 덱스 파일을 암호화하는 단계; 및
(c) 상기 암호화된 덱스 파일과 미리 생성된 상기 암호화된 덱스 파일에 대한 복호화 로직이 포함된 라이브러리가 상기 안드로이드 어플리케이션에 포함되도록 상기 안드로이드 어플리케이션을 패키징하는 단계를 포함하는 것을 특징으로 하는 안드로이드 어플리케이션의 디컴파일 방지를 위한 암호화 방법.An encryption method for preventing decompilation of an Android application,
(a) inserting a decompilation preventing code into a source file of the Android application and compiling the decompression preventing code to generate a dex file for executing the Android application;
(b) encrypting the dex file; And
(c) packaging the Android application so that the library containing the decrypted encrypted file and decryption logic for the encrypted dex file generated in advance is included in the android application. Encryption method to prevent compilation.
상기 (a) 단계에서,
상기 디컴파일 방지 코드는 상기 안드로이드 어플리케이션 실행 시 상기 복호화 로직이 포함된 라이브러리를 호출하기 위한 코드이고, 상기 안드로이드 어플리케이션 실행 시 최초 실행되는 상기 어플리케이션 소스 파일의 어플리케이션 클래스(application class)와 서비스 클래스(service class) 시작 부분에 삽입되는 것을 특징으로 하는 안드로이드 어플리케이션의 디컴파일 방지를 위한 암호화 방법.The method according to claim 1,
In the step (a)
The decompiling prevention code is a code for calling the library including the decryption logic when the Android application is executed. The application class and the service class of the application source file, which is executed first when the Android application is executed, ) Is inserted at the start of the encryption process.
상기 (b) 단계에서,
상기 덱스 파일의 암호화는 상기 어플리케이션 클래스와 상기 서비스 클래스의 시작 부분을 제외한 나머지 부분에서 이루어지는 것을 특징으로 하는 안드로이드 어플리케이션의 디컴파일 방지를 위한 암호화 방법.3. The method of claim 2,
In the step (b)
Wherein the encryption of the dex file is performed in the remaining portion except for the application class and the start portion of the service class.
상기 (b) 단계는,
(b1) 상기 덱스 파일에 포함된 복수 개의 클래스 각각에 대한 인덱스 정보 및 오프셋 정보와 각각의 클래스에 포함된 복수 개의 메소드의 인덱스 정보를 확인하는 단계;
(b2) 상기 확인 결과를 이용하여 제1 비밀키를 생성하는 단계;
(b3) 상기 제1 비밀키를 이용하여 상기 각각의 클래스에 포함된 복수 개의 메소드 별로 각각의 메소드에 대한 인덱스 정보가 포함된 제2 비밀키를 생성하는 단계; 및
(b4) 상기 복수 개의 메소드 각각에 대하여 생성된 상기 제2 비밀키를 이용하여 상기 복수 개의 클래스 별로 각각의 클래스에 포함된 상기 복수 개의 메소드를 암호화하는 단계를 포함하는 것을 특징으로 하는 안드로이드 어플리케이션의 디컴파일 방지를 위한 암호화 방법.The method according to claim 1,
The step (b)
(b1) checking index information and offset information of each of a plurality of classes included in the dex file and index information of a plurality of methods included in each class;
(b2) generating a first secret key using the confirmation result;
(b3) generating a second secret key including index information of each method for each of a plurality of methods included in each class using the first secret key; And
(b4) encrypting the plurality of methods included in each class by the plurality of classes using the second secret key generated for each of the plurality of methods. Encryption method to prevent compilation.
상기 (b2) 단계에서,
상기 제1 비밀키는 상기 복수 개의 클래스 각각의 오프셋 정보 및 부모 클래스 정보를 조합하여 생성되는 것을 특징으로 하는 안드로이드 어플리케이션의 디컴파일 방지를 위한 암호화 방법.The method of claim 3,
In the step (b2)
Wherein the first secret key is generated by combining offset information and parent class information of each of the plurality of classes.
상기 (b3) 단계에서,
상기 제2 비밀키는 상기 복수 개의 클래스 각각에 포함된 상기 복수 개의 메소드 별로 다른 값을 갖는 것을 특징으로 하는 안드로이드 어플리케이션의 디컴파일 방지를 위한 암호화 방법.5. The method of claim 4,
In the step (b3)
Wherein the second secret key has a different value for each of the plurality of methods included in each of the plurality of classes.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020120094179A KR101391982B1 (en) | 2012-08-28 | 2012-08-28 | Encryption method for preventing decompile of andriod application |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020120094179A KR101391982B1 (en) | 2012-08-28 | 2012-08-28 | Encryption method for preventing decompile of andriod application |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140029562A true KR20140029562A (en) | 2014-03-11 |
KR101391982B1 KR101391982B1 (en) | 2014-05-07 |
Family
ID=50642424
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020120094179A KR101391982B1 (en) | 2012-08-28 | 2012-08-28 | Encryption method for preventing decompile of andriod application |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101391982B1 (en) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104090772A (en) * | 2014-07-23 | 2014-10-08 | 广州金山网络科技有限公司 | Method and device for generating android package (APK) |
KR101518420B1 (en) * | 2014-11-11 | 2015-05-07 | 주식회사 에스이웍스 | Apparatus and method for managing apk file in a android platform |
KR20150134254A (en) * | 2014-05-21 | 2015-12-01 | 단국대학교 산학협력단 | A method and an apparatus protecting application of a server and a portable terminal |
WO2016054880A1 (en) * | 2014-10-08 | 2016-04-14 | 中兴通讯股份有限公司 | Apk file application expanding method and device |
KR20160118920A (en) | 2015-04-04 | 2016-10-12 | 홍동철 | Method of apk file protection, apk file protection system performing the same, and storage medium storing the same |
WO2017026738A1 (en) * | 2015-08-10 | 2017-02-16 | 라인 가부시키가이샤 | System and method for protecting codes for application |
WO2017026739A1 (en) * | 2015-08-10 | 2017-02-16 | 라인 가부시키가이샤 | System and method for obfuscating application code |
CN106557305A (en) * | 2015-09-25 | 2017-04-05 | 株式会社理光 | A kind of method and system of automatic playback Android program |
WO2018199366A1 (en) * | 2017-04-28 | 2018-11-01 | 라인 가부시키가이샤 | Method and system for detecting whether obfuscation has been applied to dex file and evaluating security |
US10255443B2 (en) | 2016-02-11 | 2019-04-09 | Line Corporation | Method, apparatus, system and non-transitory computer readable medium for code protection |
KR102113966B1 (en) * | 2019-11-25 | 2020-05-21 | 숭실대학교산학협력단 | Recorded media recording of the bypass device, method and program for performing the analysis |
CN111552518A (en) * | 2019-01-24 | 2020-08-18 | 阿里巴巴集团控股有限公司 | Control loading method and device for starting application |
US10963563B2 (en) | 2017-04-20 | 2021-03-30 | Line Corporation | Method and system for evaluating security of application |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108536451B (en) * | 2016-12-05 | 2021-06-15 | 腾讯科技(深圳)有限公司 | Method and device for embedding embedded point of application program |
KR20210083780A (en) | 2019-12-27 | 2021-07-07 | 주식회사 린아레나 | Method and system for improving android app security by DEX file segmentation and obfuscation |
KR20240050511A (en) | 2022-10-11 | 2024-04-19 | 라온시큐어(주) | Code virtualization systems and methods |
KR20240050512A (en) | 2022-10-11 | 2024-04-19 | 라온시큐어(주) | Code virtualization systems and methods |
KR20240050513A (en) | 2022-10-11 | 2024-04-19 | 라온시큐어(주) | Code virtualization systems and methods |
-
2012
- 2012-08-28 KR KR1020120094179A patent/KR101391982B1/en active IP Right Grant
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150134254A (en) * | 2014-05-21 | 2015-12-01 | 단국대학교 산학협력단 | A method and an apparatus protecting application of a server and a portable terminal |
CN104090772A (en) * | 2014-07-23 | 2014-10-08 | 广州金山网络科技有限公司 | Method and device for generating android package (APK) |
WO2016054880A1 (en) * | 2014-10-08 | 2016-04-14 | 中兴通讯股份有限公司 | Apk file application expanding method and device |
KR101518420B1 (en) * | 2014-11-11 | 2015-05-07 | 주식회사 에스이웍스 | Apparatus and method for managing apk file in a android platform |
US9535942B2 (en) | 2014-11-11 | 2017-01-03 | SEWORKS, Inc. | Apparatus and method for managing APK file in an android platform |
KR20160118920A (en) | 2015-04-04 | 2016-10-12 | 홍동철 | Method of apk file protection, apk file protection system performing the same, and storage medium storing the same |
US10740443B2 (en) | 2015-08-10 | 2020-08-11 | Line Corporation | System and method for code obfuscation of application |
WO2017026738A1 (en) * | 2015-08-10 | 2017-02-16 | 라인 가부시키가이샤 | System and method for protecting codes for application |
WO2017026739A1 (en) * | 2015-08-10 | 2017-02-16 | 라인 가부시키가이샤 | System and method for obfuscating application code |
CN106557305A (en) * | 2015-09-25 | 2017-04-05 | 株式会社理光 | A kind of method and system of automatic playback Android program |
CN106557305B (en) * | 2015-09-25 | 2020-02-21 | 株式会社理光 | Method and system for automatically playing back Android program |
US10255443B2 (en) | 2016-02-11 | 2019-04-09 | Line Corporation | Method, apparatus, system and non-transitory computer readable medium for code protection |
US10963563B2 (en) | 2017-04-20 | 2021-03-30 | Line Corporation | Method and system for evaluating security of application |
WO2018199366A1 (en) * | 2017-04-28 | 2018-11-01 | 라인 가부시키가이샤 | Method and system for detecting whether obfuscation has been applied to dex file and evaluating security |
CN111552518A (en) * | 2019-01-24 | 2020-08-18 | 阿里巴巴集团控股有限公司 | Control loading method and device for starting application |
CN111552518B (en) * | 2019-01-24 | 2023-04-07 | 阿里巴巴集团控股有限公司 | Method and device for loading control for starting application |
KR102113966B1 (en) * | 2019-11-25 | 2020-05-21 | 숭실대학교산학협력단 | Recorded media recording of the bypass device, method and program for performing the analysis |
Also Published As
Publication number | Publication date |
---|---|
KR101391982B1 (en) | 2014-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101391982B1 (en) | Encryption method for preventing decompile of andriod application | |
KR101471589B1 (en) | Method for Providing Security for Common Intermediate Language Program | |
KR101518420B1 (en) | Apparatus and method for managing apk file in a android platform | |
KR101091465B1 (en) | Method and apparatus for the secure processing of confidential content within a virtual machine of a processor | |
KR101623096B1 (en) | Apparatus and method for managing apk file in a android platform | |
JP6227772B2 (en) | Method and apparatus for protecting a dynamic library | |
US20150095653A1 (en) | Method and apparatus of creating application package, method and apparatus of executing application package, and recording medium storing application package | |
KR102433011B1 (en) | Method of apk file protection, apk file protection system performing the same, and storage medium storing the same | |
CN102346834A (en) | Method for encrypting and protecting Java application software | |
CN101814124A (en) | Java-based method for enhancing software security | |
US20180067777A1 (en) | Application protection method, server, and terminal | |
JP2012118956A (en) | Index table-based code encryption and decryption device and method therefor | |
CN103473488B (en) | The method and system that a kind of android application program is anti-piracy | |
CN112613023A (en) | Protection method and terminal for authentication information generation algorithm | |
CN107871066B (en) | Code compiling method and device based on android system | |
CN107257282B (en) | Code full-package encryption method based on RC4 algorithm | |
KR20080046515A (en) | Encoding and decoding method of contents file | |
CN104657635A (en) | Application processing method, device and server | |
KR20140139392A (en) | Method for generating application execution file for mobile device, application execution method of mobile device, device for generating application execution file and mobile device | |
KR101863325B1 (en) | Method and apparatus for preventing reverse engineering | |
CN112733094A (en) | Safety protection method for Java application program | |
CN104090772A (en) | Method and device for generating android package (APK) | |
CN117313046A (en) | Code reinforcement method, code loading method, device and medium | |
CN112115430A (en) | Apk reinforcement method, electronic equipment and storage medium | |
CN105426702A (en) | Android operating system based application program encrypting method and device, and Android operating system based application program decrypting method and device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
N231 | Notification of change of applicant | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20170410 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20180410 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20190423 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20200310 Year of fee payment: 7 |