WO2018012693A1 - 주 기억 장치 내부의 코드 수정을 통한 애플리케이션 코드 은닉 장치 및 이를 이용한 애플리케이션 코드 은닉 방법 - Google Patents

주 기억 장치 내부의 코드 수정을 통한 애플리케이션 코드 은닉 장치 및 이를 이용한 애플리케이션 코드 은닉 방법 Download PDF

Info

Publication number
WO2018012693A1
WO2018012693A1 PCT/KR2017/000059 KR2017000059W WO2018012693A1 WO 2018012693 A1 WO2018012693 A1 WO 2018012693A1 KR 2017000059 W KR2017000059 W KR 2017000059W WO 2018012693 A1 WO2018012693 A1 WO 2018012693A1
Authority
WO
WIPO (PCT)
Prior art keywords
code
important
dummy
memory
codes
Prior art date
Application number
PCT/KR2017/000059
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 WO2018012693A1 publication Critical patent/WO2018012693A1/ko

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
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/74Reverse engineering; Extracting design information from source code
    • 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/3226Cryptographic 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 using a predetermined code, e.g. password, passphrase or PIN
    • 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/3236Cryptographic 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 using cryptographic hash functions
    • H04L9/3242Cryptographic 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 using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/007Encryption, En-/decode, En-/decipher, En-/decypher, Scramble, (De-)compress
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/031Protect user input by software means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/441Register allocation; Assignment of physical memory space to logical memory space

Definitions

  • the present invention relates to an application code concealment apparatus through code modification in the main memory device and an application code concealment method using the same, and more particularly, to an application code concealment apparatus through code modification in the main memory device having improved reverse engineering resistance; The application code hiding method using the same.
  • Application code obfuscation is one of the technologies used to protect software. It makes the program difficult to analyze and prevents attackers from identifying or forging key algorithms of the program.
  • Packing technology is a technology that protects the code of a program, similar to application code obfuscation, and the original content of the packed code is virtually impossible to be analyzed statically.
  • the present invention is to solve the problems of the conventional application code concealment apparatus and its method, the object of the present invention is to separate the application code into a general code and important code, packing only the important code size of the packing unit It is to provide an application code concealment device that reduces the number, and loads the dummy code corresponding to the important code in the memory first, and corrects the dummy code to the important code and then executes the important code.
  • Another object of the present invention is to provide an application code concealment method using the application code concealment apparatus.
  • Application code concealment apparatus is important code separation unit, important code pager generation unit, code analysis unit, dummy code generation unit, code encryption unit, code placement unit, code decryption Pre-generating unit, arranged code importer generating unit, code loader generating unit, in-memory code corrector generating unit, and decoded code pager generating unit.
  • the important code separating unit separates the application code into a sensitive code and a general code other than the sensitive code.
  • the important code pager generator generates an important code pager for calling the important code.
  • the code analysis unit analyzes the important code.
  • the dummy code generation unit generates a dummy code corresponding to the important code.
  • the code encryptor encrypts the sensitive code.
  • the code arranging unit arranges the dummy code and the encrypted important code and generates position information of the dummy code and the encrypted important code.
  • the code decoder generation unit generates a code decoder for decrypting the encrypted important code.
  • the arranged code importer generation unit generates a deployed code importer for transferring the dummy code and the encrypted important code by using the location information of the dummy code and the encrypted important code.
  • the code loader generation unit generates a code loader that loads the dummy code into a memory.
  • the memory internal code modifier generating unit generates a memory internal code modifier that replaces the dummy code loaded in the memory with the decoded important code.
  • the decoded code pager generator generates a decoded code pager for calling the decoded important code replaced in the memory.
  • the code analysis unit may separate the important code into a plurality of sub-significant codes.
  • the dummy code generation unit may generate a plurality of separate sub-dummy codes corresponding to the separated sub-critical code.
  • the code analysis unit may separate the important code into a plurality of sub-significant codes of class units.
  • the dummy code may have the same signature as the important code, and may have a different operation code than the important code.
  • the length of the dummy code may be greater than or equal to the length of the important code.
  • the code decoder generated by the code decoder generator, the arranged code importer generated by the arranged code importer generator, and the code loader generated by the code loader generator may be disposed in a native code region.
  • the general code and the important code pager may be disposed in the byte code area.
  • the encrypted critical code and the dummy code is selected from among the native code area, the byte code area, resources area of the application data area and assets area of the application data area. Can be placed in one.
  • the encrypted critical code and the dummy code are the assets of the native code area, the byte code area, the resources area of the application data area and the application data area. ) May be arranged in different areas.
  • the important code pager calls the important code during execution of the general code, and if the important code is called, the placed code importer reads the dummy code corresponding to the important code.
  • a code loader to load the dummy code into the memory, and the code decoder to decrypt the encrypted code to the internal memory coder.
  • the internal memory code modifier may replace the dummy code in the memory with the decoded significant code.
  • the decoded code pager causes the important code replaced in the memory to be executed and stores the execution result of the important code, and after the important code is executed, the deployed code importer Transfer the dummy code to the memory internal code modifier, the memory internal code modifier replaces the important code with the dummy code, and replaces the execution result of the important code stored by the decoded code pager with the general code I can deliver it.
  • Application code concealment method is the step of separating the application code into the important code and the general code other than the important code, an important code pager for calling the important code Generating, analyzing the important code, generating a dummy code corresponding to the important code, encrypting the important code, placing the dummy code and the encrypted sensitive code, Generating location information of the encrypted important code, generating a code decoder for decrypting the encrypted important code, using the dummy code and the location information of the encrypted important code, the dummy code and the Generating a batch code importer that carries an encrypted sensitive code, wherein Generating a code loader for loading a dummy code into a memory, generating a memory internal code modifier for replacing the dummy code loaded in the memory with the decoded important code and the decoded critical code replaced with the memory Generating a decrypted code pager for calling.
  • analyzing the important code may be separated into a plurality of sub-significant codes.
  • generating the dummy code may generate a plurality of separate sub dummy codes corresponding to the separated sub important codes.
  • the length of the dummy code may be greater than or equal to the length of the important code.
  • the application code concealment method the decoded code pager to execute the important code replaced in the memory and to store the execution result of the important code, the important code is executed
  • the code importer is configured to transfer the dummy code to the internal code corrector, wherein the internal code corrector replaces the important code with the dummy code and the important code stored by the decrypted code pager.
  • the method may further include transmitting the execution result of the general code.
  • the application code hiding apparatus and the application code hiding method using the same divide the application code into general code and important code, thereby reducing the packing unit of the application code, making it difficult to determine whether the application code is packed or not. Can be.
  • the dynamic analysis resistance of the application code can be greatly improved.
  • FIG. 1 is a block diagram showing an application code concealment apparatus according to an embodiment of the present invention.
  • FIG. 2 and 3 are conceptual diagrams illustrating the operation of the application code hiding apparatus of FIG.
  • FIG. 4 is a conceptual diagram illustrating an example of an operation of a code arranging unit of FIG. 2.
  • FIG. 5 is a conceptual diagram illustrating another example of the operation of the code placement unit of FIG. 2.
  • FIG. 6 is a conceptual diagram illustrating a process of loading a dummy code performed by the application code concealment apparatus of FIG. 1 and a process of replacing the dummy code with an important code.
  • FIG. 7 is a conceptual diagram illustrating a process of executing an important code performed by the application code hiding apparatus of FIG. 1 and a process of replacing the important code with the dummy code.
  • 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 showing an application code concealment apparatus according to an embodiment of the present invention.
  • 2 and 3 are conceptual diagrams illustrating the operation of the application code hiding apparatus of FIG.
  • the application code concealment apparatus includes a code preprocessor 100, a code protection application unit 200, and a protection module generation unit 300.
  • the code preprocessor 100 includes an important code separating unit 110, an important code pager generating unit 120, and a code analyzing unit 130.
  • the code protection application unit 200 includes a dummy code generation unit 210, a code encryption unit 220, and a code placement unit 230.
  • the protection module generator 300 may include the decoded code pager generator 310, the code decoder generator 320, the arranged code importer generator 330, the code loader generator 340, and the number of internal codes of a memory. It includes a periodic generator 350.
  • the important code separating unit 110 separates the application code into a general code other than the important code and the important code.
  • the important code separating unit 110 receives an application code.
  • the important code separator 110 receives an application code of a first format.
  • the first format may be a byte code.
  • the application code may be Java code (JAVA).
  • the application code may be Dalvik Executable (.dex).
  • the important code separating unit 110 separates the application code into a significant code 80 and a general code 10 other than the important code 80.
  • the critical code 80 may mean a code that needs to be protected from a forgery attack of an application.
  • the general code 10 is arranged in the byte code area A1.
  • the important code pager generator 120 generates an important code pager 20 for calling the important code 80.
  • the important code pager 20 may call the important code 80 using the signature of the important code 80.
  • the signature of the important code 80 may be parameter information of a function.
  • the signature of the important code 80 may be generated based on the (integer, integer). Can be.
  • the signature of the important code 80 may represent (text, text, integer). Can be generated on the basis of Alternatively, the signature of the important code 80 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 120 is disposed in the byte code area A1.
  • the important code pager 20 calls the important code 80 loaded in the memory using the signature of the important code 80.
  • the code analyzer 130 analyzes the important code 80.
  • the code analysis unit 130 may determine the protection scheme of the important code 80 by analyzing the important code 80.
  • the code analysis unit 130 outputs the information on the protection scheme of the important code 80 to the decrypted code pager generator 310, the code encryption unit 220, and the dummy code generation unit 210. can do.
  • the dummy code generation unit 210 generates a dummy code 90 corresponding to the important code 80.
  • the dummy code 90 may be code that does not cause an error in execution of the application when replacing the important code 80.
  • the dummy code 90 may be a code that may confuse the analysis of the application when replacing the important code 80.
  • the dummy code 90 may have the same signature as the important code 80 and have a different operation code than the important code 80. If the dummy code 90 has the same signature as the important code 80, and has a different operation code than the important code 80, an attacker may have an application change the signature of the important code 80 and the dummy code ( Since the signature of 90) is the same, it is considered that the important code 80 is being analyzed, but in practice, the code of different contents may be analyzed, which may interrupt and delay the analysis of the attacker.
  • the dummy cord 90 may have a different signature from the important code 80.
  • the dummy code 90 first occupies a space in the memory, and the dummy code 90 may be replaced with the important code 80. Therefore, the length of the dummy cord 90 may be greater than or equal to the length of the important code (80).
  • the code analysis unit 130 may separate the important code 80 into a plurality of sub important codes.
  • the code analysis unit 130 may separate the important code 80 into a plurality of sub-critical codes in class units.
  • the code analysis unit 130 may separate the important code 80 into a plurality of sub important codes of a function unit.
  • the dummy code generation unit 210 may generate a plurality of separate sub dummy codes corresponding to the separated sub important codes.
  • the number of the sub important codes may be the same as the number of the sub dummy codes.
  • the code analyzing unit 130 separates the important code 80 into a class unit or a function unit, the unit of the packing becomes smaller, so that the size of the code loaded into the memory becomes smaller, and the important code 80 becomes The important code 80 of the application can be executed while repeating loading and unloading in small units, making dynamic reversing very difficult.
  • the code encryption unit 220 receives information on the protection scheme of the important code 80 from the code analysis unit 130.
  • the code encryption unit 220 encrypts the important code (80).
  • the encryption of the sensitive code 80 increases the static analysis resistance of the application code.
  • the code placement unit 230 receives the dummy code 90 from the dummy code generation unit 210 and receives the encrypted important code 85 from the code encryption unit 220.
  • the code placement unit 230 places the dummy code 90 and the encrypted important code 85.
  • the code placement unit 230 generates location information of the dummy code 90 and the encrypted important code 85.
  • the code placement unit 230 outputs the position information of the dummy code 90 and the encrypted important code 85 to the arranged code importer generation unit 330.
  • the code placement unit 230 may transmit the first position of the encrypted important code 85 and the second position of the dummy code 90 to the arranged code importer generation unit 330. .
  • the arranged code importer generation unit 330 transfers the dummy code 90 and the encrypted important code 85 by using the location information of the dummy code 90 and the encrypted important code 85.
  • the code importer 30 is generated.
  • the arranged code importer 30 has been described as transferring the dummy code 90 and the important code 85, but the present invention is not limited thereto, and the arranged code importer 30 is provided. May transmit only the position information of the dummy code 90 and the important code 85.
  • the code decoder generator 320 receives the encryption information of the critical code 80 of the code encryption unit 220.
  • the code decoder generator 320 generates a code decoder 40 for decrypting the encrypted important code 85.
  • the code decoder 40 may receive the encrypted important code 85 from the arranged code importer 30 and decrypt the encrypted important code 85.
  • the code loader generation unit 340 generates a code loader 60 for loading the dummy code 90 received from the arranged code importer 330 into a memory.
  • the memory internal code modifier generation unit 350 generates a memory internal code modifier 70 that replaces the dummy code 90 loaded in the memory with the decoded important code 80.
  • the memory internal code modifier 70 receives the dummy code 90 from the arranged code importer 30 after the execution of the important code 80, and receives the executed important code 80.
  • the dummy cord 90 may be replaced.
  • the decoded code pager generator 310 generates a decoded code pager 50 for calling the decoded important code 80 loaded in the memory.
  • the general code 10 and the important code pager 20 may be disposed in the byte code area A1.
  • the placed code importer 30 generated by the arranged code importer generator 330, the code decoder 40 generated by the code decoder generator 320, and the code
  • the code loader 60 generated by the loader generator 340, the decoded code pager 50 and the in-memory code modifier generator 350 generated by the decoded code pager generator 310.
  • the in-memory code modifier 70 generated by) may be disposed in the native code region A2.
  • the important code separating unit 110 separates the application code into the general code 10 and the important code 80.
  • the important code pager generating unit 120 generates a module for calling the separated important code 80.
  • the separated important code 80 may be input to the code analysis unit 130 and may be transformed into a form to which code protection is applied.
  • the important code 80 is transmitted to the code protection application unit 200 and the protection module generation unit 300, respectively.
  • the code protection application unit 200 encrypts the code, generates a dummy code 90 suitable for the important code 80, and then encrypts the sensitive code at various locations through the code placement unit 230 ( 85 and the dummy cord 90 are disposed.
  • the protection module generation unit 300 protects to apply the protection technology during execution of the important code 80 through the information of the protected code generated by the important code 80 and the code protection application unit 200 Create a module.
  • the code arranging unit 230 may arrange the encrypted important code 85 and the dummy code 90 at various positions.
  • the encrypted important code 85 and the dummy code 90 may be disposed in the first data area of the byte code area A1.
  • the encrypted important code 85 and the dummy code 90 may be disposed in an asset folder of the application data area.
  • the encrypted important code 85 and the dummy code 90 may be placed in a resource folder of the application data area.
  • the encrypted important code 85 and the dummy code 90 may be disposed in a second data area of the native code area A2.
  • the encrypted important code 85 and the dummy code 90 may be disposed in the same area.
  • the encrypted important code 85 and the dummy code 90 may be disposed in different areas.
  • FIG. 4 is a conceptual diagram illustrating an example of an operation of the code arranging unit 230 of FIG. 2.
  • the encrypted critical code 85 and the dummy code 90 are illustrated in different areas.
  • the code arranging unit 230 has arranged the encrypted critical code 85 in the native code area A2, and the dummy code 90 corresponding to the encrypted critical code 85 is stored in the application data. Placed in the asset folder A3.
  • FIG. 5 is a conceptual diagram illustrating another example of the operation of the code placement unit 230 of FIG. 2.
  • the encrypted critical codes 85A and 85B and the dummy codes 90A and 90B are disposed in the same area or in different areas.
  • the code arranging unit 230 arranged an encrypted first important code 85A and a first dummy code 90A corresponding to the encrypted first important code 85A in the same area.
  • the code arranging unit 230 arranged the encrypted first important code 85A and the first dummy code 90A in the native code area A2.
  • the code arranging unit 230 arranged an encrypted second important code 85B and a second dummy code 90B corresponding to the encrypted second important code 85B in different areas.
  • the code arranging unit 230 disposed the encrypted second important code 85B in an external server, and disposed the second dummy code 90B in a resource folder A4 of the application data.
  • the code placement unit 230 is the encrypted critical code 85 and the dummy corresponding to various areas of the mobile device in the application code concealment method or the external device that can communicate with the mobile device
  • the cord 90 may be concealed.
  • FIG. 6 is a conceptual diagram illustrating a process of loading a dummy code 90 performed by the application code concealment apparatus of FIG. 1 and a process of replacing the dummy code 90 with an important code 80.
  • the important code pager 20 calls the important code 80 during execution of the general code 10 (step S1).
  • the arranged code importer 30 transmits the second position of the dummy code 90 corresponding to the important code 80 to the code loader 60 (step S2). ).
  • the code loader 60 loads the dummy code 90 into the memory (step S3).
  • the code loader 60 may load the dummy code 90 in the temporary area TA and move the dummy code 90 in the temporary area to the process memory. .
  • the arranged code importer 30 transmits the first position of the important code 80 to the code decoder 40 (step S4).
  • the code decrypter 40 decrypts the encrypted important code 85 and delivers it to the memory internal code corrector 70 (step S5).
  • the memory internal code modifier 70 replaces the dummy code 90 loaded in the memory with the decoded important code 80 (step S6).
  • FIG. 7 is a conceptual diagram illustrating an execution process of an important code 80 performed by the application code hiding apparatus of FIG. 1 and a process of replacing the important code 80 with the dummy code 90.
  • the decrypted code pager 50 causes the important code 80 replaced in the memory to be executed and stores the execution result of the important code 80 (step S7).
  • the placed code importer 30 transfers the dummy code 90 to the memory internal code modifier 70 (step S8).
  • the memory internal code modifier 70 replaces the important code 80 with the dummy code 90 (step S9).
  • the decrypted code pager 50 transmits the execution result of the important code 80 stored in the general code 10 (step S10).
  • packing and unpacking are performed in units of important codes or sub-critical codes, making it difficult to determine whether the application code is packed or not.
  • the memory dump Makes it difficult to obtain the original code.
  • the dynamic analysis resistance of the application code can be greatly improved.
  • the important code or the sub-signal code is replaced with the corresponding dummy code or the sub-dummy code, which makes it difficult to obtain an original code by a memory dump.
  • the dynamic analysis resistance of the application code can be greatly improved.
  • the present invention can be applied to any electronic device that performs concealment of application code.
  • 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 preprocessor 110 important code separation unit
  • code protection application unit 210 dummy code generation unit
  • code encryption unit 230 code placement unit

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Storage Device Security (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

애플리케이션 코드 은닉 장치는 애플리케이션 코드를 중요코드 및 중요코드 이외의 일반코드로 분리하는 중요코드 분리부, 중요코드를 호출하기 위한 중요코드 호출기를 생성하는 중요코드 호출기 생성부, 중요코드를 분석하는 코드 분석부, 중요코드에 대응하는 더미코드를 생성하는 더미코드 생성부, 중요코드를 암호화하는 코드 암호화부, 더미코드 및 암호화된 중요코드를 배치시키고, 더미코드 및 암호화된 중요코드의 위치 정보를 생성하는 코드 배치부, 암호화된 중요코드를 복호화하기 위한 코드 복호화기를 생성하는 코드 복호화기 생성부, 더미코드 및 암호화된 중요코드의 위치 정보를 이용하여 더미코드 및 암호화된 중요코드를 전달하는 배치된 코드 임포터를 생성하는 배치된 코드 임포터 생성부, 더미코드를 메모리에 적재하는 코드 적재기를 생성하는 코드 적재기 생성부, 메모리에 적재된 더미코드를 복호화된 중요코드로 대체하는 메모리 내부 코드 수정기를 생성하는 메모리 내부 코드 수정기 생성부 및 메모리에 대체된 복호화된 중요코드를 호출하기 위한 복호화된 코드 호출기를 생성하는 복호화된 코드 호출기 생성부를 포함한다.

Description

주 기억 장치 내부의 코드 수정을 통한 애플리케이션 코드 은닉 장치 및 이를 이용한 애플리케이션 코드 은닉 방법
본 발명은 주 기억 장치 내부의 코드 수정을 통한 애플리케이션 코드 은닉 장치 및 이를 이용한 애플리케이션 코드 은닉 방법에 관한 것으로, 보다 구체적으로 역공학 저항성을 향상시킨 주 기억 장치 내부의 코드 수정을 통한 애플리케이션 코드 은닉 장치 및 이를 이용한 애플리케이션 코드 은닉 방법에 관한 것이다.
애플리케이션 코드 난독화 기술은 소프트웨어를 보호하기 위한 기술 중 하나로써, 프로그램을 분석하기 어렵게 만들어 공격자가 프로그램의 핵심 알고리즘을 알아내거나 위변조하는 것을 방해하는 기술이다.
패킹 기술은 애플리케이션 코드 난독화와 유사하게 프로그램의 코드를 보호하는 기술이며, 패킹된 코드의 원래 내용은 정적으로 분석되는 것이 사실 상 불가능하게 된다.
종래의 패킹 방식에서는, 원본 애플리케이션 전체가 패킹되고 이를 언패킹하는 새로운 애플리케이션으로 대체된다. 따라서, 공격자가 해당 애플리케이션의 패킹 여부를 쉽게 파악할 수 있으며, 한번 적재된 원본 코드는 실행이 끝날 때까지 유지되기 때문에, 한 번의 메모리 덤프에 무력화되기 쉽다.
본 발명은 종래 애플리케이션 코드 은닉 장치 및 그 방법이 가지는 문제점들을 해결하기 위한 것으로, 본 발명이 이루고자 하는 목적은 상기 애플리케이션 코드를 일반코드 및 중요코드로 분리하고, 상기 중요코드만을 패킹하여 패킹 단위의 크기를 줄이고, 상기 중요코드에 대응하는 더미코드를 메모리에 먼저 적재하고, 상기 더미코드를 상기 중요코드로 수정한 뒤 상기 중요코드를 실행하여 역공학 저항성을 향상시킨 애플리케이션 코드 은닉 장치를 제공하는 것이다.
본 발명이 이루고자 하는 다른 목적은 상기 애플리케이션 코드 은닉 장치를 이용하는 애플리케이션 코드 은닉 방법을 제공하는 것이다.
상기한 본 발명의 목적을 실현하기 위한 일 실시예에 따른 애플리케이션 코드 은닉 장치는 중요코드 분리부, 중요코드 호출기 생성부, 코드 분석부, 더미코드 생성부, 코드 암호화부, 코드 배치부, 코드 복호화기 생성부, 배치된 코드 임포터 생성부, 코드 적재기 생성부, 메모리 내부 코드 수정기 생성부 및 복호화된 코드 호출기 생성부를 포함한다. 상기 중요코드 분리부는 애플리케이션 코드를 중요코드 및 상기 중요코드 이외의 일반코드로 분리한다. 상기 중요코드 호출기 생성부는 상기 중요코드를 호출하기 위한 중요코드 호출기를 생성한다. 상기 코드 분석부는 상기 중요코드를 분석한다. 상기 더미코드 생성부는 상기 중요코드에 대응하는 더미코드를 생성한다. 상기 코드 암호화부는 상기 중요코드를 암호화한다. 상기 코드 배치부는 상기 더미코드 및 상기 암호화된 중요코드를 배치시키고, 상기 더미코드 및 상기 암호화된 중요코드의 위치 정보를 생성한다. 상기 코드 복호화기 생성부는 상기 암호화된 중요코드를 복호화하기 위한 코드 복호화기를 생성한다. 상기 배치된 코드 임포터 생성부는 상기 더미코드 및 상기 암호화된 중요코드의 상기 위치 정보를 이용하여 상기 더미코드 및 상기 암호화된 중요코드를 전달하는 배치된 코드 임포터를 생성한다. 상기 코드 적재기 생성부는 상기 더미코드를 메모리에 적재하는 코드 적재기를 생성한다. 상기 메모리 내부 코드 수정기 생성부는 상기 메모리에 적재된 상기 더미코드를 상기 복호화된 중요코드로 대체하는 메모리 내부 코드 수정기를 생성한다. 상기 복호화된 코드 호출기 생성부는 상기 메모리에 대체된 상기 복호화된 중요코드를 호출하기 위한 복호화된 코드 호출기를 생성한다.
본 발명의 일 실시예에 있어서, 상기 코드 분석부는 상기 중요코드를 복수의 서브 중요코드로 분리할 수 있다.
본 발명의 일 실시예에 있어서, 상기 더미코드 생성부는 상기 분리된 서브 중요코드에 대응하는 복수의 분리된 서브 더미코드를 생성할 수 있다.
본 발명의 일 실시예에 있어서, 상기 코드 분석부는 상기 중요코드를 클래스 단위의 복수의 서브 중요코드로 분리할 수 있다.
본 발명의 일 실시예에 있어서, 상기 더미코드는 상기 중요코드와 동일한 시그니쳐를 갖고, 상기 중요코드와 상이한 오퍼레이션 코드를 가질 수 있다.
본 발명의 일 실시예에 있어서, 상기 더미코드의 길이는 상기 중요코드의 길이보다 크거나 같을 수 있다.
본 발명의 일 실시예에 있어서, 상기 코드 복호화기 생성부에 의해 생성되는 상기 코드 복호화기, 상기 배치된 코드 임포터 생성부에 의해 생성되는 상기 배치된 코드 임포터, 상기 코드 적재기 생성부에 의해 생성되는 상기 코드 적재기, 상기 메모리 내부 코드 수정기 생성부에 의해 생성되는 상기 메모리 내부 코드 수정기 및 상기 복호화된 코드 호출기 생성부에 의해 생성되는 상기 복호화된 코드 호출기는 네이티브 코드 영역에 배치될 수 있다.
본 발명의 일 실시예에 있어서, 상기 일반코드 및 상기 중요코드 호출기는 바이트 코드 영역에 배치될 수 있다.
본 발명의 일 실시예에 있어서, 상기 암호화된 중요코드 및 상기 더미코드는 상기 네이티브 코드 영역, 상기 바이트 코드 영역, 애플리케이션 데이터 영역의 리소스(resources) 영역 및 상기 애플리케이션 데이터 영역의 애셋(assets) 영역 중 하나에 배치될 수 있다.
본 발명의 일 실시예에 있어서, 상기 암호화된 중요코드 및 상기 더미코드는 상기 네이티브 코드 영역, 상기 바이트 코드 영역, 상기 애플리케이션 데이터 영역의 상기 리소스(resources) 영역 및 상기 애플리케이션 데이터 영역의 상기 애셋(assets) 영역에서 서로 다른 영역에 배치될 수 있다.
본 발명의 일 실시예에 있어서, 상기 일반코드의 실행 중에 상기 중요코드 호출기는 상기 중요코드를 호출하고, 상기 중요코드가 호출되면 상기 배치된 코드 임포터는 상기 중요코드에 대응하는 상기 더미코드를 상기 코드 적재기에 전달하고 상기 암호화된 중요코드를 상기 코드 복호화기에 전달하며, 상기 코드 적재기는 상기 더미코드를 상기 메모리에 적재하고, 상기 코드 복호화기는 상기 암호화된 중요코드를 복호화하여 상기 메모리 내부 코드 수정기에 전달하며, 상기 메모리 내부 코드 수정기는 상기 메모리 내의 상기 더미코드를 상기 복호화된 중요코드로 대체할 수 있다.
본 발명의 일 실시예에 있어서, 상기 복호화된 코드 호출기는 상기 메모리에 대체된 상기 중요코드가 실행되도록 하고 상기 중요코드의 실행 결과를 보관하며, 상기 중요코드가 실행된 후 상기 배치된 코드 임포터는 상기 더미코드를 상기 메모리 내부 코드 수정기에 전달하고, 상기 메모리 내부 코드 수정기는 상기 중요코드를 상기 더미코드로 대체하며, 상기 복호화된 코드 호출기가 보관하던 상기 중요코드의 상기 실행 결과를 상기 일반코드로 전달할 수 있다.
상기한 본 발명의 다른 목적을 실현하기 위한 일 실시예에 따른 애플리케이션 코드 은닉 방법은 애플리케이션 코드를 중요코드 및 상기 중요코드 이외의 일반코드로 분리하는 단계, 상기 중요코드를 호출하기 위한 중요코드 호출기를 생성하는 단계, 상기 중요코드를 분석하는 단계, 상기 중요코드에 대응하는 더미코드를 생성하는 단계, 상기 중요코드를 암호화하는 단계, 상기 더미코드 및 상기 암호화된 중요코드를 배치시키고, 상기 더미코드 및 상기 암호화된 중요코드의 위치 정보를 생성하는 단계, 상기 암호화된 중요코드를 복호화하기 위한 코드 복호화기를 생성하는 단계, 상기 더미코드 및 상기 암호화된 중요코드의 상기 위치 정보를 이용하여 상기 더미코드 및 상기 암호화된 중요코드를 전달하는 배치된 코드 임포터를 생성하는 단계, 상기 더미코드를 메모리에 적재하는 코드 적재기를 생성하는 단계, 상기 메모리에 적재된 상기 더미코드를 상기 복호화된 중요코드로 대체하는 메모리 내부 코드 수정기를 생성하는 단계 및 상기 메모리에 대체된 상기 복호화된 중요코드를 호출하기 위한 복호화된 코드 호출기를 생성하는 단계를 포함한다.
본 발명의 일 실시예에 있어서, 상기 중요코드를 분석하는 단계는 상기 중요코드를 복수의 서브 중요코드로 분리할 수 있다.
본 발명의 일 실시예에 있어서, 상기 더미코드를 생성하는 단계는 상기 분리된 서브 중요코드에 대응하는 복수의 분리된 서브 더미코드를 생성할 수 있다.
본 발명의 일 실시예에 있어서, 상기 더미코드의 길이는 상기 중요코드의 길이보다 크거나 같을 수 있다.
본 발명의 일 실시예에 있어서, 상기 애플리케이션 코드 은닉 방법은 상기 일반코드의 실행 중에 상기 중요코드 호출기는 상기 중요코드를 호출하는 단계, 상기 중요코드가 호출되면 상기 배치된 코드 임포터는 상기 중요코드에 대응하는 상기 더미코드를 상기 코드 적재기에 전달하고, 상기 암호화된 중요코드를 상기 코드 복호화기에 전달하는 단계, 상기 코드 적재기는 상기 더미코드를 상기 메모리에 적재하는 단계, 상기 코드 복호화기는 상기 암호화된 중요코드를 복호화하여 상기 메모리 내부 코드 수정기에 전달하는 단계 및 상기 메모리 내부 코드 수정기는 상기 메모리 내의 상기 더미코드를 상기 복호화된 중요코드로 대체하는 단계를 더 포함할 수 있다.
본 발명의 일 실시예에 있어서, 상기 애플리케이션 코드 은닉 방법은 상기 복호화된 코드 호출기는 상기 메모리에 대체된 상기 중요코드가 실행되도록 하고 상기 중요코드의 실행 결과를 보관하는 단계, 상기 중요코드가 실행된 후 상기 배치된 코드 임포터는 상기 더미코드를 상기 메모리 내부 코드 수정기에 전달하는 단계, 상기 메모리 내부 코드 수정기는 상기 중요코드를 상기 더미코드로 대체하는 단계 및 상기 복호화된 코드 호출기가 보관하던 상기 중요코드의 상기 실행 결과를 상기 일반코드로 전달하는 단계를 더 포함할 수 있다.
본 발명에 따른 애플리케이션 코드 은닉 장치 및 이를 이용하는 애플리케이션 코드 은닉 방법은 애플리케이션 코드를 일반코드 및 중요코드로 분리하므로, 상기 애플리케이션 코드의 패킹의 단위를 줄여 애플리케이션 코드가 패킹된 것인지 아닌지에 대한 판단을 어렵게 할 수 있다.
또한, 상기 중요코드 및 더미코드를 모바일 장치의 내부 또는 외부의 다양한 영역에 은닉하므로, 정적 분석 저항성을 향상시킬 수 있다.
또한, 상기 중요코드에 대응하는 상기 더미코드를 메모리에 먼저 적재하고, 상기 더미코드를 상기 중요코드로 대체한 뒤 상기 중요코드를 실행하므로 메모리 덤프에 의한 원본 코드 획득을 어렵게 한다. 따라서, 애플리케이션 코드의 동적 분석 저항성을 크게 향상시킬 수 있다.
도 1은 본 발명의 일 실시예에 따른 애플리케이션 코드 은닉 장치를 나타내는 블록도이다.
도 2 및 도 3은 도 1의 애플리케이션 코드 은닉 장치의 동작을 나타내는 개념도이다.
도 4는 도 2의 코드 배치부의 동작의 일 예를 나타내는 개념도이다.
도 5는 도 2의 코드 배치부의 동작의 다른 예를 나타내는 개념도이다.
도 6은 도 1의 애플리케이션 코드 은닉 장치에 의해 수행되는 더미코드의 로딩 과정 및 상기 더미코드를 중요코드로 대체하는 과정을 나타내는 개념도이다.
도 7은 도 1의 애플리케이션 코드 은닉 장치에 의해 수행되는 중요코드의 실행 과정 및 상기 중요코드를 상기 더미코드로 대체하는 과정을 나타내는 개념도이다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미이다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미인 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
한편, 어떤 실시예가 달리 구현 가능한 경우에 특정 블록 내에 명기된 기능 또는 동작이 순서도에 명기된 순서와 다르게 일어날 수도 있다. 예를 들어, 연속하는 두 블록이 실제로는 실질적으로 동시에 수행될 수도 있고, 관련된 기능 또는 동작에 따라서는 상기 블록들이 거꾸로 수행될 수도 있다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 일 실시예에 따른 애플리케이션 코드 은닉 장치를 나타내는 블록도이다. 도 2 및 도 3은 도 1의 애플리케이션 코드 은닉 장치의 동작을 나타내는 개념도이다.
도 1 내지 도 3을 참조하면, 상기 애플리케이션 코드 은닉 장치는 코드 선처리부(100), 코드 보호 적용부(200) 및 보호 모듈 생성부(300)를 포함한다.
상기 코드 선처리부(100)는 중요코드 분리부(110), 중요코드 호출기 생성부(120) 및 코드 분석부(130)를 포함한다. 상기 코드 보호 적용부(200)는 더미코드 생성부(210), 코드 암호화부(220) 및 코드 배치부(230)를 포함한다. 상기 보호 모듈 생성부(300)는 복호화된 코드 호출기 생성부(310), 코드 복호화기 생성부(320), 배치된 코드 임포터 생성부(330), 코드 적재기 생성부(340) 및 메모리 내부 코드 수정기 생성부(350)를 포함한다.
상기 중요코드 분리부(110)는 애플리케이션 코드를 중요코드 및 상기 중요코드 이외의 일반코드로 분리한다.
상기 중요코드 분리부(110)는 애플리케이션 코드를 입력 받는다. 예를 들어, 상기 중요코드 분리부(110)는 제1 형식의 애플리케이션 코드를 입력 받는다. 예를 들어, 상기 제1 형식은 바이트 코드(Byte Code)일 수 있다. 상기 애플리케이션 코드는 자바 코드(JAVA)일 수 있다. 예를 들어, 상기 애플리케이션 코드는 달빅 실행 코드(Dalvik Executable, .dex)일 수 있다.
상기 중요코드 분리부(110)는 상기 애플리케이션 코드를 중요코드(80) 및 상기 중요코드(80) 이외의 일반코드(10)로 분리한다. 예를 들어, 상기 중요코드(80)는 애플리케이션의 위변조 공격으로부터 보호될 필요가 있는 코드를 의미할 수 있다. 상기 일반코드(10)는 바이트 코드 영역(A1)에 배치된다.
상기 중요코드 호출기 생성부(120)는 상기 중요코드(80)를 호출하기 위한 중요코드 호출기(20)를 생성한다.
예를 들어, 상기 중요코드 호출기(20)는 상기 중요코드(80)의 시그니쳐를 이용하여 상기 중요코드(80)를 호출할 수 있다. 예를 들어, 상기 중요코드(80)의 시그니쳐는 함수의 파라미터 정보일 수 있다.
예를 들어, 중요코드(80)에 해당하는 A함수를 호출하기 위해 사용되는 파라미터가 (integer, integer)인 경우, 상기 중요코드(80)의 시그니쳐는 상기 (integer, integer)를 기초로 생성될 수 있다. 예를 들어, 중요코드(80)에 해당하는 B함수를 호출하기 위해 사용되는 파라미터가 (text, text, integer)인 경우, 상기 중요코드(80)의 시그니쳐는 상기 (text, text, integer)를 기초로 생성될 수 있다. 이와는 달리, 상기 중요코드(80)의 시그니쳐는 상기 함수의 파라미터 정보가 아닌 다른 정보를 이용하여 생성될 수 있다.
상기 중요코드 호출기 생성부(120)에 의해 생성된 상기 중요코드 호출기(20)는 상기 바이트 코드 영역(A1)에 배치된다. 상기 중요코드 호출기(20)는 상기 중요코드(80)의 시그니쳐를 이용하여 메모리에 적재되는 중요코드(80)를 호출하게 된다.
상기 코드 분석부(130)는 상기 중요코드(80)를 분석한다. 상기 코드 분석부(130)는 상기 중요코드(80)를 분석하여 상기 중요코드(80)의 보호 방식을 결정할 수 있다.
상기 코드 분석부(130)는 상기 중요코드(80)의 보호 방식에 대한 정보를 상기 복호화된 코드 호출기 생성부(310), 상기 코드 암호화부(220) 및 상기 더미코드 생성부(210)에 출력할 수 있다.
상기 더미코드 생성부(210)는 상기 중요코드(80)에 대응하는 더미코드(90)를 생성한다. 상기 더미코드(90)는 상기 중요코드(80)를 대체할 때, 상기 애플리케이션의 실행에 오류를 일으키지 않는 코드일 수 있다. 또한, 상기 더미코드(90)는 상기 중요코드(80)를 대체할 때, 상기 애플리케이션의 분석에 혼란을 줄 수 있는 코드일 수 있다.
예를 들어, 상기 더미코드(90)는 상기 중요코드(80)와 동일한 시그니쳐를 갖고, 상기 중요코드(80)와 상이한 오퍼레이션 코드를 가질 수 있다. 상기 더미코드(90)가 상기 중요코드(80)와 동일한 시그니쳐를 갖고, 상기 중요코드(80)와 상이한 오퍼레이션 코드를 갖는 경우, 공격자는 애플리케이션이 상기 중요코드(80)의 시그니쳐와 상기 더미코드(90)의 시그니쳐가 동일하기 때문에 상기 중요코드(80)를 분석하고 있다고 생각하지만 실제로는 다른 내용의 코드를 분석하게 되어 공격자의 분석을 방해하고 지연시킬 수 있다.
이와는 달리, 상기 더미코드(90)는 상기 중요코드(80)와 다른 시그니쳐를 가질 수 있다.
상기 더미코드(90)는 상기 메모리 내의 공간을 먼저 점유하고, 상기 더미코드(90)가 상기 중요코드(80)로 대체될 수 있다. 따라서, 상기 더미코드(90)의 길이는 상기 중요코드(80)의 길이보다 크거나 같을 수 있다.
예를 들어, 상기 코드 분석부(130)는 상기 중요코드(80)를 복수의 서브 중요코드로 분리할 수 있다. 예를 들어, 상기 코드 분석부(130)는 상기 중요코드(80)를 클래스 단위의 복수의 서브 중요코드로 분리할 수 있다. 예를 들어, 상기 코드 분석부(130)는 상기 중요코드(80)를 함수 단위의 복수의 서브 중요코드로 분리할 수 있다.
이 때, 상기 더미코드 생성부(210)는 상기 분리된 서브 중요코드에 대응하는 복수의 분리된 서브 더미코드를 생성할 수 있다. 예를 들어, 상기 서브 중요코드의 개수는 상기 서브 더미코드의 개수와 동일할 수 있다.
상기 코드 분석부(130)가 상기 중요코드(80)를 클래스 단위 또는 함수 단위로 분리하는 경우, 상기 패킹의 단위가 작아져 메모리에 적재되는 코드의 크기가 작아지고, 상기 중요코드(80)가 작은 단위로 적재 및 해제를 반복하면서 상기 애플리케이션의 중요코드(80)가 실행되어 동적 리버싱을 매우 어렵게 할 수 있다.
상기 코드 암호화부(220)는 상기 코드 분석부(130)로부터 상기 중요코드(80)의 보호 방식에 대한 정보를 수신한다. 상기 코드 암호화부(220)는 상기 중요코드(80)를 암호화한다. 상기 중요코드(80)의 상기 암호화로 인해 상기 애플리케이션 코드의 정적 분석 저항성이 증가한다.
상기 코드 배치부(230)는 상기 더미코드 생성부(210)로부터 상기 더미코드(90)를 수신하고, 상기 코드 암호화부(220)로부터 상기 암호화된 중요코드(85)를 수신한다.
상기 코드 배치부(230)는 상기 더미코드(90) 및 상기 암호화된 중요코드(85)를 배치시킨다. 상기 코드 배치부(230)는 상기 더미코드(90) 및 상기 암호화된 중요코드(85)의 위치 정보를 생성한다.
상기 코드 배치부(230)는 상기 더미코드(90) 및 상기 암호화된 중요코드(85)의 위치 정보를 상기 배치된 코드 임포터 생성부(330)에 출력한다. 예를 들어, 상기 코드 배치부(230)는 상기 암호화된 중요코드(85)의 제1 위치 및 상기 더미코드(90)의 제2 위치를 상기 배치된 코드 임포터 생성부(330)에 전달할 수 있다.
상기 배치된 코드 임포터 생성부(330)는 상기 더미코드(90) 및 상기 암호화된 중요코드(85)의 상기 위치 정보를 이용하여 상기 더미코드(90) 및 상기 암호화된 중요코드(85)를 전달하는 배치된 코드 임포터(30)를 생성한다. 본 실시예에서, 상기 배치된 코드 임포터(30)는 상기 더미코드(90) 및 상기 중요코드(85)를 전달하는 것으로 설명하였으나, 본 발명은 이에 한정되지 않으며, 상기 배치된 코드 임포터(30)는 상기 더미코드(90) 및 상기 중요코드(85)의 위치 정보만을 전달할 수 있다.
상기 코드 복호화기 생성부(320)는 상기 코드 암호화부(220)의 상기 중요코드(80)의 암호화 정보를 수신한다. 상기 코드 복호화기 생성부(320)는 상기 암호화된 중요코드(85)를 복호화하기 위한 코드 복호화기(40)를 생성한다. 상기 코드 복호화기(40)는 상기 배치된 코드 임포터(30)로부터 상기 암호화된 중요코드(85)를 전달받고, 상기 암호화된 중요코드(85)를 복호화할 수 있다.
상기 코드 적재기 생성부(340)는 상기 배치된 코드 임포터(330)로부터 전달받은 상기 더미코드(90)를 메모리에 적재하는 코드 적재기(60)를 생성한다.
상기 메모리 내부 코드 수정기 생성부(350)는 상기 메모리에 적재된 상기 더미코드(90)를 상기 복호화된 중요코드(80)로 대체하는 메모리 내부 코드 수정기(70)를 생성한다.
또한, 상기 메모리 내부 코드 수정기(70)는 상기 중요코드(80)의 실행 후, 상기 배치된 코드 임포터(30)로부터 상기 더미코드(90)를 전달받아, 상기 실행된 중요코드(80)를 상기 더미코드(90)로 대체할 수 있다.
상기 복호화된 코드 호출기 생성부(310)는 상기 메모리에 적재된 상기 복호화된 중요코드(80)를 호출하기 위한 복호화된 코드 호출기(50)를 생성한다.
예를 들어, 상기 일반코드(10) 및 상기 중요코드 호출기(20)는 바이트 코드 영역(A1)에 배치될 수 있다.
예를 들어, 상기 배치된 코드 임포터 생성부(330)에 의해 생성되는 상기 배치된 코드 임포터(30), 상기 코드 복호화기 생성부(320)에 의해 생성되는 상기 코드 복호화기(40), 상기 코드 적재기 생성부(340)에 의해 생성되는 상기 코드 적재기(60), 상기 복호화된 코드 호출기 생성부(310)에 의해 생성되는 상기 복호화된 코드 호출기(50) 및 상기 메모리 내부 코드 수정기 생성부(350)에 의해 생성되는 상기 메모리 내부 코드 수정기(70)는 네이티브 코드 영역(A2)에 배치될 수 있다.
상기 애플리케이션 코드가 상기 애플리케이션 코드 은닉 장치에 입력되면, 상기 중요코드 분리부(110)는 상기 애플리케이션 코드를 상기 일반코드(10) 및 상기 중요코드(80)로 분리한다. 상기 중요코드 호출기 생성부(120)는 상기 분리된 중요코드(80)를 호출하기 위한 모듈을 생성한다.
상기 분리된 중요코드(80)는 상기 코드 분석부(130)에 입력되어 코드 보호가 적용될 형태로 변형될 수 있다. 상기 중요코드(80)는 각각 상기 코드 보호 적용부(200) 및 상기 보호 모듈 생성부(300)로 전달된다.
상기 코드 보호 적용부(200)에서는 코드의 암호화를 수행하고, 상기 중요코드(80)에 맞는 더미코드(90)를 생성한 뒤 코드 배치부(230)를 통해 다양한 위치에 상기 암호화된 중요코드(85) 및 상기 더미코드(90)를 배치한다.
상기 보호 모듈 생성부(300)는 상기 중요코드(80) 및 상기 코드 보호 적용부(200)를 통해 생성된 보호된 코드의 정보를 통해 상기 중요코드(80)의 실행 중 보호 기술을 적용할 보호 모듈을 생성한다.
상기 코드 배치부(230)는 상기 암호화된 중요코드(85) 및 상기 더미코드(90)를 여러 위치에 배치시킬 수 있다. 예를 들어, 상기 암호화된 중요코드(85) 및 상기 더미코드(90)는 상기 바이트 코드 영역(A1)의 제1 데이터 영역에 배치될 수 있다. 예를 들어, 상기 암호화된 중요코드(85) 및 상기 더미코드(90)는 상기 애플리케이션 데이터 영역의 애셋(ASSETS) 폴더에 배치될 수 있다. 예를 들어, 상기 암호화된 중요코드(85) 및 상기 더미코드(90)는 상기 애플리케이션 데이터 영역의 리소스(RESOURCES) 폴더에 배치될 수 있다. 예를 들어, 상기 암호화된 중요코드(85) 및 상기 더미코드(90)는 상기 네이티브 코드 영역(A2)의 제2 데이터 영역에 배치될 수 있다.
이 때, 상기 암호화된 중요코드(85) 및 상기 더미코드(90)는 동일한 영역 내에 배치될 수 있다. 이와는 달리, 상기 암호화된 중요코드(85) 및 상기 더미코드(90)는 서로 다른 영역 내에 배치될 수 있다.
도 4는 도 2의 코드 배치부(230)의 동작의 일 예를 나타내는 개념도이다.
도 4를 참조하면, 상기 암호화된 중요코드(85) 및 상기 더미코드(90)는 서로 다른 영역 내에 배치된 경우를 예시한다.
상기 코드 배치부(230)는 상기 암호화된 중요코드(85)를 상기 네이티브 코드 영역(A2)에 배치하였고, 상기 암호화된 중요코드(85)에 대응되는 상기 더미코드(90)를 상기 애플리케이션 데이터의 상기 애셋 폴더(A3)에 배치하였다.
도 5는 도 2의 코드 배치부(230)의 동작의 다른 예를 나타내는 개념도이다.
도 5를 참조하면, 상기 암호화된 중요코드(85A, 85B) 및 상기 더미코드(90A, 90B)는 서로 같은 영역 내에 배치되거나 서로 다른 영역 내에 배치된 경우를 예시한다.
상기 코드 배치부(230)는 암호화된 제1 중요코드(85A) 및 상기 암호화된 제1 중요코드(85A)에 대응하는 제1 더미코드(90A)를 동일한 영역에 배치하였다. 상기 코드 배치부(230)는 상기 암호화된 제1 중요코드(85A) 및 상기 제1 더미코드(90A)는 상기 네이티브 코드 영역(A2)에 배치하였다.
상기 코드 배치부(230)는 암호화된 제2 중요코드(85B) 및 상기 암호화된 제2 중요코드(85B)에 대응하는 제2 더미코드(90B)를 서로 다른 영역에 배치하였다. 상기 코드 배치부(230)는 상기 암호화된 제2 중요코드(85B)를 외부 서버에 배치하였고, 상기 제2 더미코드(90B)를 상기 애플리케이션 데이터의 리소스 폴더(A4)에 배치하였다.
이와 같이, 상기 코드 배치부(230)는 상기 애플리케이션 코드 은닉 방법이 수행되는 모바일 장치 내부 또는 상기 모바일 장치와 통신이 가능한 외부 장치의 다양한 영역에 상기 암호화된 중요코드(85) 및 이에 대응하는 상기 더미코드(90)를 은닉할 수 있다.
도 6은 도 1의 애플리케이션 코드 은닉 장치에 의해 수행되는 더미코드(90)의 로딩 과정 및 상기 더미코드(90)를 중요코드(80)로 대체하는 과정을 나타내는 개념도이다.
도 1 내지 도 6을 참조하면, 상기 일반코드(10)의 실행 중에 상기 중요코드 호출기(20)는 상기 중요코드(80)를 호출한다 (단계 S1).
상기 중요코드(80)가 호출되면 상기 배치된 코드 임포터(30)는 상기 중요코드(80)에 대응하는 상기 더미코드(90)의 제2 위치를 상기 코드 적재기(60)에 전달한다 (단계 S2).
상기 코드 적재기(60)는 상기 더미코드(90)를 상기 메모리에 적재한다 (단계 S3). 본 발명의 일 실시예에서, 상기 코드 적재기(60)는 상기 더미코드(90)를 임시 지역(TA)에 적재하고, 상기 임시 지역에 있는 상기 더미코드(90)를 프로세스 메모리로 이동시킬 수 있다.
상기 배치된 코드 임포터(30)는 상기 중요코드(80)의 제1 위치를 상기 코드 복호화기(40)에 전달한다 (단계 S4).
상기 코드 복호화기(40)는 상기 암호화된 중요코드(85)를 복호화하여 상기 메모리 내부 코드 수정기(70)에 전달한다 (단계 S5).
상기 메모리 내부 코드 수정기(70)는 상기 메모리에 적재된 상기 더미코드(90)를 상기 복호화된 중요코드(80)로 대체한다 (단계 S6).
도 7은 도 1의 애플리케이션 코드 은닉 장치에 의해 수행되는 중요코드(80)의 실행 과정 및 상기 중요코드(80)를 상기 더미코드(90)로 대체하는 과정을 나타내는 개념도이다.
상기 복호화된 코드 호출기(50)는 상기 메모리에 대체된 상기 중요코드(80)가 실행되도록 하며 상기 중요코드(80)의 실행 결과를 보관한다 (단계 S7).
상기 중요코드가 실행된 후 상기 배치된 코드 임포터(30)는 상기 더미코드(90)를 상기 메모리 내부 코드 수정기(70)에 전달한다 (단계 S8).
상기 메모리 내부 코드 수정기(70)는 상기 중요코드(80)를 상기 더미코드(90)로 대체한다 (단계 S9).
상기 복호화된 코드 호출기(50)는 보관하고 있던 상기 중요코드(80)의 상기 실행 결과를 상기 일반코드(10)로 전달한다 (단계 S10).
본 실시예에 따르면, 실행 코드 전체를 대상으로 패킹 및 언패킹을 하는 대신 중요코드 또는 서브 중요코드 단위로 패킹 및 언패킹을 수행하므로, 상기 애플리케이션 코드가 패킹된 것인지 아닌지에 대한 판단을 어렵게 한다.
또한, 상기 중요코드 및 더미코드를 상기 모바일 장치의 내부 또는 외부의 다양한 영역에 은닉하므로, 정적 분석 저항성을 크게 향상시킬 수 있다.
또한, 더미코드 또는 서브 더미코드를 메모리에 먼저 적재하고, 상기 더미코드 또는 상기 서브 더미코드를 그에 대응하는 중요코드 또는 서브 중요코드로 대체하여 상기 중요코드 또는 상기 서브 중요코드를 실행하므로, 메모리 덤프에 의한 원본 코드 획득을 어렵게 한다. 따라서, 애플리케이션 코드의 동적 분석 저항성을 크게 향상시킬 수 있다.
또한, 상기 중요코드 또는 상기 서브 중요코드의 실행 후에는 상기 중요코드 또는 상기 서브 중요코드를 다시 그에 대응하는 상기 더미코드 또는 상기 서브 더미코드로 대체하므로, 메모리 덤프에 의한 원본 코드 획득을 어렵게 한다. 따라서, 애플리케이션 코드의 동적 분석 저항성을 크게 향상시킬 수 있다.
본 발명은 애플리케이션 코드의 은닉을 수행하는 임의의 전자 장치에 적용될 수 있다. 상기 전자 장치는 휴대 전화, 스마트 폰, 노트북 컴퓨터, 태블릿 컴퓨터, 디지털 방송 단말, PDA, PMP, 네비게이션 장치 디지털 카메라, 캠코더, 디지털 TV, 셋-탑 박스, 음악 재생기, 휴대용 게임 콘솔, 스마트 카드, 프린터 등을 포함할 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.
<부호의 설명>
10: 일반코드 20: 중요코드 호출기
30: 배치된 코드 임포터 40: 코드 복호화기
50: 복호화된 코드 호출기 60: 코드 적재기
70: 메모리 내부 코드 수정기 80: 중요코드
85, 85A, 85B: 암호화된 중요코드 90, 90A, 90B: 더미코드
100: 코드 선처리부 110: 중요코드 분리부
120: 중요코드 호출기 생성부 130: 코드 분석부
200: 코드 보호 적용부 210: 더미코드 생성부
220: 코드 암호화부 230: 코드 배치부
300: 보호 모듈 생성부
310: 복호화된 코드 호출기 생성부 320: 코드 복호화기 생성부
330: 배치된 코드 임포터 생성부 340: 코드 적재기 생성부
350: 메모리 내부 코드 수정기 생성부

Claims (18)

  1. 애플리케이션 코드를 중요코드 및 상기 중요코드 이외의 일반코드로 분리하는 중요코드 분리부;
    상기 중요코드를 호출하기 위한 중요코드 호출기를 생성하는 중요코드 호출기 생성부;
    상기 중요코드를 분석하는 코드 분석부;
    상기 중요코드에 대응하는 더미코드를 생성하는 더미코드 생성부;
    상기 중요코드를 암호화하는 코드 암호화부;
    상기 더미코드 및 상기 암호화된 중요코드를 배치시키고, 상기 더미코드 및 상기 암호화된 중요코드의 위치 정보를 생성하는 코드 배치부;
    상기 암호화된 중요코드를 복호화하기 위한 코드 복호화기를 생성하는 코드 복호화기 생성부;
    상기 더미코드 및 상기 암호화된 중요코드의 상기 위치 정보를 이용하여 상기 더미코드 및 상기 암호화된 중요코드를 전달하는 배치된 코드 임포터를 생성하는 배치된 코드 임포터 생성부;
    상기 더미코드를 메모리에 적재하는 코드 적재기를 생성하는 코드 적재기 생성부;
    상기 메모리에 적재된 상기 더미코드를 상기 복호화된 중요코드로 대체하는 메모리 내부 코드 수정기를 생성하는 메모리 내부 코드 수정기 생성부; 및
    상기 메모리에 대체된 상기 복호화된 중요코드를 호출하기 위한 복호화된 코드 호출기를 생성하는 복호화된 코드 호출기 생성부를 포함하는 애플리케이션 코드 은닉 장치.
  2. 제1항에 있어서, 상기 코드 분석부는 상기 중요코드를 복수의 서브 중요코드로 분리하는 것을 특징으로 하는 애플리케이션 코드 은닉 장치.
  3. 제2항에 있어서, 상기 더미코드 생성부는 상기 분리된 서브 중요코드에 대응하는 복수의 분리된 서브 더미코드를 생성하는 것을 특징으로 하는 애플리케이션 코드 은닉 장치.
  4. 제2항에 있어서, 상기 코드 분석부는 상기 중요코드를 클래스 단위의 복수의 서브 중요코드로 분리하는 것을 특징으로 하는 애플리케이션 코드 은닉 장치.
  5. 제1항에 있어서, 상기 더미코드는 상기 중요코드와 동일한 시그니쳐를 갖고, 상기 중요코드와 상이한 오퍼레이션 코드를 갖는 것을 특징으로 하는 애플리케이션 코드 은닉 장치.
  6. 제1항에 있어서, 상기 더미코드의 길이는 상기 중요코드의 길이보다 크거나 같은 것을 특징으로 하는 애플리케이션 코드 은닉 장치.
  7. 제1항에 있어서, 상기 코드 복호화기 생성부에 의해 생성되는 상기 코드 복호화기, 상기 배치된 코드 임포터 생성부에 의해 생성되는 상기 배치된 코드 임포터, 상기 코드 적재기 생성부에 의해 생성되는 상기 코드 적재기, 상기 메모리 내부 코드 수정기 생성부에 의해 생성되는 상기 메모리 내부 코드 수정기 및 상기 복호화된 코드 호출기 생성부에 의해 생성되는 상기 복호화된 코드 호출기는 네이티브 코드 영역에 배치되는 것을 특징으로 하는 애플리케이션 코드 은닉 장치.
  8. 제7항에 있어서, 상기 일반코드 및 상기 중요코드 호출기는 바이트 코드 영역에 배치되는 것을 특징으로 하는 애플리케이션 코드 은닉 장치.
  9. 제8항에 있어서, 상기 암호화된 중요코드 및 상기 더미코드는 상기 네이티브 코드 영역, 상기 바이트 코드 영역, 애플리케이션 데이터 영역의 리소스(resources) 영역 및 상기 애플리케이션 데이터 영역의 애셋(assets) 영역 중 하나에 배치되는 것을 특징으로 하는 애플리케이션 코드 은닉 장치.
  10. 제9항에 있어서, 상기 암호화된 중요코드 및 상기 더미코드는 상기 네이티브 코드 영역, 상기 바이트 코드 영역, 상기 애플리케이션 데이터 영역의 상기 리소스(resources) 영역 및 상기 애플리케이션 데이터 영역의 상기 애셋(assets) 영역에서 서로 다른 영역에 배치되는 것을 특징으로 하는 애플리케이션 코드 은닉 장치.
  11. 제1항에 있어서, 상기 일반코드의 실행 중에 상기 중요코드 호출기는 상기 중요코드를 호출하고,
    상기 중요코드가 호출되면 상기 배치된 코드 임포터는 상기 중요코드에 대응하는 상기 더미코드를 상기 코드 적재기에 전달하고 상기 암호화된 중요코드를 상기 코드 복호화기에 전달하며,
    상기 코드 적재기는 상기 더미코드를 상기 메모리에 적재하고, 상기 코드 복호화기는 상기 암호화된 중요코드를 복호화하여 상기 메모리 내부 코드 수정기에 전달하며,
    상기 메모리 내부 코드 수정기는 상기 메모리 내의 상기 더미코드를 상기 복호화된 중요코드로 대체하는 것을 특징으로 하는 애플리케이션 코드 은닉 장치.
  12. 제11항에 있어서, 상기 복호화된 코드 호출기는 상기 메모리에 대체된 상기 중요코드가 실행되도록 하고 상기 중요코드의 실행 결과를 보관하며,
    상기 중요코드가 실행된 후 상기 배치된 코드 임포터는 상기 더미코드를 상기 메모리 내부 코드 수정기에 전달하고,
    상기 메모리 내부 코드 수정기는 상기 중요코드를 상기 더미코드로 대체하며,
    상기 복호화된 코드 호출기가 보관하던 상기 중요코드의 상기 실행 결과를 상기 일반코드로 전달하는 것을 특징으로 하는 애플리케이션 코드 은닉 장치.
  13. 애플리케이션 코드를 중요코드 및 상기 중요코드 이외의 일반코드로 분리하는 단계;
    상기 중요코드를 호출하기 위한 중요코드 호출기를 생성하는 단계;
    상기 중요코드를 분석하는 단계;
    상기 중요코드에 대응하는 더미코드를 생성하는 단계;
    상기 중요코드를 암호화하는 단계;
    상기 더미코드 및 상기 암호화된 중요코드를 배치시키고, 상기 더미코드 및 상기 암호화된 중요코드의 위치 정보를 생성하는 단계;
    상기 암호화된 중요코드를 복호화하기 위한 코드 복호화기를 생성하는 단계;
    상기 더미코드 및 상기 암호화된 중요코드의 상기 위치 정보를 이용하여 상기 더미코드 및 상기 암호화된 중요코드를 전달하는 배치된 코드 임포터를 생성하는 단계;
    상기 더미코드를 메모리에 적재하는 코드 적재기를 생성하는 단계;
    상기 메모리에 적재된 상기 더미코드를 상기 복호화된 중요코드로 대체하는 메모리 내부 코드 수정기를 생성하는 단계; 및
    상기 메모리에 대체된 상기 복호화된 중요코드를 호출하기 위한 복호화된 코드 호출기를 생성하는 단계를 포함하는 애플리케이션 코드 은닉 방법.
  14. 제13항에 있어서, 상기 중요코드를 분석하는 단계는 상기 중요코드를 복수의 서브 중요코드로 분리하는 것을 특징으로 하는 애플리케이션 코드 은닉 방법.
  15. 제14항에 있어서, 상기 더미코드를 생성하는 단계는 상기 분리된 서브 중요코드에 대응하는 복수의 분리된 서브 더미코드를 생성하는 것을 특징으로 하는 애플리케이션 코드 은닉 방법.
  16. 제13항에 있어서, 상기 더미코드의 길이는 상기 중요코드의 길이보다 크거나 같은 것을 특징으로 하는 애플리케이션 코드 은닉 방법.
  17. 제13항에 있어서, 상기 일반코드의 실행 중에 상기 중요코드 호출기는 상기 중요코드를 호출하는 단계;
    상기 중요코드가 호출되면 상기 배치된 코드 임포터는 상기 중요코드에 대응하는 상기 더미코드를 상기 코드 적재기에 전달하고, 상기 암호화된 중요코드를 상기 코드 복호화기에 전달하는 단계;
    상기 코드 적재기는 상기 더미코드를 상기 메모리에 적재하는 단계;
    상기 코드 복호화기는 상기 암호화된 중요코드를 복호화하여 상기 메모리 내부 코드 수정기에 전달하는 단계; 및
    상기 메모리 내부 코드 수정기는 상기 메모리 내의 상기 더미코드를 상기 복호화된 중요코드로 대체하는 단계를 더 포함하는 것을 특징으로 하는 애플리케이션 코드 은닉 방법.
  18. 제17항에 있어서, 상기 복호화된 코드 호출기는 상기 메모리에 대체된 상기 중요코드가 실행되도록 하고 상기 중요코드의 실행 결과를 보관하는 단계;
    상기 중요코드가 실행된 후 상기 배치된 코드 임포터는 상기 더미코드를 상기 메모리 내부 코드 수정기에 전달하는 단계;
    상기 메모리 내부 코드 수정기는 상기 중요코드를 상기 더미코드로 대체하는 단계; 및
    상기 복호화된 코드 호출기가 보관하던 상기 중요코드의 상기 실행 결과를 상기 일반코드로 전달하는 단계를 더 포함하는 것을 특징으로 하는 애플리케이션 코드 은닉 방법.
PCT/KR2017/000059 2016-07-11 2017-01-03 주 기억 장치 내부의 코드 수정을 통한 애플리케이션 코드 은닉 장치 및 이를 이용한 애플리케이션 코드 은닉 방법 WO2018012693A1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2016-0087249 2016-07-11
KR1020160087249A KR101688814B1 (ko) 2016-07-11 2016-07-11 주 기억 장치 내부의 코드 수정을 통한 애플리케이션 코드 은닉 장치 및 이를 이용한 애플리케이션 코드 은닉 방법

Publications (1)

Publication Number Publication Date
WO2018012693A1 true WO2018012693A1 (ko) 2018-01-18

Family

ID=57723838

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2017/000059 WO2018012693A1 (ko) 2016-07-11 2017-01-03 주 기억 장치 내부의 코드 수정을 통한 애플리케이션 코드 은닉 장치 및 이를 이용한 애플리케이션 코드 은닉 방법

Country Status (3)

Country Link
US (1) US20180011997A1 (ko)
KR (1) KR101688814B1 (ko)
WO (1) WO2018012693A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10394554B1 (en) * 2016-09-09 2019-08-27 Stripe, Inc. Source code extraction via monitoring processing of obfuscated byte code
CN107844687B (zh) * 2017-11-22 2021-06-25 上海勋立信息科技有限公司 一种安卓信息拦截方法及装置
FR3094515B1 (fr) * 2019-03-28 2021-09-10 Ingenico Group procédé d’exécution de code sécurisé, dispositifs, système et programmes correspondants
CN113010855B (zh) * 2019-12-18 2022-05-10 武汉斗鱼鱼乐网络科技有限公司 一种获取数据的方法、装置、介质及计算机设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006164184A (ja) * 2004-12-10 2006-06-22 Ntt Docomo Inc プログラム分割装置、プログラム実行装置、プログラム分割方法及びプログラム実行方法
EP2075728A1 (en) * 2007-12-27 2009-07-01 Thomson Licensing A method and an apparatus for code protection
KR101350390B1 (ko) * 2013-08-14 2014-01-16 숭실대학교산학협력단 코드 난독화 장치 및 그 방법
KR101490047B1 (ko) * 2013-09-27 2015-02-04 숭실대학교산학협력단 자가변환 기반 애플리케이션 코드 난독화 장치 및 그 방법
KR101619458B1 (ko) * 2016-03-02 2016-05-10 (주)케이사인 애플리케이션 코드 난독화 장치 및 이를 이용한 애플리케이션 코드 난독화 방법

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7111285B2 (en) * 2001-07-17 2006-09-19 Liquid Machines, Inc. Method and system for protecting software applications against static and dynamic software piracy techniques
EP2378452B1 (en) * 2010-04-16 2012-12-19 Thomson Licensing Method, device and computer program support for verification of checksums for self-modified computer code
EP3057019A1 (en) * 2015-02-13 2016-08-17 Thomson Licensing Method and device for protecting an application and method and device for executing a protected application thus protected
EP3264307A1 (en) * 2016-06-29 2018-01-03 Nagravision SA On demand code decryption

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006164184A (ja) * 2004-12-10 2006-06-22 Ntt Docomo Inc プログラム分割装置、プログラム実行装置、プログラム分割方法及びプログラム実行方法
EP2075728A1 (en) * 2007-12-27 2009-07-01 Thomson Licensing A method and an apparatus for code protection
KR101350390B1 (ko) * 2013-08-14 2014-01-16 숭실대학교산학협력단 코드 난독화 장치 및 그 방법
KR101490047B1 (ko) * 2013-09-27 2015-02-04 숭실대학교산학협력단 자가변환 기반 애플리케이션 코드 난독화 장치 및 그 방법
KR101619458B1 (ko) * 2016-03-02 2016-05-10 (주)케이사인 애플리케이션 코드 난독화 장치 및 이를 이용한 애플리케이션 코드 난독화 방법

Also Published As

Publication number Publication date
US20180011997A1 (en) 2018-01-11
KR101688814B1 (ko) 2016-12-22

Similar Documents

Publication Publication Date Title
WO2018012693A1 (ko) 주 기억 장치 내부의 코드 수정을 통한 애플리케이션 코드 은닉 장치 및 이를 이용한 애플리케이션 코드 은닉 방법
WO2017150769A1 (ko) 애플리케이션 코드 난독화 장치 및 이를 이용한 애플리케이션 코드 난독화 방법
US8356188B2 (en) Secure system-on-chip
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
WO2015053509A1 (ko) 동적 라이브러리를 보호하는 방법 및 장치
WO2015023024A1 (ko) 애플리케이션 코드 난독화 장치 및 그 방법
WO2018151390A1 (ko) 사물 인터넷 장치
WO2012060643A1 (en) Key rotation in live adaptive streaming
WO2016039556A1 (en) Apparatus and method for data encryption
US8656191B2 (en) Secure system-on-chip
WO2014119915A1 (en) Method for increasing the security of software
WO2016200058A1 (ko) 바이너리 병합 장치, 방법 및 컴퓨터 프로그램
WO2020235942A1 (ko) 분실된 개인 키를 복원하는 시스템
WO2018016830A1 (ko) 파일 암호화 방지 장치 및 방법
WO2023191216A1 (ko) 데이터 암호화 및 복호화 시스템, 방법
WO2017213320A1 (ko) 더미 코드를 사용하는 애플리케이션 코드 은닉 장치 및 이를 이용한 애플리케이션 코드 은닉 방법
WO2019177265A1 (ko) 랜섬웨어 대응을 위한 데이터 처리 방법, 이를 실행시키는 프로그램 및 상기 프로그램을 기록한 컴퓨터 판독 가능한 기록매체
WO2019083231A1 (ko) 디스플레이장치 및 그 제어방법
WO2018080009A1 (en) Electronic apparatus for recording debugging information and control method thereof
WO2021025185A1 (ko) 안티-인버전 함수를 이용한 화이트박스 암호 인코딩 장치 및 방법
WO2018164408A1 (ko) 어플리케이션 보안 방법 및 이를 수행하기 위한 시스템
WO2024034733A1 (ko) 영상 패킷의 암호화를 지원하는 네트워크 시스템, 장치 및 그 방법
WO2023113573A1 (ko) 전자 장치 및 암호화 방법
WO2018052166A1 (ko) 어플리케이션을 검증하는 디바이스 및 방법

Legal Events

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

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 17827767

Country of ref document: EP

Kind code of ref document: A1