WO2017150769A1 - 애플리케이션 코드 난독화 장치 및 이를 이용한 애플리케이션 코드 난독화 방법 - Google Patents

애플리케이션 코드 난독화 장치 및 이를 이용한 애플리케이션 코드 난독화 방법 Download PDF

Info

Publication number
WO2017150769A1
WO2017150769A1 PCT/KR2016/005026 KR2016005026W WO2017150769A1 WO 2017150769 A1 WO2017150769 A1 WO 2017150769A1 KR 2016005026 W KR2016005026 W KR 2016005026W WO 2017150769 A1 WO2017150769 A1 WO 2017150769A1
Authority
WO
WIPO (PCT)
Prior art keywords
code
signature
random vector
generator
vector
Prior art date
Application number
PCT/KR2016/005026
Other languages
English (en)
French (fr)
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 (주)케이사인
Publication of WO2017150769A1 publication Critical patent/WO2017150769A1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45529Embedded in an application, e.g. JavaScript in a Web browser
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/53Decompilation; Disassembly
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding
    • H04L2209/043Masking or blinding of tables, e.g. lookup, substitution or mapping
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box

Definitions

  • the present invention relates to an application code obfuscation apparatus and an application code obfuscation method using the same, and more particularly, to an application code obfuscation apparatus having improved reverse engineering resistance and an application code obfuscation method using the same.
  • Conventional application code obfuscation apparatus and method for the Java language apply obfuscation by changing the code structure constituting the application for an application running in the Java Virtual Machine.
  • the obfuscated application is composed of the command set and object file structure that operate in the Java virtual machine as before the obfuscation is applied.
  • Reverse engineering vulnerability of managed code includes source code information such as class name, member variable name and method name in compiled object code, and the source code is explicitly structured to find or analyze specific logic through reverse engineering. It is easy to do.
  • the Android application is composed of managed code running on the Dalvik Virtual Machine and is stored in a .dex (dalvik excutable) file format. Therefore, Android applications also contain the same reverse engineering vulnerabilities in managed code as Java applications.
  • the present invention is to solve the problems that the conventional application code obfuscation apparatus and its method, the object of the present invention is to obfuscate application code using a random vector table to improve the reverse engineering resistance It is to provide a display device.
  • Another object of the present invention is to provide an application code obfuscation method using the application code obfuscation apparatus.
  • Application code obfuscation apparatus includes a key code separator, a key code pager generator, a code converter and obfuscator.
  • the important code separator separates the application code of the first type into a general code other than the important code.
  • the important code pager generator generates an important code pager for calling the important code.
  • the code converter converts the significant code of the first format into a second format.
  • the obfuscation unit is linked with a first table including an obfuscated signature of the critical code and a first random vector and an offset of the critical code corresponding to the obfuscated signature of the critical code and the first random vector. Generate a second table containing a second random vector.
  • the first form may be a managed code.
  • the second form may be native code.
  • the obfuscation unit code signature generator generator for generating a code signature generator for generating the obfuscated signature of the critical code, the obfuscated signature of the critical code the first
  • a vector table separator generation unit for generating a vector table separator for arranging a table and arranging an offset of the important code as a second table, and the first random vector and the second table arranged in the first table; It may include a random vector generator generator for generating a random vector generator for generating a second random vector.
  • the general code and the important code pager may be formed in the first code area of the first type.
  • the important code, the code signature generator, the vector table separator, and the random vector generator may be formed in a second code region of the second format.
  • the obfuscation unit may further include a dummy code generator for generating a dummy code in the second code region.
  • the code signature generator may further generate an obfuscated signature of the dummy code in the first table.
  • the random vector generator may randomly generate the first random vector and the second random vector each time.
  • the important code pager when the important code pager calls a critical code corresponding to the first signature using a first signature, the important code pager calls the obfuscated signature of the critical code corresponding to the first signature.
  • Select from the first table select the first random vector paired with the selected signature, select the second random vector corresponding to the selected first random vector from the second table, and select the selected second 2 selecting the offset of the significant code paired with a random vector, and the significant code can be called using the offset of the selected significant code.
  • Application code obfuscation method comprises the steps of separating the application code of the first form into a general code other than the important code and the important code, calling the important code Generating an important code pager for the first code, converting the first code of the first format into a second format, and a first table including an obfuscated signature of the first code and a first random vector; Generating a second table comprising an offset of the significant code corresponding to the obfuscated signature and a second random vector linked with the first random vector.
  • the first form may be a managed code.
  • the second form may be native code.
  • the generating of the first table and the second table may include generating a code signature generator that generates the obfuscated signature of the critical code, and the obfuscation of the critical code. Creating a vector table separator for arranging the signed signature in the first table and arranging the offset of the significant code in the second table; and placing the signature in the first random vector and the second table disposed in the first table.
  • the method may include generating a random vector generator that generates the second random vector.
  • the general code and the important code pager may be formed in the first code area of the first type.
  • the important code, the code signature generator, the vector table separator, and the random vector generator may be formed in a second code region of the second format.
  • the application code obfuscation method may further comprise generating a dummy code in the second code area.
  • generating the first table and the second table may further include generating an obfuscated signature of the dummy code in the first table.
  • the random vector generator may randomly generate the first random vector and the second random vector each time.
  • the apparatus for obfuscating an application code according to the present invention and the method for obfuscating an application code using the same include a separate vector table including a first random vector set and a separate offset table including a second random vector set. Can improve.
  • FIG. 1 is a block diagram illustrating an apparatus for obfuscating an application code according to an embodiment of the present invention.
  • FIG. 2 is a conceptual diagram illustrating an operation of the application code obfuscation device of FIG. 1.
  • FIG. 3 is a conceptual diagram illustrating the operation of the vector table generator, the vector table separator, the code signature generator, and the random vector generator of FIG. 2.
  • 4B is a conceptual diagram illustrating another example of the separated vector table and the separated offset table generated by the vector table generator, the vector table separator, the code signature generator, and the random vector generator of FIG. 2.
  • first and second may be used to describe various components, but the components should not be limited by the terms. The terms may be used for the purpose of distinguishing one component from another component.
  • first component may be referred to as the second component, and similarly, the second component may also be referred to as the first component.
  • a function or operation specified in a specific block may occur out of the order specified in the flowchart. For example, two consecutive blocks may actually be performed substantially simultaneously, and the blocks may be performed upside down depending on the function or operation involved.
  • FIG. 1 is a block diagram illustrating an application code obfuscation apparatus 1000 according to an embodiment of the present invention.
  • 2 is a conceptual diagram illustrating an operation of the application code obfuscation device of FIG. 1.
  • the application code obfuscation apparatus 1000 includes an important code separator 100, an important code pager generator 200, a code converter 300, and an obfuscation unit.
  • the obfuscation unit includes a vector table generator generation unit 400, a vector table separator generation unit 500, a code signature generator generation unit 600, and a random vector generator generation unit 700.
  • the obfuscation unit may further include a dummy code generation unit 700.
  • the important code separator 100 receives an application code.
  • the important code separator 100 receives an application code of a first format.
  • the first format may be a managed code.
  • the application code may be Java code (JAVA).
  • the application code may be Dalvik Executable (.dex).
  • the important code separator 100 separates the application code into an important code 70 and a general code 10 other than the important code 70.
  • the critical code 70 may mean a code that needs to be protected from a forgery attack of an application.
  • the general code 10 is disposed in the managed code area C1.
  • the important code pager generator 200 generates the important code pager 20.
  • the important code pager 20 may call the important code 70 by using the signature of the important code 70.
  • the signature of the important code 70 may be parameter information of a function.
  • the signature of the important code 70 may be generated based on the (integer, integer). Can be.
  • the signature of the important code 70 may be set to (text, text, integer). Can be generated on the basis of Alternatively, the signature of the important code 70 may be generated using information other than the parameter information of the function.
  • the important code pager 20 generated by the important code pager generator 200 is disposed in the managed code area C1.
  • the important code pager 20 calls the important code 70 disposed in the native code area C2 using the signature of the important code 70.
  • the code converter 300 converts the important code 70 of the first format into a second format.
  • the first form may be the managed code.
  • the second form may be native code.
  • the important code 70 converted into the second format is disposed in the native code area C2.
  • analysis complexity increases.
  • code analysis techniques suitable for each environment of the managed code and the native code must be applied, code analysis becomes difficult.
  • the vector table generator generator 400 generates a vector table generator 30.
  • the vector table generator 30 may generate a dynamic vector table including signatures of the significant code and offsets of the significant code corresponding to the signatures of the significant code.
  • the signature of the important code may mean a discriminator capable of discriminating the important code.
  • the offset of the significant code may mean an address where the important code is located in the native code region C2.
  • the dynamic vector table may include a first column in which the signature of the critical code is arranged and a second column in which the offset of the critical code is arranged.
  • the signature of the critical code and the offset of the critical code may have a one-to-one correspondence.
  • the vector table generator 30 generated by the vector table generator generator 400 may be disposed in the native code region C2.
  • the code signature generator generator 600 generates a code signature generator 50.
  • the code signature generator 50 may obfuscate the signature of the critical code. When the signature of the important code is obfuscated, the signature of the important code may be dropped and the analysis resistance to the important code may be increased.
  • the code signature generator 50 generated by the code signature generator generation unit 600 may be disposed in the native code region C2.
  • the vector table separator generator 500 generates a vector table separator 40.
  • the vector table separator 40 separates the dynamic vector table generated by the vector table generator 30 into a first table and a second table.
  • the first table includes the signature of the significant code and a first random vector.
  • the second table includes an offset of the significant code corresponding to the signature of the significant code and a second random vector linked with the first random vector.
  • the first table may include the signature of the critical code obfuscated by the code signature generator.
  • the first table may include a first column including the signature of the significant code and a second column including the first random vector.
  • the second table may include a second column including the second random vector and a second column including the offset of the significant code.
  • the vector table generator and the vector table separator are described as operating separately.
  • the vector table generator and the vector table separator are integrally formed to separate the first table and the second table. Can be formed.
  • the code signature generator is described as operating separately from the vector table generator.
  • the code signature generator may be integrally formed with the vector table generator to form the dynamic vector table.
  • the obfuscated signature may be generated.
  • the code signature generator is described as operating separately from the vector table separator.
  • the code signature generator is integrally formed with the vector table separator, so that the first table and the second table are separated. When the table is formed, the obfuscated signature may be generated in the first table.
  • the dummy code generator 700 may generate a dummy code in the native code area C2.
  • the dummy code 80 is a code for obfuscating the code flow complex.
  • the dummy code 80 is mixed with the important code to increase the analysis resistance for the important code 70.
  • the first table may further include a signature for the dummy code 80.
  • the code signature generator 50 may generate the obfuscated signature of the dummy code 80.
  • the second table may include an offset of the dummy code 80 corresponding to the signature of the dummy code 80. While the dummy code 80 is not actually called during execution of the application, the complexity of the first table and the second table may be increased due to the signature of the dummy code 80 and the offset of the dummy code 80. Increase the analysis resistance for the first table and the second table.
  • the random vector generator generator 800 generates a random vector generator 60.
  • the random vector generator generates the first random vector disposed in the first table and the second random vector disposed in the second table.
  • the first random vector and the second random vector are randomly formed at the time of execution of the application.
  • the first random vector and the second random vector may be generated differently each time the application is executed.
  • the first random vector when the first said application is executed may be different from the first random vector when the second said application is executed.
  • the random vector generator 60 may generate both the first and second random vectors for the significant code 70 and the first and second random vectors for the dummy code 80.
  • the random vector generator 60 may generate the first and second random vectors for the significant code 70 and the first and second random vectors for the dummy code 80 without distinction. .
  • the random vector generator 60 generated by the random vector generator generator 800 may be disposed in the native code region C2.
  • the important code separator 100 receives the application code.
  • the important code separator 100 separates the application code into the important code 70 and the general code 10.
  • the general code 10 is disposed in the first code area C1.
  • the important code pager generator 200 generates the important code pager 20.
  • the important code pager 20 is disposed in the first code area C1.
  • the important code pager 20 may call the important code 70 in the second code area C2 by using the first and second tables when the application is executed.
  • the important code 70 separated by the important code separator 100 is converted from the first code format to the second code format by the code converter 300 and disposed in the second code region C2. do.
  • the vector table generator generator 400 generates the vector table generator 30.
  • the vector table generator 30 generates a dynamic vector table including the signature and the offset of the important code 70.
  • the vector table separator generator 500 generates the vector table separator 40.
  • the vector table separator 40 separates the dynamic vector table into a first table and a second table.
  • the first table may include a signature of the significant code 70 and the first random vector
  • the second table may include an offset of the significant code 70 and the second random vector.
  • the code signature generator generator 600 generates the code signature generator 50.
  • the code signature generator 50 obfuscates the signature of the critical code 70. If the signature of the important code 70 is obfuscated, it may be impossible to infer the important code only by the signature.
  • the dummy code generation unit 700 generates the dummy code 80 mixed with the important code 70 to make the analysis difficult.
  • the generated dummy code 80 may be included in the first table and the second table together with the important code 70.
  • the random vector generator generator 800 generates the random vector generator 60.
  • the random vector generator 60 generates the first random vector and the second random vector representing reference indices connecting the first table and the second table. Each time the random vector generator 60 is executed, the first random vector and the second random vector may be generated differently.
  • connection between the signature of the significant code 70 and the offset of the significant code 70 is weakened by the first random vector and the second random vector. Therefore, the analysis resistance of the important code 70 may increase.
  • the general code 10 and the important code pager 20 may be disposed in the first code area C1.
  • Cord 80 may be disposed.
  • FIG. 3 is a conceptual diagram illustrating operations of the vector table generator 30, the vector table separator 40, the code signature generator 50, and the random vector generator 60 of FIG. 2.
  • an important code pager 20 calls the important code 70 of the native code area C2 using the important code signature 90.
  • the vector table generator 30 In response to a call request of the important code 70 in the native code region C2, the vector table generator 30 is called, and the code signature generator 50 and the random are executed by the vector table separator 40. Vector generator 60 is called.
  • the random vector generator 60 generates a random index every time it is executed and assigns it to the first table (separated vector table) and the second table (separated offset table).
  • the second table includes offset information of the significant code, the dummy code, and the second random vector. Reference is made to an offset of the significant code corresponding to the first random vector referred to in the first table (separated vector table).
  • the offset selected using the second random vector becomes the offset of the important code called by the important code pager 20, and executes the important code using the offset of the important code.
  • the call process is summarized as follows.
  • the important code pager 20 calls the important code corresponding to the first signature 90 using the first signature 90
  • the obfuscation of the important code corresponding to the first signature 90 is performed.
  • Select a selected signature from the first table select the first random vector paired with the selected signature, select the second random vector corresponding to the selected first random vector from the second table,
  • the offset of the significant code paired with the selected second random vector is selected, and the significant code is called using the offset of the selected significant code.
  • 4A is a conceptual diagram illustrating an example of a separated vector table and a separated offset table generated by the vector table generator, the vector table separator, the code signature generator, and the random vector generator of FIG. 2.
  • the obfuscation unit of the present invention has a signature of important code (important code 1 VECTOR, important code 2 VECTOR, important code 3 VECTOR) and an address offset (important code 1 OFFSET, important) corresponding to the signature.
  • a dynamic vector table (DVT) consisting of code 2 OFFSET and important code 3 OFFSET is added to the signature (important code 1 VECTOR, important code 2 VECTOR, important code 3 VECTOR) and the first random vector (RANDOM VECTOR2, RANDOM).
  • the vector table T1 consisting of VECTOR1 and RANDOM VECTOR3 and the second random vector RANDOM VECTOR1, RANDOM VECTOR2, RANDOM VECTOR3 and the offset of the important code (critical code 2 OFFSET, important code 1 OFFSET, important code 3 OFFSET) Separate into an offset table (T2) consisting of.
  • the obfuscated signature information can be used as a vector and a random vector of the vector can be identified.
  • An important code offset can be obtained by referring to the identified random vector in the offset table, and the important code is executed using the important code offset.
  • the RANDOM VECTOR 2 paired with the important code 1 VECTOR is selected in the vector table T1 (first row of T1), and the position of the selected RANDOM VECTOR 2 is selected. After the second row of T2) is found in the offset table T2, an important code 1 OFFSET paired with the RANDOM VECTOR 2 is obtained.
  • the important code 1 is executed using the important code 1 OFFSET.
  • RANDOM VECTOR 1 paired with the important code 2 VECTOR is selected in the vector table T1 (second row of T1), and the position of the selected RANDOM VECTOR 1 is selected. After the first row of T2) is found in the offset table T2, an important code 2 OFFSET paired with the RANDOM VECTOR 1 is obtained. The important code 2 is executed using the important code 2 OFFSET.
  • the present invention is not limited by the manner of constructing rows in the vector table T1 and the offset table T2.
  • the configuration of the rows of the first random vector in the vector table T1 (RANDOM VECTOR2, RANDOM VECTOR1, RANDOM VECTOR3) is the row of the second random vector in the offset table T2.
  • configurations of RANDOM VECTOR1, RANDOM VECTOR2, and RANDOM VECTOR3 are different from each other, the configuration of the row of the first random vector and the configuration of the row of the second random vector may be identical to each other.
  • 4B is a conceptual diagram illustrating another example of the separated vector table and the separated offset table generated by the vector table generator, the vector table separator, the code signature generator, and the random vector generator of FIG. 2.
  • FIG. 4B illustrates a case where first and second random vectors different from those of FIG. 4A are generated.
  • the RANDOM VECTOR 3 paired with the important code 1 VECTOR is selected in the vector table T1 (first row of T1), and the position of the selected RANDOM VECTOR 3 ( The third row of T2) is found in the offset table T2, and then an important code 1 OFFSET paired with the RANDOM VECTOR 3 is obtained.
  • the important code 1 is executed using the important code 1 OFFSET.
  • the RANDOM VECTOR 2 paired with the important code 2 VECTOR is selected in the vector table T1 (second row of T1), and the position of the selected RANDOM VECTOR 2 is selected.
  • the second row of T2) is found in the offset table T2, and then an important code 2 OFFSET paired with the RANDOM VECTOR 2 is obtained.
  • the important code 2 is executed using the important code 2 OFFSET.
  • the dynamic vector table DVT for executing the important code is separated into the vector table T1 and the offset table T2, it is difficult to grasp the call flow of the core code, thereby increasing the static analysis resistance. .
  • the separated vector table T1 and the offset table T2 are linked using a random vector at execution time. Therefore, dynamic call resistance can increase because different call flows must be analyzed for each dynamic analysis.
  • the signature and offset of the dummy code may be added to each of the tables T1 and T2 to improve execution flow obfuscation and to increase dynamic analysis resistance.
  • the present invention can be applied to any electronic device that performs obfuscation of an application.
  • the electronic device is a mobile phone, smart phone, laptop computer, tablet computer, digital broadcasting terminal, PDA, PMP, navigation device digital camera, camcorder, digital TV, set-top box, music player, portable game console, smart card, printer And the like.
  • code signature generator 60 random vector generator
  • code signature generator generator 700 dummy code generator

Abstract

애플리케이션 코드 난독화 장치는 중요코드 분리기, 중요코드 호출기 생성부, 코드 변환기 및 난독화부를 포함한다. 상기 중요코드 분리기는 제1 형식의 애플리케이션 코드를 중요코드 및 상기 중요코드 이외의 일반코드로 분리한다. 상기 중요코드 호출기 생성부는 상기 중요코드를 호출하기 위한 중요코드 호출기를 생성한다. 상기 코드 변환기는 상기 제1 형식의 상기 중요코드를 제2 형식으로 변환한다. 상기 난독화부는 상기 중요코드의 난독화된 시그니처 및 제1 랜덤 벡터를 포함하는 제1 테이블 및 상기 중요코드의 상기 난독화된 시그니처에 대응하는 상기 중요코드의 옵셋 및 상기 제1 랜덤 벡터와 링크되는 제2 랜덤 벡터를 포함하는 제2 테이블을 생성한다.

Description

애플리케이션 코드 난독화 장치 및 이를 이용한 애플리케이션 코드 난독화 방법
본 발명은 애플리케이션 코드 난독화 장치 및 이를 이용한 애플리케이션 코드 난독화 방법에 관한 것으로, 보다 구체적으로 역공학 저항성을 향상시킨 애플리케이션 코드 난독화 장치 및 이를 이용한 애플리케이션 코드 난독화 방법에 관한 것이다.
Java 언어 대상의 종래의 애플리케이션 코드 난독화 장치 및 그 방법은 자바 가상 머신(Java Virtual Machine)에서 동작하는 애플리케이션을 대상으로 애플리케이션을 구성하는 코드 구조를 변경함으로써 난독화를 적용한다. 여기서 난독화가 적용된 애플리케이션은 난독화 적용 전과 동일하게 자바 가상 머신에서 동작하는 명령어 집합과 목적파일 구조로 구성된다.
그러나, 종래의 난독화 장치 및 그 방법에 의하는 경우, 가상 머신에서 동작하는 매니지드 코드(Managed Code)가 가지는 역공학 취약성은 난독화 이후에도 동일하게 남아있게 되는 문제점이 있다.
매니지드 코드가 가지는 역공학 취약성은, 컴파일 된 목적 코드에 클래스 명, 멤버 변수 명, 메소드 명 등 소스 코드 정보가 포함되며 상기 소스 코드가 명시적으로 구조화되어 있어 역공학을 통해 특정 로직을 찾거나 분석하는 것이 용이하다는 점이다.
안드로이드 애플리케이션도 상기 자바 가상 머신에서 동작하는 애플리케이션과 유사하게 달빅 가상 머신(Dalvik Virtual Machine)에서 동작하는 매니지드 코드로 구성되며 .dex(dalvik excutable) 파일 형식으로 저장된다. 따라서, 안드로이드 애플리케이션도 자바 애플리케이션과 동일한 매니지드 코드의 역공학 취약성을 내포하고 있다.
따라서 본 발명은 종래 애플리케이션 코드 난독화 장치 및 그 방법이 가지는 문제점들을 해결하기 위한 것으로, 본 발명이 이루고자 하는 목적은 랜덤 벡터 테이블을 이용하여 애플리케이션 코드를 난독화하여 역공학 저항성을 향상시킨 애플리케이션 코드 난독화 장치를 제공하는 것이다.
본 발명이 이루고자 하는 다른 목적은 상기 애플리케이션 코드 난독화 장치를 이용하는 애플리케이션 코드 난독화 방법을 제공하는 것이다.
상기한 본 발명의 목적을 실현하기 위한 일 실시예에 따른 애플리케이션 코드 난독화 장치는 중요코드 분리기, 중요코드 호출기 생성부, 코드 변환기 및 난독화부를 포함한다. 상기 중요코드 분리기는 제1 형식의 애플리케이션 코드를 중요코드 및 상기 중요코드 이외의 일반코드로 분리한다. 상기 중요코드 호출기 생성부는 상기 중요코드를 호출하기 위한 중요코드 호출기를 생성한다. 상기 코드 변환기는 상기 제1 형식의 상기 중요코드를 제2 형식으로 변환한다. 상기 난독화부는 상기 중요코드의 난독화된 시그니처 및 제1 랜덤 벡터를 포함하는 제1 테이블 및 상기 중요코드의 상기 난독화된 시그니처에 대응하는 상기 중요코드의 옵셋 및 상기 제1 랜덤 벡터와 링크되는 제2 랜덤 벡터를 포함하는 제2 테이블을 생성한다.
본 발명의 일 실시예에 있어서, 상기 제1 형식은 매니지드 코드일 수 있다. 상기 제2 형식은 네이티브 코드일 수 있다.
본 발명의 일 실시예에 있어서, 상기 난독화부는 상기 중요코드의 상기 난독화된 시그니처를 생성하는 코드 시그니처 생성기를 생성하는 코드 시그니처 생성기 생성부, 상기 중요코드의 상기 난독화된 시그니처를 상기 제1 테이블로 배치하고, 상기 중요코드의 옵셋을 제2 테이블로 배치하는 벡터 테이블 분리기를 생성하는 벡터 테이블 분리기 생성부 및 상기 제1 테이블에 배치되는 상기 제1 랜덤 벡터 및 상기 제2 테이블에 배치되는 상기 제2 랜덤 벡터를 생성하는 랜덤 벡터 생성기를 생성하는 랜덤 벡터 생성기 생성부를 포함할 수 있다.
본 발명의 일 실시예에 있어서, 상기 일반코드 및 상기 중요코드 호출기는 상기 제1 형식의 제1 코드 영역에 형성될 수 있다. 상기 중요코드, 상기 코드 시그니처 생성기, 상기 벡터 테이블 분리기, 상기 랜덤 벡터 생성기는 상기 제2 형식의 제2 코드 영역에 형성될 수 있다.
본 발명의 일 실시예에 있어서, 상기 난독화부는 상기 제2 코드 영역에 더미코드를 생성하는 더미코드 생성기를 더 포함할 수 있다.
본 발명의 일 실시예에 있어서, 상기 코드 시그니처 생성기는 상기 제1 테이블에 상기 더미코드의 난독화된 시그니처를 더 생성할 수 있다.
본 발명의 일 실시예에 있어서, 상기 랜덤 벡터 생성기는 상기 제1 랜덤 벡터 및 상기 제2 랜덤 벡터를 실행 시마다 랜덤하게 생성할 수 있다.
본 발명의 일 실시예에 있어서, 상기 중요코드 호출기가 제1 시그니처를 이용하여 상기 제1 시그니처에 대응하는 중요코드를 호출하면, 상기 제1 시그니처에 대응하는 상기 중요코드의 상기 난독화된 시그니처를 상기 제1 테이블에서 선택하고, 상기 선택된 시그니처와 쌍을 이루는 상기 제1 랜덤 벡터를 선택하며, 상기 선택된 제1 랜덤 벡터에 대응하는 상기 제2 랜덤 벡터를 상기 제2 테이블에서 선택하고, 상기 선택된 제2 랜덤 벡터와 쌍을 이루는 상기 중요코드의 상기 옵셋을 선택하며, 상기 선택된 중요코드의 상기 옵셋을 이용하여 상기 중요코드가 호출될 수 있다.
상기한 본 발명의 다른 목적을 실현하기 위한 일 실시예에 따른 애플리케이션 코드 난독화 방법은 제1 형식의 애플리케이션 코드를 중요코드 및 상기 중요코드 이외의 일반코드로 분리하는 단계, 상기 중요코드를 호출하기 위한 중요코드 호출기를 생성하는 단계, 상기 제1 형식의 상기 중요코드를 제2 형식으로 변환하는 단계 및 상기 중요코드의 난독화된 시그니처 및 제1 랜덤 벡터를 포함하는 제1 테이블 및 상기 중요코드의 상기 난독화된 시그니처에 대응하는 상기 중요코드의 옵셋 및 상기 제1 랜덤 벡터와 링크되는 제2 랜덤 벡터를 포함하는 제2 테이블을 생성하는 단계를 포함한다.
본 발명의 일 실시예에 있어서, 상기 제1 형식은 매니지드 코드일 수 있다. 상기 제2 형식은 네이티브 코드일 수 있다.
본 발명의 일 실시예에 있어서, 상기 제1 테이블 및 상기 제2 테이블을 생성하는 단계는 상기 중요코드의 상기 난독화된 시그니처를 생성하는 코드 시그니처 생성기를 생성하는 단계, 상기 중요코드의 상기 난독화된 시그니처를 상기 제1 테이블로 배치하고, 상기 중요코드의 옵셋을 제2 테이블로 배치하는 벡터 테이블 분리기를 생성하는 단계 및 상기 제1 테이블에 배치되는 상기 제1 랜덤 벡터 및 상기 제2 테이블에 배치되는 상기 제2 랜덤 벡터를 생성하는 랜덤 벡터 생성기를 생성하는 단계를 포함할 수 있다.
본 발명의 일 실시예에 있어서, 상기 일반코드 및 상기 중요코드 호출기는 상기 제1 형식의 제1 코드 영역에 형성될 수 있다. 상기 중요코드, 상기 코드 시그니처 생성기, 상기 벡터 테이블 분리기, 상기 랜덤 벡터 생성기는 상기 제2 형식의 제2 코드 영역에 형성될 수 있다.
본 발명의 일 실시예에 있어서, 상기 애플리케이션 코드 난독화 방법은 상기 제2 코드 영역에 더미코드를 생성하는 단계를 더 포함할 수 있다.
본 발명의 일 실시예에 있어서, 상기 제1 테이블 및 상기 제2 테이블을 생성하는 단계는 상기 제1 테이블에 상기 더미코드의 난독화된 시그니처를 생성하는 단계를 더 포함할 수 있다.
본 발명의 일 실시예에 있어서, 상기 랜덤 벡터 생성기는 상기 제1 랜덤 벡터 및 상기 제2 랜덤 벡터를 실행 시마다 랜덤하게 생성할 수 있다.
본 발명에 따른 애플리케이션 코드 난독화 장치 및 이를 이용하는 애플리케이션 코드 난독화 방법은 제1 랜덤 벡터 세트를 포함하는 분리된 벡터 테이블 및 제2 랜덤 벡터 세트를 포함하는 분리된 옵셋 테이블을 포함하므로, 역공학 저항성을 향상시킬 수 있다.
도 1은 본 발명의 일 실시예에 따른 애플리케이션 코드 난독화 장치를 나타내는 블록도이다.
도 2는 도 1의 애플리케이션 코드 난독화 장치의 동작을 나타내는 개념도이다.
도 3은 도 2의 벡터 테이블 생성기, 벡터 테이블 분리기, 코드 시그니처 생성기 및 랜덤 벡터 생성기의 동작을 나타내기 위한 개념도이다.
도 4a는 도 2의 벡터 테이블 생성기, 벡터 테이블 분리기, 코드 시그니처 생성기 및 랜덤 벡터 생성기에 의해 생성된 분리된 벡터 테이블 및 분리된 옵셋 테이블의 일 예를 나타내는 개념도이다.
도 4b는 도 2의 벡터 테이블 생성기, 벡터 테이블 분리기, 코드 시그니처 생성기 및 랜덤 벡터 생성기에 의해 생성된 분리된 벡터 테이블 및 분리된 옵셋 테이블의 다른 예를 나타내는 개념도이다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미이다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미인 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
한편, 어떤 실시예가 달리 구현 가능한 경우에 특정 블록 내에 명기된 기능 또는 동작이 순서도에 명기된 순서와 다르게 일어날 수도 있다. 예를 들어, 연속하는 두 블록이 실제로는 실질적으로 동시에 수행될 수도 있고, 관련된 기능 또는 동작에 따라서는 상기 블록들이 거꾸로 수행될 수도 있다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 일 실시예에 따른 애플리케이션 코드 난독화 장치(1000)를 나타내는 블록도이다. 도 2는 도 1의 애플리케이션 코드 난독화 장치의 동작을 나타내는 개념도이다.
도 1 및 도 2를 참조하면, 상기 애플리케이션 코드 난독화 장치(1000)는 중요코드 분리기(100), 중요코드 호출기 생성부(200), 코드 변환기(300) 및 난독화부를 포함한다.
상기 난독화부는 벡터 테이블 생성기 생성부(400), 벡터 테이블 분리기 생성부(500), 코드 시그니처 생성기 생성부(600) 및 랜덤 벡터 생성기 생성부(700)를 포함한다. 상기 난독화부는 더미코드 생성부(700)를 더 포함할 수 있다.
상기 중요코드 분리기(100)는 애플리케이션 코드를 입력 받는다. 상기 중요코드 분리기(100)는 제1 형식의 애플리케이션 코드를 입력 받는다. 예를 들어, 상기 제1 형식은 매니지드 코드(Managed Code)일 수 있다. 상기 애플리케이션 코드는 자바 코드(JAVA)일 수 있다. 예를 들어, 상기 애플리케이션 코드는 달빅 실행 코드(Dalvik Executable, .dex)일 수 있다.
상기 중요코드 분리기(100)는 상기 애플리케이션 코드를 중요코드(70) 및 상기 중요코드(70) 이외의 일반코드(10)로 분리한다. 예를 들어, 상기 중요코드(70)는 애플리케이션의 위변조 공격으로부터 보호될 필요가 있는 코드를 의미할 수 있다. 상기 일반코드(10)는 매니지드 코드 영역(C1)에 배치된다.
상기 중요코드 호출기 생성부(200)는 중요코드 호출기(20)를 생성한다. 상기 중요코드 호출기(20)는 상기 중요코드(70)의 시그니처를 이용하여 상기 중요코드(70)를 호출할 수 있다. 예를 들어, 상기 중요코드(70)의 시그니처는 함수의 파라미터 정보일 수 있다.
예를 들어, 중요코드(70)에 해당하는 A함수를 호출하기 위해 사용되는 파라미터가 (integer, integer)인 경우, 상기 중요코드(70)의 시그니처는 상기 (integer, integer)를 기초로 생성될 수 있다. 예를 들어, 중요코드(70)에 해당하는 B함수를 호출하기 위해 사용되는 파라미터가 (text, text, integer)인 경우, 상기 중요코드(70)의 시그니처는 상기 (text, text, integer)를 기초로 생성될 수 있다. 이와는 달리, 상기 중요코드(70)의 시그니처는 상기 함수의 파라미터 정보가 아닌 다른 정보를 이용하여 생성될 수 있다.
상기 중요코드 호출기 생성부(200)에 의해 생성된 상기 중요코드 호출기(20)는 상기 매니지드 코드 영역(C1)에 배치된다. 상기 중요코드 호출기(20)는 상기 중요코드(70)의 시그니처를 이용하여 네이티브 코드 영역(C2)에 배치되는 중요코드(70)를 호출하게 된다.
상기 코드 변환기(300)는 상기 제1 형식의 상기 중요코드(70)를 제2 형식으로 변환한다. 상기 제1 형식은 상기 매니지드 코드일 수 있다. 상기 제2 형식은 네이티브 코드일 수 있다. 상기 제2 형식으로 변환된 상기 중요코드(70)는 상기 네이티브 코드 영역(C2)에 배치된다. 본 실시예에서, 상기 중요코드(70)는 명시성이 높은 상기 매니지드 코드에서 명시성이 낮은 상기 네이티브 코드로 변환되므로 분석 복잡도가 증가한다. 또한, 상기 매니지드 코드 및 상기 네이티브 코드의 각 환경에 맞는 코드 분석 기법을 적용해야 하므로 코드 분석이 난해하게 된다.
상기 벡터 테이블 생성기 생성부(400)는 벡터 테이블 생성기(30)를 생성한다. 상기 벡터 테이블 생성기(30)는 상기 중요코드의 시그니처들 및 상기 중요코드의 시그니처들에 대응하는 상기 중요코드의 옵셋들을 포함하는 다이나믹 벡터 테이블을 생성할 수 있다. 상기 중요코드의 시그니처는 상기 중요코드를 판별할 수 있는 판별자를 의미할 수 있다. 상기 중요코드의 옵셋은 상기 네이티브 코드 영역(C2)에서 상기 중요코드가 위치하는 어드레스를 의미할 수 있다. 예를 들어, 상기 다이나믹 벡터 테이블은 상기 중요코드의 상기 시그니처가 배치되는 제1 열 및 상기 중요코드의 상기 옵셋이 배치되는 제2 열을 포함할 수 있다. 예를 들어, 상기 중요코드의 상기 시그니처 및 상기 중요코드의 상기 옵셋은 일대일 대응관계를 가질 수 있다.
상기 벡터 테이블 생성기 생성부(400)에 의해 생성된 상기 벡터 테이블 생성기(30)는 상기 네이티브 코드 영역(C2)에 배치될 수 있다.
상기 코드 시그니처 생성기 생성부(600)는 코드 시그니처 생성기(50)를 생성한다. 상기 코드 시그니처 생성기(50)는 상기 중요코드의 상기 시그니처를 난독화할 수 있다. 상기 중요코드의 상기 시그니처가 난독화되면, 상기 중요코드의 상기 시그니처의 명시성이 떨어져 상기 중요코드에 대한 분석 저항성이 증가될 수 있다.
상기 코드 시그니처 생성기 생성부(600)에 의해 생성된 상기 코드 시그니처 생성기(50)는 상기 네이티브 코드 영역(C2)에 배치될 수 있다.
상기 벡터 테이블 분리기 생성부(500)는 벡터 테이블 분리기(40)를 생성한다. 상기 벡터 테이블 분리기(40)는 상기 벡터 테이블 생성기(30)에 의해 생성된 상기 다이나믹 벡터 테이블을 제1 테이블 및 제2 테이블로 분리한다.
상기 제1 테이블은 상기 중요코드의 상기 시그니처 및 제1 랜덤 벡터를 포함한다. 상기 제2 테이블은 상기 중요코드의 상기 시그니처에 대응하는 상기 중요코드의 옵셋 및 상기 제1 랜덤 벡터와 링크되는 제2 랜덤 벡터를 포함한다. 예를 들어, 상기 제1 테이블은 상기 코드 시그니처 생성기에 의해 난독화된 상기 중요코드의 상기 시그니처를 포함할 수 있다.
예를 들어, 상기 제1 테이블은 상기 중요코드의 상기 시그니처를 포함하는 제1 열 및 상기 제1 랜덤 벡터를 포함하는 제2 열을 포함할 수 있다.
예를 들어, 상기 제2 테이블은 상기 제2 랜덤 벡터를 포함하는 제2 열 및 상기 중요코드의 상기 옵셋을 포함하는 제2 열을 포함할 수 있다.
본 실시예에서는 상기 벡터 테이블 생성기 및 상기 벡터 테이블 분리기가 별도로 동작하는 것으로 기재하였으나, 이와는 달리, 상기 벡터 테이블 생성기 및 상기 벡터 테이블 분리기는 일체적으로 형성되어, 상기 제1 테이블 및 제2 테이블을 분리된 채로 형성할 수 있다.
또한, 본 실시예에서는 상기 코드 시그니처 생성기가 상기 벡터 테이블 생성기와 별도로 동작하는 것으로 기재하였으나, 이와는 달리, 상기 코드 시그니처 생성기는 상기 벡터 테이블 생성기와 일체적으로 형성되어, 상기 다이나믹 벡터 테이블을 형성할 때, 상기 난독화된 시그니처를 생성할 수 있다.
또한, 본 실시예에서는 상기 코드 시그니처 생성기가 상기 벡터 테이블 분리기와 별도로 동작하는 것으로 기재하였으나, 이와는 달리, 상기 코드 시그니처 생성기는 상기 벡터 테이블 분리기와 일체적으로 형성되어, 상기 제1 테이블 및 상기 제2 테이블을 형성할 때, 상기 난독화된 시그니처를 상기 제1 테이블 내에 생성할 수 있다.
상기 더미코드 생성부(700)는 더미코드를 상기 네이티브 코드 영역(C2)에 생성할 수 있다. 상기 더미코드(80)는 코드 흐름을 복잡하게 난독화하기 위한 코드이다. 상기 더미코드(80)는 상기 중요코드와 혼재되어 상기 중요코드(70)에 대한 분석 저항성을 증가시킨다.
상기 제1 테이블은 상기 더미코드(80)에 대한 시그니처를 더 포함할 수 있다. 상기 코드 시그니처 생성기(50)는 상기 더미코드(80)의 시그니처를 난독화하여 생성할 수 있다.
상기 제2 테이블은 상기 더미코드(80)의 시그니처에 대응하는 상기 더미코드(80)의 옵셋을 포함할 수 있다. 상기 애플리케이션의 실행 중에는 상기 더미코드(80)는 실제로 호출되지 않으나, 상기 더미코드(80)의 시그니처 및 상기 더미코드(80)의 옵셋으로 인해 상기 제1 테이블 및 상기 제2 테이블의 복잡도를 증가시켜 상기 제1 테이블 및 상기 제2 테이블에 대한 분석 저항성을 증가시킨다.
상기 랜덤 벡터 생성기 생성부(800)는 랜덤 벡터 생성기(60)를 생성한다. 상기 랜덤 벡터 생성기는 상기 제1 테이블에 배치되는 상기 제1 랜덤 벡터 및 상기 제2 테이블에 배치되는 상기 제2 랜덤 벡터를 생성한다.
상기 제1 랜덤 벡터 및 상기 제2 랜덤 벡터는 상기 애플리케이션의 실행 시에 랜덤하게 형성된다. 상기 제1 랜덤 벡터 및 상기 제2 랜덤 벡터는 상기 애플리케이션의 실행 시마다 서로 다르게 생성될 수 있다. 예를 들어, 첫 번째 상기 애플리케이션이 실행될 때의 상기 제1 랜덤 벡터는 두 번째 상기 애플리케이션이 실행될 때의 상기 제1 랜덤 벡터와 서로 다를 수 있다.
상기 랜덤 벡터 생성기(60)는 상기 중요코드(70)에 대한 제1 및 제2 랜덤 벡터 및 상기 더미코드(80)에 대한 제1 및 제2 랜덤 벡터를 모두 생성할 수 있다. 예를 들어, 상기 랜덤 벡터 생성기(60)는 상기 중요코드(70)에 대한 제1 및 제2 랜덤 벡터 및 상기 더미코드(80)에 대한 제1 및 제2 랜덤 벡터를 구분 없이 생성할 수 있다.
상기 랜덤 벡터 생성기 생성부(800)에 의해 생성되는 상기 랜덤 벡터 생성기(60)는 상기 네이티브 코드 영역(C2)에 배치될 수 있다.
도 2를 참조하여, 상기 애플리케이션 코드 난독화 장치(1000)의 난독화 방법을 흐름에 따라 순차적으로 설명한다.
상기 중요코드 분리기(100)는 상기 애플리케이션 코드를 입력 받는다. 상기 중요코드 분리기(100)는 상기 애플리케이션 코드를 상기 중요코드(70)와 상기 일반코드(10)로 분리한다. 상기 일반코드(10)는 상기 제1 코드 영역(C1)에 배치된다.
상기 중요코드 호출기 생성부(200)는 상기 중요코드 호출기(20)를 생성한다. 상기 중요코드 호출기(20)는 상기 제1 코드 영역(C1)에 배치된다. 상기 중요코드 호출기(20)는 애플리케이션의 실행 시에 상기 제2 코드 영역(C2)에 있는 상기 중요코드(70)를 상기 제1 및 제2 테이블을 이용하여 호출할 수 있다.
상기 중요코드 분리기(100)에 의해 분리된 상기 중요코드(70)는 상기 코드 변환기(300)에 의해 상기 제1 코드 형식에서 상기 제2 코드 형식으로 변환되어 상기 제2 코드 영역(C2)에 배치된다.
상기 벡터 테이블 생성기 생성부(400)는 상기 벡터 테이블 생성기(30)를 생성한다. 상기 벡터 테이블 생성기(30)는 중요코드(70)의 시그니처와 옵셋을 포함하는 다이나믹 벡터 테이블을 생성한다.
상기 벡터 테이블 분리기 생성부(500)는 상기 벡터 테이블 분리기(40)를 생성한다. 상기 벡터 테이블 분리기(40)는 상기 다이나믹 벡터 테이블을 제1 테이블 및 제2 테이블로 분리한다. 상기 제1 테이블은 상기 중요코드(70)의 시그니처 및 상기 제1 랜덤 벡터를 포함할 수 있고, 상기 제2 테이블은 상기 중요코드(70)의 옵셋 및 상기 제2 랜덤 벡터를 포함할 수 있다.
상기 코드 시그니처 생성기 생성부(600)는 상기 코드 시그니처 생성기(50)를 생성한다. 상기 코드 시그니처 생성기(50)는 상기 중요코드(70)의 상기 시그니처를 난독화한다. 상기 중요코드(70)의 상기 시그니처가 난독화되면 상기 시그니처만으로는 상기 중요코드를 유추할 수 없도록 할 수 있다.
상기 더미코드 생성부(700)는 상기 중요코드(70)와 혼재하여 분석을 어렵게 만드는 상기 더미코드(80)를 생성한다. 상기 생성된 더미코드(80)는 상기 중요코드(70)와 함께 상기 제1 테이블 및 상기 제2 테이블 내에 포함될 수 있다.
상기 랜덤 벡터 생성기 생성부(800)는 상기 랜덤 벡터 생성기(60)를 생성한다. 상기 랜덤 벡터 생성기(60)는 상기 제1 테이블 및 상기 제2 테이블을 연결하는 참조 인덱스를 나타내는 상기 제1 랜덤 벡터 및 상기 제2 랜덤 벡터를 생성한다. 상기 랜덤 벡터 생성기(60)의 실행 시마다 상기 제1 랜덤 벡터 및 상기 제2 랜덤 벡터는 다르게 생성될 수 있다.
상기 제1 랜덤 벡터 및 상기 제2 랜덤 벡터에 의해 상기 중요코드(70)의 상기 시그니처 및 상기 중요코드(70)의 상기 옵셋 간의 연결이 약해진다. 따라서, 상기 중요코드(70)의 분석 저항성이 증가할 수 있다.
본 실시예에서, 상기 제1 코드 영역(C1)에는 상기 일반코드(10) 및 상기 중요코드 호출기(20)가 배치될 수 있다. 상기 제2 코드 영역(C2)에는 상기 벡터 테이블 생성기(30), 상기 벡터 테이블 분리기(40), 상기 코드 시그니처 생성기(50), 상기 랜덤 벡터 생성기(60), 상기 중요코드(70) 및 상기 더미코드(80)가 배치될 수 있다.
도 3은 도 2의 벡터 테이블 생성기(30), 벡터 테이블 분리기(40), 코드 시그니처 생성기(50) 및 랜덤 벡터 생성기(60)의 동작을 나타내기 위한 개념도이다.
도 3을 참조하여, 클라이언트 단말기가 상기 애플리케이션을 실행하는 과정 및 난독화된 애플리케이션의 구성을 설명할 수 있다. 상기 단말기에서 상기 애플리케이션이 실행되는 과정의 일 실시예를 순차적으로 설명하면 아래와 같다.
상기 매니지드 코드 영역(C1)에서 중요코드 호출기(20)가 상기 중요코드 시그니처(90)를 이용하여 상기 네이티브 코드 영역(C2)의 상기 중요코드(70)를 호출한다.
상기 네이티브 코드 영역(C2)에서 상기 중요코드(70)의 호출 요청에 따라, 상기 벡터 테이블 생성기(30)가 호출되고, 상기 벡터 테이블 분리기(40)에 의해 상기 코드 시그니처 생성기(50)와 상기 랜덤 벡터 생성기(60)가 호출된다.
상기 코드 시그니처 생성기(50)는 상기 중요코드(70)와 상기 더미코드(80)의 시그니처를 난독화하여 생성하고, 상기 생성된 시그니처를 상기 제1 테이블(분리된 벡터 테이블)의 중요코드 벡터(SECRET CODE VECTORS)로 사용한다. 상기 중요코드 호출기(20)에서 넘어 온 상기 중요코드 시그니처(90)를 벡터로 하여 상기 랜덤 벡터를 확인한다.
상기 랜덤 벡터 생성기(60)는 실행 시마다 임의의 인덱스를 생성하여 상기 제1 테이블(분리된 벡터 테이블) 및 상기 제2 테이블(분리된 옵셋 테이블)에 할당한다.
상기 제2 테이블(분리된 옵셋 테이블)은 상기 중요코드와 상기 더미코드의 옵셋 정보와 상기 제2 랜덤 벡터를 포함한다. 상기 제1 테이블(분리된 벡터 테이블)에서 참조하는 상기 제1 랜덤 벡터에 해당하는 상기 중요코드의 옵셋을 참조한다.
상기 제2 랜덤 벡터를 이용하여 선택된 옵셋이 상기 중요코드 호출기(20)가 호출한 중요코드의 옵셋이 되고, 상기 중요코드의 옵셋을 이용하여 상기 중요코드를 실행한다.
상기 호출 과정을 요약하면 이하와 같다. 상기 중요코드 호출기(20)가 제1 시그니처(90)를 이용하여 상기 제1 시그니처(90)에 대응하는 중요코드를 호출하면, 상기 제1 시그니처(90)에 대응하는 상기 중요코드의 상기 난독화된 시그니처를 상기 제1 테이블에서 선택하고, 상기 선택된 시그니처와 쌍을 이루는 상기 제1 랜덤 벡터를 선택하며, 상기 선택된 제1 랜덤 벡터에 대응하는 상기 제2 랜덤 벡터를 상기 제2 테이블에서 선택하고, 상기 선택된 제2 랜덤 벡터와 쌍을 이루는 상기 중요코드의 상기 옵셋을 선택하며, 상기 선택된 중요코드의 상기 옵셋을 이용하여 상기 중요코드가 호출된다.
도 4a는 도 2의 벡터 테이블 생성기, 벡터 테이블 분리기, 코드 시그니처 생성기 및 랜덤 벡터 생성기에 의해 생성된 분리된 벡터 테이블 및 분리된 옵셋 테이블의 일 예를 나타내는 개념도이다.
도 1 내지 도 4a를 참조하면, 본 발명의 난독화부는 중요코드의 시그니처(중요코드1 VECTOR, 중요코드2 VECTOR, 중요코드3 VECTOR)와 상기 시그니처에 대응하는 주소 옵셋(중요코드1 OFFSET, 중요코드2 OFFSET, 중요코드3 OFFSET)으로 구성된 다이나믹 벡터 테이블(DVT)을 상기 중요코드의 상기 시그니처(중요코드1 VECTOR, 중요코드2 VECTOR, 중요코드3 VECTOR) 및 제1 랜덤 벡터(RANDOM VECTOR2, RANDOM VECTOR1, RANDOM VECTOR3)로 이루어진 벡터 테이블(T1) 및 제2 랜덤 벡터(RANDOM VECTOR1, RANDOM VECTOR2, RANDOM VECTOR3) 및 상기 중요코드의 상기 옵셋(중요코드2 OFFSET, 중요코드1 OFFSET, 중요코드3 OFFSET)으로 이루어진 옵셋 테이블(T2)로 분리한다.
상기 벡터 테이블(T1) 및 상기 옵셋 테이블(T2)의 분리 시에 상기 더미코드의 시그니처(더미코드N VECTOR) 및 이에 대응하는 더미코드의 옵셋(더미코드N OFFSET)이 각 분리된 테이블들(T1, T2)에 추가될 수 있다.
중요코드 호출 시에 난독화된 시그니처 정보를 벡터로 사용하고 해당 벡터에 대한 랜덤 벡터를 확인할 수 있다.
확인된 랜덤 벡터를 옵셋 테이블에서 참조함으로써 중요코드 옵셋을 얻을 수 있고, 상기 중요코드 옵셋을 이용하여 상기 중요코드가 실행된다.
예를 들어, 상기 중요코드1이 호출된 경우, 상기 벡터 테이블(T1)에서는 중요코드1 VECTOR와 쌍을 이루는 RANDOM VECTOR 2가 선택되고(T1의 제1 행), 상기 선택된 RANDOM VECTOR 2의 위치(T2의 제2 행)를 상기 옵셋 테이블(T2)에서 찾은 뒤, 상기 RANDOM VECTOR 2와 쌍을 이루는 중요코드1 OFFSET을 얻는다. 상기 중요코드1 OFFSET을 이용하여 상기 중요코드1을 실행한다.
예를 들어, 상기 중요코드2가 호출된 경우, 상기 벡터 테이블(T1)에서는 중요코드2 VECTOR와 쌍을 이루는 RANDOM VECTOR 1이 선택되고(T1의 제2 행), 상기 선택된 RANDOM VECTOR 1의 위치(T2의 제1 행)를 상기 옵셋 테이블(T2)에서 찾은 뒤, 상기 RANDOM VECTOR 1과 쌍을 이루는 중요코드2 OFFSET을 얻는다. 상기 중요코드2 OFFSET을 이용하여 상기 중요코드2를 실행한다.
본 발명은 상기 벡터 테이블(T1) 및 상기 옵셋 테이블(T2) 내에서 행을 구성하는 방식에 의해 한정되지 않는다. 본 실시예에서, 상기 벡터 테이블(T1) 내에서의 상기 제1 랜덤 벡터의 행의 구성(RANDOM VECTOR2, RANDOM VECTOR1, RANDOM VECTOR3)은 상기 옵셋 테이블(T2) 내에서의 상기 제2 랜덤 벡터의 행의 구성(RANDOM VECTOR1, RANDOM VECTOR2, RANDOM VECTOR3)은 서로 상이한 것으로 예시하였으나, 이와는 달리, 상기 제1 랜덤 벡터의 행의 구성 및 상기 제2 랜덤 벡터의 행의 구성은 서로 동일할 수 있다.
도 4b는 도 2의 벡터 테이블 생성기, 벡터 테이블 분리기, 코드 시그니처 생성기 및 랜덤 벡터 생성기에 의해 생성된 분리된 벡터 테이블 및 분리된 옵셋 테이블의 다른 예를 나타내는 개념도이다.
도 1 내지 도 4b를 참조하면, 상기 랜덤 벡터 생성기(60)는 상기 제1 랜덤 벡터 및 상기 제2 랜덤 벡터를 실행 시마다 랜덤하게 생성할 수 있다.
도 4b에서는 도 4a와는 다른 제1 및 제2 랜덤 벡터가 생성된 경우를 예시한다.
예를 들어, 상기 중요코드1이 호출된 경우, 상기 벡터 테이블(T1)에서는 중요코드1 VECTOR와 쌍을 이루는 RANDOM VECTOR 3이 선택되고(T1의 제1 행), 상기 선택된 RANDOM VECTOR 3의 위치(T2의 제3 행)를 상기 옵셋 테이블(T2)에서 찾은 뒤, 상기 RANDOM VECTOR 3과 쌍을 이루는 중요코드1 OFFSET을 얻는다. 상기 중요코드1 OFFSET을 이용하여 상기 중요코드1을 실행한다.
예를 들어, 상기 중요코드2가 호출된 경우, 상기 벡터 테이블(T1)에서는 중요코드2 VECTOR와 쌍을 이루는 RANDOM VECTOR 2가 선택되고(T1의 제2 행), 상기 선택된 RANDOM VECTOR 2의 위치(T2의 제2 행)를 상기 옵셋 테이블(T2)에서 찾은 뒤, 상기 RANDOM VECTOR 2와 쌍을 이루는 중요코드2 OFFSET을 얻는다. 상기 중요코드2 OFFSET을 이용하여 상기 중요코드2를 실행한다.
본 실시예에 따르면, 중요코드 실행을 위한 다이나믹 벡터 테이블(DVT)을 벡터 테이블(T1) 및 옵셋 테이블(T2)로 분리하므로 핵심 코드의 호출 흐름을 파악하기 어려워져 정적 분석 저항성이 증가할 수 있다.
또한, 분리된 벡터 테이블(T1) 및 옵셋 테이블(T2)은 실행 시에 랜덤 벡터를 이용하여 링크된다. 따라서 동적 분석 시마다 다른 호출 흐름을 분석해야 하므로 동적 분석 저항성이 증가할 수 있다.
또한, 벡터 테이블(T1)의 중요코드 시그니처를 난독화하여 사용함으로써 분리된 벡터 테이블(T1)만으로는 중요코드에 대한 유추가 어려워져 정적 분석 저항성이 증가할 수 있다.
또한, 벡터 테이블(T1)과 옵셋 테이블(T2)의 분리 시에 더미코드의 시그니처와 옵셋을 각각의 테이블(T1, T2)에 추가하여 실행 흐름 난독화가 향상되며 동적 분석 저항성이 증가할 수 있다.
본 발명은 애플리케이션의 난독화를 수행하는 임의의 전자 장치에 적용될 수 있다. 상기 전자 장치는 휴대 전화, 스마트 폰, 노트북 컴퓨터, 태블릿 컴퓨터, 디지털 방송 단말, PDA, PMP, 네비게이션 장치 디지털 카메라, 캠코더, 디지털 TV, 셋-탑 박스, 음악 재생기, 휴대용 게임 콘솔, 스마트 카드, 프린터 등을 포함할 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.
<부호의 설명>
10: 일반코드 20: 중요코드 호출기
30: 벡터 테이블 생성기 40: 벡터 테이블 분리기
50: 코드 시그니처 생성기 60: 랜덤 벡터 생성기
70: 중요코드 80: 더미코드
90: 중요코드 시그니처 100: 중요코드 분리기
200: 중요코드 호출기 생성기 300: 코드 변환기
400: 벡터 테이블 생성기 생성부 500: 벡터 테이블 분리기 생성부
600: 코드 시그니처 생성기 생성부 700: 더미코드 생성부
800: 랜덤 벡터 생성기 생성부
1000: 애플리케이션 코드 난독화 장치

Claims (16)

  1. 제1 형식의 애플리케이션 코드를 중요코드 및 상기 중요코드 이외의 일반코드로 분리하는 중요코드 분리기;
    상기 중요코드를 호출하기 위한 중요코드 호출기를 생성하는 중요코드 호출기 생성부;
    상기 제1 형식의 상기 중요코드를 제2 형식으로 변환하는 코드 변환기; 및
    상기 중요코드의 난독화된 시그니처 및 제1 랜덤 벡터를 포함하는 제1 테이블 및 상기 중요코드의 상기 난독화된 시그니처에 대응하는 상기 중요코드의 옵셋 및 상기 제1 랜덤 벡터와 링크되는 제2 랜덤 벡터를 포함하는 제2 테이블을 생성하는 난독화부를 포함하는 애플리케이션 코드 난독화 장치.
  2. 제1항에 있어서, 상기 제1 형식은 매니지드 코드이고,
    상기 제2 형식은 네이티브 코드인 것을 특징으로 하는 애플리케이션 코드 난독화 장치.
  3. 제1항에 있어서, 상기 난독화부는
    상기 중요코드의 상기 난독화된 시그니처를 생성하는 코드 시그니처 생성기를 생성하는 코드 시그니처 생성기 생성부;
    상기 중요코드의 상기 난독화된 시그니처를 상기 제1 테이블로 배치하고, 상기 중요코드의 옵셋을 제2 테이블로 배치하는 벡터 테이블 분리기를 생성하는 벡터 테이블 분리기 생성부; 및
    상기 제1 테이블에 배치되는 상기 제1 랜덤 벡터 및 상기 제2 테이블에 배치되는 상기 제2 랜덤 벡터를 생성하는 랜덤 벡터 생성기를 생성하는 랜덤 벡터 생성기 생성부를 포함하는 것을 특징으로 하는 애플리케이션 코드 난독화 장치.
  4. 제3항에 있어서, 상기 일반코드 및 상기 중요코드 호출기는 상기 제1 형식의 제1 코드 영역에 형성되고,
    상기 중요코드, 상기 코드 시그니처 생성기, 상기 벡터 테이블 분리기, 상기 랜덤 벡터 생성기는 상기 제2 형식의 제2 코드 영역에 형성되는 것을 특징으로 하는 애플리케이션 코드 난독화 장치.
  5. 제4항에 있어서, 상기 난독화부는
    상기 제2 코드 영역에 더미코드를 생성하는 더미코드 생성기를 더 포함하는 것을 특징으로 하는 애플리케이션 코드 난독화 장치.
  6. 제5항에 있어서, 상기 코드 시그니처 생성기는
    상기 제1 테이블에 상기 더미코드의 난독화된 시그니처를 더 생성하는 것을 특징으로 하는 애플리케이션 코드 난독화 장치.
  7. 제3항에 있어서, 상기 랜덤 벡터 생성기는
    상기 제1 랜덤 벡터 및 상기 제2 랜덤 벡터를 실행 시마다 랜덤하게 생성하는 것을 특징으로 하는 애플리케이션 코드 난독화 장치.
  8. 제3항에 있어서, 상기 중요코드 호출기가 제1 시그니처를 이용하여 상기 제1 시그니처에 대응하는 중요코드를 호출하면,
    상기 제1 시그니처에 대응하는 상기 중요코드의 상기 난독화된 시그니처를 상기 제1 테이블에서 선택하고, 상기 선택된 시그니처와 쌍을 이루는 상기 제1 랜덤 벡터를 선택하며,
    상기 선택된 제1 랜덤 벡터에 대응하는 상기 제2 랜덤 벡터를 상기 제2 테이블에서 선택하고, 상기 선택된 제2 랜덤 벡터와 쌍을 이루는 상기 중요코드의 상기 옵셋을 선택하며,
    상기 선택된 중요코드의 상기 옵셋을 이용하여 상기 중요코드가 호출되는 것을 특징으로 하는 애플리케이션 코드 난독화 장치.
  9. 제1 형식의 애플리케이션 코드를 중요코드 및 상기 중요코드 이외의 일반코드로 분리하는 단계;
    상기 중요코드를 호출하기 위한 중요코드 호출기를 생성하는 단계;
    상기 제1 형식의 상기 중요코드를 제2 형식으로 변환하는 단계; 및
    상기 중요코드의 난독화된 시그니처 및 제1 랜덤 벡터를 포함하는 제1 테이블 및 상기 중요코드의 상기 난독화된 시그니처에 대응하는 상기 중요코드의 옵셋 및 상기 제1 랜덤 벡터와 링크되는 제2 랜덤 벡터를 포함하는 제2 테이블을 생성하는 단계를 포함하는 애플리케이션 코드 난독화 방법.
  10. 제9항에 있어서, 상기 제1 형식은 매니지드 코드이고,
    상기 제2 형식은 네이티브 코드인 것을 특징으로 하는 애플리케이션 코드 난독화 방법.
  11. 제9항에 있어서, 상기 제1 테이블 및 상기 제2 테이블을 생성하는 단계는
    상기 중요코드의 상기 난독화된 시그니처를 생성하는 코드 시그니처 생성기를 생성하는 단계;
    상기 중요코드의 상기 난독화된 시그니처를 상기 제1 테이블로 배치하고, 상기 중요코드의 옵셋을 제2 테이블로 배치하는 벡터 테이블 분리기를 생성하는 단계; 및
    상기 제1 테이블에 배치되는 상기 제1 랜덤 벡터 및 상기 제2 테이블에 배치되는 상기 제2 랜덤 벡터를 생성하는 랜덤 벡터 생성기를 생성하는 단계를 포함하는 것을 특징으로 하는 애플리케이션 코드 난독화 방법.
  12. 제11항에 있어서, 상기 일반코드 및 상기 중요코드 호출기는 상기 제1 형식의 제1 코드 영역에 형성되고,
    상기 중요코드, 상기 코드 시그니처 생성기, 상기 벡터 테이블 분리기, 상기 랜덤 벡터 생성기는 상기 제2 형식의 제2 코드 영역에 형성되는 것을 특징으로 하는 애플리케이션 코드 난독화 방법.
  13. 제12항에 있어서, 상기 제2 코드 영역에 더미코드를 생성하는 단계를 더 포함하는 것을 특징으로 하는 애플리케이션 코드 난독화 방법.
  14. 제13항에 있어서, 상기 제1 테이블 및 상기 제2 테이블을 생성하는 단계는
    상기 제1 테이블에 상기 더미코드의 난독화된 시그니처를 생성하는 단계를 더 포함하는 것을 특징으로 하는 애플리케이션 코드 난독화 방법.
  15. 제11항에 있어서, 상기 랜덤 벡터 생성기는
    상기 제1 랜덤 벡터 및 상기 제2 랜덤 벡터를 실행 시마다 랜덤하게 생성하는 것을 특징으로 하는 애플리케이션 코드 난독화 방법.
  16. 제11항에 있어서, 상기 중요코드 호출기가 제1 시그니처를 이용하여 중요코드를 호출하면,
    상기 제1 시그니처에 대응하는 상기 중요코드의 상기 난독화된 시그니처를 상기 제1 테이블에서 선택하고, 상기 선택된 시그니처와 쌍을 이루는 상기 제1 랜덤 벡터를 선택하며,
    상기 선택된 제1 랜덤 벡터에 대응하는 상기 제2 랜덤 벡터를 상기 제2 테이블에서 선택하고, 상기 선택된 제2 랜덤 벡터와 쌍을 이루는 상기 중요코드의 상기 옵셋을 선택하며,
    상기 선택된 중요코드의 상기 옵셋을 이용하여 상기 중요코드가 호출되는 것을 특징으로 하는 애플리케이션 코드 난독화 방법.
PCT/KR2016/005026 2016-03-02 2016-05-12 애플리케이션 코드 난독화 장치 및 이를 이용한 애플리케이션 코드 난독화 방법 WO2017150769A1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020160024964A KR101619458B1 (ko) 2016-03-02 2016-03-02 애플리케이션 코드 난독화 장치 및 이를 이용한 애플리케이션 코드 난독화 방법
KR10-2016-0024964 2016-03-02

Publications (1)

Publication Number Publication Date
WO2017150769A1 true WO2017150769A1 (ko) 2017-09-08

Family

ID=56021235

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2016/005026 WO2017150769A1 (ko) 2016-03-02 2016-05-12 애플리케이션 코드 난독화 장치 및 이를 이용한 애플리케이션 코드 난독화 방법

Country Status (3)

Country Link
US (1) US20170257219A1 (ko)
KR (1) KR101619458B1 (ko)
WO (1) WO2017150769A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101704703B1 (ko) * 2016-06-08 2017-02-08 (주)케이사인 더미 코드를 사용하는 애플리케이션 코드 은닉 장치 및 이를 이용한 애플리케이션 코드 은닉 방법
US10419224B2 (en) * 2016-06-14 2019-09-17 International Business Machines Corporation Preventing monoculture in application distribution
KR101688814B1 (ko) * 2016-07-11 2016-12-22 (주)케이사인 주 기억 장치 내부의 코드 수정을 통한 애플리케이션 코드 은닉 장치 및 이를 이용한 애플리케이션 코드 은닉 방법
KR101753811B1 (ko) 2016-12-14 2017-07-19 올댓소프트 코. 동적 할당 메모리를 이용하는 애플리케이션 코드 자가 변환 장치 및 이를 이용한 애플리케이션 코드 자가 변환 방법
DE102017204020A1 (de) * 2017-03-10 2018-09-13 Siemens Aktiengesellschaft Verfahren zur rechnergestützten Obfuskation von Programmcode
KR101885260B1 (ko) * 2017-10-30 2018-08-03 주식회사 안랩 심볼 난독화 장치 및 방법
CN110866226B (zh) * 2019-11-15 2022-05-24 中博信息技术研究院有限公司 一种基于加密技术的java应用软件版权保护方法
KR20230102835A (ko) 2021-12-30 2023-07-07 주식회사 트루인테크 권리보호 기능을 적용하여 소스코드를 제공하는 시스템 및 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120006288A (ko) * 2010-07-12 2012-01-18 엔에이치엔(주) 자바스크립트의 소스 코드 보호를 위해 난독화를 하기 위한 방법, 시스템 및 컴퓨터 판독 가능한 기록 매체
KR101328012B1 (ko) * 2013-08-12 2013-11-13 숭실대학교산학협력단 애플리케이션 코드 난독화 장치 및 그 방법
KR101350390B1 (ko) * 2013-08-14 2014-01-16 숭실대학교산학협력단 코드 난독화 장치 및 그 방법
KR101490047B1 (ko) * 2013-09-27 2015-02-04 숭실대학교산학협력단 자가변환 기반 애플리케이션 코드 난독화 장치 및 그 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120006288A (ko) * 2010-07-12 2012-01-18 엔에이치엔(주) 자바스크립트의 소스 코드 보호를 위해 난독화를 하기 위한 방법, 시스템 및 컴퓨터 판독 가능한 기록 매체
KR101328012B1 (ko) * 2013-08-12 2013-11-13 숭실대학교산학협력단 애플리케이션 코드 난독화 장치 및 그 방법
KR101350390B1 (ko) * 2013-08-14 2014-01-16 숭실대학교산학협력단 코드 난독화 장치 및 그 방법
KR101490047B1 (ko) * 2013-09-27 2015-02-04 숭실대학교산학협력단 자가변환 기반 애플리케이션 코드 난독화 장치 및 그 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
J UNG, JIN HYUK: "Performance Evaluation of Code Obfuscation Schemes Based on Self-Modification in Android", MASTER'S THESIS OF GRADUATE SCHOOL OF SOONGSIL UNIVERSITY, December 2012 (2012-12-01), pages 1 - 73 *

Also Published As

Publication number Publication date
US20170257219A1 (en) 2017-09-07
KR101619458B1 (ko) 2016-05-10

Similar Documents

Publication Publication Date Title
WO2017150769A1 (ko) 애플리케이션 코드 난독화 장치 및 이를 이용한 애플리케이션 코드 난독화 방법
WO2015046655A1 (ko) 자가변환 기반 애플리케이션 코드 난독화 장치 및 그 방법
WO2014119936A1 (en) Method of and apparatus for processing software using hash function to secure software, and computer-readable medium storing executable instructions for performing the method
WO2014035043A1 (ko) 악성 애플리케이션 진단 장치 및 방법
WO2015053509A1 (ko) 동적 라이브러리를 보호하는 방법 및 장치
WO2013157864A1 (ko) 입력 패턴이 결합된 아이콘을 이용한 사용자 인증 방법 및 패스워드 입력 장치
WO2018012693A1 (ko) 주 기억 장치 내부의 코드 수정을 통한 애플리케이션 코드 은닉 장치 및 이를 이용한 애플리케이션 코드 은닉 방법
WO2018018797A1 (zh) 功能模块跨平台运行的实现方法和装置
EP2920728A1 (en) Method for increasing the security of software
WO2014003497A1 (ko) 특정 포맷을 가지는 대체 데이터의 생성 및 검증
WO2019088313A1 (ko) 딥러닝을 이용한 암호화 방법
WO2020224251A1 (zh) 区块链事务的处理方法、装置、设备及存储介质
WO2020235942A1 (ko) 분실된 개인 키를 복원하는 시스템
WO2017116062A1 (ko) 파일에 대한 공증 및 검증을 수행하는 방법 및 서버
WO2011136464A1 (ko) 비밀번호 키의 이동값을 이용하는 비밀번호 안전 입력 시스템 및 그 비밀번호 안전 입력 방법
WO2016200058A1 (ko) 바이너리 병합 장치, 방법 및 컴퓨터 프로그램
WO2018016830A1 (ko) 파일 암호화 방지 장치 및 방법
WO2014185627A1 (ko) 데이터 프로세싱 시스템 보안 장치와 보안방법
WO2015053441A1 (ko) 식별키 생성 장치 및 방법
WO2018143510A1 (ko) 사물 인터넷 보안 모듈
WO2020242062A1 (ko) 멀티캐스트 그룹 내의 구독자에게 키 데이터를 전송하는 디바이스
WO2023191216A1 (ko) 데이터 암호화 및 복호화 시스템, 방법
WO2023282442A1 (ko) 컨테이너 환경에서 프로파일 공유를 위한 설계 방법, 이를 수행하기 위한 기록 매체 및 장치
WO2015160190A1 (ko) 사용자 인증용 가상 키보드 생성 장치 및 방법
WO2018080009A1 (en) Electronic apparatus for recording debugging information and control method thereof

Legal Events

Date Code Title Description
NENP Non-entry into the national phase

Ref country code: DE

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 16892782

Country of ref document: EP

Kind code of ref document: A1

122 Ep: pct application non-entry in european phase

Ref document number: 16892782

Country of ref document: EP

Kind code of ref document: A1