KR20170018744A - System and method for protecting code of application - Google Patents

System and method for protecting code of application Download PDF

Info

Publication number
KR20170018744A
KR20170018744A KR1020150112740A KR20150112740A KR20170018744A KR 20170018744 A KR20170018744 A KR 20170018744A KR 1020150112740 A KR1020150112740 A KR 1020150112740A KR 20150112740 A KR20150112740 A KR 20150112740A KR 20170018744 A KR20170018744 A KR 20170018744A
Authority
KR
South Korea
Prior art keywords
file
code
application
library
files
Prior art date
Application number
KR1020150112740A
Other languages
Korean (ko)
Other versions
KR101740133B1 (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 KR1020150112740A priority Critical patent/KR101740133B1/en
Priority to JP2018506544A priority patent/JP6815386B2/en
Priority to PCT/KR2016/008587 priority patent/WO2017026738A1/en
Publication of KR20170018744A publication Critical patent/KR20170018744A/en
Application granted granted Critical
Publication of KR101740133B1 publication Critical patent/KR101740133B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code

Abstract

Disclosed is a content streaming service method and system for reducing communication costs. The method implemented through a computer may include the steps of: receiving an application program package in which files for an application are included, wherein the application program package includes files including intermediate language (IL) codes generated by compiling a code of the application and library files for providing an execution environment on an electronic device to execute the application according to the IL codes; encrypting at least one file among files including the IL codes; and adding a recovery file for decoding the at least one encrypted file to the application program package, wherein the recovery file includes a code for decoding the at least one encrypted file when the at least one encrypted file is transmitted through calling between the library files for executing the application in the electronic device. The present invention may encrypt a file including an execution code of an application, safely decrypt the encrypted file during operating of the application, and at the same time, prevent information used for decrypting the encrypted file from being exposed to a third client.

Description

어플리케이션의 코드를 보호하기 위한 시스템 및 방법{SYSTEM AND METHOD FOR PROTECTING CODE OF APPLICATION}SYSTEM AND METHOD FOR PROTECTING CODE OF APPLICATION [0002]

아래의 설명은 어플리케이션의 코드를 보호하기 위한 시스템 및 방법에 관한 것이다. The following description relates to a system and method for protecting the code of an application.

중간 언어(Intermediate Language 또는 InterLanguage, IL)는 원시 언어 프로그램을 컴파일러로 번역하여 목적 언어 프로그램을 만들 때, 그 중간 단계로 거치게 되는 언어를 의미할 수 있다. 예를 들면 고수준 언어 프로그램을 어셈블리 언어로 바꾼 다음 그것을 어셈블하여 기계어 프로그램을 만든다면, 중간의 어셈블리 언어가 중간 언어가 될 수 있다.An intermediate language (Intermediate Language or InterLanguage, IL) can refer to a language that goes through an intermediate language when a source language program is translated into a compiler to create a target language program. For example, if you change a high-level language program into an assembly language and then assemble it to create a machine language program, then the intermediate assembly language can be an intermediate language.

한국공개특허 제10-2007-0067953은 모바일 플랫폼의 중간 언어 변환 장치 및 그 방법에 관한 것으로, C 또는 C++ 언어로 개발된 모바일 플랫폼 소스 코드를 이동통신 단말기의 인터프리터에서 요구하는 중간 언어 코드로 변환하는 C/C++ 컴파일러와, 중간 언어 코드를 이동통신 단말기의 인터프리터에서 실행되는 포맷으로 변환하는 중간 언어 어셈블러에 대해 개시하고 있다.Korean Patent Laid-Open No. 10-2007-0067953 relates to an apparatus and method for converting an intermediate language of a mobile platform, which converts a mobile platform source code developed in C or C ++ into an intermediate language code required by an interpreter of a mobile communication terminal C / C ++ compiler and an intermediate language assembler for converting intermediate language codes into a format that is executed in an interpreter of a mobile communication terminal.

이러한 중간 언어로의 변환을 거치는 어플리케이션의 코드는 그 특성 상 디컴파일(decompile)에 취약하다. 예를 들어 유니티(Unity)와 같은 툴을 통해 씨샵(C-sharp, C#)과 같은 프로그래밍 언어로 제작된 어플리케이션의 코드는 DLL(Dynamic Linking Library)과 같은 중간 언어의 형태로 컴파일되어 클라이언트의 전자 기기로 제공되고, 전자 기기의 프레임워크에서 실행될 수 있다. 이때, 이러한 중간 언어의 특성에 따라 DLL을 디컴파일하여 코드를 수정하고 다시 DLL로 컴파일하는 것이 가능하기 때문에 어플리케이션을 위변조할 수 있다는 문제점이 존재한다.The code of an application that is converted to such an intermediate language is vulnerable to decompile due to its nature. For example, the code of an application programmed in a programming language such as C-sharp (C #) through a tool such as Unity may be compiled into an intermediate language such as a DLL (Dynamic Linking Library) And can be implemented in the framework of the electronic device. At this time, there is a problem that the application can be forged because the DLL can be decompiled according to the characteristics of the intermediate language, the code can be corrected, and the DLL can be compiled again.

이러한 위변조를 막기 위해 중간 언어 형태의 파일을 단순히 암호화하여 클라이언트로 제공하는 경우, 클라이언트의 전자 기기는 암호화된 파일을 실행할 수 없게 되어 어플리케이션이 구동될 수 없다. 그렇다고 해서, 암호화된 파일을 복호화하기 위한 수단(또는 정보, 일례로 복호화 키)이 클라이언트로 제공된다면, 다시 어플리케이션의 위변조 문제점이 그대로 나타나게 된다.In order to prevent such forgery and falsification, when an intermediate language type file is simply encrypted and provided to the client, the client's electronic apparatus can not execute the encrypted file and the application can not be operated. However, if the means for decrypting the encrypted file (or information, for example a decryption key) is provided to the client, the forgery and falsification problem of the application again appears.

어플리케이션의 실행 코드가 포함된 파일을 암호화하면서도, 어플리케이션의 구동 시 안전하게 암호화된 파일을 복호화하여 실행할 수 있고, 동시에 암호화된 파일을 복호화하기 위한 정보가 제3 자나 클라이언트에게 노출되는 것을 방지할 수 있는 시스템 및 방법을 제공한다.A system capable of encrypting a file including executable code of an application and decrypting and executing a file that is securely encrypted at the time of running the application and at the same time preventing information for decrypting an encrypted file from being exposed to a third party or a client And methods.

컴퓨터로 구현되는 방법에 있어서, 어플리케이션을 위한 파일들이 포함된 응용 프로그램 패키지를 수신하는 단계(상기 응용 프로그램 패키지는, 상기 어플리케이션의 코드가 컴파일되어 생성된 중간 언어(Intermediate Language, IL) 코드를 포함하는 파일들 및 상기 중간 언어 코드에 따라 상기 어플리케이션을 실행하도록 전자 기기에 실행 환경을 제공하기 위한 라이브러리 파일들을 포함함); 상기 중간 언어 코드를 포함하는 파일들 중 적어도 하나의 파일을 암호화하는 단계; 및 상기 적어도 하나의 암호화된 파일의 복호화를 위한 리커버리 파일을 상기 응용 프로그램 패키지에 추가하는 단계(상기 리커버리 파일은, 상기 전자 기기에서의 상기 어플리케이션의 실행을 위해 상기 라이브러리 파일들간의 호출을 통해 상기 적어도 하나의 암호화된 파일이 전달되는 경우에 상기 적어도 하나의 암호화된 파일을 복호화하기 위한 코드를 포함함)를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법을 제공한다.A computer-implemented method, comprising: receiving an application package containing files for an application, the application package including an Intermediate Language (IL) code generated by compiling code of the application; Files and library files for providing an execution environment to the electronic device to execute the application in accordance with the intermediate language code); Encrypting at least one file of files comprising the intermediate language code; And adding a recovery file for decrypting the at least one encrypted file to the application package, wherein the recovery file comprises at least one of the at least one encrypted file, And a code for decrypting the at least one encrypted file if one encrypted file is delivered).

일측에 따르면, 상기 응용 프로그램 패키지를 수신하는 단계는, 상기 중간 언어 코드를 포함하는 파일들 중 암호화하기 위한 파일에 대한 정보를 더 수신하고, 상기 적어도 하나의 파일을 암호화하는 단계는, 상기 중간 언어 코드를 포함하는 파일들 중 상기 더 수신된 정보에 대응하는 파일을 암호화하는 것을 특징으로 할 수 있다.According to one aspect, receiving the application package further comprises receiving information about a file to encrypt, among files containing the intermediate language code, and encrypting the at least one file, And encrypts the file corresponding to the received information among the files including the code.

다른 측면에 따르면, 상기 적어도 하나의 파일은 상기 실행 환경을 위한 헤더 부분 및 상기 어플리케이션을 위한 코드 부분을 포함하고, 상기 적어도 하나의 파일을 암호화하는 단계는, 상기 헤더 부분 및 상기 코드 부분 중 적어도 하나를 암호화하는 것을 특징으로 할 수 있다.According to another aspect, the at least one file includes a header portion for the execution environment and a code portion for the application, and the step of encrypting the at least one file further comprises: And encrypts the encryption key.

또 다른 측면에 따르면, 상기 적어도 하나의 파일을 암호화하는 단계는, 상기 헤더 부분을 암호화하는 경우 상기 헤더 부분이 포함하는 정보를 널(null) 값으로 변경하여 암호화하는 것을 특징으로 할 수 있다.According to another aspect of the present invention, the step of encrypting the at least one file may include encrypting the information included in the header part with a null value when encrypting the header part.

또 다른 측면에 따르면, 상기 라이브러리 파일들은 상기 중간 언어 코드를 포함하는 파일들을 불러오기 위한 코드를 포함하는 제1 라이브러리 파일 및 상기 제1 라이브러리 파일에 대한 API(Application Programming Interface) 호출을 통해 상기 중간 언어 코드를 포함하는 파일들의 풀 버퍼(full buffer)를 리딩하여 파싱하기 위한 코드를 포함하는 제2 라이브러리 파일을 포함하고, 상기 리커버리 파일은 상기 제2 라이브러리 파일이 포함하는 코드를 통해 상기 제1 라이브러리 파일이 API 호출됨에 따라 리딩되는 상기 적어도 하나의 암호화된 파일에 대한 풀 버퍼(full buffer)를 복호화하여 상기 적어도 하나의 암호화된 파일을 복호화하기 위한 코드를 포함하는 것을 특징으로 할 수 있다.According to another aspect, the library files are stored in a first library file including code for loading files containing the intermediate language code and an intermediate language code through an Application Programming Interface (API) call to the first library file And a second library file including a code for reading and parsing a full buffer of files including the code, wherein the recovery file is stored in the first library file And a code for decrypting the at least one encrypted file by decrypting a full buffer of the at least one encrypted file read in response to the API call.

또 다른 측면에 따르면, 상기 리커버리 파일은 상기 제1 라이브러리 파일에 대한 API에 대한 정보를 포함하는 상기 제2 라이브러리 파일의 IAT(Import Address Table)을 후킹(hooking)하여 상기 제2 라이브러리 파일이 포함하는 코드를 통한 상기 API 호출을 확인하기 위한 코드를 포함하는 것을 특징으로 할 수 있다.According to another aspect of the present invention, the recovery file hooks an IAT (Import Address Table) of the second library file including information on the API for the first library file, And a code for confirming the API call through the code.

또 다른 측면에 따르면, 상기 방법은 네트워크를 통한 상기 전자 기기로부터의 요청에 따라 상기 리커버리 파일이 추가된 상기 응용 프로그램 패키지를 상기 전자 기기로 전송하는 단계를 더 포함하는 것을 특징으로 할 수 있다.According to another aspect, the method may further include transmitting the application package to which the recovery file has been added to the electronic device in response to a request from the electronic device through the network.

컴퓨터로 구현되는 방법에 있어서, 어플리케이션을 위한 파일들이 포함된 응용 프로그램 패키지를 수신하는 단계(상기 응용 프로그램 패키지는, 상기 어플리케이션의 코드가 컴파일되어 생성된 중간 언어(Intermediate Language, IL) 코드를 포함하고 암호화된 적어도 하나의 파일 및 상기 중간 언어 코드에 따라 상기 어플리케이션을 실행하도록 전자 기기에 실행 환경을 제공하기 위한 라이브러리 파일들 및 상기 암호화된 적어도 하나의 파일을 복호화하기 위한 리커버리 파일을 포함함); 및 상기 어플리케이션의 실행 과정에서, 상기 리커버리 파일에 포함된 코드의 제어에 따라 상기 어플리케이션의 실행을 위해 상기 라이브러리 파일들간의 호출을 통해 상기 적어도 하나의 암호화된 파일이 전달되는 경우에 상기 적어도 하나의 암호화된 파일을 복호화하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법을 제공한다.A computer-implemented method, comprising: receiving an application package including files for an application, the application package including an Intermediate Language (IL) code generated by compiling code of the application; At least one file encrypted and library files for providing an execution environment to the electronic device to execute the application in accordance with the intermediate language code, and a recovery file for decrypting the encrypted at least one file); And in the course of execution of the application, when the at least one encrypted file is transferred through a call between the library files for execution of the application according to the control of the code contained in the recovery file, And decrypting the encrypted file.

하나 이상의 프로세서들을 포함하는 서버의 시스템에 있어서, 상기 하나 이상의 프로세서들은, 어플리케이션을 위한 파일들이 포함된 응용 프로그램 패키지를 수신하도록 상기 서버를 제어하는 수신 제어부(상기 응용 프로그램 패키지는, 상기 어플리케이션의 코드가 컴파일되어 생성된 중간 언어(Intermediate Language, IL) 코드를 포함하는 파일들 및 상기 중간 언어 코드에 따라 상기 어플리케이션을 실행하도록 전자 기기에 실행 환경을 제공하기 위한 라이브러리 파일들을 포함함); 상기 중간 언어 코드를 포함하는 파일들 중 적어도 하나의 파일을 암호화하도록 상기 서버를 제어하는 암호화 제어부; 및 상기 적어도 하나의 암호화된 파일의 복호화를 위한 리커버리 파일을 상기 응용 프로그램 패키지에 추가하도록 상기 서버를 제어하는 파일 추가 제어부(상기 리커버리 파일은, 상기 전자 기기에서의 상기 어플리케이션의 실행을 위해 상기 라이브러리 파일들간의 호출을 통해 상기 적어도 하나의 암호화된 파일이 전달되는 경우에 상기 적어도 하나의 암호화된 파일을 복호화하기 위한 코드를 포함함)를 포함하는 것을 특징으로 하는 시스템을 제공한다.A system of a server comprising one or more processors, the one or more processors comprising: a receiving controller for controlling the server to receive an application package containing files for an application, the application package comprising: Files containing compiled and generated Intermediate Language (IL) code, and library files for providing an execution environment to the electronic device to execute the application according to the intermediate language code); An encryption control unit for controlling the server to encrypt at least one file among the files including the intermediate language code; And a file addition control unit for controlling the server to add a recovery file for decrypting the at least one encrypted file to the application program package, wherein the recovery file includes a file name of the library file for execution of the application in the electronic device And code for decrypting the at least one encrypted file when the at least one encrypted file is delivered via a call between the at least one encrypted file and the at least one encrypted file.

하나 이상의 프로세서들을 포함하는 전자 기기의 시스템에 있어서, 상기 하나 이상의 프로세서들은, 어플리케이션을 위한 파일들이 포함된 응용 프로그램 패키지를 수신하도록 상기 전자 기기를 제어하는 수신 제어부(상기 응용 프로그램 패키지는, 상기 어플리케이션의 코드가 컴파일되어 생성된 중간 언어(Intermediate Language, IL) 코드를 포함하고 암호화된 적어도 하나의 파일 및 상기 중간 언어 코드에 따라 상기 어플리케이션을 실행하도록 전자 기기에 실행 환경을 제공하기 위한 라이브러리 파일들 및 상기 암호화된 적어도 하나의 파일을 복호화하기 위한 리커버리 파일을 포함함); 및 상기 어플리케이션의 실행 과정에서, 상기 리커버리 파일에 포함된 코드의 제어에 따라 상기 어플리케이션의 실행을 위해 상기 라이브러리 파일들간의 호출을 통해 상기 적어도 하나의 암호화된 파일이 전달되는 경우에 상기 적어도 하나의 암호화된 파일을 복호화하도록 상기 전자 기기를 제어하는 복호화 제어부를 포함하는 것을 특징으로 하는 시스템을 제공한다.A system for an electronic device comprising one or more processors, the one or more processors comprising: a receiving controller for controlling the electronic device to receive an application package containing files for an application, the application package comprising: At least one file including an intermediate language code generated by compiling the code and encrypted and library files for providing an execution environment to the electronic device to execute the application according to the intermediate language code, And a recovery file for decrypting at least one encrypted file); And in the course of execution of the application, when the at least one encrypted file is transferred through a call between the library files for execution of the application according to the control of the code contained in the recovery file, And a decryption control unit for controlling the electronic apparatus to decrypt the encrypted file.

어플리케이션의 실행 코드가 포함된 파일을 암호화하면서도, 어플리케이션의 구동 시 안전하게 암호화된 파일을 복호화하여 실행할 수 있고, 동시에 암호화된 파일을 복호화하기 위한 정보가 제3 자나 클라이언트에게 노출되는 것을 방지할 수 있다.It is possible to encrypt and decrypt the file including the executable code of the application while safely encrypting the file at the time of running the application and at the same time to prevent the information for decrypting the encrypted file from being exposed to the third party or the client.

도 1은 본 발명의 일실시예에 따른 네트워크 환경의 예를 도시한 도면이다.
도 2는 본 발명의 일실시예에 있어서, 전자 기기 및 서버의 내부 구성을 설명하기 위한 블록도이다.
도 3 및 도 4는 본 발명의 일실시예에 있어서, 어플리케이션의 코드의 보호를 위한 과정의 예를 도시한 도면이다.
도 5는 본 발명의 일실시예에 따른 서버의 프로세서가 포함할 수 있는 구성요소의 예를 도시한 도면이다.
도 6은 본 발명의 일실시예에 따른 서버가 수행할 수 있는 방법의 예를 도시한 흐름도이다.
도 7은 본 발명의 일실시예에 따른 전자 기기의 프로세서가 포함할 수 있는 구성요소의 예를 도시한 도면이다.
도 8은 본 발명의 일실시예에 따른 전자 기기가 수행할 수 있는 방법의 예를 도시한 흐름도이다.
1 is a diagram illustrating an example of a network environment according to an embodiment of the present invention.
2 is a block diagram illustrating an internal configuration of an electronic device and a server according to an embodiment of the present invention.
FIG. 3 and FIG. 4 are diagrams illustrating an example of a process for protecting an application code in an embodiment of the present invention.
FIG. 5 is a diagram illustrating an example of a component that a processor of a server according to an exemplary embodiment of the present invention may include.
FIG. 6 is a flowchart illustrating an example of a method that a server according to an embodiment of the present invention can perform.
FIG. 7 is a diagram illustrating an example of components that a processor of an electronic device according to an embodiment of the present invention may include.
8 is a flowchart illustrating an example of a method that an electronic device according to an embodiment of the present invention can perform.

이하, 실시예를 첨부한 도면을 참조하여 상세히 설명한다.Hereinafter, embodiments will be described in detail with reference to the accompanying drawings.

도 1은 본 발명의 일실시예에 따른 네트워크 환경의 예를 도시한 도면이다. 도 1의 네트워크 환경은 복수의 전자 기기들(110, 120, 130, 140), 복수의 서버들(150, 160) 및 네트워크(170)를 포함하는 예를 나타내고 있다. 이러한 도 1은 발명의 설명을 위한 일례로 전자 기기의 수나 서버의 수가 도 1과 같이 한정되는 것은 아니다. 1 is a diagram illustrating an example of a network environment according to an embodiment of the present invention. 1 shows an example in which a plurality of electronic devices 110, 120, 130, 140, a plurality of servers 150, 160, and a network 170 are included. 1, the number of electronic devices and the number of servers are not limited to those shown in FIG.

복수의 전자 기기들(110, 120, 130, 140)은 컴퓨팅 시스템으로 구현되는 고정형 단말이거나 이동형 단말일 수 있다. 복수의 전자 기기들(110, 120, 130, 140)의 예를 들면, 스마트폰(smart phone), 휴대폰, 네비게이션, 컴퓨터, 노트북, 디지털방송용 단말, PDA(Personal Digital Assistants), PMP(Portable Multimedia Player), 태블릿 PC 등이 있다. 일례로 전자 기기 1(110)은 무선 또는 유선 통신 방식을 이용하여 네트워크(170)를 통해 다른 전자 기기들(120, 130, 140) 및/또는 서버(150, 160)와 통신할 수 있다.The plurality of electronic devices 110, 120, 130, 140 may be a fixed terminal or a mobile terminal implemented in a computing system. Examples of the plurality of electronic devices 110, 120, 130 and 140 include a smart phone, a mobile phone, a navigation device, a computer, a notebook, a digital broadcast terminal, a PDA (Personal Digital Assistants) ), And tablet PCs. For example, the electronic device 1 110 may communicate with other electronic devices 120, 130, 140 and / or the servers 150, 160 via the network 170 using a wireless or wired communication scheme.

통신 방식은 제한되지 않으며, 네트워크(170)가 포함할 수 있는 통신망(일례로, 이동통신망, 유선 인터넷, 무선 인터넷, 방송망)을 활용하는 통신 방식뿐만 아니라 기기들간의 근거리 무선 통신 역시 포함될 수 있다. 예를 들어, 네트워크(170)는, PAN(personal area network), LAN(local area network), CAN(campus area network), MAN(metropolitan area network), WAN(wide area network), BBN(broadband network), 인터넷 등의 네트워크 중 하나 이상의 임의의 네트워크를 포함할 수 있다. 또한, 네트워크(170)는 버스 네트워크, 스타 네트워크, 링 네트워크, 메쉬 네트워크, 스타-버스 네트워크, 트리 또는 계층적(hierarchical) 네트워크 등을 포함하는 네트워크 토폴로지 중 임의의 하나 이상을 포함할 수 있으나, 이에 제한되지 않는다.The communication method is not limited, and may include a communication method using a communication network (for example, a mobile communication network, a wired Internet, a wireless Internet, a broadcasting network) that the network 170 may include, as well as a short-range wireless communication between the devices. For example, the network 170 may be a personal area network (LAN), a local area network (LAN), a campus area network (CAN), a metropolitan area network (MAN), a wide area network (WAN) , A network such as the Internet, and the like. The network 170 may also include any one or more of a network topology including a bus network, a star network, a ring network, a mesh network, a star-bus network, a tree or a hierarchical network, It is not limited.

서버(150, 160) 각각은 복수의 전자 기기들(110, 120, 130, 140)과 네트워크(170)를 통해 통신하여 명령, 코드, 파일, 컨텐츠, 서비스 등을 제공하는 장치 또는 복수의 장치들로 구현될 수 있다.Each of the servers 150 and 160 may communicate with a plurality of electronic devices 110, 120, 130 and 140 through a network 170 to provide commands, codes, files, contents, . ≪ / RTI >

일례로, 서버(150)는 네트워크(170)를 통해 접속한 전자 기기 1(110)로 어플리케이션의 설치를 위한 파일을 제공할 수 있다. 이 경우 전자 기기 1(110)은 제공된 파일을 이용하여 어플리케이션을 설치할 수 있다. 또한 전자 기기 1(110)이 포함하는 운영체제(Operating System, OS) 및 적어도 하나의 프로그램(일례로 브라우저나 상기 설치된 어플리케이션)의 제어에 따라 서버(160)에 접속하여 서버(160)가 제공하는 서비스나 컨텐츠를 제공받을 수 있다. 예를 들어, 전자 기기 1(110)이 어플리케이션의 제어에 따라 네트워크(170)를 통해 서비스 요청 메시지를 서버(160)로 전송하면, 서버(160)는 서비스 요청 메시지에 대응하는 코드를 전자 기기 1(110)로 전송할 수 있고, 전자 기기 1(110)은 어플리케이션의 제어에 따라 코드에 따른 화면을 구성하여 표시함으로써 사용자에게 컨텐츠를 제공할 수 있다.In one example, the server 150 may provide a file for installation of an application to the electronic device 1 (110) connected via the network 170. [ In this case, the electronic device 1 (110) can install the application using the provided file. The server 160 is connected to the server 160 according to the control of an operating system (OS) and at least one program (for example, a browser or the installed application) I can receive contents. For example, when the electronic device 1 (110) transmits a service request message to the server 160 via the network 170 under the control of the application, the server 160 transmits a code corresponding to the service request message to the electronic device 1 The first electronic device 110 can provide contents to the user by displaying and displaying a screen according to the code according to the control of the application.

도 2는 본 발명의 일실시예에 있어서, 전자 기기 및 서버의 내부 구성을 설명하기 위한 블록도이다. 도 2에서는 하나의 전자 기기에 대한 예로서 전자 기기 1(110), 그리고 하나의 서버에 대한 예로서 서버(150)의 내부 구성을 설명한다.2 is a block diagram illustrating an internal configuration of an electronic device and a server according to an embodiment of the present invention. In FIG. 2, an internal configuration of the electronic device 1 (110) as an example of one electronic device and the server 150 as an example of one server will be described.

전자 기기 1(110)과 서버(150)는 메모리(211, 221), 프로세서(212, 222), 통신 모듈(213, 223) 그리고 입출력 인터페이스(214, 224)를 포함할 수 있다. 메모리(211, 221)는 컴퓨터에서 판독 가능한 기록 매체로서, RAM(random access memory), ROM(read only memory) 및 디스크 드라이브와 같은 비소멸성 대용량 기록장치(permanent mass storage device)를 포함할 수 있다. 또한, 메모리(211, 221)에는 운영체제와 적어도 하나의 프로그램 코드(일례로 전자 기기 1(110)에 설치되어 구동되는 브라우저나 상술한 어플리케이션 등을 위한 코드)가 저장될 수 있다. 이러한 소프트웨어 구성요소들은 드라이브 메커니즘(drive mechanism)을 이용하여 메모리(211, 221)와는 별도의 컴퓨터에서 판독 가능한 기록 매체로부터 로딩될 수 있다. 이러한 별도의 컴퓨터에서 판독 가능한 기록 매체는 플로피 드라이브, 디스크, 테이프, DVD/CD-ROM 드라이브, 메모리 카드 등의 컴퓨터에서 판독 가능한 기록 매체를 포함할 수 있다. 다른 실시예에서 소프트웨어 구성요소들은 컴퓨터에서 판독 가능한 기록 매체가 아닌 통신 모듈(213, 223)을 통해 메모리(211, 221)에 로딩될 수도 있다. 예를 들어, 적어도 하나의 프로그램은 개발자들 또는 어플리케이션의 설치 파일을 배포하는 파일 배포 시스템(일례로 상술한 서버(150))이 네트워크(170)를 통해 제공하는 파일들에 의해 설치되는 프로그램(일례로 상술한 어플리케이션)에 기반하여 메모리(211, 221)에 로딩될 수 있다.The electronic device 1 110 and the server 150 may include memories 211 and 221, processors 212 and 222, communication modules 213 and 223 and input / output interfaces 214 and 224. The memories 211 and 221 may be a computer-readable recording medium and may include a permanent mass storage device such as a random access memory (RAM), a read only memory (ROM), and a disk drive. The memory 211 and 221 may store an operating system and at least one program code (for example, a code for a browser installed in the electronic device 1 (110) or the above-described application). These software components may be loaded from a computer readable recording medium separate from the memories 211 and 221 using a drive mechanism. Such a computer-readable recording medium may include a computer-readable recording medium such as a floppy drive, a disk, a tape, a DVD / CD-ROM drive, and a memory card. In other embodiments, the software components may be loaded into memory 211, 221 via communication modules 213, 223 rather than a computer readable recording medium. For example, at least one program may be a program installed by a file distribution system (for example, the server 150 described above) that distributes installation files of developers or applications, May be loaded into the memory 211, 221 based on the application described above.

프로세서(212, 222)는 기본적인 산술, 로직 및 입출력 연산을 수행함으로써, 컴퓨터 프로그램의 명령을 처리하도록 구성될 수 있다. 명령은 메모리(211, 221) 또는 통신 모듈(213, 223)에 의해 프로세서(212, 222)로 제공될 수 있다. 예를 들어 프로세서(212, 222)는 메모리(211, 221)와 같은 기록 장치에 저장된 프로그램 코드에 따라 수신되는 명령을 실행하도록 구성될 수 있다.Processors 212 and 222 may be configured to process instructions of a computer program by performing basic arithmetic, logic, and input / output operations. The instructions may be provided to the processors 212 and 222 by the memories 211 and 221 or the communication modules 213 and 223. For example, the processor 212, 222 may be configured to execute a command received in accordance with a program code stored in a recording device, such as the memory 211, 221.

통신 모듈(213, 223)은 네트워크(170)를 통해 전자 기기 1(110)과 서버(150)가 서로 통신하기 위한 기능을 제공할 수 있으며, 다른 전자 기기(일례로 전자 기기 2(120)) 또는 다른 서버(일례로 서버(160))와 통신하기 위한 기능을 제공할 수 있다. 일례로, 전자 기기 1(110)의 프로세서(212)가 메모리(211)와 같은 기록 장치에 저장된 프로그램 코드에 따라 생성한 요청(일례로 컨텐츠에 대한 스트리밍 서비스 요청)이 통신 모듈(213)의 제어에 따라 네트워크(170)를 통해 서버(150)로 전달될 수 있다. 역으로, 서버(150)의 프로세서(222)의 제어에 따라 제공될 제어 신호나 명령, 컨텐츠, 파일 등이 통신 모듈(223)과 네트워크(170)를 거쳐 전자 기기 1(110)의 통신 모듈(213)을 통해 전자 기기 1(110)로 수신될 수 있다. 예를 들어 통신 모듈(213)을 통해 수신된 서버(150)의 제어 신호나 명령 등은 프로세서(212)나 메모리(211)로 전달될 수 있고, 컨텐츠나 파일 등은 전자 기기 1(110)가 더 포함할 수 있는 저장 매체로 저장될 수 있다.The communication modules 213 and 223 may provide functions for the electronic device 1 110 and the server 150 to communicate with each other through the network 170 and may provide functions for communicating with other electronic devices (for example, the electronic device 2 120) Or to communicate with another server (e.g., server 160). For example, when the processor 212 of the electronic device 1 110 receives a request (e.g., a streaming service request for the content) generated in accordance with a program code stored in a recording device such as the memory 211, To the server 150 via the network 170 in accordance with the < / RTI > Contents or files to be provided under the control of the processor 222 of the server 150 are transmitted to the communication module 223 of the electronic device 1 110 through the communication module 223 and the network 170 213 to the electronic device 1 (110). For example, the control signal or command of the server 150 received through the communication module 213 may be transmitted to the processor 212 or the memory 211, May be stored as a storage medium that may further include a < RTI ID = 0.0 >

입출력 인터페이스(214, 224)는 입출력 장치(215)와의 인터페이스를 위한 수단일 수 있다. 예를 들어, 입력 장치는 키보드 또는 마우스 등의 장치를, 그리고 출력 장치는 어플리케이션의 통신 세션을 표시하기 위한 디스플레이와 같은 장치를 포함할 수 있다. 다른 예로 입출력 인터페이스(214)는 터치스크린과 같이 입력과 출력을 위한 기능이 하나로 통합된 장치와의 인터페이스를 위한 수단일 수도 있다. 보다 구체적인 예로, 전자 기기 1(110)의 프로세서(212)는 메모리(211)에 로딩된 컴퓨터 프로그램의 명령을 처리함에 있어서 서버(150)나 전자 기기 2(120)가 제공하는 데이터를 이용하여 구성되는 서비스 화면이나 컨텐츠가 입출력 인터페이스(214)를 통해 디스플레이에 표시될 수 있다.The input / output interfaces 214 and 224 may be means for interfacing with the input / output device 215. For example, the input device may include a device such as a keyboard or a mouse, and the output device may include a device such as a display for displaying a communication session of the application. As another example, the input / output interface 214 may be a means for interfacing with a device having integrated functions for input and output, such as a touch screen. More specifically, the processor 212 of the electronic device 1 (110) uses the data provided by the server 150 or the electronic device 2 (120) in processing commands of the computer program loaded in the memory 211 A service screen or contents can be displayed on the display through the input / output interface 214. [

또한, 다른 실시예들에서 전자 기기 1(110) 및 서버(150)는 도 2의 구성요소들보다 더 많은 구성요소들을 포함할 수도 있다. 그러나, 대부분의 종래기술적 구성요소들을 명확하게 도시할 필요성은 없다. 예를 들어, 전자 기기 1(110)은 상술한 입출력 장치(215) 중 적어도 일부를 포함하도록 구현되거나 또는 트랜시버(transceiver), GPS(Global Positioning System) 모듈, 카메라, 각종 센서 등과 같은 다른 구성요소들을 더 포함할 수도 있다.Also, in other embodiments, electronic device 1 110 and server 150 may include more components than the components of FIG. However, there is no need to clearly illustrate most prior art components. For example, electronic device 1 110 may be implemented to include at least some of the input / output devices 215 described above, or may include other components such as a transceiver, Global Positioning System (GPS) module, camera, .

도 3 및 도 4는 본 발명의 일실시예에 있어서, 어플리케이션의 코드의 보호를 위한 과정의 예를 도시한 도면이다. 도 3은 유니티(Unity) 툴을 통해 개발된 게임의 안드로이드 어플리케이션 패키지(Android application package, APK(300))가 서버(150)로 전송되는 과정을 나타내고 있다. 안드로이드에서 유니티 툴로 작성된 어플리케이션의 코드는 DLL(Dynamic Linking Library)로 컴파일될 수 있다. 도 3에서는 DLL로 컴파일되어 생성된 네 개의 DLL 파일들(UnityEngine.dll(310), AssemblyCSharp.dll(320), AssemblyCSharp-firstpass.dll(330) 및 Assembly-UnityScript-firstpass.dll(340))을 나타내고 있으며, 모노 프래임워크(mono framework)의 모노 런타임(mono runtime) 환경에서 DLL 파일들(310 내지 340)이 포함하는 코드들이 실행될 수 있도록 동작하는 세 개의 라이브러리 파일들(libmain.so(350), libunity.so(360) 및 libmono.so(370))을 나타내고 있다. libmain.so(350)는 libunity.so(360) 및 libmono.so(370)를 로그하여 초기화 작업을 수행시켜주는 코드를 포함할 수 있으며, 유니티 툴에서 배포될 수 있다. libunity.so(360)는 DLL 파일들(310 내지 340) 각각을 로그하여 게임 코드를 실행해주는 코드를 포함할 수 있고, libmono.so(370)는 오픈소스 닷넷 프레임워크로 안드로이드에서 DLL 파일들(310 내지 340)을 로드하게 해주는 코드를 포함할 수 있다. 예를 들어 안드로이드 OS는 리눅스 커널을 포함할 수 있고, 닷넷 프레임워크는 리눅스 커널상에서 동작하는 가상 머신으로 libunity.so(360)가 포함하는 코드를 통해 DLL 파일들(310 내지 340)이 포함하는 게임 코드를 실행할 수 있는 실행 환경을 제공할 수 있다. 이러한 라이브러리 파일들(350 내지 370)은 이미 잘 알려져 있기 때문에 보다 구체적인 설명은 생략한다.FIG. 3 and FIG. 4 are diagrams illustrating an example of a process for protecting an application code in an embodiment of the present invention. FIG. 3 shows a process in which an Android application package (APK 300) of a game developed through a Unity tool is transmitted to the server 150. In Android, the code of the application written in the Unity tool can be compiled into a dynamic linking library (DLL). In FIG. 3, four DLL files (UnityEngine.dll 310, Assembly CSharp.dll 320, Assembly CSharp-firstpass.dll 330, and Assembly-UnityScript-firstpass.dll 340) And includes three library files (libmain.so (350), libmain.so (350), and libmain.so) 350 that operate to allow the code contained in the DLL files 310 to 340 to be executed in the mono-runtime environment of the mono framework, libunity.so (360) and libmono.so (370). The libmain.so (350) may include code for performing libunity.so (360) and libmono.so (370) to perform the initialization operation, and may be distributed in the unity tool. libunity.so 360 may include code to log each of the DLL files 310 to 340 to execute the game code and libmono.so 370 may include DLL files 310 to 340). ≪ / RTI > For example, the Android OS can include the Linux kernel, and the .NET framework is a virtual machine running on the Linux kernel that allows the code contained in the DLL files (310-340) to be played through the code contained in libunity.so You can provide an execution environment in which the code can be executed. Since these library files 350 to 370 are well known, a more detailed description will be omitted.

서버(150)는 APK(300)를 보호하기 위한 시스템을 포함할 수 있다. 서버(150)는 APK(300)가 수신되면, APK(300)가 포함하는 DLL 파일들(310 내지 340) 중 적어도 하나의 파일을 암호화할 수 있다. 일반적으로 DLL 파일은 닷넷 헤더(.NET header) 부분과 코드 부분을 포함할 수 있고, 서버(150)는 닷넷 헤더(.NET header) 부분과 코드 부분 중 적어도 하나를 암호화할 수 있다. 예를 들어, 닷넷 헤더(.NET header) 부분의 값을 널(null) 값으로 치환해버리는 경우에는 해당 DLL 파일에 대한 디컴파일 자체가 불가능해질 수 있다. 마찬가지로 코드 부분이 암호화되는 경우 디컴파일을 통해 원래의 코드(컴파일 전의 코드)를 얻을 수 없다. 따라서, 서버(150)는 닷넷 헤더(.NET header) 부분만을 암호화하거나 코드 부분만을 암호화하거나 또는 닷넷 헤더(.NET header) 부분과 코드 부분을 암호화할 수 있다.The server 150 may include a system for protecting the APK 300. The server 150 may encrypt at least one of the DLL files 310 to 340 included in the APK 300 when the APK 300 is received. Generally, a DLL file may include a .NET header portion and a code portion, and the server 150 may encrypt at least one of a .NET header portion and a code portion. For example, if the value of the .NET header part is replaced with a null value, it may become impossible to decompile the corresponding DLL file. Similarly, if the code portion is encrypted, the original code (the code before compilation) can not be obtained through decompilation. Accordingly, the server 150 can encrypt only the .NET header portion, encrypt only the code portion, or encrypt the .NET header portion and the code portion.

도 4는 도 3에서 AssemblyCSharp.dll(320) 및 Assembly-UnityScript-firstpass.dll(340)가 암호화되어 암호화된 AssemblyCSharp.dll(410) 및 암호화된 Assembly-UnityScript-firstpass.dll(420)를 포함하는 APK(400)가 생성된 예를 나타내고 있다.Figure 4 is a flow diagram of a method 400 that includes Assembly CSharp.dll 320 and Assembly-UnityScript-firstpass.dll 340 in Figure 3, including Encrypted Assembly CSharp.dll 410 and Encrypted Assembly-UnityScript- APK 400 is generated.

이미 설명한 바와 같이 DLL 파일 자체가 암호화되는 경우 APK(400)를 수신한 클라이언트(일례로 전자 기기 1(110))는 DLL 파일에서 게임 코드를 읽을 수 없기 때문에 어플리케이션을 실행할 수 없게 된다. 따라서 서버(150)는 암호화된 DLL 파일을 복호화하기 위한 라이브러리 파일인 리커버리 파일(도 4의 recovery.so(440))을 APK(400)에 추가할 수 있다. 또한, 어플리케이션의 실행 시에 recovery.so(440)이 로그될 수 있도록 libmain.so(350)에 리커버리 파일(440)을 로드할 수 있는 코드(도 4의 load recovery.so code(431))를 추가하여 새로운 라이브러리 파일(도 4의 libmain.so(430))을 생성할 수 있다. 도 4에 나타난 바와 같이 APK(400)는 기존 라이브러리 파일 libmain.so(350) 대신에 새로운 라이브러리 파일 libmain.so(430)를 포함할 수 있다.As described above, when the DLL file itself is encrypted, the client (for example, the electronic device 1 110) receiving the APK 400 can not execute the application because it can not read the game code from the DLL file. Therefore, the server 150 may add a recovery file (recovery.so (440) in FIG. 4) to the APK 400, which is a library file for decrypting the encrypted DLL file. In addition, a code (load recovery .so code 431 in FIG. 4) that can load the recovery file 440 into the libmain.so 350 so that the recovery.so 440 can be logged when the application is executed In addition, a new library file (libmain.so 430 in FIG. 4) can be created. As shown in FIG. 4, the APK 400 may include a new library file libmain.so 430 in place of the existing library file libmain.so 350.

적어도 하나의 파일이 암호화되어 보호된 APK(400)는 서버(150)에서 전자 기기 1(110)로 바로 전송되거나 또는 별도의 파일 배포 시스템을 거쳐 전자 기기 1(110)로 전송될 수 있다.At least one file is encrypted and the protected APK 400 may be transmitted directly from the server 150 to the electronic device 110 or may be transmitted to the electronic device 110 via a separate file distribution system.

전자 기기 1(110)에서 APK(400)가 포함하는 코드들의 제어에 따라 어플리케이션을 실행할 수 있다. 이하에서는 설명의 편의를 위해 파일들이 특정 과정을 수행하는 예를 설명하나 실질적으로는 해당 파일들이 포함하는 코드들의 제어에 따라 전자 기기 1(110)의 프로세서(212)가 해당 과정을 수행하는 것일 수 있다.The electronic device 1 (110) can execute the application according to the control of the codes included in the APK (400). Hereinafter, for the sake of convenience of explanation, an example in which the files perform a specific process will be described. Actually, the processor 212 of the electronic device 110 may perform the process according to the control of the codes included in the files have.

어플리케이션의 실행이 요청되면, libmain.so(430)는 libunity.so(360) 및 libmono.so(370)를 로그하여 초기화 작업을 수행할 수 있다. 또한 libmain.so(430)는 libmain.so(430)에 포함된 load recovery.so code(431)를 이용하여 recovery.so(440)를 로그하여 초기화 작업을 수행할 수 있다.When an application is requested to be executed, libmain.so (430) can perform initialization operations by logging libunity.so (360) and libmono.so (370). Also, the libmain.so 430 can log the recovery.so (440) using the load recovery.so code 431 included in the libmain.so 430 to perform the initialization operation.

recovery.so(440)는 libunity.so(360)를 후킹(hooking)하여 libmono.so(370)가 DLL 파일들(310, 410, 330, 420)을 로딩할 때, 암호화된 DLL 파일들(410, 420)의 풀 버퍼(full buffer)를 제어하여 암호화된 DLL 파일들(410, 420)을 복호화할 수 있다. 예를 들어, libunity.so(360)는 DLL 파일들(310, 410, 330, 420)의 풀 버퍼를 읽어들여 풀 버퍼를 인자로 libmono.so(370)의 API를 호출하여 DLL을 모노 프레임워크에 로딩시킬 수 있다. 일반적으로 DLL 파일은 윈도우 PE(Portable Executable) 파일 포맷을 가지고 있으며 상술한 바와 같이 내부적으로 닷넷 헤더를 포함할 수 있다. 이러한 DL 파일은 오픈 소스인 닷넷 프레임워크(상술한 모노 프레임워크)를 통해 실행될 수 있으며, PE(Portable Executable) 파일 포맷 파싱(parsing)과 닷넷 파싱의 과정을 거치게 된다. 이러한 과정은 libunity.so(360)에서 libmono.so(370)의 API를 호출하여 일어나게 된다. 이를 위해 libunity.so(360)는 IAT(Import Address Table)를 포함할 수 있고, recovery.so(440)는 libunity.so(360)의 IAT를 후킹하여 libunity.so(360)가 암호화된 DLL 파일들(410 420)의 로딩을 위해 libmono.so(370)의 API를 호출하는 것을 확인할 수 있다. 또한 recovery.so(440)는 풀 버퍼에서 닷넷 헤더 부분과 코드 부분을 찾아 암호화된 부분을 복호화할 수 있다. 예를 들어 DLL 파일의 닷넷 헤더는 특정 값으로 시작한다. 따라서 recovery.so(440)는 DLL 파일을 닷넷 프레임워크에 로드할 때 닷넷 헤더가 기설정되어 있는 값으로 시작하지 않는 경우 해당 DLL 파일이 암호화되어 있다고 판단하고 복호화를 실행할 수 있다.The recovery.so 440 hooks the libunity.so 360 to retrieve the encrypted DLL files 410 410, 420, 420 when the libmono.so 370 loads the DLL files 310, , 420) to decrypt the encrypted DLL files 410, 420. The decrypted DLL files 410, For example, libunity.so (360) reads the pool buffer of DLL files (310, 410, 330, 420) and calls API of libmono.so (370) Lt; / RTI > Generally, a DLL file has a Windows PE (Portable Executable) file format and can internally include a .Net header as described above. Such a DL file can be executed through an open source .Net framework (the above-mentioned mono framework), and it is subjected to a process of parsing a file format of PE (Portable Executable) and parsing .Net. This is done by calling libmono.so (370) API from libunity.so (360). For this, libunity.so (360) may include an IAT (Import Address Table), and recovery.so (440) hooks the IAT of libunity.so (360) so that libunity.so (360) It can be confirmed that the API of libmono.so (370) is called for loading 410 420. Recovery.so (440) can also decrypt the encrypted portion by looking up the .Net headers and code portions in the full buffer. For example, the .NET header of a DLL file starts with a certain value. Therefore, when loading the DLL file into the .NET Framework, recovery.so (440) can determine that the DLL file is encrypted and decrypt it if the .Net header does not start with the pre-set value.

따라서 어플리케이션의 실행 코드가 포함된 파일을 암호화하면서도, 어플리케이션의 구동 시 안전하게 암호화된 파일을 복호화하여 실행할 수 있다. 특히 복호화를 위한 정보가 DLL과는 다르게 저수준 언어로 작성된 라이브러리 파일의 형태로 제공되기 때문에 클라이언트나 제3 자에게 복호화를 위한 정보가 노출되는 것을 방지할 수 있다.Thus, while encrypting a file containing executable code of an application, a securely encrypted file can be decrypted and executed when the application is run. In particular, information for decoding is provided in the form of a library file written in a low-level language differently from a DLL, so that information for decryption can be prevented from being exposed to a client or a third party.

도 5는 본 발명의 일실시예에 따른 서버의 프로세서가 포함할 수 있는 구성요소의 예를 도시한 도면이고, 도 6은 본 발명의 일실시예에 따른 서버가 수행할 수 있는 방법의 예를 도시한 흐름도이다. 도 5에 도시된 바와 같이 서버(150)의 프로세서(222)는 수신 제어부(510), 암호화 제어부(520) 및 파일 추가 제어부(530)를 포함할 수 있고, 실시예에 따른 선택적으로 전송 제어부(540)를 더 포함할 수 있다. 이러한 프로세서(222)의 구성요소들은 도 6의 방법이 포함하는 단계들(610 내지 640)을 수행하도록 서버(150)를 제어할 수 있으며, 이러한 제어를 위해 메모리(221)가 포함하는 운영체제와 적어도 하나의 프로그램 코드를 통해 동작하도록 구현될 수 있다. 단계(640)는 실시예에 따른 선택적으로 수행될 수 있다.FIG. 5 is a diagram illustrating an example of a component that a server processor according to an exemplary embodiment of the present invention may include; FIG. 6 illustrates an example of a method that a server can perform according to an exemplary embodiment of the present invention; Fig. 5, the processor 222 of the server 150 may include a reception control unit 510, an encryption control unit 520, and a file addition control unit 530, and may selectively control the transmission control unit 540). The components of such processor 222 may control the server 150 to perform the steps 610 through 640 included in the method of Figure 6 and may include at least the operating system And can be implemented to operate through one program code. Step 640 may optionally be performed according to the embodiment.

단계(610)에서 서버(150)는 어플리케이션을 위한 파일들이 포함된 응용 프로그램 패키지를 수신할 수 있다. 여기서 응용 프로그램 패키지는, 어플리케이션의 코드가 컴파일되어 생성된 중간 언어(Intermediate Language, IL) 코드를 포함하는 파일들 및 중간 언어 코드에 따라 어플리케이션을 실행하도록 전자 기기(일례로 전자 기기 1(110))에 실행 환경을 제공하기 위한 라이브러리 파일들을 포함할 수 있다. 예를 들어, 응용 프로그램 패키지는 도 3의 실시예에서 설명한 APK(300)에 대응할 수 있고, 중간 언어 코드를 포함하는 파일들은 DLL 파일들(310 내지 340)에 대응할 수 있다. 또한 라이브러리 파일들은 도 3의 라이브러리 파일들(350 내지 370)에 대응될 수 있다. 수신 제어부(510)는 단계(610)을 수행할 수 있도록 서버(150)를 제어할 수 있다.In step 610, the server 150 may receive an application package containing files for the application. Here, the application package includes an electronic device (for example, electronic device 1 (110)) for executing an application according to an intermediate language code and files including an intermediate language (IL) And may include library files for providing an execution environment. For example, the application package may correspond to the APK 300 described in the embodiment of FIG. 3, and the files including the intermediate language code may correspond to the DLL files 310 to 340. The library files may also correspond to the library files 350 to 370 of FIG. The reception control unit 510 may control the server 150 to perform step 610. [

이때, 응용 프로그램 패키지에 포함된 파일들 중 암호화하기 위한 파일은 서버(150)에서 선택될 수도 있으나 개발자에 의해 선택될 수도 있다. 이 경우 서버(150)는 단계(610)에서 중간 언어 코드를 포함하는 파일들 중 암호화하기 위한 파일에 대한 정보를 더 수신할 수 있다. 예를 들어, 서버(150)는 응용 프로그램 패키지를 업로드하고자 하는 개발자들에게 응용 프로그램 패키지의 업로드를 위한 제1 사용자 인터페이스 및 암호화할 파일을 선택하기 위한 제2 사용자 인터페이스가 포함된 웹페이지를 제공할 수 있다. 이때 제1 사용자 인터페이스를 통해 응용 프로그램 패키지를 업로드한 개발자가 제2 사용자 인터페이스를 통해 암호화할 파일을 선택하는 경우 선택된 파일에 대한 정보가 서버(150)로 더 전달될 수 있다.At this time, the file for encryption among the files included in the application package may be selected in the server 150, but may be selected by the developer. In this case, in step 610, the server 150 may further receive information on a file for encryption among the files including the intermediate language code. For example, the server 150 provides a web page including a first user interface for uploading an application package and a second user interface for selecting a file to be encrypted to developers who want to upload an application package . At this time, when a developer who has uploaded the application package through the first user interface selects a file to be encrypted through the second user interface, the information about the selected file may be further transmitted to the server 150.

이러한 서버(150)는 이미 개발된 어플리케이션을 위한 응용 프로그램 패키지를 수신하여 이를 보호하기 위해 DLL 파일을 암호화하는 시스템일 수 있다. 이때 서버(150)는 어플리케이션의 개발자의 시스템일 수도 있고, 개발자로부터 응용 프로그램 패키지를 수신하여 DLL 파일을 암호화하는 제3 자의 시스템일 수도 있고, 개발자의 응용 프로그램 패키지를 수신하여 사용자들에게 배포하는 파일 배포 시스템일 수도 있다.The server 150 may be a system for encrypting a DLL file to receive and protect an application package for an already developed application. At this time, the server 150 may be a system of a developer of the application, a third party system that receives the application package from the developer and encrypts the DLL file, or receives the application package of the developer and distributes the file Distribution system.

단계(620)에서 서버(150)는 중간 언어 코드를 포함하는 파일들 중 적어도 하나의 파일을 암호화할 수 있다. 암호화 제어부(520)는 단계(620)을 수행할 수 있도록 서버(150)를 제어할 수 있다. 중간 언어 코드를 포함하는 파일들 각각은 실행 환경을 위한 헤더 부분 및 어플리케이션을 위한 코드 부분을 포함할 수 있다. 이 경우 서버(150)는 단계(620)에서 헤더 부분 및 코드 부분 중 적어도 하나를 암호화할 수 있다. 이미 설명한 바와 같이 헤더 부분을 암호화하는 경우에는 중간 언어 코드에 대한 디컴파일 자체가 불가능해지고, 코드 부분을 암호화하는 경우에는 디컴파일을 통해 원래의 소스를 확인할 수 없기 때문에 헤더 부분이나 코드 부분 중 하나만을 암호화하여도 중간 언어 코드를 포함하는 파일을 보호할 수 있다. 또한 헤더 부분과 코드 부분을 모두 암호화할 수도 있다. 헤더 부분을 암호화하는 경우, 서버(150)는 헤더 부분이 포함하는 정보를 널(null) 값으로 변경하여 암호화할 수 있다.At step 620, the server 150 may encrypt at least one of the files containing the intermediate language code. The encryption control unit 520 may control the server 150 to perform step 620. [ Each of the files containing the intermediate language code may include a header portion for the execution environment and a code portion for the application. In this case, the server 150 may encrypt at least one of the header portion and the code portion in step 620. As described above, if the header part is encrypted, it is impossible to decompile the intermediate language code. If the code part is encrypted, it is impossible to confirm the original source through decompilation. Encryption can also protect files containing intermediate language code. You can also encrypt both the header and code parts. In the case of encrypting the header part, the server 150 may encrypt the information included in the header part by changing it to a null value.

단계(630)에서 서버(150)는 적어도 하나의 암호화된 파일의 복호화를 위한 리커버리 파일을 응용 프로그램 패키지에 추가할 수 있다. 여기서 리커버리 파일은 전자 기기에서의 어플리케이션의 실행을 위해 라이브러리 파일들간의 호출을 통해 적어도 하나의 암호화된 파일이 전달되는 경우에 적어도 하나의 암호화된 파일을 복호화하기 위한 코드를 포함할 수 있다. 파일 추가 제어부(530)는 단계(630)을 수행하도록 서버(150)를 제어할 수 있다.At step 630, the server 150 may add a recovery file for decryption of at least one encrypted file to the application package. Wherein the recovery file may include code for decrypting at least one encrypted file when at least one encrypted file is transferred via a call between library files for execution of an application on an electronic device. The file addition control unit 530 may control the server 150 to perform step 630. [

앞서 설명한 바와 같이, 적어도 하나의 암호화된 파일은 라이브러리 파일들이 어플리케이션의 실행 환경(일례로 닷넷 프레임워크, 모노 프레임워크 또는 CLR(Common Language Runtime))에 중간 언어 코드를 포함하는 파일들을 로딩하기 위해, 라이브러리 파일들간의 호출을 통해 적어도 하나의 암호화된 파일이 전달되는 경우와 같이 어플리케이션의 실행 시에 리커버리 파일이 포함하는 코드에 따라 전자 기기가 복호화를 수행할 수 있도록 함으로써 중간 언어 코드의 디컴파일을 막으면서도 복호화를 위한 정보가 노출되지 않도록 할 수 있다.As described above, at least one encrypted file is used by the library files to load files containing the intermediate language code into the application's execution environment (e.g., the .NET Framework, the Mono Framework, or the CLR (Common Language Runtime) It is possible to decode the intermediate language code by allowing the electronic device to perform decoding according to the code included in the recovery file at the time of execution of the application, such as when at least one encrypted file is transferred through a call between the library files The information for decryption can be prevented from being exposed.

이를 위해 라이브러리 파일들은 중간 언어 코드를 포함하는 파일들을 불러오기 위한 코드를 포함하는 제1 라이브러리 파일 및 제1 라이브러리 파일에 대한 API(Application Programming Interface) 호출을 통해 중간 언어 코드를 포함하는 파일들의 풀 버퍼(full buffer)를 리딩하여 파싱하기 위한 코드를 포함하는 제2 라이브러리 파일을 포함할 수 있다. 또한 리커버리 파일은 제2 라이브러리 파일이 포함하는 코드를 통해 제1 라이브러리 파일이 API 호출됨에 따라 리딩되는 적어도 하나의 암호화된 파일에 대한 풀 버퍼(full buffer)를 복호화하여 적어도 하나의 암호화된 파일을 복호화하기 위한 코드를 포함할 수 있다. 예를 들어, 제1 라이브러리 파일은 도 3 및 도 4를 통해 설명한 libmono.so(370)에 대응할 수 있고, 제2 라이브러리 파일은 libunity.so(360)에 대응할 수 있으며, 리커버리 파일은 recovery.so(440)에 대응할 수 있다.To this end, the library files include a first library file including code for loading files containing intermediate language code and a pool buffer of files containing intermediate language code through API (Application Programming Interface) and a second library file including code for reading and parsing a full buffer. In addition, the recovery file decrypts the full buffer of at least one encrypted file read according to the API call of the first library file through the code included in the second library file to decrypt the at least one encrypted file ≪ / RTI > For example, the first library file may correspond to libmono.so (370) described with reference to FIGS. 3 and 4, the second library file may correspond to libunity.so (360), and the recovery file may correspond to recovery.so (440).

보다 구체적으로 리커버리 파일은 제1 라이브러리 파일에 대한 API에 대한 정보를 포함하는 제2 라이브러리 파일의 IAT(Import Address Table)을 후킹(hooking)하여 제2 라이브러리 파일이 포함하는 코드를 통한 API 호출을 확인하기 위한 코드를 포함할 수 있다. IAT는 제2 라이브러리 파일이 중간 언어 코드를 포함하는 파일을 리딩함에 따라 생성될 수 있다.More specifically, the recovery file hooks an IAT (Import Address Table) of a second library file including information on an API for the first library file to check API calls through the code included in the second library file ≪ / RTI > The IAT can be generated as the second library file reads the file containing the intermediate language code.

단계(640)에서 서버(150)는 네트워크를 통한 전자 기기로부터의 요청에 따라 리커버리 파일이 추가된 응용 프로그램 패키지를 전자 기기로 전송할 수 있다. 전송 제어부(540)는 단계(640)을 수행하도록 서버(150)를 제어할 수 있다. 전자 기기로 전송된 응용 프로그램 패키지는 전자 기기에 설치될 수 있고, 어플리케이션의 구동(실행) 시에 앞서 설명한 복호화 과정이 전자 기기에서 진행될 수 있다.In step 640, the server 150 may transmit the application package to which the recovery file has been added to the electronic device according to a request from the electronic device through the network. The transmission control unit 540 may control the server 150 to perform step 640. [ The application package transmitted to the electronic device may be installed in the electronic device, and the decryption process described above may be performed in the electronic device when the application is executed (executed).

도 7은 본 발명의 일실시예에 따른 전자 기기의 프로세서가 포함할 수 있는 구성요소의 예를 도시한 도면이고, 도 8은 본 발명의 일실시예에 따른 전자 기기가 수행할 수 있는 방법의 예를 도시한 흐름도이다. 도 7에 도시된 바와 같이 전자 기기 1(110)의 프로세서(212)는 수신 제어부(710) 및 복호화 제어부(720)를 포함할 수 있다. 이러한 프로세서(212)의 구성요소들은 도 8의 방법이 포함하는 단계들(810 및 820)을 수행하도록 전자 기기 1(110)을 제어할 수 있으며, 이러한 제어를 위해 메모리(211)가 포함하는 운영체제와 적어도 하나의 프로그램 코드를 통해 동작하도록 구현될 수 있다. 이때, 적어도 하나의 프로그램 코드는 단계(820)의 처리를 위해 전자 기기 1(110)이 단계(810)에서 수신하는 응용 프로그램 패키지에 포함된 코드를 포함할 수 있다.FIG. 7 is a diagram illustrating an example of a component that a processor of an electronic device according to an embodiment of the present invention can include; FIG. 8 is a flowchart illustrating a method of an electronic device according to an exemplary embodiment of the present invention; Fig. As shown in FIG. 7, the processor 212 of the electronic device 110 may include a reception control unit 710 and a decryption control unit 720. The components of this processor 212 may control electronic device 1 110 to perform steps 810 and 820 that are included in the method of Figure 8, And at least one program code. At this time, at least one program code may include code included in the application package received by the first electronic device 110 in step 810 for processing of step 820. [

단계(810)에서 전자 기기 1(110)은 어플리케이션을 위한 파일들이 포함된 응용 프로그램 패키지를 수신할 수 있다. 수신 제어부(710)는 단계(810)를 수행하도록 전자 기기 1(110)을 제어할 수 있다. 이때, 응용 프로그램 패키지에는 어플리케이션의 코드가 컴파일되어 생성된 중간 언어(Intermediate Language, IL) 코드를 포함하고 암호화된 적어도 하나의 파일 및 중간 언어 코드에 따라 어플리케이션을 실행하도록 전자 기기에 실행 환경을 제공하기 위한 라이브러리 파일들 및 암호화된 적어도 하나의 파일을 복호화하기 위한 리커버리 파일이 포함될 수 있다.In step 810, the electronic device 1 (110) may receive an application package including files for the application. The reception control unit 710 may control the first electronic device 110 to perform step 810. [ At this time, the application package includes an intermediate language (IL) code generated by compiling the application code, providing an execution environment to the electronic device to execute the application according to the encrypted at least one file and the intermediate language code And a recovery file for decrypting the encrypted at least one file.

단계(820)에서 전자 기기 1(110)은 어플리케이션의 실행 과정에서, 리커버리 파일에 포함된 코드의 제어에 따라 어플리케이션의 실행을 위해 라이브러리 파일들간의 호출을 통해 적어도 하나의 암호화된 파일이 전달되는 경우에 적어도 하나의 암호화된 파일을 복호화할 수 있다.In step 820, when at least one encrypted file is transferred through the call between the library files for execution of the application according to the control of the code included in the recovery file in the course of execution of the application Lt; / RTI > can decrypt at least one encrypted file.

이미 설명한 바와 같이 라이브러리 파일들은 중간 언어 코드를 포함하는 파일들을 불러오기 위한 코드를 포함하는 제1 라이브러리 파일 및 제1 라이브러리 파일에 대한 API(Application Programming Interface) 호출을 통해 중간 언어 코드를 포함하는 파일들의 풀 버퍼(full buffer)를 리딩하여 파싱하기 위한 코드를 포함하는 제2 라이브러리 파일을 포함할 수 있다. 이때, 전자 기기 1(110)은 단계(820)에서 제2 라이브러리 파일이 포함하는 코드를 통해 제1 라이브러리 파일이 API 호출됨에 따라 리딩되는 적어도 하나의 암호화된 파일에 대한 풀 버퍼(full buffer)를 리커버리 파일이 포함하는 코드의 제어에 따라 복호화하여 적어도 하나의 암호화된 파일을 복호화할 수 있다. 다시 말해, 어플리케이션의 실행 과정에서 제2 라이브러리 파일을 통해 제1 라이브러리 파일의 API를 호출함에 따라 중간 언어 코드를 포함하는 파일들이 실행 환경으로 로딩될 수 있고, 이때 전자 기기 1(110)은 리커버리 파일이 포함하는 코드의 제어에 따라 실행 환경으로 로딩될 적어도 하나의 암호화된 파일에 대한 풀 버퍼를 복호화하여 암호화된 파일을 복호화할 수 있다. 적어도 하나의 암호화된 파일은 헤더 부분과 코드 부분 중 적어도 하나가 암호화된 파일임을 이미 설명하였고, 전자 기기 1(110)은 리커버리 파일이 포함하는 코드의 제어에 따라 암호화된 부분을 복호화할 수 있다.As described above, the library files include a first library file containing code for loading files containing intermediate language codes and a second library file containing files containing intermediate language codes through API (Application Programming Interface) calls to the first library file And a second library file including code for reading and parsing a full buffer. At this time, in step 820, the electronic device 110 transmits a full buffer for at least one encrypted file read according to the API call of the first library file through the code included in the second library file It is possible to decrypt at least one encrypted file in accordance with the control of the code included in the recovery file. In other words, in the execution of the application, files including the intermediate language code can be loaded into the execution environment by calling the API of the first library file through the second library file. At this time, the electronic device 1 (110) Decrypt the encrypted file by decrypting the full buffer for at least one encrypted file to be loaded into the execution environment under the control of the containing code. At least one encrypted file has already been described in which at least one of the header portion and the code portion is an encrypted file, and the electronic device 1 (110) can decrypt the encrypted portion under the control of the code included in the recovery file.

또한 전자 기기 1(110)은 리커버리 파일이 포함하는 코드의 제어에 따라 제1 라이브러리 파일에 대한 API에 대한 정보를 포함하는 제2 라이브러리 파일의 IAT(Import Address Table)을 후킹(hooking)하여 제2 라이브러리 파일이 포함하는 코드를 통한 API 호출을 확인할 수 있다.Also, the electronic device 1 (110) hooks the IAT (Import Address Table) of the second library file including the information about the API for the first library file under the control of the code included in the recovery file, You can see the API calls through the code that the library file contains.

또한 전자 기기 1(110)은 적어도 하나의 암호화된 파일의 헤더 부분이 기설정된 값으로 시작하는지 여부에 따라 적어도 하나의 암호화된 파일의 암호화 여부를 확인할 수도 있다. 이미 설명한 바와 같이, DLL 파일과 같은 파일들의 헤더는 기설정된 값으로 시작하게 되고, 헤더가 기설정된 값으로 시작되는지 여부에 따라 해당 파일이 암호화되었는지 여부가 확인될 수 있다.Also, the electronic device 1 (110) may check whether or not at least one encrypted file is encrypted according to whether or not the header portion of at least one encrypted file starts with a predetermined value. As described above, the header of the files such as the DLL file starts with a preset value, and it can be checked whether or not the file is encrypted according to whether the header starts with a predetermined value.

이처럼 본 발명의 실시예들에 따르면, 어플리케이션의 실행 코드가 포함된 파일을 암호화하면서도, 어플리케이션의 구동 시 안전하게 암호화된 파일을 복호화하여 실행할 수 있고, 동시에 암호화된 파일을 복호화하기 위한 정보가 제3 자나 클라이언트에게 노출되는 것을 방지할 수 있다.As described above, according to the embodiments of the present invention, it is possible to encrypt and decrypt a file including the executable code of the application while safely encrypting the file when the application is run, and at the same time, It is possible to prevent exposure to the client.

이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 어플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.The apparatus described above may be implemented as a hardware component, a software component, and / or a combination of hardware components and software components. For example, the apparatus and components described in the embodiments may be implemented within a computer system, such as, for example, a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, a field programmable gate array (FPGA) , A programmable logic unit (PLU), a microprocessor, or any other device capable of executing and responding to instructions. The processing device may execute an operating system (OS) and one or more software applications running on the operating system. The processing device may also access, store, manipulate, process, and generate data in response to execution of the software. For ease of understanding, the processing apparatus may be described as being used singly, but those skilled in the art will recognize that the processing apparatus may have a plurality of processing elements and / As shown in FIG. For example, the processing unit may comprise a plurality of processors or one processor and one controller. Other processing configurations are also possible, such as a parallel processor.

소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.The software may include a computer program, code, instructions, or a combination of one or more of the foregoing, and may be configured to configure the processing device to operate as desired or to process it collectively or collectively Device can be commanded. The software and / or data may be in the form of any type of machine, component, physical device, virtual equipment, computer storage media, or device , Or may be permanently or temporarily embodied in a transmitted signal wave. The software may be distributed over a networked computer system and stored or executed in a distributed manner. The software and data may be stored on one or more computer readable recording media.

실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The method according to an embodiment may be implemented in the form of a program command that can be executed through various computer means and recorded in a computer-readable medium. The computer-readable medium may include program instructions, data files, data structures, and the like, alone or in combination. The program instructions to be recorded on the medium may be those specially designed and configured for the embodiments or may be available to those skilled in the art of computer software. Examples of computer-readable media include magnetic media such as hard disks, floppy disks and magnetic tape; optical media such as CD-ROMs and DVDs; magnetic media such as floppy disks; Magneto-optical 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 machine language code such as those produced by a compiler, as well as high-level language code that can be executed by a computer using an interpreter or the like. The hardware devices described above may be configured to operate as one or more software modules to perform the operations of the embodiments, and vice versa.

이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it is to be understood that the invention is not limited to the disclosed exemplary embodiments. For example, it is to be understood that the techniques described may be performed in a different order than the described methods, and / or that components of the described systems, structures, devices, circuits, Lt; / RTI > or equivalents, even if it is replaced or replaced.

그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.Therefore, other implementations, other embodiments, and equivalents to the claims are also within the scope of the following claims.

Claims (20)

컴퓨터로 구현되는 방법에 있어서,
어플리케이션을 위한 파일들이 포함된 응용 프로그램 패키지를 수신하는 단계 - 상기 응용 프로그램 패키지는, 상기 어플리케이션의 코드가 컴파일되어 생성된 중간 언어(Intermediate Language, IL) 코드를 포함하는 파일들 및 상기 중간 언어 코드에 따라 상기 어플리케이션을 실행하도록 전자 기기에 실행 환경을 제공하기 위한 라이브러리 파일들을 포함함 -;
상기 중간 언어 코드를 포함하는 파일들 중 적어도 하나의 파일을 암호화하는 단계; 및
상기 적어도 하나의 암호화된 파일의 복호화를 위한 리커버리 파일을 상기 응용 프로그램 패키지에 추가하는 단계 - 상기 리커버리 파일은, 상기 전자 기기에서의 상기 어플리케이션의 실행을 위해 상기 라이브러리 파일들간의 호출을 통해 상기 적어도 하나의 암호화된 파일이 전달되는 경우에 상기 적어도 하나의 암호화된 파일을 복호화하기 위한 코드를 포함함 -
를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
In a computer implemented method,
The method comprising: receiving an application package including files for an application, the application package including: files including intermediate language code generated by compiling the application code; And library files for providing an execution environment to the electronic device to execute the application;
Encrypting at least one file of files comprising the intermediate language code; And
Adding a recovery file for decrypting the at least one encrypted file to the application package, wherein the recovery file comprises at least one of the at least one The code for decrypting the at least one encrypted file when the encrypted file of the at least one encrypted file is transmitted,
Lt; RTI ID = 0.0 > 1, < / RTI >
제1항에 있어서,
상기 응용 프로그램 패키지를 수신하는 단계는,
상기 중간 언어 코드를 포함하는 파일들 중 암호화하기 위한 파일에 대한 정보를 더 수신하고,
상기 적어도 하나의 파일을 암호화하는 단계는,
상기 중간 언어 코드를 포함하는 파일들 중 상기 더 수신된 정보에 대응하는 파일을 암호화하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
The method according to claim 1,
Wherein the receiving the application package comprises:
Further receiving information on a file for encryption among the files including the intermediate language code,
Wherein encrypting the at least one file comprises:
And encrypting the file corresponding to the further received one of the files comprising the intermediate language code.
제1항에 있어서,
상기 적어도 하나의 파일은 상기 실행 환경을 위한 헤더 부분 및 상기 어플리케이션을 위한 코드 부분을 포함하고,
상기 적어도 하나의 파일을 암호화하는 단계는,
상기 헤더 부분 및 상기 코드 부분 중 적어도 하나를 암호화하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
The method according to claim 1,
Wherein the at least one file includes a header portion for the execution environment and a code portion for the application,
Wherein encrypting the at least one file comprises:
And at least one of the header portion and the code portion is encrypted.
제3항에 있어서,
상기 적어도 하나의 파일을 암호화하는 단계는,
상기 헤더 부분을 암호화하는 경우 상기 헤더 부분이 포함하는 정보를 널(null) 값으로 변경하여 암호화하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
The method of claim 3,
Wherein encrypting the at least one file comprises:
Wherein when encrypting the header part, the information included in the header part is changed to a null value and encrypted.
제1항에 있어서,
상기 라이브러리 파일들은 상기 중간 언어 코드를 포함하는 파일들을 불러오기 위한 코드를 포함하는 제1 라이브러리 파일 및 상기 제1 라이브러리 파일에 대한 API(Application Programming Interface) 호출을 통해 상기 중간 언어 코드를 포함하는 파일들의 풀 버퍼(full buffer)를 리딩하여 파싱하기 위한 코드를 포함하는 제2 라이브러리 파일을 포함하고,
상기 리커버리 파일은 상기 제2 라이브러리 파일이 포함하는 코드를 통해 상기 제1 라이브러리 파일이 API 호출됨에 따라 리딩되는 상기 적어도 하나의 암호화된 파일에 대한 풀 버퍼(full buffer)를 복호화하여 상기 적어도 하나의 암호화된 파일을 복호화하기 위한 코드를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
The method according to claim 1,
Wherein the library files include a first library file including code for loading files containing the intermediate language code and a second library file containing an intermediate language code through an Application Programming Interface (API) call to the first library file A second library file containing code for reading and parsing a full buffer,
Wherein the recovery file decrypts a full buffer for the at least one encrypted file that is read according to an API call of the first library file through a code included in the second library file, Lt; RTI ID = 0.0 > a < / RTI > file.
제5항에 있어서,
상기 리커버리 파일은 상기 제1 라이브러리 파일에 대한 API에 대한 정보를 포함하는 상기 제2 라이브러리 파일의 IAT(Import Address Table)을 후킹(hooking)하여 상기 제2 라이브러리 파일이 포함하는 코드를 통한 상기 API 호출을 확인하기 위한 코드를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
6. The method of claim 5,
Wherein the recovery file hooks an IAT (Import Address Table) of the second library file including information on an API for the first library file so that the API call ≪ / RTI > wherein the computer-readable medium comprises code for identifying the computer system.
제1항에 있어서,
네트워크를 통한 상기 전자 기기로부터의 요청에 따라 상기 리커버리 파일이 추가된 상기 응용 프로그램 패키지를 상기 전자 기기로 전송하는 단계
를 더 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
The method according to claim 1,
Transmitting the application program package to which the recovery file has been added to the electronic device in response to a request from the electronic device through the network
Lt; RTI ID = 0.0 > 1, < / RTI >
컴퓨터로 구현되는 방법에 있어서,
어플리케이션을 위한 파일들이 포함된 응용 프로그램 패키지를 수신하는 단계 - 상기 응용 프로그램 패키지는, 상기 어플리케이션의 코드가 컴파일되어 생성된 중간 언어(Intermediate Language, IL) 코드를 포함하고 암호화된 적어도 하나의 파일 및 상기 중간 언어 코드에 따라 상기 어플리케이션을 실행하도록 전자 기기에 실행 환경을 제공하기 위한 라이브러리 파일들 및 상기 암호화된 적어도 하나의 파일을 복호화하기 위한 리커버리 파일을 포함함 -; 및
상기 어플리케이션의 실행 과정에서, 상기 리커버리 파일에 포함된 코드의 제어에 따라 상기 어플리케이션의 실행을 위해 상기 라이브러리 파일들간의 호출을 통해 상기 적어도 하나의 암호화된 파일이 전달되는 경우에 상기 적어도 하나의 암호화된 파일을 복호화하는 단계
를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
In a computer implemented method,
The method comprising the steps of: receiving an application package including files for an application, the application package including at least one file including an intermediate language (IL) code generated by compiling code of the application, A library file for providing an execution environment to the electronic device to execute the application according to an intermediate language code, and a recovery file for decrypting the encrypted at least one file; And
Wherein in the execution of the application, when the at least one encrypted file is transferred through a call between the library files for execution of the application according to control of the code contained in the recovery file, The step of decrypting the file
Lt; RTI ID = 0.0 > 1, < / RTI >
제8항에 있어서,
상기 라이브러리 파일들은 상기 중간 언어 코드를 포함하는 파일들을 불러오기 위한 코드를 포함하는 제1 라이브러리 파일 및 상기 제1 라이브러리 파일에 대한 API(Application Programming Interface) 호출을 통해 상기 중간 언어 코드를 포함하는 파일들의 풀 버퍼(full buffer)를 리딩하여 파싱하기 위한 코드를 포함하는 제2 라이브러리 파일을 포함하고,
상기 복호화하는 단계는,
상기 제2 라이브러리 파일이 포함하는 코드를 통해 상기 제1 라이브러리 파일이 API 호출됨에 따라 리딩되는 상기 적어도 하나의 암호화된 파일에 대한 풀 버퍼(full buffer)를 상기 리커버리 파일이 포함하는 코드의 제어에 따라 복호화하여 상기 적어도 하나의 암호화된 파일을 복호화하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
9. The method of claim 8,
Wherein the library files include a first library file including code for loading files containing the intermediate language code and a second library file containing an intermediate language code through an Application Programming Interface (API) call to the first library file A second library file containing code for reading and parsing a full buffer,
Wherein the step of decrypting comprises:
A full buffer for the at least one encrypted file that is read in response to an API call of the first library file through a code included in the second library file is controlled according to control of a code included in the recovery file And decrypting the at least one encrypted file to decrypt the at least one encrypted file.
제9항에 있어서,
상기 복호화하는 단계는,
상기 리커버리 파일이 포함하는 코드의 제어에 따라 상기 제1 라이브러리 파일에 대한 API에 대한 정보를 포함하는 상기 제2 라이브러리 파일의 IAT(Import Address Table)을 후킹(hooking)하여 상기 제2 라이브러리 파일이 포함하는 코드를 통한 상기 API 호출을 확인하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
10. The method of claim 9,
Wherein the step of decrypting comprises:
Hooks an IAT (Import Address Table) of the second library file including information on the API for the first library file under the control of the code included in the recovery file, so that the second library file is included Said API call is made via a code that is executed by the processor.
제8항에 있어서,
상기 복호화하는 단계는,
상기 적어도 하나의 암호화된 파일의 헤더 부분이 기설정된 값으로 시작하는지 여부에 따라 상기 적어도 하나의 암호화된 파일의 암호화 여부를 확인하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
9. The method of claim 8,
Wherein the step of decrypting comprises:
Determining whether the at least one encrypted file is encrypted according to whether a header portion of the at least one encrypted file begins with a predetermined value.
제1항 내지 제11항 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록 매체.A computer-readable recording medium having recorded therein a program for executing the method according to any one of claims 1 to 11. 하나 이상의 프로세서들을 포함하는 서버의 시스템에 있어서,
상기 하나 이상의 프로세서들은,
어플리케이션을 위한 파일들이 포함된 응용 프로그램 패키지를 수신하도록 상기 서버를 제어하는 수신 제어부 - 상기 응용 프로그램 패키지는, 상기 어플리케이션의 코드가 컴파일되어 생성된 중간 언어(Intermediate Language, IL) 코드를 포함하는 파일들 및 상기 중간 언어 코드에 따라 상기 어플리케이션을 실행하도록 전자 기기에 실행 환경을 제공하기 위한 라이브러리 파일들을 포함함 -;
상기 중간 언어 코드를 포함하는 파일들 중 적어도 하나의 파일을 암호화하도록 상기 서버를 제어하는 암호화 제어부; 및
상기 적어도 하나의 암호화된 파일의 복호화를 위한 리커버리 파일을 상기 응용 프로그램 패키지에 추가하도록 상기 서버를 제어하는 파일 추가 제어부 - 상기 리커버리 파일은, 상기 전자 기기에서의 상기 어플리케이션의 실행을 위해 상기 라이브러리 파일들간의 호출을 통해 상기 적어도 하나의 암호화된 파일이 전달되는 경우에 상기 적어도 하나의 암호화된 파일을 복호화하기 위한 코드를 포함함 -
를 포함하는 것을 특징으로 하는 시스템.
A system of a server comprising one or more processors,
The one or more processors,
A reception control unit for controlling the server to receive an application package including files for an application, the application package including: files including intermediate language (IL) codes generated by compiling code of the application; And library files for providing an execution environment to the electronic device to execute the application according to the intermediate language code;
An encryption control unit for controlling the server to encrypt at least one file among the files including the intermediate language code; And
A file addition control section for controlling the server to add a recovery file for decrypting the at least one encrypted file to the application program package, the recovery file including at least one encrypted file between the library files for execution of the application in the electronic device Said code for decrypting said at least one encrypted file when said at least one encrypted file is delivered via a call to said at least one encrypted file,
≪ / RTI >
제13항에 있어서,
상기 수신 제어부는,
상기 중간 언어 코드를 포함하는 파일들 중 암호화하기 위한 파일에 대한 정보를 더 수신하도록 상기 서버를 제어하고,
상기 암호화 제어부는,
상기 중간 언어 코드를 포함하는 파일들 중 상기 더 수신된 정보에 대응하는 파일을 암호화하도록 상기 서버를 제어하는 것을 특징으로 하는 시스템.
14. The method of claim 13,
The reception control unit,
Controlling the server to further receive information on a file for encryption among files including the intermediate language code,
The encryption control unit,
And controls the server to encrypt a file corresponding to the more received information among the files including the intermediate language code.
제13항에 있어서,
상기 적어도 하나의 파일은 상기 실행 환경을 위한 헤더 부분 및 상기 어플리케이션을 위한 코드 부분을 포함하고,
상기 암호화 제어부는,
상기 헤더 부분 및 상기 코드 부분 중 적어도 하나를 암호화하도록 상기 서버를 제어하는 것을 특징으로 하는 시스템.
14. The method of claim 13,
Wherein the at least one file includes a header portion for the execution environment and a code portion for the application,
The encryption control unit,
And to control the server to encrypt at least one of the header portion and the code portion.
제13항에 있어서,
상기 라이브러리 파일들은 상기 중간 언어 코드를 포함하는 파일들을 불러오기 위한 코드를 포함하는 제1 라이브러리 파일 및 상기 제1 라이브러리 파일에 대한 API(Application Programming Interface) 호출을 통해 상기 중간 언어 코드를 포함하는 파일들의 풀 버퍼(full buffer)를 리딩하여 파싱하기 위한 코드를 포함하는 제2 라이브러리 파일을 포함하고,
상기 리커버리 파일은 상기 제2 라이브러리 파일이 포함하는 코드를 통해 상기 제1 라이브러리 파일이 API 호출됨에 따라 리딩되는 상기 적어도 하나의 암호화된 파일에 대한 풀 버퍼(full buffer)를 복호화하여 상기 적어도 하나의 암호화된 파일을 복호화하기 위한 코드를 포함하는 것을 특징으로 하는 시스템.
14. The method of claim 13,
Wherein the library files include a first library file including code for loading files containing the intermediate language code and a second library file containing an intermediate language code through an Application Programming Interface (API) call to the first library file A second library file containing code for reading and parsing a full buffer,
Wherein the recovery file decrypts a full buffer for the at least one encrypted file that is read according to an API call of the first library file through a code included in the second library file, And decrypting the encrypted file.
제13항에 있어서,
네트워크를 통한 상기 전자 기기로부터의 요청에 따라 상기 리커버리 파일이 추가된 상기 응용 프로그램 패키지를 상기 전자 기기로 전송하도록 상기 서버를 제어하는 전송 제어부
를 더 포함하는 것을 특징으로 하는 시스템.
14. The method of claim 13,
A transmission control section for controlling the server to transmit the application program package to which the recovery file has been added to the electronic device in response to a request from the electronic device via the network,
≪ / RTI >
하나 이상의 프로세서들을 포함하는 전자 기기의 시스템에 있어서,
상기 하나 이상의 프로세서들은,
어플리케이션을 위한 파일들이 포함된 응용 프로그램 패키지를 수신하도록 상기 전자 기기를 제어하는 수신 제어부 - 상기 응용 프로그램 패키지는, 상기 어플리케이션의 코드가 컴파일되어 생성된 중간 언어(Intermediate Language, IL) 코드를 포함하고 암호화된 적어도 하나의 파일 및 상기 중간 언어 코드에 따라 상기 어플리케이션을 실행하도록 전자 기기에 실행 환경을 제공하기 위한 라이브러리 파일들 및 상기 암호화된 적어도 하나의 파일을 복호화하기 위한 리커버리 파일을 포함함 -; 및
상기 어플리케이션의 실행 과정에서, 상기 리커버리 파일에 포함된 코드의 제어에 따라 상기 어플리케이션의 실행을 위해 상기 라이브러리 파일들간의 호출을 통해 상기 적어도 하나의 암호화된 파일이 전달되는 경우에 상기 적어도 하나의 암호화된 파일을 복호화하도록 상기 전자 기기를 제어하는 복호화 제어부
를 포함하는 것을 특징으로 하는 시스템.
A system of an electronic device comprising one or more processors,
The one or more processors,
A reception control unit for controlling the electronic equipment to receive an application package including files for an application, the application package including an intermediate language (IL) code generated by compiling code of the application, And a recovery file for decrypting the encrypted at least one file, and library files for providing an execution environment to the electronic device to execute the application in accordance with the intermediate language code; And
Wherein in the execution of the application, when the at least one encrypted file is transferred through a call between the library files for execution of the application according to control of the code contained in the recovery file, A decryption control unit for controlling the electronic apparatus to decrypt the file,
≪ / RTI >
제18항에 있어서,
상기 라이브러리 파일들은 상기 중간 언어 코드를 포함하는 파일들을 불러오기 위한 코드를 포함하는 제1 라이브러리 파일 및 상기 제1 라이브러리 파일에 대한 API(Application Programming Interface) 호출을 통해 상기 중간 언어 코드를 포함하는 파일들의 풀 버퍼(full buffer)를 리딩하여 파싱하기 위한 코드를 포함하는 제2 라이브러리 파일을 포함하고,
상기 복호화 제어부는,
상기 제2 라이브러리 파일이 포함하는 코드를 통해 상기 제1 라이브러리 파일이 API 호출됨에 따라 리딩되는 상기 적어도 하나의 암호화된 파일에 대한 풀 버퍼(full buffer)를 상기 리커버리 파일이 포함하는 코드의 제어에 따라 복호화하여 상기 적어도 하나의 암호화된 파일을 복호화하도록 상기 전자 기기를 제어하는 것을 특징으로 하는 시스템.
19. The method of claim 18,
Wherein the library files include a first library file including code for loading files containing the intermediate language code and a second library file containing an intermediate language code through an Application Programming Interface (API) call to the first library file A second library file containing code for reading and parsing a full buffer,
Wherein the decoding control unit comprises:
A full buffer for the at least one encrypted file that is read in response to an API call of the first library file through a code included in the second library file is controlled according to control of a code included in the recovery file And decrypts the at least one encrypted file to decrypt the at least one encrypted file.
제18항에 있어서,
상기 복호화 제어부는,
상기 적어도 하나의 암호화된 파일의 헤더 부분이 기설정된 값으로 시작하는지 여부에 따라 상기 적어도 하나의 암호화된 파일의 암호화 여부를 확인하는 것을 특징으로 하는 시스템.
19. The method of claim 18,
Wherein the decoding control unit comprises:
Wherein the at least one encrypted file is encrypted based on whether a header portion of the at least one encrypted file starts with a predetermined value.
KR1020150112740A 2015-08-10 2015-08-10 System and method for protecting code of application KR101740133B1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020150112740A KR101740133B1 (en) 2015-08-10 2015-08-10 System and method for protecting code of application
JP2018506544A JP6815386B2 (en) 2015-08-10 2016-08-04 Systems, methods and programs to protect application code
PCT/KR2016/008587 WO2017026738A1 (en) 2015-08-10 2016-08-04 System and method for protecting codes for application

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150112740A KR101740133B1 (en) 2015-08-10 2015-08-10 System and method for protecting code of application

Publications (2)

Publication Number Publication Date
KR20170018744A true KR20170018744A (en) 2017-02-20
KR101740133B1 KR101740133B1 (en) 2017-05-26

Family

ID=57984491

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150112740A KR101740133B1 (en) 2015-08-10 2015-08-10 System and method for protecting code of application

Country Status (3)

Country Link
JP (1) JP6815386B2 (en)
KR (1) KR101740133B1 (en)
WO (1) WO2017026738A1 (en)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018194196A1 (en) * 2017-04-20 2018-10-25 라인 가부시키가이샤 Method and system for detecting application of obfuscation to and evaluating security of elf file
WO2018194198A1 (en) * 2017-04-20 2018-10-25 라인 가부시키가이샤 Method and system for detecting application of obfuscation to and evaluating security of pe file
WO2018199366A1 (en) * 2017-04-28 2018-11-01 라인 가부시키가이샤 Method and system for detecting whether obfuscation has been applied to dex file and evaluating security
CN110619220A (en) * 2019-08-09 2019-12-27 北京小米移动软件有限公司 Method and device for encrypting neural network model and storage medium
US10963563B2 (en) 2017-04-20 2021-03-30 Line Corporation Method and system for evaluating security of application

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111273943A (en) * 2018-12-04 2020-06-12 北京嘀嘀无限科技发展有限公司 Application file generation method and device and electronic equipment
CN110472425A (en) * 2019-07-18 2019-11-19 福建天晴在线互动科技有限公司 Unity plug-in unit encryption method based on Mono, storage medium

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5625690A (en) * 1993-11-15 1997-04-29 Lucent Technologies Inc. Software pay per use system
JP4727366B2 (en) * 2005-09-28 2011-07-20 株式会社デジタル Information processing apparatus, information processing system, program, and recording medium
JP2007172526A (en) * 2005-12-26 2007-07-05 Nippon Computer Co Ltd Information processing system and information processing method
JP2007328541A (en) * 2006-06-07 2007-12-20 Canon Inc Electronic device
CA2774728C (en) * 2009-11-13 2019-02-12 Irdeto Canada Corporation System and method to protect java bytecode code against static and dynamic attacks within hostile execution environments
KR101092373B1 (en) * 2010-01-07 2011-12-09 한국과학기술연구원 System and method for generating software package and installing the same
CN102236757A (en) * 2011-06-30 2011-11-09 北京邮电大学 Software protection method and system applicable to Android system
US8887152B1 (en) * 2011-11-04 2014-11-11 Trend Micro, Inc. Android application virtual environment
US8892876B1 (en) * 2012-04-20 2014-11-18 Trend Micro Incorporated Secured application package files for mobile computing devices
KR101472346B1 (en) * 2012-05-24 2014-12-16 주식회사 엘지유플러스 Method for providing encrypted web application, terminal supporting the same, and recording medium thereof
KR101391982B1 (en) * 2012-08-28 2014-05-07 바른소프트기술 주식회사 Encryption method for preventing decompile of andriod application
KR101471589B1 (en) * 2013-08-22 2014-12-10 (주)잉카엔트웍스 Method for Providing Security for Common Intermediate Language Program

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018194196A1 (en) * 2017-04-20 2018-10-25 라인 가부시키가이샤 Method and system for detecting application of obfuscation to and evaluating security of elf file
WO2018194198A1 (en) * 2017-04-20 2018-10-25 라인 가부시키가이샤 Method and system for detecting application of obfuscation to and evaluating security of pe file
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
CN110619220A (en) * 2019-08-09 2019-12-27 北京小米移动软件有限公司 Method and device for encrypting neural network model and storage medium
CN110619220B (en) * 2019-08-09 2022-03-11 北京小米移动软件有限公司 Method and device for encrypting neural network model and storage medium

Also Published As

Publication number Publication date
JP2018527664A (en) 2018-09-20
KR101740133B1 (en) 2017-05-26
WO2017026738A1 (en) 2017-02-16
JP6815386B2 (en) 2021-01-20

Similar Documents

Publication Publication Date Title
KR101740133B1 (en) System and method for protecting code of application
JP6815385B2 (en) Systems and methods for code obfuscation of applications
US10255443B2 (en) Method, apparatus, system and non-transitory computer readable medium for code protection
US20180260199A1 (en) Method and apparatus for intermediate representation of applications
US20170116410A1 (en) Software protection
KR20060089632A (en) Flexible licensing architecture for licensing digital application
KR20170097360A (en) Method and system for extending function of package file
KR101832594B1 (en) Method and system for enhancing loading velocity of intermediate language file
KR101814897B1 (en) Method and system for protecting file
KR101823226B1 (en) Method and system for code protection
JP7015120B2 (en) How and system to provide application packages, how and system to run applications
KR101730256B1 (en) Method and system for overlay control
KR101771348B1 (en) Method and system for packing package file
KR102538096B1 (en) Device and method of verify application
KR101817464B1 (en) Method and system for overlay control
EP4361795A1 (en) Software use system and software use method
KR20180004065A (en) Method and system for protecting file
KR20180048518A (en) Method and system for extending function of package file
KR20210151077A (en) Method and system for loading executable image in memory
KR20170041536A (en) Method and system for detecting memory hacking

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant