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 PDF

Info

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
Application number
PCT/KR2015/009483
Other languages
English (en)
Korean (ko)
Inventor
박문찬
이동훈
석재혁
이세영
Original Assignee
고려대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 고려대학교 산학협력단 filed Critical 고려대학교 산학협력단
Publication of WO2016104918A1 publication Critical patent/WO2016104918A1/fr

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code

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.
PCT/KR2015/009483 2014-12-24 2015-09-09 Procédé de conversion de code, et dispositif de conversion de code WO2016104918A1 (fr)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113031930A (zh) * 2019-12-24 2021-06-25 武汉斗鱼鱼乐网络科技有限公司 一种控制流平坦化的源代码混淆生成方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
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 숭실대학교산학협력단 코드 난독화 장치 및 그 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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