KR20140029562A - Encryption method for preventing decompile of andriod application - Google Patents

Encryption method for preventing decompile of andriod application Download PDF

Info

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
Application number
KR1020120094179A
Other languages
Korean (ko)
Other versions
KR101391982B1 (en
Inventor
이정훈
박찬암
홍주형
Original Assignee
바른소프트기술 주식회사
이정훈
라온시큐어(주)
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 바른소프트기술 주식회사, 이정훈, 라온시큐어(주) filed Critical 바른소프트기술 주식회사
Priority to KR1020120094179A priority Critical patent/KR101391982B1/en
Publication of KR20140029562A publication Critical patent/KR20140029562A/en
Application granted granted Critical
Publication of KR101391982B1 publication Critical patent/KR101391982B1/en

Links

Images

Classifications

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

The present invention relates to an encoding method for preventing the decompilation of an Android application and, more specifically, to an encoding method for preventing the decompilation of an Android application, which is capable of preventing the decompilation of an Android application by decoding the Android application when executing the Android application after encoding and distributing the Android application. The encoding method for preventing the decompilation of an Android application according to the present invention comprises the steps of: (a) inserting a decompile prevention code into a source file of an Android application, compiling the source file, and generating a dex file to execute the Android application; (b) encoding the dex file; and (c) packaging the Android application such that the encoded dex file, and a library including a decoding logic for the encoded dex file are included in the Android application. Thus, the decompilation of the Android application can be prevented by decoding the Android application by a separate decoding module when executing the Android application after encoding and distributing the Android application. [Reference numerals] (AA) Start; (BB) End; (S10) Insert a decompile prevention code into a source file of an Android application, compile the source file, and generate a dex file; (S20) Encode the dex file; (S30) Package the Android application such that the encoded dex file, and a library including a decoding logic for the encoded dex file are included

Description

안드로이드 어플리케이션의 디컴파일 방지를 위한 암호화 방법{Encryption method for preventing decompile of andriod application}[0001] The present invention relates to an encryption method for preventing decompilation of an Android application,

본 발명은 안드로이드 어플리케이션의 디컴파일 방지를 위한 암호화 방법에 관한 것이다. 보다 상세하게는 안드로이드 어플리케이션을 암호화시켜 배포한 후 실행 시 복호화 함으로써 안드로이드 어플리케이션에 대한 디컴파일을 방지할 수 있는 안드로이드 어플리케이션의 디컴파일 방지를 위한 암호화 방법에 관한 것이다.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.
제 1항에 있어서,
상기 (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.
제 2항에 있어서,
상기 (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.
제 1항에 있어서,
상기 (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.
제 3항에 있어서,
상기 (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.
제 4항에 있어서,
상기 (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.
KR1020120094179A 2012-08-28 2012-08-28 Encryption method for preventing decompile of andriod application KR101391982B1 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (17)

* Cited by examiner, † Cited by third party
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