WO2016104918A1 - Procédé de conversion de code, et dispositif de conversion de code - Google Patents
Procédé de conversion de code, et dispositif de conversion de code Download PDFInfo
- Publication number
- WO2016104918A1 WO2016104918A1 PCT/KR2015/009483 KR2015009483W WO2016104918A1 WO 2016104918 A1 WO2016104918 A1 WO 2016104918A1 KR 2015009483 W KR2015009483 W KR 2015009483W WO 2016104918 A1 WO2016104918 A1 WO 2016104918A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- function
- flattening
- branch
- software
- code conversion
- Prior art date
Links
- 238000006243 chemical reaction Methods 0.000 title claims abstract description 82
- 238000000034 method Methods 0.000 title claims abstract description 43
- 230000006870 function Effects 0.000 claims abstract description 202
- 238000004590 computer program Methods 0.000 claims description 4
- 238000001514 detection method Methods 0.000 abstract description 14
- 238000010586 diagram Methods 0.000 description 17
- 238000004891 communication Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 238000009499 grossing Methods 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 5
- 238000005457 optimization Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
Definitions
- the present invention relates to a code conversion method and a code conversion device, and more particularly, to a code conversion method and a code conversion device for generating software having a modulation resistance and a modulation detection function using an intermediate language.
- the field of software protection is the study of how to protect software from malicious software analysis (e.g., software critical logic takeover) or software tampering (e.g., bypassing software license check routines).
- software tamper-detection relates to a method of detecting and responding to modulation when the software is tampered with, and software with tamper-resistance makes it difficult to tamper with the software and preemptively blocks it. It is about how to.
- Hardware-based protection is a technique to protect software based on the stability of hardware that is not accessible from the outside.
- Software-based protection is a technique that responds to software analysis or modulation without the help of hardware.
- Hardware-based protection schemes are generally known to be safer, but they require additional hardware, which incurs additional costs, and makes it difficult to adapt to multiple software environments depending on the hardware installed. As such, software-based protection schemes have various advantages over hardware-based protection schemes.
- Code conversion techniques to add modulation resistance and / or detection to the software.
- Code conversion is done at the source code level (eg C, Fortran, etc.) or at the binary code level (eg machine language).
- source code level eg C, Fortran, etc.
- binary code level eg machine language
- the source code level code conversion technique has limitations in preserving the code conversion effect due to optimization in the compilation process because the code conversion is performed at the source code level.
- Binary-level code conversion techniques make it difficult to interpret machine language and modify the machine language itself, which makes it difficult to add resistance and detection while maintaining the normal functioning of the software.
- the source code level conversion technique depends on the language in which the source code is written (for example, C, Fortran, etc.), and the binary level code conversion technique depends on the machine language (for example, x86, ARM, etc.). It is not easy to apply the same code conversion technique.
- the present invention has been made to solve the above problems, and can easily add the functions of modulation detection and modulation resistance without affecting the original function based on software regardless of the language of the source code and the language type of the machine language. It is an object of the present invention to provide a method and a code conversion device.
- a code conversion method for achieving the above object includes (b) selecting a function to be protected, selecting a protection function to flatten the control flow and an integrity function to be guaranteed integrity, and (c) generating labels to be used for flattening the flattening function, the label generating step of generating each branch function to be used in each of the blocks in the flattening function using the integrity function.
- the code conversion apparatus for achieving the above object is a selector for selecting a function to be protected, and selects and flattening function for selecting a smoothing function that is to be flattened the control flow and an integrity function that is to be guaranteed integrity.
- the code conversion method and the code conversion device according to the present invention as described above can easily add the functions of modulation detection and modulation resistance without affecting the original function based on software regardless of the language of the source code and the language type of the machine language. It has an effect.
- FIG. 1 is a diagram illustrating an exemplary hardware block diagram of a code conversion device.
- FIG. 2 is a diagram illustrating an exemplary control flow for code conversion.
- FIG. 3 is a diagram illustrating an exemplary functional block diagram of a code conversion device.
- FIG. 4 illustrates a CFG for an exemplary planarization function that is a planarization target.
- FIG. 5 shows the planarized CFG after applying the planarization treatment to the CFG of FIG. 4.
- FIG. 1 is a diagram illustrating an exemplary hardware block diagram of a code conversion apparatus 100.
- the code conversion device 100 includes an input interface 101, an output interface 103, a memory 105, a storage medium 107, a system bus / control bus 111, and a processor 113. It may further include a communication interface 109.
- the specific hardware block may be omitted according to the use or modification of the code conversion apparatus 100.
- the code conversion device 100 is a device for converting source code (software) to enable modulation resistance and / or modulation detection.
- the code conversion apparatus 100 may be, for example, a personal computer used by a programmer or a distributor of a program, a laptop, or a server capable of providing a program's conversion function through an internet network.
- the input interface 101 is an interface for receiving a user input.
- the input interface 101 includes a mouse, a keyboard and / or a touch panel, and receives a user input for performing code conversion.
- the received input is delivered to the processor 113 as input data via the system bus / control bus 111.
- the output interface 103 includes an LCD module, an LED module and / or a speaker, and is an interface for outputting a result or an intermediate result performed by the code conversion apparatus 100.
- the output interface 103 makes it possible to know the results for the transcoded software, for example.
- Memory 105 includes volatile memory.
- the memory 105 may temporarily store various data and programs.
- the memory 105 may be a code conversion program executed in the processor 113 or software that is an input of a code conversion program (or source code, hereinafter, the term 'software' and 'source code' are used interchangeably). Save it temporarily.
- the storage medium 107 stores at least a code conversion program executed by the processor 113 and software that is an input target of the code conversion program.
- the software is organized at the source code level. For example, software is written in programming languages such as C, C ++, Fortran, Java, and so on.
- the code conversion program converts the input software into an intermediate language (hereinafter also referred to as 'IR') so that the input software on the intermediate language has modulation resistance and / or modulation detection.
- the software translated into the designated machine language may be output to the output interface 103, stored in the storage medium 107, or output through the communication interface 109.
- the processor 113 includes one or more execution units capable of executing instructions to execute code of a program stored in the storage medium 107.
- the processor 113 may be referred to as a so-called CPU, MPU, or the like.
- the processor 113 loads the code conversion program stored in the storage medium 107 into the memory 105 and performs a code conversion program to convert the input software to have modulation resistance and / or modulation detectability.
- the processor 113 preferably adds code to translate the input software into the intermediate language and adds code to have modulation resistance and / or modulation detectability for the input software converted to the intermediate language or convert the input software to the designated machine language.
- the processor 113 particularly the code conversion program, will be described in detail with reference to FIGS. 2 and 3.
- the system bus / control bus 111 is a bus capable of transmitting and receiving various analog / digital data between hardware blocks.
- the system bus / control bus 111 may be a parallel bus or a serial bus or a dedicated bus for a particular hardware block.
- the system bus / control bus 111 may transmit and receive analog or digital data depending on the type of bus.
- the communication interface 109 which can be further included is an interface for transmitting and receiving network packets connected to the Internet network.
- the communication interface 109 includes, for example, a PHY chip for connecting to Wi-Fi or a wired LAN.
- FIG. 2 is a diagram illustrating an exemplary control flow for code conversion.
- the code conversion control flow of FIG. 2 is performed, for example, on a hardware block diagram of the code conversion apparatus 100 of FIG.
- the code conversion control flow of FIG. 2 is performed by the processor 113 of the code conversion apparatus 100 and preferably consists of the instruction execution of the processor 113 by the code conversion program.
- the code conversion control flow of FIG. 2 starts as the processor 113 of the code conversion apparatus 100 starts to perform the code conversion program stored in the storage medium 107 (S100) and ends as the code conversion program ends. S200).
- the code conversion apparatus 100 receives a selection for the software to be converted by the user through the input interface 101 (or the communication interface 109) (S101). In the selective reception of the software, the code conversion apparatus 100 loads the software stored in the storage medium 107 or received via the communication interface 109 into the memory 105 or the like.
- the code conversion device 100 converts the loaded source code level software into a representation of an intermediate language (S103).
- the intermediate language can be, for example, instructions used in the known low level virtual machine (LLVM) compiler platform.
- the intermediate language of LLVM is an independent language that is independent of any kind of language at the source level and is also a language that is not dependent on machine language.
- LLVM's intermediate language supports machine-independent labels and can express various execution paths through labels.
- the data based on the software converted into the intermediate language may be output to the output interface 103 by the code conversion apparatus 100.
- the code conversion apparatus 100 outputs a function list included in the converted software through the output interface 103.
- the user provides an input indicating the selection of a function that needs to be protected in the outputted function list through the input interface 101 and the code conversion apparatus 100 selects a function to be protected corresponding to the input according to the reception of the selection input. (S105).
- the code conversion apparatus 100 selects a specific type of function from the function list by selecting a function that needs to be protected.
- the code conversion device 100 selects a function (hereinafter, referred to as a 'flattening function' or 'FF' (Flattening Function)) to which the control flow is to be flattened to make code analysis difficult.
- a function hereinafter, also referred to as 'integrity function' or 'IF' (Integrity Function)
- the code conversion apparatus 100 selects a function (hereinafter, also referred to as an 'encryption function' or an encryption function (EF)) to be encrypted.
- the selection of one or more functions may be determined by user input.
- Each type of function can be one or more.
- the flattening function is a function that must first be performed on the integrity function and the encryption function, and is set by the code conversion apparatus 100 or guided through the output interface 103.
- the flattening function is a target function for flattening the control flow of the function to obfuscate the analysis.
- various information for checking the integrity of the integrity function and generating a dynamic key to encrypt the encryption function ( Data) is generated.
- An integrity function is a target function whose integrity is to be guaranteed. It indicates a function that is not necessarily hidden but must not be tampered with.
- the integrity function may be an anti-debugging routine or a license check routine.
- the encryption function is a function that must be protected by encryption, and a function that must be hidden to prevent the analysis itself can be specified. For example, an encryption function may be a fatal function when exposed to the outside including important logic of the software.
- the code conversion apparatus 100 converts the selected flattening function into a control flow graph (CFG) and classifies the flattening function into flattenable blocks according to the conversion of the CFG.
- CFG control flow graph
- 4 shows CFG for a particular flattening function
- FIG. 5 shows CFG after flattening application according to the invention (BB0 of FIG. 4 corresponds to BBa of FIG. 5 and the other blocks also have the same correspondence).
- BB0 of FIG. 4 corresponds to BBa of FIG. 5 and the other blocks also have the same correspondence.
- each block in the CFG is configured such that the code in the block does not branch to other blocks at execution and branches to other blocks after all the code in each block is completed.
- the code conversion apparatus 100 first determines a label (for each block in the CFG of the flattening function). , In the example of FIG. 5, i is a to f, and the branch function for each block ( ) And the function to be used in the switch statement ( )
- the label of the block indicates the execution start position of the corresponding block and the label may be represented by a variable.
- the branch function corresponding to each block is configured to be different from each other.
- Branch function of each block Depends on the branch condition after completion of the block, for example, if there is no branch (i.e., only one subsequent block is performed). + mask + Expressed as ", and if a branch exists" + mask + "Is expressed. Is a hash function that takes an integrity function mapped to each block as an input argument. here Represents a hash value of an IF (integrity function) mapped to each block.
- the code conversion apparatus 100 determines which IF integrity is checked for each block. For example, the code conversion apparatus 100 randomly maps each block of the flattening function to a specific one IF. here, Denotes any indicator indicating the starting position (branch position) at which block i starts on the transformed software. May consist of a combination of numbers, a combination of letters, or a combination of numbers and letters and may be represented by a variable.
- Branch function The branch function is not hardcoded as we will see below. It is configured to itself (i.e. the code for the calculation of the branch function of each block) with the corresponding block embedded in the software converted to the code block. Accordingly branch function Is the label value at actual execution of the converted software ( Is safe for static analysis methods. Denotes the condition of the i block, allowing branching to a particular label according to true (1) or false (0) according to one or more conditions.
- Function F () has a specific label ( As a function for generating), F () can be expressed as a hash function whose output argument is a branch function. The function F () allows the switch statement to select the exact block position to be executed next time.
- the branch function according to the present invention consists of applying a hash function to the integrity function.
- the hash value produced by the application of the hash function to the integrity function is also different. this is Is changed and execution of each block does not work normally. If a change due to the modulation of the integrity function can be detected, it can correspond to the modulation.
- the modulation can be determined by the hash value used in the branch of the smoothing function to the integrity function. This will be described below.
- the code conversion apparatus 100 generates a dynamic key for encryption of the encryption function (S109).
- the dynamic key generated by the present invention is not stored anywhere in the converted software. If the dynamic key is stored in the converted software, the encryption loses its meaning if the dynamic key is found externally.
- the present invention generates a dynamic key using the label generated in the label generation step S107.
- each block (i) of the smoothing function is ( , ) Pairs. Therefore, each and every block of the smoothing function , ), And the code conversion device 100 generates a dynamic key using these ordered pairs having i as an index.
- This secret splitting technique is a technique for recovering a secret when t or more splittings are collected among n splittings.
- the code conversion apparatus 100 derives the number of all blocks (n, 6 in the example of FIG. 4) through the CFG of the flattening function and the shortest execution path through the CFG.
- the length t (4 in the example of FIG. 4) is derived.
- the length t represents the number of blocks on the shortest execution path.
- the derivation of n and t can be easily performed by the code conversion apparatus 100.
- the code conversion apparatus 100 generates a secret dynamic key using the derived n and t.
- the code conversion apparatus 100 flattens the flattening function using the generated label (S111).
- FIG. 5 shows the CFG after planarization is performed with respect to the CFG of FIG. 4.
- the inter-block execution dependency order on the original execution path is flattened through a switch statement.
- Each block (see BBa, BBb, etc. of FIG. 5) constitutes one code block together with a corresponding branch function (see Ba (), Bb (), etc. of FIG. 5).
- the branch function is not hardcoded and is coupled to the corresponding block as a function in accordance with the present invention.
- the converted software is executed and a specific block of the flattening function is executed, the corresponding branch function is executed immediately after completion of the execution of this specific block.
- the branch function dynamically calculates the labels to branch. Thus, static analysis of the planarization function is not possible.
- Flattened code by flattening is the default label ( ).
- the branch function of a particular block generates a branch label (or branch value) by applying a specified function (eg a hash function) to a specific integrity function. Therefore, when the integrity function is modulated, the branch label produced by the branch function also changes.
- the tampering of the integrity function can be detected using a default label (a label used when there is no matching label).
- Block of default labels ( ) May output the modulation detection result of the software, including a modulation correspondence routine (eg, program termination, modulation detection output, modulation detection output to a designated server, etc.).
- the code conversion apparatus 100 After generation of the dynamic key, the code conversion apparatus 100 encrypts the encryption function with the generated dynamic key (S113).
- the dynamic key according to the invention is not embedded in the software to be converted. Instead, in code execution of the flattened function, the flattened function performs t (shortest execution path length) blocks and branch functions through at least the shortest execution path, and thus transforms the dynamic key using these t branch functions. Software can be restored.
- the code conversion device 100 performs an optimization process when necessary and converts the machine language through a compilation and linking process for the machine language designated by the user (S115).
- the code conversion apparatus 100 stores the converted machine language, that is, the converted software having the modulation resistance and the detection function, in the storage medium 107 (S117) or outputs it through the communication interface 109.
- the code conversion method of FIG. 2 may be configured as a computer program that can be stored in a medium.
- the computer program is stored on a USB, CD, DVD, smart card or removable hard disk, or an internal hard disk.
- the computer program is executed on the hardware block (s) of FIG. 1, in particular the processor 113.
- FIG. 3 is a diagram illustrating an exemplary functional block diagram of a code conversion apparatus 100.
- the code conversion device 100 includes an intermediate language conversion unit 151, a module loader unit 153, a selection unit 155, a label generation unit 157, a dynamic key generation unit 159, and a flattening unit ( 161, an encryption unit 163, an optimizer 165, and a machine language converter 167.
- Some functional blocks in the functional block diagram of FIG. 3 may be omitted according to design variations.
- the functional blocks of FIG. 3 are performed on the hardware block diagram of FIG. 1 and are preferably constituted by a code conversion program executed by the processor 113.
- the code conversion program may be stored and distributed in various storage media 107 and executed by the processor 113 on the hardware block diagram of FIG.
- the functional block diagram of FIG. 3 may constitute one software development platform.
- the functional block diagram of FIG. 3 is configured within a Low Level Virtual Machine (LLVM) compilation platform to convert source level software to a specific binary level machine language.
- the known LLVM platform consists of the intermediate language conversion unit 151, the module loader unit 153, the optimization unit 165, and the machine language conversion unit 167.
- the known LLVM platform converts software into an intermediate level intermediate language. It is then translated into machine language.
- the intermediate language converter 151 converts the input software selected by the user into a representation of the intermediate language.
- the intermediate language conversion unit 151 outputs software in the expression of the converted intermediate language.
- the output intermediate software is then transmitted to the module loader unit 153 or the like.
- the module loader unit 153 loads various program modules to be used for software conversion according to the present invention.
- the module loader 153 loads an encryption module, a hash function module, and a secret partition module.
- Such an encryption module, hash function module, secret division module and the like are included in the converted software at the time of software conversion. Then, when the converted software is executed, such a module is also performed as necessary to enable the original function of the software.
- the module loader section 153 preferably links these modules to software in an intermediate language representation.
- the modules loaded also consist of intermediate language representations.
- the selector 155 selects a function to be protected.
- the selector 155 selects at least one flattening function that is an object to flatten the control flow and at least one integrity function whose integrity is to be guaranteed.
- the selector 155 selects one or more encryption functions to be encrypted.
- the flattening function may be a function preceding a particular one or more integrity functions and a particular one or more cryptographic functions.
- the label generator 157 generates labels to be used in flattening for the flattening function.
- the label generator 157 generates a CFG for the flattening function and generates each branch function to be used in each block in the CFG.
- the particular branch function for a particular block contains a specified function whose argument is a mapped integrity function. This specified function can be a hash function, for example.
- the dynamic key generation unit 159 generates a dynamic key to encrypt the encryption function using the branch functions.
- the dynamic key is generated using a secret partitioning technique that utilizes the length of the shortest execution path of the flattening function and the total number of blocks.
- the dynamic key is recoverable using branch functions of the length (number) of the shortest execution path of the smoothing function on the transformed software.
- the flattening unit 161 flattens the selected flattening function.
- the planarization unit 161 configures one code block with each branch function corresponding to each of the blocks of the planarization function.
- the code in the flattened function thus dynamically executes the branch function after execution of the block, and the branch function dynamically calculates the label to branch to later with dynamic execution.
- the code of the flattening function generated in the flattening unit 161 includes a default label, and the default label is configured to detect tampering of the software.
- the encryption unit 163 encrypts the encryption function with the dynamic key generated by the dynamic key generation unit 159.
- the optimizer 165 optimizes the intermediate language software generated or converted through each block.
- the optimization here is such that the code conversion result is maintained even after the application of the code conversion technique according to the invention.
- the machine language converter 167 performs a link process using compilation or library of a designated or selected machine language. By converting the software of the intermediate language by the machine language conversion unit 167 into machine language, the converted software having the modulation resistance and the detection function is generated.
- the converted software can be stored in the storage medium 107 or output via the communication interface 109.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
La présente invention concerne un procédé de conversion de code et un dispositif de conversion de code comprenant : une fonction de protection étape de sélection (b) de, afin de sélectionner une fonction à être protégé, la sélection d'une fonction d'aplatissement, le flux de commande doit être aplatie, et d'une fonction d'intégrité, l'intégrité est à être garantie; et une étape de génération d'étiquettes (c) de, dans l'ordre pour générer des étiquettes à être utilisé dans un aplatissement pour la fonction d'aplatissement, la génération de chaque fonction de délimitation à être utilisé dans chaque bloc de la fonction d'aplatissement. La présente invention permet de générer un logiciel doté d'une fonction de modulation de résistance et de détection de modulation au moyen d'un langage intermédiaire.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140188492A KR101628923B1 (ko) | 2014-12-24 | 2014-12-24 | 코드 변환 방법 및 코드 변환 장치 |
KR10-2014-0188492 | 2014-12-24 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2016104918A1 true WO2016104918A1 (fr) | 2016-06-30 |
Family
ID=56150904
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/KR2015/009483 WO2016104918A1 (fr) | 2014-12-24 | 2015-09-09 | Procédé de conversion de code, et dispositif de conversion de code |
Country Status (2)
Country | Link |
---|---|
KR (1) | KR101628923B1 (fr) |
WO (1) | WO2016104918A1 (fr) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113031930A (zh) * | 2019-12-24 | 2021-06-25 | 武汉斗鱼鱼乐网络科技有限公司 | 一种控制流平坦化的源代码混淆生成方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101269089B1 (ko) * | 2011-08-19 | 2013-05-29 | 고려대학교 산학협력단 | 자가암호화를 이용한 소프트웨어 변조방지 방법 |
KR20130085535A (ko) * | 2011-12-16 | 2013-07-30 | 주식회사 케이티 | 어플리케이션의 변조 방지 장치 및 검증 장치 |
KR20130116408A (ko) * | 2012-03-12 | 2013-10-24 | 삼성전자주식회사 | 디바이스 정보자원이 유출되는지 여부를 탐지하는 방법 및 장치 |
KR101350390B1 (ko) * | 2013-08-14 | 2014-01-16 | 숭실대학교산학협력단 | 코드 난독화 장치 및 그 방법 |
-
2014
- 2014-12-24 KR KR1020140188492A patent/KR101628923B1/ko active IP Right Grant
-
2015
- 2015-09-09 WO PCT/KR2015/009483 patent/WO2016104918A1/fr active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101269089B1 (ko) * | 2011-08-19 | 2013-05-29 | 고려대학교 산학협력단 | 자가암호화를 이용한 소프트웨어 변조방지 방법 |
KR20130085535A (ko) * | 2011-12-16 | 2013-07-30 | 주식회사 케이티 | 어플리케이션의 변조 방지 장치 및 검증 장치 |
KR20130116408A (ko) * | 2012-03-12 | 2013-10-24 | 삼성전자주식회사 | 디바이스 정보자원이 유출되는지 여부를 탐지하는 방법 및 장치 |
KR101350390B1 (ko) * | 2013-08-14 | 2014-01-16 | 숭실대학교산학협력단 | 코드 난독화 장치 및 그 방법 |
Non-Patent Citations (1)
Title |
---|
GRADUATE SCHOOL OF INFORMATION SECURITY, KOREA UNIVERSITY: "TSTR: Two-stage Tamper Response in Tamper-Resistant Software", THE 3RD WEAPON SYSTEM SOFTWARE CONFERENCE, 17 September 2014 (2014-09-17), pages 1 - 20 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113031930A (zh) * | 2019-12-24 | 2021-06-25 | 武汉斗鱼鱼乐网络科技有限公司 | 一种控制流平坦化的源代码混淆生成方法及装置 |
CN113031930B (zh) * | 2019-12-24 | 2022-07-05 | 武汉斗鱼鱼乐网络科技有限公司 | 一种控制流平坦化的源代码混淆生成方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
KR101628923B1 (ko) | 2016-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lehmann et al. | Wasabi: A framework for dynamically analyzing webassembly | |
WO2015046655A1 (fr) | Dispositif d'obscurcissement de code d'application basé sur une auto-conversion et son procédé | |
KR101328012B1 (ko) | 애플리케이션 코드 난독화 장치 및 그 방법 | |
CN105683990B (zh) | 用于保护动态库的方法和装置 | |
EP3201819B1 (fr) | Vérification automatisée d'un système logiciel | |
CN107346401B (zh) | 用于安全地执行程序的信息保障系统 | |
Balachandran et al. | Control flow obfuscation for android applications | |
CN105095772B (zh) | 用于安全地保存并恢复计算平台状态的方法和装置 | |
WO2015023023A1 (fr) | Dispositif d'obscurcissement de code et son procédé | |
WO2017026739A1 (fr) | Système et procédé d'obscurcissement de code d'application | |
WO2015026091A1 (fr) | Procédé permettant de garantir la sécurité d'un programme basé sur un langage intermédiaire commun | |
WO2016054303A1 (fr) | Sécurité de bout en bout pour un logiciel vérifié s'exécutant sur un matériel | |
US20090138863A1 (en) | Method And Apparatus For Protecting .NET Programs | |
CN102831342A (zh) | 一种提高安卓系统中应用程序保护强度的方法 | |
US20170024230A1 (en) | Method, apparatus, and computer-readable medium for ofuscating execution of an application on a virtual machine | |
CN102034039B (zh) | 用于处理单体加密的媒体流的方法和装置 | |
WO2016024838A1 (fr) | Procédé et système de fourniture de service de sécurité d'application en nuage | |
WO2017026738A1 (fr) | Système et procédé de protection de codes pour une application | |
CN107292135A (zh) | 一种程序代码保护方法和装置 | |
CN103413074B (zh) | 一种通过api实现软件保护的方法和装置 | |
CN107871066B (zh) | 基于安卓系统的代码编译方法及装置 | |
WO2015093671A1 (fr) | Procédé de brouillage de fichiers basé sur un processeur arm | |
CN109885991A (zh) | 一种基于移动应用数据流体的加密方法、电子设备和介质 | |
US10656855B2 (en) | Memory management in a programmable device | |
WO2011019177A2 (fr) | Procédé et dispositif pour protéger des données en utilisant un environnement virtuel |
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: 15873446 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 15873446 Country of ref document: EP Kind code of ref document: A1 |