WO2016200058A1 - 바이너리 병합 장치, 방법 및 컴퓨터 프로그램 - Google Patents

바이너리 병합 장치, 방법 및 컴퓨터 프로그램 Download PDF

Info

Publication number
WO2016200058A1
WO2016200058A1 PCT/KR2016/004716 KR2016004716W WO2016200058A1 WO 2016200058 A1 WO2016200058 A1 WO 2016200058A1 KR 2016004716 W KR2016004716 W KR 2016004716W WO 2016200058 A1 WO2016200058 A1 WO 2016200058A1
Authority
WO
WIPO (PCT)
Prior art keywords
binary
programming interface
function
address table
application
Prior art date
Application number
PCT/KR2016/004716
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 라인 가부시키가이샤
Priority to JP2017563554A priority Critical patent/JP6698707B2/ja
Publication of WO2016200058A1 publication Critical patent/WO2016200058A1/ko
Priority to US15/837,431 priority patent/US10552132B2/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/1008Correctness of operation, e.g. memory ordering

Definitions

  • the present invention relates to a binary merging device, a method, and a computer program, and more particularly, a binary merging device for merging a first binary, which is an original binary of an application, and a second binary to be added to an application, into a binary state without modification of source code. , Method and computer program.
  • An object of the present invention is to provide a binary merging device, a method and a computer program for merging a first binary, which is an original binary of an application, and a second binary, which is to be added to an application, into a binary state without modification of source code.
  • Memory for storing the first binary according to an embodiment of the present invention; And a control unit comprising: generating, by the control unit, a second binary to be injected into the first binary; Obfuscating, by the control unit, a first binary of an application referencing a first programming interface; Generating, by the control unit, a first programming interface associated with the first binary; Generating, by the control unit, a second programming interface associated with the second binary; Comparing, by the control unit, the first programming interface and the second programming interface to determine whether the referenced function is exactly the same; As a result of the determination, when the second programming interface and the first programming interface are not completely identical, the controller replaces the first address table corresponding to the first programming interface with a second address table corresponding to the second programming interface. Making; And generating, by the control unit, a final binary obtained by merging the first binary and the second binary, and setting an entry point of the final binary to be a second binary.
  • the first binary or the second binary may be a binary executed in a mobile environment.
  • the second binary may be a binary generated from a source file including a function for decoding the first binary.
  • the second binary may be a binary implemented in assembly language.
  • the second binary may be a binary generated to be included in an execution binary file among the first binaries.
  • the first address table includes an address value of an area in which a function included in the first programming interface is defined
  • the second address table is an area in which a function included in the second programming interface is defined. It may contain an address value of.
  • Binary merging apparatus includes an obfuscation unit for obfuscating the first binary of the application that refers to the first programming interface; A code generator generating a second binary to be injected into the first binary; A first reference analyzer configured to generate a first programming interface related to the first binary; A second reference analyzer configured to generate a second programming interface related to the second binary; A determination unit which compares the first programming interface and the second programming interface, and determines whether the referenced function is exactly the same; As a result of the determination, when the second programming interface and the first programming interface are not completely identical, a table processing unit for replacing the first address table corresponding to the first programming interface with a second address table corresponding to the second programming interface. ; And a processor configured to set an entry point of the application to be a second binary.
  • a computer program according to an embodiment of the present invention may be stored in a medium for executing any one of the methods of merging binaries according to an embodiment of the present invention using a computer.
  • a computer readable recording medium for recording another method for implementing the present invention, another system, and a computer program for executing the method.
  • a first binary which is an original binary of an application
  • a second binary which is to be added to an application
  • FIG. 1 is a diagram illustrating a binary distribution system according to an exemplary embodiment of the present invention.
  • FIG. 2 is a block diagram illustrating a binary merging device according to an embodiment of the present invention.
  • 3 is a diagram illustrating the structure of a controller.
  • FIG. 4 is a flowchart illustrating a binary merging method according to an embodiment of the present invention.
  • FIG. 5 is a flowchart illustrating a method of executing a binary generated by a binary merging device.
  • FIG. 6 is a diagram illustrating data transmission and reception and operation between a binary merging device, a first user terminal, and a second user terminal.
  • FIG. 7 is a diagram illustrating the structure of a user terminal.
  • Figure 8 is a view for explaining the structure of the binary
  • Figure 8 (a) is a view showing the structure of the first binary before merging the binary
  • Figure 8 (b) is a merge of the first binary and the second binary This figure shows the structure of the final binary.
  • FIG. 9 is a diagram illustrating a connection relationship between a code area of an binary and an address table.
  • 10 is a diagram showing a connection relationship between a code area of an binary and an address table.
  • circuit refers to, alone or in any combination, hardwired circuitry, programmable circuitry, state machine circuitry, and / or firmware that stores instructions executed by, for example, programmable circuitry. It may include.
  • the application may be implemented as code or instructions that may be executed on programmable circuitry, such as a host processor or other programmable circuitry.
  • a module may be implemented as a circuit.
  • the circuit can be implemented as an integrated circuit, such as an integrated circuit chip.
  • FIG. 1 is a diagram showing a binary distribution system 1 according to an embodiment of the present invention.
  • a binary distribution system 1 may include a binary merging device 100, user terminals 200 and 400, and a communication network 300.
  • the binary merging device 100 performs a function of merging the first binary and the second binary.
  • the binary merging device 100 may generate a second binary for obfuscating the first binary to generate a final binary in which the first binary and the second binary are merged.
  • the entry point of the final binary of the application generated by the binary merging device 100 becomes the second binary.
  • the generated second binary performs a function of decoding the first binary, and replaces the address table for the first binary with an address table for the second binary. .
  • the binary merging device 100 receives the original binaries of one or more applications from the administrator terminals 200 and 400, obfuses the original binaries, generates a secure binary for decrypting the obfuscated binaries, and finally The final binary is generated by merging the security binary into the original binary of each application.
  • the administrator may be a person who creates a binary of the application or a person who manages the binary merging device 100.
  • a user downloads a binary for an application through the user terminals 200 and 400.
  • the user terminals 200 and 400 execute the downloaded binary.
  • the plurality of user terminals 200 refers to a communication terminal capable of using a web service in a wired / wireless communication environment.
  • the user terminal 200 may be a personal computer 201 of the user, or may be a portable terminal 202 of the user.
  • the portable terminal 202 is illustrated as a smart phone, but the spirit of the present invention is not limited thereto.
  • a terminal equipped with an application capable of web browsing may be borrowed without limitation.
  • the user terminal 200 may include a computer (eg, desktop, laptop, tablet, etc.), a media computing platform (eg, cable, satellite set-top box, digital video recorder), a handheld computing device ( PDAs, email clients, etc.), any form of cell phone, or any other type of computing or communication platform, but the invention is not so limited.
  • a computer eg, desktop, laptop, tablet, etc.
  • a media computing platform eg, cable, satellite set-top box, digital video recorder
  • a handheld computing device PDAs, email clients, etc.
  • any form of cell phone or any other type of computing or communication platform, but the invention is not so limited.
  • the communication network 300 connects the plurality of user terminals 200 and the binary merging device 100. That is, the communication network 300 refers to a communication network that provides a connection path so that the user terminals 200 may transmit and receive data after connecting to the binary merging device 100.
  • the communication network 300 may be, for example, wired networks such as local area networks (LANs), wide area networks (WANs), metropolitan area networks (MANs), integrated service digital networks (ISDNs), wireless LANs, CDMA, Bluetooth, satellite communications, and the like. Although it may encompass a wireless network, the scope of the present invention is not limited thereto.
  • FIG. 2 is a block diagram illustrating a binary merging device 100 according to an embodiment of the present invention.
  • the binary merging device 100 may include a communication unit 110, a database 120, and a controller 130.
  • the communication unit 110 may include one or more components that enable communication between the binary merging device 100 and at least one user terminal 200.
  • the communication unit 110 may include a Bluetooth communication unit, a Bluetooth low energy (BLE) communication unit, a near field communication unit (Near Field Communication unit), a WLAN (Wi-Fi) communication unit, a Zigbee communication unit, an infrared ray (IrDA) It may include a communication unit, a Wi-Fi Direct (WFD) communication unit, an ultra wideband (UWB) communication unit, an Ant + communication unit, or the like, or may include a communication unit for transmitting and receiving wireless signals with at least one of a base station, an external terminal, and a server in a mobile communication network. It is not limited to this.
  • the wireless signal may include various types of data according to transmission and reception of a voice call signal, a video call signal, or a text / multimedia message.
  • the database 120 performs a function of storing and managing binary and binary related data that the binary merging device 100 should receive and transmit.
  • the database 120 is illustrated as being provided inside the binary merging device 100. However, this is merely for convenience of description, and the database 120 may be provided at an external device of the binary merging device 100. There may be.
  • the database 120 may include a flash memory type, a hard disk type, a multimedia card micro type, a card type memory (for example, SD or XD memory), RAM Random Access Memory (RAM) Static Random Access Memory (SRAM), Read-Only Memory (ROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), Programmable Read-Only Memory (PROM), Magnetic Memory, Magnetic Disk It may include at least one type of storage medium of the optical disk.
  • the binary merging device 100 may operate a web storage or a cloud server that performs a storage function of the database 120 on the Internet.
  • the controller 130 typically controls the overall operation of the binary merging device 100.
  • the controller 130 may control the communicator 110, the database 120, and the like overall by executing programs stored in the database 120.
  • the controller 130 may include all kinds of devices capable of processing data, such as a processor.
  • the 'processor' may refer to a data processing apparatus embedded in hardware having, for example, a circuit physically structured to perform a function represented by code or instructions included in a program.
  • a data processing device embedded in hardware, a microprocessor, a central processing unit (CPU), a processor core, a multiprocessor, and an application-specific integrated device (ASIC) It may include a processing device such as a circuit, a field programmable gate array (FPGA), etc., but the scope of the present invention is not limited thereto.
  • the controller 130 may perform the function of merging the first binary, which is the original binary of the application, with the second binary for the additional module, the obfuscation unit 131,
  • the code generator 132, the first reference analyzer 133, the second reference analyzer 134, the determiner 135, the table processor 136, and the processor 137 may be included.
  • the first binary and the second binary to be merged may be binaries executed in a mobile environment, for example, a smart phone, a mobile phone, and the like.
  • the code generator 131 generates a second binary to be injected into a first binary that is an original binary of an application.
  • the second binary is a file building a source file for decoding the first binary, which is the original binary of the application, and a function for decoding the first binary, and an address table for the second binary as an address table for the first binary. It can be implemented by including a replaceable function.
  • the second binary may refer to a programming interface different from the programming interface for the first binary, and for correct reference to the programming interface of the second binary, the address value of the region in which the function included in the programming interface is defined An address table may be generated, and the function of restoring back to the address table for the first binary may be implemented.
  • the second binary may include code related to replacement and reversion of the address table. More specifically, the second binary may include code to restore to an address table corresponding to the first binary before execution of the first binary, which is the original binary of the application.
  • the second binary may be written in a symbol system used to write a program that performs a task on a computer, and may be implemented in an assembly language, Fortran, C, C ++, JAVA, and the like, but is not limited thereto.
  • the obfuscation unit 132 obfuscates the first binary which is the original binary of the application.
  • obfuscation is a kind of program conversion, which makes the code difficult to read, and aims to prevent an attack through reverse engineering.
  • Obfuscation techniques include layout obfuscation, data obfuscation, aggregation obfuscation, and control obfuscation. Each obfuscation technique is common to those skilled in the art, and will be performed by one of the following methods: obfuscation using a symmetric key and obfuscation using an asymmetric key.
  • the first reference analyzer 133 extracts a first programming interface related to the first binary.
  • One or more functions included in the first source file which is the source of the first binary, may be different from the location in which they are called.
  • the first source file may be You must reference the file in which the first function is defined.
  • referencing a defined file is called a programming interface.
  • the first binary that builds (compiles) the first source file having the reference relationship of the first function is a table of the location of the region where the first function is defined as an address value. (Hereinafter, referred to as an address table).
  • the first reference analyzer 133 extracts a first programming interface related to the first binary by using an address table included in the first binary.
  • the second reference analyzer 134 extracts a second programming interface related to the second binary.
  • the second programming interface refers to a reference relationship in which a file in which the second function is called must refer to a file in which the second function is defined, as one or more second functions included in the second binary are defined from an external file.
  • the second reference analyzer 134 may extract a programming interface of the second binary by using an address table included in the second binary.
  • the programming interface includes a function name and an address value of an area where the function is defined, and the function name and address value may be binary.
  • the determination unit 135 compares the extracted first programming interface and the second programming interface, and determines whether the first to second programming interfaces are completely the same.
  • the determination unit 135 sequentially extracts the function name and the address value included in the first programming interface, and separately compares whether the extracted function name and the address value are included in the second programming interface, thereby providing the first to second programming interfaces. It can be determined whether the two are the same.
  • the table processor 136 converts the first address table corresponding to the first programming interface into the second address table corresponding to the second programming interface.
  • the binary merging device 100 can add a module to be added without the source file of the built binary, and by merging the address table and the binary of the added module into the original binary, Modules can be added to the original binary.
  • the binary merging device 100 according to an embodiment of the present invention merges the binary of an additional module for obfuscating and decrypting the binary in the original binary, thereby preventing the application from being attacked by hackers or viruses. Can be.
  • the binary merging device 100 may add a security module to the binary of an application in a situation in which it is difficult to disclose a source file due to technical leakage, confidentiality protection, or the like.
  • the processor 137 generates a final binary obtained by merging the first binary and the second binary, and sets the entry point of the final binary to be the second binary.
  • the binary merging device 100 may generate an address table of an application without executing the first reference analyzer 133 and the determiner 135, and the second address corresponding to the second programming interface corresponding to the second binary. Can be replaced with a table.
  • the binary merging device 100 according to the embodiment of the present invention can pursue the original purpose of merging binary without a comparison procedure.
  • the binary merging device 100 stores and manages binaries of one or more applications, and in response to a download request from the user terminals 200 and 400, the binary merger 100 transmits the final binary of the application ( Not shown) may be further included.
  • the binary merging device 100 may further include a binary receiver (not shown) that receives the original binary of the application from the user terminals 200 and 400 of one or more administrators.
  • the binary merging device 100 merges a second binary, which is a security related module, into a first binary, which is an original binary of an application received from the user terminals 200 and 400 of an administrator, and requests a download request for the application to a user terminal. You can send the final merged binary.
  • FIG. 4 is a flowchart illustrating a binary merging method according to an embodiment of the present invention.
  • the binary merging method is an obfuscation step (S110), a binary generation step (S120), a first programming interface generation step (S130), a second programming interface generation step (S140).
  • the determination step S150 and the table processing unit S160 may be included.
  • the binary merging device 100 generates a second binary to be injected into a first binary that is an original binary of an application.
  • the binary merging device 100 obfuscates a first binary, which is an original binary of an application.
  • obfuscation is a kind of program conversion, which makes the code difficult to read, and aims to prevent an attack through reverse engineering.
  • the binary merging device 100 extracts a first programming interface related to the first binary.
  • the binary merging device 100 extracts a second programming interface related to the second binary.
  • the binary merging device 100 compares the extracted first programming interface and the second programming interface, and determines whether the first to second programming interfaces are completely the same.
  • the binary merging device 100 sets the first address table corresponding to the first programming interface to the second corresponding to the second programming interface. Replace with an address table.
  • FIG. 5 is a flowchart illustrating a method of executing a binary generated by the binary merging device 100.
  • a method of executing a binary includes a second binary execution step S210 and a first binary.
  • the decryption step S220, the address table replacement step S230, and the first binary execution step S240 may be included.
  • the user terminal Prior to step S210, the user terminal (200, 400) transmits a binary download request for the application to the binary merging device 100, in response to the binary download request, from the binary merging device 100 for the application You will receive a binary.
  • the user terminals 200 and 400 execute the binary of the application in response to the execution input for the user's application.
  • the second binary which is an entry point of the binary is executed.
  • the control unit of the user terminals 200 and 400 decodes the first binary.
  • the decoding process is a process of decoding the obfuscation of the first binary, which is performed by a method associated with the obfuscation method. For example, if the first binary is obfuscated using the symmetric key, the process of decoding the first binary is performed using the symmetric key, and if the first binary is obfuscated using the asymmetric key, obfuscation The first binary will be decrypted using the public key paired with the private key used in the process. As shown in Fig.
  • the second binary includes a decoding algorithm paired with an algorithm that obfuscates the first binary, and is used to decode the first binary.
  • the decryption logic is not limited to a specific encryption algorithm, and the binary merging apparatus and method according to the embodiment of the present invention may perform obfuscation using an encoding technique in order to shorten the decryption time.
  • the controller of the user terminal 200 or 400 replaces the address table included in the binary with a first address table corresponding to the first binary.
  • the first address table includes information on the definition area of at least one function included in the first binary, and may include a function name and an address value of the area where the function is defined.
  • control unit of the user terminals 200 and 400 executes the first binary.
  • 6 to 7 are diagrams illustrating data transmission and reception and operations between the binary merging device 100, the first user terminal 200, and the second user terminal 400.
  • the binary merging device 100 performs not only a function of storing and managing a distribution binary of an application, but also a function of generating a distribution binary of an application.
  • the binary merging device 100 receives a binary upload signal for the first application from the first user terminal 200 (S310).
  • the binary upload signal for the first application is a signal for uploading the binary of the first application to distribute the first application, and may include information about the first application and the binary of the first application.
  • a detailed description of the first application that is a description to be provided to the user, a developer, a developer, a purpose, a user review, a rating, a price information, and related content.
  • the binary merging device 100 generates a final binary in which a second binary having additional functions is merged into a first binary, which is an original binary of a first application, in response to the binary upload signal (S320).
  • the second binary may have security-related functionality.
  • the binary merging device 100 may obfuscate the original binary without merging the original binary, and merge additional binaries capable of decoding.
  • the binary merging device 100 may directly store and manage the final binary of the first application or transmit the final binary of the first application to a binary distribution device that manages a distribution version of the application.
  • the binary merging device 100 receives a download request for the first application from the second user terminal 400 (S330), in response to the download request, the second user terminal ( In step S340, the final binary of the first application is transmitted.
  • the second user terminal 400 receiving the received final binary executes the final binary for the first application (S350).
  • the second user terminal 400 executes the second binary included in the final binary, replaces the address table of the final binary with the address table for the first binary (S360), and executes the first binary (S370).
  • the binary distribution system 10 stores and manages one or more binaries received from a terminal of a developer or an administrator for each application, and is a security-related module for preventing forgery of the received one or more binaries. You can merge binaries. Through the merged security binaries, the final binaries downloaded to the user terminals 200 and 400 remain encrypted and can be protected from attack by malicious codes or viruses performed in real time.
  • the binary merging device 100 performs a function of generating a distribution binary of an application, and a separate binary distribution device performs a function of distributing a distribution binary of an application.
  • the binary merging device 100 receives a binary upload signal for a second application from the first user terminal 200 (S410).
  • the binary merging device 100 In response to the binary upload signal, the binary merging device 100 generates a final binary obtained by merging a second binary having an additional function with a first binary that is an original binary of a second application (S420).
  • the binary merging device 100 transmits the final binary of the second application to the binary distribution server 101 (S430).
  • the binary distribution server 101 receives a download request for the second application from the second user terminal 400 (S440), and in response to the download request, the binary distribution server 101 sends the final binary of the first application to the second user terminal 400. Transmit (S450).
  • the second user terminal 400 receiving the received final binary executes the final binary for the first application (S460).
  • the second user terminal 400 executes the second binary included in the final binary, replaces the address table of the final binary with an address table for the first binary (S470), and executes the first binary (S480).
  • the first user terminal and the second user terminal is meant to indicate that the user terminal is a different device from each other, and does not refer to the same terminal as the first user terminal and the second user terminal of FIG.
  • FIG. 8 is a diagram illustrating a structure of a user terminal.
  • the user terminal 200 may include a sensing unit 210, a communication unit 220, an output unit 230, a control unit 240, a user input unit 250, and A. It may include a / V (Audio / Video) input unit 260, a memory 270.
  • a / V Audio / Video
  • the sensing unit 210 obtains location information of the user terminal 200.
  • the sensing unit 210 may acquire movement speed information and movement time information, and determine location information of the changed user terminal 200.
  • the sensing unit 210 includes a geomagnetic sensor 211, an acceleration sensor 212, a temperature / humidity sensor 213, an infrared sensor 214, a gyroscope sensor 215, a position sensor (Eg, GPS) 216, barometric pressure sensor 217, proximity sensor 218, and RGB sensor (illuminance sensor) 219, but is not limited thereto. Since functions of the respective sensors can be intuitively deduced by those skilled in the art from the names, detailed descriptions thereof will be omitted.
  • the sensing unit 210 may obtain state information of the user terminal 200.
  • the sensing unit 210 may obtain information about at least one of the inclination of the user terminal 200, the direction in which the user terminal 200 is located, and the movement of the user terminal 200.
  • the sensing unit 210 may detect a user input.
  • the sensing unit 210 may obtain information about at least one of a detected time length of the user input and a type of the user input.
  • the communication unit 220 may include one or more components that enable communication between the user terminal 201 and another user terminal 202 or the user terminal 200 and the shopping service providing apparatus 100.
  • the communication unit 220 may include a short range communication unit 221, a mobile communication unit 222, and a broadcast receiving unit 223.
  • the short-range wireless communication unit 221 includes a Bluetooth communication unit, a Bluetooth low energy (BLE) communication unit, a near field communication unit (Near Field Communication unit), a WLAN (Wi-Fi) communication unit, a Zigbee communication unit, an infrared ray ( IrDA (Infrared Data Association) communication unit, WFD (Wi-Fi Direct) communication unit, UWB (ultra wideband) communication unit, Ant + communication unit and the like, but may not be limited thereto.
  • the mobile communication unit 222 transmits and receives a radio signal with at least one of a base station, an external terminal, and a server on a mobile communication network.
  • the wireless signal may include various types of data according to transmission and reception of a voice call signal, a video call call signal, or a text / multimedia message.
  • the broadcast receiving unit 223 receives a broadcast signal and / or broadcast related information from the outside through a broadcast channel.
  • the broadcast channel may include a satellite channel and a terrestrial channel.
  • the user terminal 200 may not include the broadcast receiver 223.
  • the output unit 230 may include a display unit 231, a sound output unit 232, a vibration motor 233, and the like.
  • the display unit 231 outputs information processed by the user terminal 200.
  • the user may view the screen provided by the shopping service providing apparatus 100 through the display unit 231.
  • the display unit 231 may be used as an input device in addition to the output device.
  • the display unit 231 may include a liquid crystal display, a thin film transistor-liquid crystal display, an organic light-emitting diode, a flexible display, and a three-dimensional display. 3D display, an electrophoretic display.
  • the user terminal 200 may include two or more display units 231 according to the implementation form of the user terminal 200. In this case, the two or more display units 231 may be disposed to face each other using a hinge.
  • the sound output unit 232 outputs audio data received from the communication unit 220 or stored in the memory 270. In addition, the sound output unit 232 outputs a sound signal related to a function (for example, a background sound output when the shopping application is executed and an effect sound generated each time an operation is performed in the shopping application) performed in the user terminal 200. do.
  • the sound output unit 232 may include a speaker, a buzzer, and the like.
  • the vibration motor 233 may output a vibration signal.
  • the vibration motor 233 may be a vibration signal corresponding to the output of audio data or image data (eg, an effect sound generated every time an operation is performed in a game application, an image changed as a result of performing an operation in a game application). You can output In addition, the vibration motor 233 may output a vibration signal when a touch is input to the touch screen.
  • the controller 240 typically controls the overall operation of the user terminal 200.
  • the controller 240 executes the programs stored in the memory 270 to detect the sensing unit 210, the communication unit 220, the output unit 230, the user input unit 250, and the A / V input unit 260. ),
  • the memory 270 may be controlled overall.
  • the user input unit 250 refers to a means for a user to input data for controlling the user terminal 200.
  • the user input unit 250 may include a key pad, a dome switch, a touch pad (contact capacitive type, pressure resistive layer type, infrared sensing type, surface ultrasonic conduction type, and integral type). Tension measurement method, piezo effect method, etc.), a jog wheel, a jog switch, and the like, but are not limited thereto.
  • the A / V input unit 260 is for inputting an audio signal or a video signal, and may include a camera 261 and a microphone 262.
  • the camera 261 may obtain an image frame such as a still image or a moving image through an image sensor in a video call mode or a photographing mode.
  • the image captured by the image sensor may be processed by the controller 240 or a separate image processor (not shown).
  • the image frame processed by the camera 261 may be stored in the memory 270 or transmitted to the outside through the communication unit 220. Two or more cameras 261 may be provided according to the configuration aspect of the terminal.
  • the microphone 262 receives an external sound signal and processes it into electrical voice data.
  • the microphone 262 may receive an acoustic signal from an external device or speaker.
  • the microphone 262 may use various noise removing algorithms for removing noise generated in the process of receiving an external sound signal.
  • the memory 270 may store a program for processing and controlling the controller 240, and input / output data (eg, a plurality of menus, a plurality of first hierarchical sub-menus corresponding to each of the plurality of menus); And a plurality of second hierarchical submenus corresponding to each of the plurality of first hierarchical submenus).
  • input / output data eg, a plurality of menus, a plurality of first hierarchical sub-menus corresponding to each of the plurality of menus
  • second hierarchical submenus corresponding to each of the plurality of first hierarchical submenus
  • the memory 270 may store metadata regarding the shopping application in advance. In addition, the memory 270 may store information regarding the length and type of the obtained user input. The memory 270 may store state information of the user terminal 200.
  • the memory 270 may be a flash memory type, a hard disk type, a multimedia card micro type, a card type memory (for example, SD or XD memory), RAM Random Access Memory (RAM) Static Random Access Memory (SRAM), Read-Only Memory (ROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), Programmable Read-Only Memory (PROM), Magnetic Memory, Magnetic Disk It may include at least one type of storage medium of the optical disk.
  • the user terminal 200 may operate a web storage or a cloud server that performs a storage function of the memory 270 on the Internet.
  • Programs stored in the memory 270 may be classified into a plurality of modules according to their functions.
  • the programs stored in the memory 270 may be classified into a UI module 271, a touch screen module 272, and a notification module 273. .
  • the UI module 271 may provide a specialized UI, GUI, and the like, which are linked to the user terminal 200 for each game application.
  • the touch screen module 272 may detect a touch gesture on the user's touch screen and transmit information about the touch gesture to the controller 240.
  • the touch screen module 272 according to an embodiment of the present invention may recognize and analyze a touch code.
  • the touch screen module 272 may be configured as separate hardware including a controller.
  • Various sensors may be provided inside or near the touch screen to detect a touch or proximity touch of the touch screen.
  • An example of a sensor for sensing a touch of a touch screen is a tactile sensor.
  • the tactile sensor refers to a sensor that senses the contact of a specific object to the extent that a person feels or more.
  • the tactile sensor may sense various information such as the roughness of the contact surface, the rigidity of the contact object, the temperature of the contact point, and the like.
  • an example of a sensor for sensing a touch of a touch screen is a proximity sensor.
  • the proximity sensor refers to a sensor that detects the presence or absence of an object approaching a predetermined detection surface or an object present in the vicinity without using a mechanical contact by using an electromagnetic force or infrared rays.
  • Examples of the proximity sensor include a transmission photoelectric sensor, a direct reflection photoelectric sensor, a mirror reflection photoelectric sensor, a high frequency oscillation proximity sensor, a capacitive proximity sensor, a magnetic proximity sensor, and an infrared proximity sensor.
  • the user's touch gesture may include tap, touch and hold, double tap, drag, pan, flick, drag and drop, and swipe.
  • the notification module 273 may generate a signal for notifying occurrence of an event of the user terminal 200.
  • the notification module 273 may output the notification signal in the form of a video signal through the display unit 231, may output the notification signal in the form of an audio signal through the sound output unit 232, or the vibration motor 233. Through the notification signal may be output in the form of a vibration signal.
  • Figure 9 is a view for explaining the structure of the binary
  • Figure 9 (a) is a view showing the structure of the first binary before merging the binary
  • Figure 9 (b) is a merge of the first binary and the second binary This figure shows the structure of the final binary.
  • the binary of the application may be implemented in the format of Elf.
  • the binary of the application may include an Elf header, a program header table, a .text, a .rodata, a .data, an import table, an export table, an injected code, and a section header table.
  • Elf header is divided into three areas: offset, field, and size.
  • Program header table refers to program header of executable or shared object file (object file, object file).
  • .rodata An area containing read-only data typically used for non-writable segments of an image of a process.
  • .data An area containing initialized data provided to the program memory area.
  • section header table An area containing a set of sections of a binary as a list.
  • Import Table The area that stores the location and name of the external function used by the binary.
  • 10 is a diagram showing a connection relationship between a code area of an binary and an address table.
  • the binary merging device replaces the address table 902 corresponding to the merged binary and then restores the original binary to the address table 901 for the normal operation of the merged binary. Can be done.
  • the address table 902 may call the definition of a function through an address value of an area defined in a library.
  • Embodiments according to the present invention described above may be implemented in the form of a computer program that can be executed through various components on a computer, such a computer program may be recorded on a computer readable medium.
  • the media may be magnetic media such as hard disks, floppy disks and magnetic tape, optical recording media such as CD-ROMs and DVDs, magneto-optical media such as floptical disks, and ROMs.
  • Hardware devices specifically configured to store and execute program instructions such as memory, RAM, flash memory, and the like.
  • the medium may include an intangible medium implemented in a form that can be transmitted on a network.
  • the medium may be a form of a software or an application that can be transmitted and distributed through a network.
  • the computer program may be specially designed and configured for the present invention, or may be known and available to those skilled in the computer software field.
  • Examples of computer programs may include not only machine code generated by a compiler, but also high-level language code executable by a computer using an interpreter or the like.
  • connection or connection members of the lines between the components shown in the drawings by way of example shows a functional connection and / or physical or circuit connections, in the actual device replaceable or additional various functional connections, physical It may be represented as a connection, or circuit connections.
  • such as "essential”, “important” may not be a necessary component for the application of the present invention.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Stored Programmes (AREA)
  • User Interface Of Digital Computer (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

본 발명에 의하면 애플리케이션의 원 바이너리인 제1 바이너리와 애플리케이션에 추가하고자 하는 제2 바이너리를 소스 코드의 수정 없이 바이너리 상태로 병합시킬 수 있다.

Description

바이너리 병합 장치, 방법 및 컴퓨터 프로그램
본 발명은 바이너리 병합 장치, 방법 및 컴퓨터 프로그램에 관한 것으로, 보다 구체적으로는 애플리케이션의 원 바이너리인 제1 바이너리와 애플리케이션에 추가하고자 하는 제2 바이너리를 소스 코드의 수정 없이 바이너리 상태로 병합시키는 바이너리 병합 장치, 방법 및 컴퓨터 프로그램에 관한 것이다.
현재 대부분의 소프트웨어 개발절차 및 개발에 사용되는 도구들을 활용한 개발작업에서 개발자들은 요구 제기자(비즈니스 실무 담당자) 또는 소프트웨어 설계자의 지시를 받아 비즈니스 로직을 구현하기 위한 소스 코딩 작업을 수행해야 하며, 그러한 비즈니스 로직 구현에 필요한 일체의 데이터베이스 I/O, 하드웨어 제어, 운영체제 제어, 보안관리 등의 기능을 단위 모듈마다 일일이 만들어주어야 한다.
본 발명은 애플리케이션의 원 바이너리인 제1 바이너리와 애플리케이션에 추가하고자 하는 제2 바이너리를 소스 코드의 수정 없이 바이너리 상태로 병합시키는 바이너리 병합 장치, 방법 및 컴퓨터 프로그램을 제공하는 것을 일 목적으로 한다.
본 발명의 실시예에 따른 제1 바이너리를 저장하는 메모리; 및 제어부;를 포함하는 바이너리 병합 장치가 바이너리를 병합하는 방법은 상기 제어부가 상기 제1 바이너리에 주입할 제2 바이너리를 생성하는 단계; 상기 제어부가 제1 프로그래밍 인터페이스를 참조하는 애플리케이션의 제1 바이너리를 난독화시키는 단계; 상기 제어부가 상기 제1 바이너리와 관련된 제1 프로그래밍 인터페이스를 생성하는 단계; 상기 제어부가 상기 제2 바이너리와 관련된 제2 프로그래밍 인터페이스를 생성하는 단계; 상기 제어부가 상기 제1 프로그래밍 인터페이스 및 상기 제2 프로그래밍 인터페이스를 비교하여, 참조되는 함수가 완전히 동일한지 여부를 판단하는 단계; 상기 판단 결과, 제2 프로그래밍 인터페이스 및 제1 프로그래밍 인터페이스가 완전히 동일하지 않은 경우, 상기 제어부가 상기 제1 프로그래밍 인터페이스와 대응되는 제1 어드레스 테이블을 상기 제2 프로그래밍 인터페이스와 대응되는 제2 어드레스 테이블로 교체하는 단계; 및 상기 제어부가 상기 제1 바이너리 및 상기 제2 바이너리를 병합한 최종 바이너리를 생성하고, 상기 최종 바이너리의 엔트리 포인트(entry point)가 제2 바이너리가 되도록 설정하는 단계;를 포함할 수 있다.
본 실시예에서, 상기 제1 바이너리 또는 상기 제2 바이너리는 모바일 환경에서 실행되는 바이너리일 수 있다.
본 실시예에서, 상기 제2 바이너리는 상기 제1 바이너리를 복호화하는 함수를 포함하는 소스 파일로부터 생성한 바이너리일 수 있다.
본 실시예에서, 상기 제2 바이너리는 어셈블리어로 구현된 바이너리일 수 있다.
본 실시예에서 상기 제2 바이너리는 상기 제1 바이너리 중 실행 바이너리 파일에 포함될 수 있도록 생성된 바이너리일 수 있다.
본 실시예에서, 상기 제1 어드레스 테이블은 상기 제1 프로그래밍 인터페이스에 포함된 함수가 정의된 영역의 주소값을 포함하고, 상기 제2 어드레스 테이블은 상기 제2 프로그래밍 인터페이스에 포함된 함수가 정의된 영역의 주소값을 포함할 수 있다.
본 발명의 실시예에 따른 바이너리 병합 장치는 제1 프로그래밍 인터페이스를 참조하는 애플리케이션의 제1 바이너리를 난독화시키는 난독화부; 상기 제1 바이너리에 주입할 제2 바이너리를 생성하는 코드 생성부; 상기 제1 바이너리와 관련된 제1 프로그래밍 인터페이스를 생성하는 제1 참조 분석부; 상기 제2 바이너리와 관련된 제2 프로그래밍 인터페이스를 생성하는 제2 참조 분석부; 상기 제1 프로그래밍 인터페이스 및 상기 제2 프로그래밍 인터페이스를 비교하여, 참조되는 함수가 완전히 동일한지 여부를 판단하는 판단부; 상기 판단 결과, 제2 프로그래밍 인터페이스 및 제1 프로그래밍 인터페이스가 완전히 동일하지 않은 경우, 상기 제1 프로그래밍 인터페이스와 대응되는 제1 어드레스 테이블을 상기 제2 프로그래밍 인터페이스와 대응되는 제2 어드레스 테이블로 교체하는 테이블 처리부; 상기 애플리케이션의 엔트리 포인트가 제2 바이너리가 되도록 설정하는 처리부;를 포함할 수 있다.
본 발명의 실시예에 따른 컴퓨터 프로그램은 컴퓨터를 이용하여 본 발명의 실시예에 따른 바이너리를 병합하는 방법 중 어느 하나의 방법을 실행시키기 위하여 매체에 저장될 수 있다.
이 외에도, 본 발명을 구현하기 위한 다른 방법, 다른 시스템 및 상기 방법을 실행하기 위한 컴퓨터 프로그램을 기록하는 컴퓨터 판독 가능한 기록 매체가 더 제공된다.
전술한 것 외의 다른 측면, 특징, 이점이 이하의 도면, 특허청구범위 및 발명의 상세한 설명으로부터 명확해 질 것이다.
본 발명에 의하면 애플리케이션의 원 바이너리인 제1 바이너리와 애플리케이션에 추가하고자 하는 제2 바이너리를 소스 코드의 수정 없이 바이너리 상태로 병합시킬 수 있다.
도 1은 본 발명의 실시예에 따른 바이너리 배포 시스템을 나타내는 도면이다.
도 2는 본 발명의 실시예에 따른 바이너리 병합 장치를 나타내는 블록도이다.
도 3은 제어부의 구조를 나타내는 도면이다.
도 4는 본 발명의 실시예에 따른 바이너리 병합 방법을 나타내는 흐름도이다.
도 5는 바이너리 병합 장치에 의해 생성된 바이너리가 실행되는 방법을 나타내는 흐름도이다.
도 6은 바이너리 병합 장치와 제1 사용자 단말기, 제2 사용자 단말기 사이의 데이터 송수신 및 동작을 나타내는 도면이다.
도 7은 사용자 단말기의 구조를 나타내는 도면이다.
도 8은 바이너리의 구조를 설명하기 위한 도면이고, 도 8(a)는 바이너리를 병합하기 전 제1 바이너리의 구조를 나타내는 도면이고, 도 8(b)는 제1 바이너리 및 제2 바이너리를 병합한 최종 바이너리의 구조를 나타내는 도면이다.
도 9는 바이너리의 코드 영역 및 어드레스 테이블 사이의 연결 관계를 나타내는 도면이다.
도 10은 바이너리의 코드 영역 및 어드레스 테이블 사이의 연결 관계를 나타내는 도면이다.
본 발명은 다양한 변환을 가할 수 있고 여러 가지 실시예를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 본 발명의 효과 및 특징, 그리고 그것들을 달성하는 방법은 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 다양한 형태로 구현될 수 있다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예들을 상세히 설명하기로 하며, 도면을 참조하여 설명할 때 동일하거나 대응하는 구성 요소는 동일한 도면부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.
이하의 실시예에서, 제1, 제2 등의 용어는 한정적인 의미가 아니라 하나의 구성 요소를 다른 구성 요소와 구별하는 목적으로 사용되었다.
이하의 실시예에서, 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는한, 복수의 표현을 포함한다.
이하의 실시예에서, 포함하다 또는 가지다 등의 용어는 명세서 상에 기재된 특징, 또는 구성요소가 존재함을 의미하는 것이고, 하나 이상의 다른 특징을 또는 구성요소가 부가될 가능성을 미리 배제하는 것은 아니다.
어떤 실시예가 달리 구현 가능한 경우에 특정한 공정 순서는 설명되는 순서와 다르게 수행될 수도 있다. 예를 들어, 연속하여 설명되는 두 공정이 실질적으로 동시에 수행될 수도 있고, 설명되는 순서와 반대의 순서로 진행될 수 있다.
이하의 실시예에서, "회로"는, 예를 들어, 프로그램가능한 회로에 의해 실행되는 인스트럭션을 저장하는 하드와이어드 회로, 프로그램가능한 회로, 상태 머신 회로, 및/또는 펌웨어를 단독으로 또는 임의의 조합으로 포함할 수 있다. 애플리케이션은 호스트 프로세서 또는 다른 프로그램가능한 회로와 같은 프로그램가능한 회로 상에서 실행될 수 있는 코드 또는 인스트럭션으로서 구현될 수 있다. 본원의 임의의 실시예에서 사용되는 바와 같은, 모듈은,회로로서 구현될 수 있다. 회로는 집적 회로 칩과 같은 집적 회로로서 구현될 수 있다.
이하의 실시예에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 명세서에 기재된 "…부", "…기", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
도 1은 본 발명의 실시예에 따른 바이너리 배포 시스템(1)을 나타내는 도면이다.
도 1을 참조하면, 본 발명의 실시예에 따른 바이너리 배포 시스템(1)은 바이너리 병합 장치(100), 사용자 단말기(200, 400), 통신망(300)을 포함할 수 있다.
바이너리 병합 장치(100)는 제1 바이너리 및 제2 바이너리를 병합하는 기능을 수행한다. 바이너리 병합 장치(100)는 제1 바이너리의 난독화를 위한 제2 바이너리를 생성하여, 제1 바이너리 및 제2 바이너리를 병합시킨 최종 바이너리를 생성할 수 있다. 바이너리 병합 장치(100)에 의해 생성된 애플리케이션의 최종 바이너리의 엔트리 포인트(entry point)는 제2 바이너리가 된다. 또한, 바이너리 병합 장치(100)를 통해, 생성된 제2 바이너리는 제1 바이너리를 복호화 하는 기능을 수행하고, 제2 바이너리를 위한 어드레스 테이블에서 제1 바이너리를 위한 어드레스 테이블로 교체하는 기능을 수행한다.
또한, 바이너리 병합 장치(100)는 하나 이상의 애플리케이션의 원 바이너리를 관리자 단말기(200, 400)로부터 수신하고, 원 바이너리를 난독화 하고, 난독화된 바이너리의 해독을 위한 보안 바이너리를 생성하고, 최종적으로, 애플리케이션 각각의 원 바이너리에 보안 바이너리를 병합한 최종 바이너리를 생성하게 된다. 여기서, 관리자는 애플리케이션의 바이너리를 생성하는 자이거나, 바이너리 병합 장치(100)를 관리하는 자 일 수 있다.
사용자는 사용자 단말기(200, 400)을 통해 어플리케이션을 위한 바이너리를 다운로드 받는다. 사용자 단말기(200, 400)는 다운로드 된 바이너리를 실행시킨다.
복수 개의 사용자 단말기(200)들은 유무선 통신 환경에서 웹 서비스를 이용할 수 있는 통신 단말기를 의미한다. 여기서, 사용자 단말기(200)는 사용자의 퍼스널 컴퓨터(201)일 수도 있고, 또는 사용자의 휴대용 단말(202)일 수도 있다. 도 1에서는 휴대용 단말기(202)가 스마트폰으로 도시되었지만, 본 발명의 사상은 이에 제한되지 아니하며, 상술한 바와 같이 웹 브라우징이 가능한 애플리케이션을 탑재한 단말은 제한 없이 차용될 수 있다.
이를 더욱 상세히 설명하면, 사용자 단말기(200)는 컴퓨터(예를 들면, 데스크톱, 랩톱, 태블릿 등), 미디어 컴퓨팅 플랫폼(예를 들면, 케이블, 위성 셋톱박스, 디지털 비디오 레코더), 핸드헬드 컴퓨팅 디바이스(예를 들면, PDA, 이메일 클라이언트 등), 핸드폰의 임의의 형태, 또는 다른 종류의 컴퓨팅 또는 커뮤니케이션 플랫폼의 임의의 형태를 포함할 수 있으나, 본 발명이 이에 한정되는 것은 아니다.
한편, 통신망(300)은 복수 개의 사용자 단말기(200)들과 바이너리 병합 장치(100)를 연결하는 역할을 수행한다. 즉, 통신망(300)은 사용자 단말기(200)들이 바이너리 병합 장치(100)에 접속한 후 데이터를 송수신할 수 있도록 접속 경로를 제공하는 통신망을 의미한다. 통신망(300)은 예컨대 LANs(Local Area Networks), WANs(Wide Area Networks), MANs(Metropolitan Area Networks), ISDNs(Integrated Service Digital Networks) 등의 유선 네트워크나, 무선 LANs, CDMA, 블루투스, 위성 통신 등의 무선 네트워크를 망라할 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
도 2는 본 발명의 실시예에 따른 바이너리 병합 장치(100)를 나타내는 블록도이다.
도 2를 참조하면, 바이너리 병합 장치(100)는 통신부(110), 데이터베이스(120), 제어부(130)를 포함할 수 있다.
통신부(110)는 바이너리 병합 장치(100)와 적어도 하나의 사용자 단말기(200) 간의 통신을 가능하게 하는 하나 이상의 구성요소를 포함할 수 있다. 예를 들어, 통신부(110)는 블루투스 통신부, BLE(Bluetooth Low Energy) 통신부, 근거리 무선 통신부(Near Field Communication unit), WLAN(와이파이) 통신부, 지그비(Zigbee) 통신부, 적외선(IrDA, infrared Data Association) 통신부, WFD(Wi-Fi Direct) 통신부, UWB(ultra wideband) 통신부, Ant+ 통신부 등을 포함하거나, 이동 통신망 상에서 기지국, 외부의 단말, 서버 중 적어도 하나와 무선 신호를 송수신하는 통신부를 포함할 수 있으나, 이에 한정되는 것은 아니다. 여기서, 무선 신호는 음성 호 신호, 화상 통화 호 신호 또는 문자/멀티미디어 메시지 송수신에 따른 다양한 형태의 데이터를 포함할 수 있다.
데이터베이스(120)는 바이너리 병합 장치(100)가 수신하고 전송해야 하는 바이너리 및 바이너리 관련 데이터를 저장 관리 하는 기능을 수행한다. 도 2에는 데이터베이스(120)가 바이너리 병합 장치(100)의 내부에 구비된 것으로 도시되었지만, 이는 설명의 편의를 위한 것일 뿐, 데이터베이스(120)는 바이너리 병합 장치(100)의 외부의 장치에 구비되어 있을 수 있다. 데이터베이스(120)는 플래시 메모리 타입(flash memory type), 하드디스크 타입(hard disk type), 멀티미디어 카드 마이크로 타입(multimedia card micro type), 카드 타입의 메모리(예를 들어 SD 또는 XD 메모리 등), 램(RAM, Random Access Memory) SRAM(Static Random Access Memory), 롬(ROM, Read-Only Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory), PROM(Programmable Read-Only Memory), 자기 메모리, 자기 디스크, 광디스크 중 적어도 하나의 타입의 저장매체를 포함할 수 있다. 또한, 바이너리 병합 장치(100)는 인터넷(internet)상에서 데이터베이스(120)의 저장 기능을 수행하는 웹 스토리지(web storage) 또는 클라우드 서버를 운영할 수도 있다.
제어부(130)는 통상적으로 바이너리 병합 장치(100)의 전반적인 동작을 제어한다. 예를 들어, 제어부(130)는, 데이터베이스(120)에 저장된 프로그램들을 실행함으로써, 통신부(110), 데이터베이스(120) 등을 전반적으로 제어할 수 있다. 제어부(130)는 프로세서(processor)와 같이 데이터를 처리할 수 있는 모든 종류의 장치를 포함할 수 있다. 여기서, '프로세서(processor)'는, 예를 들어 프로그램 내에 포함된 코드 또는 명령으로 표현된 기능을 수행하기 위해 물리적으로 구조화된 회로를 갖는, 하드웨어에 내장된 데이터 처리 장치를 의미할 수 있다. 이와 같이 하드웨어에 내장된 데이터 처리 장치의 일 예로써, 마이크로프로세서(microprocessor), 중앙처리장치(central processing unit: CPU), 프로세서 코어(processor core), 멀티프로세서(multiprocessor), ASIC(application-specific integrated circuit), FPGA(field programmable gate array) 등의 처리 장치를 망라할 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
제어부(130)의 구조를 상세히 설명한 도 3을 참조하면, 제어부(130)는 애플리케이션의 원 바이너리인 제1 바이너리와 추가 모듈에 대한 제2 바이너리를 병합하는 기능을 수행하고자, 난독화부(131), 코드 생성부(132), 제1 참조 분석부(133), 제2 참조 분석부(134), 판단부(135), 테이블 처리부(136), 처리부(137)를 포함할 수 있다. 여기서, 병합되는 제1 바이너리 및 제2 바이너리는 모바일 환경, 예를 들어 스마트 폰, 휴대폰 등에서 실행되는 바이너리 일 수 있다.
코드 생성부(131)는 애플리케이션의 원 바이너리인 제1 바이너리에 주입할 제2 바이너리를 생성한다. 여기서, 제2 바이너리는 애플리케이션의 원 바이너리인 제1 바이너리를 복호화하기 위한 소스 파일을 빌딩한 파일로서, 제1 바이너리를 복호화하는 함수, 제2 바이너리를 위한 어드레스 테이블을 제1 바이너리를 위한 어드레스 테이블로 교체할 수 있는 함수를 포함하여 구현될 수 있다. 제2 바이너리는 제1 바이너리를 위한 프로그래밍 인터페이스(programming interface)와 다른 프로그래밍 인터페이스를 참조할 수 있으며, 제2 바이너리의 프로그래밍 인터페이스의 올바른 참조를 위해서, 프로그래밍 인터페이스에 포함된 함수가 정의된 영역의 주소값을 포함하는 어드레스 테이블을 생성할 수 있고, 제1 바이너리를 위한 어드레스 테이블로 다시 원복 하는 기능을 구현될 수 있다. 또한, 제2 바이너리는 어드레스 테이블의 교체 및 원복과 관련된 코드를 포함할 수 있다. 좀더 구체적으로, 제2 바이너리는 애플리케이션의 원 바이너리인 제1 바이너리의 실행 전, 제1 바이너리와 대응되는 어드레스 테이블로 원복하는 코드를 포함할 수 있다. 특히, 제2 바이너리는 컴퓨터에서 일을 수행하는 프로그램을 작성하기 위해 사용되는 기호 체계로 작성되며, 어셈블리어, Fortran, C, C++, JAVA 등의 언어로 구현될 수 있으나, 이에 한정되지 않는다.
난독화부(132)는 애플리케이션의 원 바이너리인 제1 바이너리를 난독화시킨다. 여기서, 난독화는 프로그램 변환의 일종으로 코드를 읽기 어렵게 함으로서 역공학(reverse engineering)을 통한 공격을 막기 위한 목적으로 한다. 난독화 기술은 구획 난독화(layout obfuscation), 데이터 난독화(data obfuscation), 집합 난독화(aggregation obfuscation), 제어 난독화(control obfuscation)이 있다. 각각의 난독화 기술은 당해 기술분야에 통상의 지식을 가진 자에게 통상의 것으로, 대칭키를 이용한 난독화, 비대칭키를 이용한 난독화 중 하나의 방법으로 수행될 것이다.
제1 참조 분석부(133)는 상기 제1 바이너리와 관련된 제1 프로그래밍 인터페이스를 추출한다. 제1 바이너리의 소스인 제1 소스 파일에 포함된 하나 이상의 함수는 호출되는 위치와 정의되는 위치가 다를 수 있는데, 이때 호출되는 파일 내에 정의되지 않은 제1 함수의 실행을 위해서, 제1 소스 파일은 제1 함수가 정의된 파일을 참조해야 한다. 제1 함수의 실행을 위해서, 정의된 파일을 참조하는 것을 프로그래밍 인터페이스라 한다. 제1 함수의 참조 관계를 가지는 제1 소스 파일을 빌드(컴파일)한 제1 바이너리는 제1 함수가 정의된 파일을 신속하게 호출하기 위해서, 제1 함수가 정의된 영역의 위치를 주소값으로 테이블(이하, 어드레스 테이블)로 하여 포함하게 된다. 제1 참조 분석부(133)는 제1 바이너리에 포함된 어드레스 테이블을 활용하여, 제1 바이너리와 관련된 제1 프로그래밍 인터페이스를 추출한다.
제2 참조 분석부(134)는 상기 제2 바이너리와 관련된 제2 프로그래밍 인터페이스를 추출한다. 제2 프로그래밍 인터페이스는 제2 바이너리에 포함된 하나 이상의 제2 함수가 외부의 파일로부터 정의됨에 따라 제2 함수가 정의된 파일을 제2 함수가 호출되는 파일이 참조해야 하는 참조 관계를 말한다. 제2 참조 분석부(134)는 제2 바이너리에 포함된 어드레스 테이블을 활용하여, 제2 바이너리의 프로그래밍 인터페이스를 추출할 수 있다. 여기서, 프로그래밍 인터페이스는 함수명, 함수가 정의된 영역의 주소값을 매칭시켜 포함하고 있으며, 함수명, 및 주소값은 이진값으로 이루어질 수 있다.
판단부(135)는 추출한 제1 프로그래밍 인터페이스 및 제2 프로그래밍 인터페이스 사이를 비교하여, 제1 내지 제2 프로그래밍 인터페이스가 완전히 동일한지 여부를 판단한다. 판단부(135)는 제1 프로그래밍 인터페이스에 포함된 함수명 및 주소값을 순차적으로 추출하고, 추출된 함수명 및 주소값이 제2 프로그래밍 인터페이스에 포함되었는지 여부를 개별 비교함으로써, 제1 내지 제2 프로그래밍 인터페이스 간의 동일 여부를 판단할 수 있다.
테이블 처리부(136)는 상기 판단 결과, 제1 내지 제2 프로그래밍 인터페이스가 완전히 동일하지 않은 경우, 상기 제1 프로그래밍 인터페이스와 대응되는 제1 어드레스 테이블을 상기 제2 프로그래밍 인터페이스와 대응되는 제2 어드레스 테이블로 교체한다. 이를 통해, 본 발명의 실시예에 따른 바이너리 병합 장치(100)는 빌드된 바이너리의 소스 파일 없이 추가하고자 하는 모듈을 추가할 수 있게 되며, 추가된 모듈의 어드레스 테이블 및 바이너리를 원 바이너리에 병합함으로써, 원 바이너리에 모듈 추가가 가능하게 된다. 특히, 본 발명의 실시예에 따른 바이너리 병합 장치(100)는 원 바이너리에 바이너리의 난독화 및 복호화를 위한 추가 모듈의 바이너리를 병합함으로써, 애플리케이션이 해커들의 공격, 바이러스의 공격 등을 받는 것을 방지할 수 있다. 또한, 본 발명의 실시예에 따른 바이너리 병합 장치(100)는 기술 유출, 기밀 보호 등의 이유로 소스 파일의 공개가 어려운 상황에서, 애플리케이션의 바이너리에 대하여 보안 모듈을 추가할 수 있게 된다.
처리부(137)는 상기 제1 바이너리 및 상기 제2 바이너리를 병합한 최종 바이너리를 생성하고, 상기 최종 바이너리의 엔트리 포인트(entry point)가 제2 바이너리가 되도록 설정한다.
다른 실시예에서, 바이너리 병합 장치(100)는 제1 참조 분석부(133) 및 판단부(135)의 실행 없이 애플리케이션의 어드레스 테이블을 제2 바이너리와 대응되는 제2 프로그래밍 인터페이스와 대응되는 제2 어드레스 테이블로 교체할 수 있다. 이를 통해, 본 발명의 실시예에 따른 바이너리 병합 장치(100)는 비교 절차 없이 바이너리의 병합이라는 원래의 목적을 추구할 수 있게 된다.
또한, 선택적 실시예에서, 바이너리 병합 장치(100)는 하나 이상의 애플리케이션의 바이너리를 저장 관리하며, 사용자 단말기(200, 400)로부터의 다운로드 요청과 대응하여, 애플리케이션의 최종 바이너리를 전송하는 바이너리 전송부(미도시)를 더 포함할 수 있다. 또한, 바이너리 병합 장치(100)는 하나 이상의 관리자의 사용자 단말기(200, 400)로부터 애플리케이션의 원 바이너리를 수신하는 바이너리 수신부(미도시)를 더 포함할 수 있다. 바이너리 병합 장치(100)는 관리자의 사용자 단말기(200, 400)로부터 수신한 애플리케이션의 원 바이너리인 제1 바이너리에 보안 관련 모듈인 제2 바이너리를 병합하고, 상기 애플리케이션에 대한 다운로드 요청을 한 사용자 단말기로 병합한 최종 바이너리를 전송할 수 있다.
도 4는 본 발명의 실시예에 따른 바이너리 병합 방법을 나타내는 흐름도이다.
도 4를 참조하면, 본 발명의 실시예에 따른 바이너리 병합 방법은 난독화 단계(S110), 바이너리 생성 단계(S120), 제1 프로그래밍 인터페이스 생성 단계(S130), 제2 프로그래밍 인터페이스 생성 단계(S140), 판단 단계(S150), 테이블 처리부(S160)를 포함할 수 있다.
S110에서는 바이너리 병합 장치(100)는 애플리케이션의 원 바이너리인 제1 바이너리에 주입할 제2 바이너리를 생성한다.
S120에서는 바이너리 병합 장치(100)는 애플리케이션의 원 바이너리인 제1 바이너리를 난독화시킨다. 여기서, 난독화는 프로그램 변환의 일종으로 코드를 읽기 어렵게 함으로서 역공학(reverse engineering)을 통한 공격을 막기 위한 목적으로 한다.
S130에서는 바이너리 병합 장치(100)는 상기 제1 바이너리와 관련된 제1 프로그래밍 인터페이스를 추출한다.
S140에서는 바이너리 병합 장치(100)는 상기 제2 바이너리와 관련된 제2 프로그래밍 인터페이스를 추출한다.
S150에서는 바이너리 병합 장치(100)는 추출한 제1 프로그래밍 인터페이스 및 제2 프로그래밍 인터페이스 사이를 비교하여, 제1 내지 제2 프로그래밍 인터페이스가 완전히 동일한지 여부를 판단한다.
S160에서는 바이너리 병합 장치(100)는 상기 판단 결과, 제1 내지 제2 프로그래밍 인터페이스가 완전히 동일하지 않은 경우, 상기 제1 프로그래밍 인터페이스와 대응되는 제1 어드레스 테이블을 상기 제2 프로그래밍 인터페이스와 대응되는 제2 어드레스 테이블로 교체한다.
도 5는 바이너리 병합 장치(100)에 의해 생성된 바이너리가 실행되는 방법을 나타내는 흐름도이다.
바이너리 병합 장치(100)에 의해 생성된 바이너리는 사용자 단말기(200, 400)로 전송되고, 실행되는데, 도 5를 참조하면, 바이너리가 실행되는 방법은 제2 바이너리 실행 단계(S210), 제1 바이너리 복호화 단계(S220), 어드레스 테이블 교체 단계(S230), 제1 바이너리 실행 단계(S240)를 포함할 수 있다.
S210 단계에 앞서, 사용자 단말기(200, 400)는 바이너리 병합 장치(100)로 애플리케이션에 대한 바이너리 다운로드 요청을 전송하고, 상기 바이너리 다운로드 요청의 응답으로, 상기 바이너리 병합 장치(100)로부터 상기 애플리케이션에 대한 바이너리를 수신하게 된다.
S210에서는 사용자 단말기(200, 400)는 사용자의 애플리케이션에 대한 실행 입력과 대응하여, 상기 애플리케이션의 바이너리를 실행 시킨다. 이때, 바이너리 병합 장치(100)에 의해 수신된 바이너리의 코드에 따라, 바이너리의 엔트리 포인트(entry point)인 제2 바이너리를 실행 시킨다.
S220에서는 사용자 단말기(200, 400)의 제어부는 제1 바이너리를 복호화 하게 된다. 여기서, 복호화 과정은 제1 바이너리의 난독화를 해독하는 과정으로서, 난독화의 방법과 연관되는 방법으로 수행된다. 예를 들어, 대칭키를 이용하여 제1 바이너리가 난독화가 이루어 졌다면, 대칭키를 이용하여 제1 바이너리가 복호화하는 과정이 수행되고, 비대칭키를 이용하여 제1 바이너리가 난독화가 이루어졌다면, 난독화 과정에서 이용된 개인키와 짝을 이루는 공개키를 이용하여 제1 바이너리가 복호화될 것이다. 제2 바이너리는 도 3에 도시된 바와 같이, 제1 바이너리를 난독화시킨 알고리즘과 쌍이 되는 복호화 알고리즘을 포함하고 있어, 제1 바이너리를 복호화하는데 이용된다. 복호화 로직은 특정 암호화 알고리즘에 국한되지 않으며, 본 발명의 실시예에 따른 바이너리 병합 장치 및 방법은 복호화 시간을 단축하기 위해서, 인코딩 기법을 이용한 난독화를 수행할 수 있다.
S230에서는 사용자 단말기(200, 400)의 제어부는 바이너리에 포함된 어드레스 테이블을 제1 바이너리와 대응되는 제1 어드레스 테이블로 교체한다. 제1 어드레스 테이블은 제1 바이너리에 포함된 하나 이상의 함수의 정의 영역에 대한 정보를 포함하고 있으며, 함수명, 함수가 정의된 영역의 주소값을 포함할 수 있다.
S240에서는 사용자 단말기(200, 400)의 제어부는 제1 바이너리를 실행한다.
도 6 내지 도 7은 바이너리 병합 장치(100)와 제1 사용자 단말기(200), 제2 사용자 단말기(400)사이의 데이터 송수신 및 동작을 나타내는 도면이다.
도 6에 개시된 실시예에 따르면, 바이너리 병합 장치(100)는 애플리케이션의 배포 바이너리를 저장 관리 하는 기능 뿐만 아니라, 애플리케이션의 배포 바이너리를 생성하는 기능을 수행한다.
바이너리 병합 장치(100)는 제1 사용자 단말기(200)로부터 제1 애플리케이션에 대한 바이너리 업로드 신호를 수신한다(S310). 여기서, 제1 애플리케이션에 대한 바이너리 업로드 신호는 제1 애플리케이션을 배포하기 위해서, 제1 애플리케이션의 바이너리를 업로드하기 위한 신호로서, 제1 애플리케이션에 대한 정보, 제1 애플리케이션의 바이너리를 포함할 수 있으며, 또한, 사용자에게 제공할 설명인 제1 애플리케이션의 상세 설명, 개발자, 개발업체, 용도, 사용자 리뷰, 평점, 가격 정보, 관련 콘텐츠 등을 포함할 수 있다.
바이너리 병합 장치(100)는 바이너리 업로드 신호와 대응하여, 제1 애플리케이션의 원 바이너리인 제1 바이너리에 추가 기능을 가지는 제2 바이너리를 병합한 최종 바이너리를 생성한다(S320). 특히, 제2 바이너리는 보안 관련 기능을 가질 수 있다. 이를 통해, 바이너리 병합 장치(100)는 원 바이너리의 디코딩 없이 원 바이너리를 난독화하고, 복호화할 수 있는 추가 바이너리를 병합 시킬 수 있다. 바이너리 병합 장치(100)는 제1 애플리케이션의 최종 바이너리를 직접 저장 관리하거나, 제1 애플리케이션의 최종 바이너리를 애플리케이션의 배포 버전을 관리하는 바이너리 배포 장치로 전송할 수 있다.
바이너리의 배포 과정에 대해서 설명하면, 바이너리 병합 장치(100)는 제2 사용자 단말기(400)로부터 제1 애플리케이션에 대한 다운로드 요청을 수신하고(S330), 상기 다운로드 요청과 대응하여, 제2 사용자 단말기(400)로 제1 애플리케이션의 최종 바이너리를 전송한다(S340).
수신한 최종 바이너리를 수신한 제2 사용자 단말기(400)는 제1 애플리케이션에 대한 최종 바이너리를 실행한다(S350). 제2 사용자 단말기(400)는 최종 바이너리에 포함된 제2 바이너리를 실행하고, 최종 바이너리의 어드레스 테이블을 제1 바이너리를 위한 어드레스 테이블로 교체하고(S360), 제1 바이너리를 실행한다(S370).
이렇듯, 본 발명의 실시예에 따른 바이너리 배포 시스템(10)은 개발자 또는 관리자의 단말기로부터 수신한 하나 이상의 바이너리를 애플리케이션별로 저장 관리하고, 수신한 하나 이상의 바이너리의 위변조를 방지하기 위한 보안 관련 모듈인 보안 바이너리를 병합할 수 있다. 병합된 보안 바이너리를 통해, 사용자 단말기(200, 400)에 다운로드된 최종 바이너리는 암호화된 상태를 유지하게 되고, 실시간으로 행해지는 악성 코드 또는 바이러스의 공격으로부터 보호될 수 있다.
도 7에 개시된 실시예에 따르면, 바이너리 병합 장치(100)는 애플리케이션의 배포 바이너리를 생성하는 기능을 수행하고, 별도의 바이너리 배포 장치가 애플리케이션의 배포 바이너리를 배포하는 기능을 수행한다.
바이너리 병합 장치(100)는 제1 사용자 단말기(200)로부터 제2 애플리케이션에 대한 바이너리 업로드 신호를 수신한다(S410).
바이너리 병합 장치(100)는 바이너리 업로드 신호와 대응하여, 제2 애플리케이션의 원 바이너리인 제1 바이너리에 추가 기능을 가지는 제2 바이너리를 병합한 최종 바이너리를 생성한다(S420).
바이너리의 배포 과정에 대해서 설명하면, 바이너리 병합 장치(100)는 바이너리 배포 서버(101)로 제2 애플리케이션의 최종 바이너리를 전송한다(S430). 바이너리 배포 서버(101)는 제2 사용자 단말기(400)로부터 제2 애플리케이션에 대한 다운로드 요청을 수신하고(S440), 상기 다운로드 요청과 대응하여, 제2 사용자 단말기(400)로 제1 애플리케이션의 최종 바이너리를 전송한다(S450).
수신한 최종 바이너리를 수신한 제2 사용자 단말기(400)는 제1 애플리케이션에 대한 최종 바이너리를 실행한다(S460). 제2 사용자 단말기(400)는 최종 바이너리에 포함된 제2 바이너리를 실행하고, 최종 바이너리의 어드레스 테이블을 제1 바이너리를 위한 어드레스 테이블로 교체하고(S470), 제1 바이너리를 실행한다(S480). 여기서, 제1 사용자 단말기 및 제2 사용자 단말기는 사용자 단말기가 서로 구별되는 장치임을 나타내기 위한 의미이며, 도 6의 제1 사용자 단말기 및 제2 사용자 단말기와 동일한 단말기를 지칭하는 것은 아니다.
도 8은 사용자 단말기의 구조를 나타내는 도면이다.
도 8을 참조하면, 본 발명의 일 실시예에 따른 사용자 단말기(200)는, 센싱부(210), 통신부(220), 출력부(230) 및 제어부(240), 사용자 입력부(250), A/V(Audio/Video) 입력부(260), 메모리(270)를 포함할 수도 있다.
이하 상기 구성요소들에 대해 차례로 살펴본다.
센싱부(210)는, 사용자 단말기(200)의 위치 정보를 획득한다. 센싱부(210)는 사용자 단말기(200)가 이동하는 경우, 이동 속도 정보 및 이동 시간 정보 등을 획득하여, 변경되는 사용자 단말기(200)의 위치 정보를 결정할 수 있다.
센싱부(210)는, 지자기 센서(Magnetic sensor)(211), 가속도 센서(Acceleration sensor)(212), 온/습도 센서(213), 적외선 센서(214), 자이로스코프 센서(215), 위치 센서(예컨대, GPS)(216), 기압 센서(217), 근접 센서(218), 및 RGB 센서(illuminance sensor)(219) 중 적어도 하나를 포함할 수 있으나, 이에 한정되는 것은 아니다. 각 센서들의 기능은 그 명칭으로부터 당업자가 직관적으로 추론할 수 있으므로, 구체적인 설명은 생략하기로 한다.
센싱부(210)는 사용자 단말기(200)의 상태 정보를 획득할 수 있다. 센싱부(210)는 사용자 단말기(200)의 기울기, 사용자 단말기(200)가 위치한 방향 및 사용자 단말기(200)의 움직임 중 적어도 하나에 대한 정보를 획득할 수 있다.
또한, 센싱부(210)는 사용자 입력을 감지할 수 있다. 센싱부(210)는 감지되는 사용자 입력의 시간 길이 및 사용자 입력의 유형 중 적어도 하나에 대한 정보를 획득할 수 있다.
통신부(220)는 사용자 단말기(201)와 다른 사용자 단말기(202) 또는 사용자 단말기(200)와 쇼핑 서비스 제공 장치(100) 간의 통신을 가능하게 하는 하나 이상의 구성요소를 포함할 수 있다. 예를 들어, 통신부(220)는, 근거리 통신부(221), 이동 통신부(222), 방송 수신부(223)를 포함할 수 있다.
근거리 통신부(short-range wireless communication unit)(221)는, 블루투스 통신부, BLE(Bluetooth Low Energy) 통신부, 근거리 무선 통신부(Near Field Communication unit), WLAN(와이파이) 통신부, 지그비(Zigbee) 통신부, 적외선(IrDA, infrared Data Association) 통신부, WFD(Wi-Fi Direct) 통신부, UWB(ultra wideband) 통신부, Ant+ 통신부 등을 포함할 수 있으나, 이에 한정되는 것은 아니다.
이동 통신부(222)는, 이동 통신망 상에서 기지국, 외부의 단말, 서버 중 적어도 하나와 무선 신호를 송수신한다. 여기에서, 무선 신호는, 음성 호 신호, 화상 통화 호 신호 또는 문자/멀티미디어 메시지 송수신에 따른 다양한 형태의 데이터를 포함할 수 있다.
방송 수신부(223)는, 방송 채널을 통하여 외부로부터 방송 신호 및/또는 방송 관련된 정보를 수신한다. 방송 채널은 위성 채널, 지상파 채널을 포함할 수 있다. 구현 예에 따라서 사용자 단말기(200)가 방송 수신부(223)를 포함하지 않을 수도 있다.
출력부(230)에는, 디스플레이부(231)와 음향 출력부(232), 진동 모터(233) 등이 포함될 수 있다.
디스플레이부(231)는 사용자 단말기(200)에서 처리되는 정보를 출력한다. 디스플레이부(231)를 통해 사용자는 쇼핑 서비스 제공 장치(100)가 제공하는 화면을 볼 수 있다.
한편, 디스플레이부(231)와 터치패드가 레이어 구조를 이루어 터치 스크린으로 구성되는 경우, 디스플레이부(231)는 출력 장치 이외에 입력 장치로도 사용될 수 있다. 디스플레이부(231)는 액정 디스플레이(liquid crystal display), 박막 트랜지스터 액정 디스플레이(thin film transistor-liquid crystal display), 유기 발광 다이오드(organic light-emitting diode), 플렉시블 디스플레이(flexible display), 3차원 디스플레이(3D display), 전기영동 디스플레이(electrophoretic display) 중에서 적어도 하나를 포함할 수 있다. 그리고 사용자 단말기(200)의 구현 형태에 따라 사용자 단말기(200)는 디스플레이부(231)를 2개 이상 포함할 수도 있다. 이때, 2개 이상의 디스플레이부(231)는 힌지(hinge)를 이용하여 마주보게 배치될 수 있다.
음향 출력부(232)는 통신부(220)로부터 수신되거나 메모리(270)에 저장된 오디오 데이터를 출력한다. 또한, 음향 출력부(232)는 사용자 단말기(200)에서 수행되는 기능(예를 들어, 쇼핑 애플리케이션 실행시 출력되는 배경음, 쇼핑 애플리케이션에서 동작을 수행할 때마다 발생되는 효과음)과 관련된 음향 신호를 출력한다. 이러한 음향 출력부(232)에는 스피커(speaker), 버저(Buzzer) 등이 포함될 수 있다.
진동 모터(233)는 진동 신호를 출력할 수 있다. 예를 들어, 진동 모터(233)는 오디오 데이터 또는 이미지 데이터(예컨대, 게임 애플리케이션에서 동작을 수행할 때마다 발생되는 효과음, 게임 애플리케이션에서 동작을 수행한 결과 변경되는 이미지)의 출력에 대응하는 진동 신호를 출력할 수 있다. 또한, 진동 모터(233)는 터치스크린에 터치가 입력되는 경우 진동 신호를 출력할 수도 있다.
제어부(240)는, 통상적으로 사용자 단말기(200)의 전반적인 동작을 제어한다. 예를 들어, 제어부(240)는, 메모리(270)에 저장된 프로그램들을 실행함으로써, 센싱부(210), 통신부(220), 출력부(230), 사용자 입력부(250), A/V 입력부(260), 메모리(270) 등을 전반적으로 제어할 수 있다.
사용자 입력부(250)는, 사용자가 사용자 단말기(200)를 제어하기 위한 데이터를 입력하는 수단을 의미한다. 예를 들어, 사용자 입력부(250)에는 키 패드(key pad), 돔 스위치 (dome switch), 터치 패드(접촉식 정전 용량 방식, 압력식 저항막 방식, 적외선 감지 방식, 표면 초음파 전도 방식, 적분식 장력 측정 방식, 피에조 효과 방식 등), 조그 휠, 조그 스위치 등이 있을 수 있으나 이에 한정되는 것은 아니다.
A/V(Audio/Video) 입력부(260)는 오디오 신호 또는 비디오 신호 입력을 위한 것으로, 이에는 카메라(261)와 마이크로폰(262) 등이 포함될 수 있다. 카메라(261)은 화상 통화모드 또는 촬영 모드에서 이미지 센서를 통해 정지영상 또는 동영상 등의 화상 프레임을 얻을 수 있다. 이미지 센서를 통해 캡쳐된 이미지는 제어부(240) 또는 별도의 이미지 처리부(미도시)를 통해 처리될 수 있다.
카메라(261)에서 처리된 화상 프레임은 메모리(270)에 저장되거나 통신부(220)를 통하여 외부로 전송될 수 있다. 카메라(261)는 단말기의 구성 태양에 따라 2개 이상이 구비될 수도 있다.
마이크로폰(262)은, 외부의 음향 신호를 입력 받아 전기적인 음성 데이터로 처리한다. 예를 들어, 마이크로폰(262)은 외부 디바이스 또는 화자로부터 음향 신호를 수신할 수 있다. 마이크로폰(262)는 외부의 음향 신호를 입력 받는 과정에서 발생 되는 잡음(noise)를 제거하기 위한 다양한 잡음 제거 알고리즘을 이용할 수 있다.
메모리(270)는, 제어부(240)의 처리 및 제어를 위한 프로그램을 저장할 수도 있고, 입/출력되는 데이터들(예컨대, 복수의 메뉴, 복수의 메뉴 각각에 대응하는 복수의 제 1 계층 서브 메뉴, 복수의 제 1 계층 서브 메뉴 각각에 대응하는 복수의 제 2 계층 서브 메뉴 등)을 저장할 수도 있다.
메모리(270)는 쇼핑 애플리케이션에 관한 메타데이터를 미리 저장할 수 있다. 또한, 메모리(270)는 획득한 사용자 입력의 길이 및 유형에 관한 정보를 저장할 수 있다. 메모리(270)는 사용자 단말기(200)의 상태 정보가 저장될 수도 있다.
메모리(270)는 플래시 메모리 타입(flash memory type), 하드디스크 타입(hard disk type), 멀티미디어 카드 마이크로 타입(multimedia card micro type), 카드 타입의 메모리(예를 들어 SD 또는 XD 메모리 등), 램(RAM, Random Access Memory) SRAM(Static Random Access Memory), 롬(ROM, Read-Only Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory), PROM(Programmable Read-Only Memory), 자기 메모리, 자기 디스크, 광디스크 중 적어도 하나의 타입의 저장매체를 포함할 수 있다. 또한, 사용자 단말기(200)는 인터넷(internet)상에서 메모리(270)의 저장 기능을 수행하는 웹 스토리지(web storage) 또는 클라우드 서버를 운영할 수도 있다.
메모리(270)에 저장된 프로그램들은 그 기능에 따라 복수 개의 모듈들로 분류할 수 있는데, 예를 들어, UI 모듈(271), 터치 스크린 모듈(272), 알림 모듈(273) 등으로 분류될 수 있다.
UI 모듈(271)은, 게임 애플리케이션 별로 사용자 단말기(200)와 연동되는 특화된 UI, GUI 등을 제공할 수 있다. 터치 스크린 모듈(272)은 사용자의 터치 스크린 상의 터치 제스처를 감지하고, 터치 제스처에 관한 정보를 제어부(240)로 전달할 수 있다. 본 발명의 일 실시예에 따른 터치 스크린 모듈(272)은 터치 코드를 인식하고 분석할 수 있다. 터치 스크린 모듈(272)은 컨트롤러를 포함하는 별도의 하드웨어로 구성될 수도 있다.
터치스크린의 터치 또는 근접 터치를 감지하기 위해 터치스크린의 내부 또는 근처에 다양한 센서가 구비될 수 있다. 터치스크린의 터치를 감지하기 위한 센서의 일례로 촉각 센서가 있다. 촉각 센서는 사람이 느끼는 정도로 또는 그 이상으로 특정 물체의 접촉을 감지하는 센서를 말한다. 촉각 센서는 접촉면의 거칠기, 접촉 물체의 단단함, 접촉 지점의 온도 등의 다양한 정보를 감지할 수 있다. 또한, 터치스크린의 터치를 감지하기 위한 센서의 일례로 근접 센서가 있다. 근접 센서는 소정의 검출면에 접근하는 물체, 혹은 근방에 존재하는 물체의 유무를 전자계의 힘 또는 적외선을 이용하여 기계적 접촉이 없이 검출하는 센서를 말한다. 근접 센서의 예로는 투과형 광전 센서, 직접 반사형 광전 센서, 미러 반사형 광전 센서, 고주파 발진형 근접 센서, 정전용량형 근접 센서, 자기형 근접 센서, 적외선 근접 센서 등이 있다. 사용자의 터치 제스처에는 탭, 터치&홀드, 더블 탭, 드래그, 패닝, 플릭, 드래그 앤드 드롭, 스와이프 등이 있을 수 있다.
알림 모듈(273)은 사용자 단말기(200)의 이벤트 발생을 알리기 위한 신호를 발생할 수 있다. 알림 모듈(273)은 디스플레이부(231)를 통해 비디오 신호 형태로 알림 신호를 출력할 수도 있고, 음향 출력부(232)를 통해 오디오 신호 형태로 알림 신호를 출력할 수도 있고, 진동 모터(233)를 통해 진동 신호 형태로 알림 신호를 출력할 수도 있다.
도 9은 바이너리의 구조를 설명하기 위한 도면이고, 도 9(a)는 바이너리를 병합하기 전 제1 바이너리의 구조를 나타내는 도면이고, 도 9(b)는 제1 바이너리 및 제2 바이너리를 병합한 최종 바이너리의 구조를 나타내는 도면이다.
도 9(a)에 도시된 바와 같이 본 발명의 실시예에 따른 애플리케이션의 바이너리는 Elf의 포맷으로 구현될 수 있다. Elf 포맷의 경우, 애플리케이션의 바이너리는 Elf header, Program header table, .text, .rodata, .data, Import table, Export table, injected code, section header table을 포함할 수 있다.
(1) Elf header는 오프셋(offset), 필드값(field), 사이즈 (size)의 3가지 영역으로 구분되며,
(2) Program header table는 실행 가능 또는 공유 가능한 목적 파일(오브젝트 파일, object file)의 프로그램 헤더를 말한다.
(3) .text: 프로그램의 텍스트 또는 실행 가능한 명령어들을 포함하는 영역을 말한다.
(4) .rodata: 프로세스의 이미지에서 쓰기 불가능한 세그먼트에 전형적으로 사용되는 읽기 전용 데이터를 포함하는 영역을 말한다.
(5) .data: 프로그램 메모리 영역에 제공되는 초기화된 데이터들을 포함하는 영역을 말한다.
(6) section header table: 바이너리의 섹션의 집합을 리스트로 포함하는 영역을 말한다.
Import Table: 바이너리가 사용하고 있는 외부 함수의 위치 및 이름을 저장하고 있는 영역을 말한다.
Export Table: 바이너리에서 사용할 수 있는 라이브러리 함수의 위치 및 이름을 저장하고 있는 영역을 말한다.
도 10은 바이너리의 코드 영역 및 어드레스 테이블 사이의 연결 관계를 나타내는 도면이다.
본 발명의 실시예에 따른 바이너리 병합 장치는 병합된 바이너리의 정상적인 동작을 위해서, 병합된 바이너리와 대응되는 어드레스 테이블(902)로 교체하였다가, 다시 원 바이너리의 어드레스 테이블(901)로 원복시키는 과정을 수행할 수 있다. 이때, 어드레스 테이블(902)은 라이브러리에 정의된 영역의 주소값을 통해, 함수의 정의를 호출할 수 있다.
이상 설명된 본 발명에 따른 실시예는 컴퓨터 상에서 다양한 구성요소를 통하여 실행될 수 있는 컴퓨터 프로그램의 형태로 구현될 수 있으며, 이와 같은 컴퓨터 프로그램은 컴퓨터로 판독 가능한 매체에 기록될 수 있다. 이때, 매체는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등과 같은, 프로그램 명령어를 저장하고 실행하도록 특별히 구성된 하드웨어 장치를 포함할 수 있다. 나아가, 매체는 네트워크 상에서 전송 가능한 형태로 구현되는 무형의 매체를 포함할 수 있으며, 예를 들어 소프트웨어 또는 애플리케이션 형태로 구현되어 네트워크를 통해 전송 및 유통이 가능한 형태의 매체일 수도 있다.
한편, 상기 컴퓨터 프로그램은 본 발명을 위하여 특별히 설계되고 구성된 것이거나 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수 있다. 컴퓨터 프로그램의 예에는, 컴파일러에 의하여 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용하여 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함될 수 있다.
본 발명에서 설명하는 특정 실행들은 일 실시 예들로서, 어떠한 방법으로도 본 발명의 범위를 한정하는 것은 아니다. 명세서의 간결함을 위하여, 종래 전자적인 구성들, 제어 시스템들, 소프트웨어, 상기 시스템들의 다른 기능적인 측면들의 기재는 생략될 수 있다. 또한, 도면에 도시된 구성 요소들 간의 선들의 연결 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것으로서, 실제 장치에서는 대체 가능하거나 추가의 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들로서 나타내어질 수 있다. 또한, “필수적인”, “중요하게” 등과 같이 구체적인 언급이 없다면 본 발명의 적용을 위하여 반드시 필요한 구성 요소가 아닐 수 있다.
본 발명의 명세서(특히 특허청구범위에서)에서 “상기”의 용어 및 이와 유사한 지시 용어의 사용은 단수 및 복수 모두에 해당하는 것일 수 있다. 또한, 본 발명에서 범위(range)를 기재한 경우 상기 범위에 속하는 개별적인 값을 적용한 발명을 포함하는 것으로서(이에 반하는 기재가 없다면), 발명의 상세한 설명에 상기 범위를 구성하는 각 개별적인 값을 기재한 것과 같다. 마지막으로, 본 발명에 따른 방법을 구성하는 단계들에 대하여 명백하게 순서를 기재하거나 반하는 기재가 없다면, 상기 단계들은 적당한 순서로 행해질 수 있다. 반드시 상기 단계들의 기재 순서에 따라 본 발명이 한정되는 것은 아니다. 본 발명에서 모든 예들 또는 예시적인 용어(예들 들어, 등등)의 사용은 단순히 본 발명을 상세히 설명하기 위한 것으로서 특허청구범위에 의해 한정되지 않는 이상 상기 예들 또는 예시적인 용어로 인해 본 발명의 범위가 한정되는 것은 아니다. 또한, 당업자는 다양한 수정, 조합 및 변경이 부가된 특허청구범위 또는 그 균등물의 범주 내에서 설계 조건 및 팩터에 따라 구성될 수 있음을 알 수 있다.

Claims (13)

  1. 제1 바이너리를 저장하는 메모리; 및 제어부;를 포함하는 바이너리 병합 장치가 바이너리를 병합하는 방법에 있어서,
    상기 제어부가 상기 제1 바이너리에 주입할 제2 바이너리를 생성하는 단계;
    상기 제어부가 제1 프로그래밍 인터페이스를 참조하는 애플리케이션의 제1 바이너리를 난독화시키는 단계;
    상기 제어부가 상기 제1 바이너리와 관련된 제1 프로그래밍 인터페이스를 생성하는 단계;
    상기 제어부가 상기 제2 바이너리와 관련된 제2 프로그래밍 인터페이스를 생성하는 단계;
    상기 제어부가 상기 제1 프로그래밍 인터페이스 및 상기 제2 프로그래밍 인터페이스를 비교하여, 참조되는 함수가 완전히 동일한지 여부를 판단하는 단계;
    상기 판단 결과, 제2 프로그래밍 인터페이스 및 제1 프로그래밍 인터페이스가 완전히 동일하지 않은 경우, 상기 제어부가 상기 제1 프로그래밍 인터페이스와 대응되는 제1 어드레스 테이블을 상기 제2 프로그래밍 인터페이스와 대응되는 제2 어드레스 테이블로 교체하는 단계; 및
    상기 제어부가 상기 제1 바이너리 및 상기 제2 바이너리를 병합한 최종 바이너리를 생성하고, 상기 최종 바이너리의 엔트리 포인트(entry point)가 제2 바이너리가 되도록 설정하는 단계;를 포함하는 바이너리 병합 방법.
  2. 제1항에 있어서,
    상기 제1 바이너리 또는 상기 제2 바이너리는 모바일 환경에서 실행되는 바이너리인, 바이너리 병합 방법.
  3. 제1항에 있어서,
    상기 제2 바이너리는
    상기 제1 바이너리를 복호화하는 함수를 포함하는 소스 파일로부터 생성한 바이너리인, 바이너리 병합 방법.
  4. 제1항에 있어서,
    상기 제2 바이너리는
    어셈블리어로 구현된 바이너리인, 바이너리 병합 방법.
  5. 제1항에 있어서,
    상기 제2 바이너리는
    상기 제1 바이너리 중 실행 바이너리 파일에 포함될 수 있도록 생성된 바이너리인, 바이너리 병합 방법.
  6. 제1항에 있어서,
    상기 제1 어드레스 테이블은
    상기 제1 프로그래밍 인터페이스에 포함된 함수가 정의된 영역의 주소값을 포함하고,
    상기 제2 어드레스 테이블은
    상기 제2 프로그래밍 인터페이스에 포함된 함수가 정의된 영역의 주소값을 포함하는, 바이너리 병합 방법.
  7. 제1 프로그래밍 인터페이스를 참조하는 애플리케이션의 제1 바이너리를 난독화시키는 난독화부;
    상기 제1 바이너리에 주입할 제2 바이너리를 생성하는 코드 생성부;
    상기 제1 바이너리와 관련된 제1 프로그래밍 인터페이스를 생성하는 제1 참조 분석부;
    상기 제2 바이너리와 관련된 제2 프로그래밍 인터페이스를 생성하는 제2 참조 분석부;
    상기 제1 프로그래밍 인터페이스 및 상기 제2 프로그래밍 인터페이스를 비교하여, 참조되는 함수가 완전히 동일한지 여부를 판단하는 판단부;
    상기 판단 결과, 제2 프로그래밍 인터페이스 및 제1 프로그래밍 인터페이스가 완전히 동일하지 않은 경우, 상기 제1 프로그래밍 인터페이스와 대응되는 제1 어드레스 테이블을 상기 제2 프로그래밍 인터페이스와 대응되는 제2 어드레스 테이블로 교체하는 테이블 처리부;
    상기 애플리케이션의 엔트리 포인트가 제2 바이너리가 되도록 설정하는 처리부;를 포함하는 바이너리 병합 장치.
  8. 제7항에 있어서,
    상기 제1 바이너리 또는 상기 제2 바이너리는 모바일 환경에서 실행되는 바이너리인, 바이너리 병합 장치.
  9. 제7항에 있어서,
    상기 제2 바이너리는
    상기 제1 바이너리를 복호화하는 함수를 포함하는 소스 파일로부터 생성한 바이너리인, 바이너리 병합 장치.
  10. 제7항에 있어서,
    상기 제2 바이너리는
    어셈블리어로 구현된 바이너리인, 바이너리 병합 장치.
  11. 제7항에 있어서,
    상기 제2 바이너리는
    상기 제1 바이너리 중 실행 바이너리 파일에 포함될 수 있도록 생성된 바이너리인, 바이너리 병합 장치.
  12. 제7항에 있어서,
    상기 제1 어드레스 테이블은
    상기 제1 프로그래밍 인터페이스에 포함된 함수가 정의된 영역의 주소값을 포함하고,
    상기 제2 어드레스 테이블은
    상기 제2 프로그래밍 인터페이스에 포함된 함수가 정의된 영역의 주소값을 포함하는, 바이너리 병합 장치.
  13. 컴퓨터를 이용하여 제1항 내지 제6항 중 어느 한 항의 방법을 실행시키기 위하여 매체에 저장된 컴퓨터 프로그램.
PCT/KR2016/004716 2015-06-11 2016-05-04 바이너리 병합 장치, 방법 및 컴퓨터 프로그램 WO2016200058A1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017563554A JP6698707B2 (ja) 2015-06-11 2016-05-04 バイナリ併合装置、その方法及び該コンピュータプログラム
US15/837,431 US10552132B2 (en) 2015-06-11 2017-12-11 Binary merging device, method, and computer program

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020150082727A KR101757407B1 (ko) 2015-06-11 2015-06-11 바이너리 병합 장치, 방법 및 컴퓨터 프로그램
KR10-2015-0082727 2015-06-11

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US15/837,431 Continuation US10552132B2 (en) 2015-06-11 2017-12-11 Binary merging device, method, and computer program

Publications (1)

Publication Number Publication Date
WO2016200058A1 true WO2016200058A1 (ko) 2016-12-15

Family

ID=57503537

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2016/004716 WO2016200058A1 (ko) 2015-06-11 2016-05-04 바이너리 병합 장치, 방법 및 컴퓨터 프로그램

Country Status (4)

Country Link
US (1) US10552132B2 (ko)
JP (1) JP6698707B2 (ko)
KR (1) KR101757407B1 (ko)
WO (1) WO2016200058A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10437953B2 (en) * 2016-07-08 2019-10-08 efabless corporation Systems for engineering integrated circuit design and development
CN107239315B (zh) * 2017-04-11 2019-11-15 赛灵思公司 面向神经网络异构计算平台的编程模型
US11243748B2 (en) * 2018-11-08 2022-02-08 Appdome Ltd. Artificial intelligence mobile integration
US11831631B2 (en) 2018-11-08 2023-11-28 Appdome Ltd. Single sign-on for mobile applications using direct brokering for identity authentication
CN110032394B (zh) * 2019-04-12 2022-05-31 深圳市腾讯信息技术有限公司 一种无源码文件的分析方法、装置和存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100259447B1 (ko) * 1995-10-02 2000-06-15 포만 제프리 엘 객체 지향 서버에서 오브젝트 서비스를 이진 클래스에 부가하기 위한 시스템, 방법 및 제조사항
US20080092129A1 (en) * 2006-10-13 2008-04-17 Sun Microsystems, Inc. Incorporating functionality from an object file into an existing binary file
US20100088690A1 (en) * 2008-10-03 2010-04-08 Microsoft Corporation Replacing the identity of an activex control
US20100088689A1 (en) * 2008-10-03 2010-04-08 Microsoft Corporation Branding binary modules using resource patching
KR101328012B1 (ko) * 2013-08-12 2013-11-13 숭실대학교산학협력단 애플리케이션 코드 난독화 장치 및 그 방법

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7039919B1 (en) * 1998-10-02 2006-05-02 Microsoft Corporation Tools and techniques for instrumenting interfaces of units of a software program
US6988271B2 (en) * 1998-10-02 2006-01-17 Microsoft Corporation Heavyweight and lightweight instrumentation
KR101242479B1 (ko) 2011-07-01 2013-03-18 한국과학기술연구원 어플리케이션 배포 시스템 및 방법
US8959365B2 (en) * 2012-07-01 2015-02-17 Speedtrack, Inc. Methods of providing fast search, analysis, and data retrieval of encrypted data without decryption
US9087191B2 (en) * 2012-08-24 2015-07-21 Vmware, Inc. Method and system for facilitating isolated workspace for applications
US9116712B2 (en) 2013-02-28 2015-08-25 Microsoft Technology Licensing, Llc Compile based obfuscation
EP2869145B1 (de) * 2013-10-29 2016-04-27 dSPACE digital signal processing and control engineering GmbH Verfahren zur Beeinflussung eines Steuerprogramms eines Steuergerätes
US9213531B2 (en) * 2014-05-01 2015-12-15 Google Inc. Methods to eliminate extra memory loads while accessing global variables in position independent code
EP3202553B1 (en) 2016-02-02 2019-10-23 P.K. Jeppesen & Søn A/S An apparatus for stripping a polymeric outer cladding

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100259447B1 (ko) * 1995-10-02 2000-06-15 포만 제프리 엘 객체 지향 서버에서 오브젝트 서비스를 이진 클래스에 부가하기 위한 시스템, 방법 및 제조사항
US20080092129A1 (en) * 2006-10-13 2008-04-17 Sun Microsystems, Inc. Incorporating functionality from an object file into an existing binary file
US20100088690A1 (en) * 2008-10-03 2010-04-08 Microsoft Corporation Replacing the identity of an activex control
US20100088689A1 (en) * 2008-10-03 2010-04-08 Microsoft Corporation Branding binary modules using resource patching
KR101328012B1 (ko) * 2013-08-12 2013-11-13 숭실대학교산학협력단 애플리케이션 코드 난독화 장치 및 그 방법

Also Published As

Publication number Publication date
JP6698707B2 (ja) 2020-05-27
JP2018521403A (ja) 2018-08-02
KR20160146093A (ko) 2016-12-21
US20180121181A1 (en) 2018-05-03
US10552132B2 (en) 2020-02-04
KR101757407B1 (ko) 2017-07-12

Similar Documents

Publication Publication Date Title
WO2016200058A1 (ko) 바이너리 병합 장치, 방법 및 컴퓨터 프로그램
WO2013122443A1 (en) Method and apparatus for protecting digital content using device authentication
WO2016137307A1 (en) Attestation by proxy
WO2014092511A1 (en) Method and apparatus for protecting an application program
WO2017122980A1 (en) Electronic device and method for authenticating identification information thereof
WO2013191325A1 (ko) 트러스티드 플랫폼 기반의 개방형 아이디 인증 방법, 이를 위한 장치 및 시스템
WO2016064041A1 (ko) 해쉬값을 이용하여 응용 프로그램의 위변조 여부를 탐지하는 사용자 단말기 및 그것을 이용한 위변조 탐지 방법
WO2018080198A1 (ko) 인증을 수행하기 위한 전자 장치 및 방법
WO2018076879A1 (zh) 数据备份方法、装置、存储介质及终端
WO2021060745A1 (en) Electronic device for updating firmware by using security integrated circuit and operation method thereof
CN110955888B (zh) 应用程序数据保护方法、装置、设备、存储介质
WO2021025449A1 (en) Electronic device operating encryption for user data
WO2016159496A1 (ko) 보안 기능이 추가된 애플리케이션 배포 방법, 상기 애플리케이션의 동작 방법
WO2020149555A1 (ko) 암호화될 데이터의 정보량에 기반하여 암호화에 사용될 키를 선택하는 전자 장치 및 전자 장치의 동작 방법
WO2020111517A1 (en) Server and method for identifying integrity of application
WO2023128340A1 (ko) 동형 암호화된 데이터 처리 방법 및 시스템
WO2016167462A1 (en) Device and method of requesting external device to execute task
WO2017105113A1 (ko) 서버, 전자 장치 및 전자 장치에서 이미지를 처리하는 방법
WO2019164204A1 (ko) 전자 장치 및 그의 동작 방법
WO2018169323A1 (ko) 전자 장치 및 그의 제어 방법
WO2018117747A1 (en) Electronic device, method for controlling thereof and computer-readable recording medium
WO2024111822A1 (ko) Dpapi 기반 데이터 재생성을 통한 클라우드 데이터 획득 장치 및 방법
WO2021141326A1 (ko) 전자 장치 및 이의 제어 방법
WO2021235838A1 (ko) 블록체인을 이용하는 전자 장치 및 동작 방법
WO2021172815A1 (ko) 전자 장치의 서명 키 관리 방법 및 그 전자 장치

Legal Events

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

Ref document number: 16807699

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2017563554

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 16807699

Country of ref document: EP

Kind code of ref document: A1