CN108509772A - Source code reinforcement means and device based on execution sequence and single-point logic - Google Patents
Source code reinforcement means and device based on execution sequence and single-point logic Download PDFInfo
- Publication number
- CN108509772A CN108509772A CN201810146606.4A CN201810146606A CN108509772A CN 108509772 A CN108509772 A CN 108509772A CN 201810146606 A CN201810146606 A CN 201810146606A CN 108509772 A CN108509772 A CN 108509772A
- Authority
- CN
- China
- Prior art keywords
- code block
- code
- source code
- generation
- block
- Prior art date
- Legal status (The legal status 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 status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
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)
- Devices For Executing Special Programs (AREA)
Abstract
This application discloses a kind of source code reinforcement means and device based on execution sequence and single-point logic, can the original source code based on application program redirect logic in compiling or operation, original source code is split into multiple code blocks;Logic is redirected in compiling or operation based on original source code, the jump list for the execution sequence for characterizing the multiple code block is established, the correspondence of code block label and the address of code block is preserved in jump list;Described address is the second source code after reinforcing in compiling or operation, the address of code block in memory, and code block marks address for accessing corresponding code block;Logic will be redirected between the code block of original source code, marked and realized by the code block in the jump list, to generate the first source code after reinforcing;Fuzzy Processing is carried out using the conditional-variable in the function of the first source code of opaque predicate pair, obtains the second source code after the reinforcing.This method and device can improve anti-reversing analysis ability.
Description
Technical field
This application involves technical field of software security more particularly to a kind of source codes based on execution sequence and single-point logic
Reinforcement means and device.
Background technology
Nowadays, the technology high-speeds such as mobile Internet, Internet of Things, car networking develop, and the quantity of terminal is more and more, terminal
The application program of middle installation is also more and more, this brings great convenience to the work and life of people.Application program is run
It will produce some important information in the process, which results in the great interests of attacker so that these important informations, which exist, to be let out
The risk of dew.
Currently, attacker is often used the static analysis tools such as dis-assembling, decompiling, the source code of application program is carried out inverse
It is cracked to analysis, obtains the execution logic of application program, generated in application program operational process to illegally steal, illegally distort
Important information.
For above-mentioned risk, the prior art is often obscured by the source code to application program, improves the anti-of source code
Conversed analysis ability reduces the risk that the important information generated in application program operational process is leaked.But existing control
The source codes such as stream planarization obscure method and still remain the risk being cracked, and the anti-reversing analysis ability of source code need to be carried
It is high.
Invention content
The embodiment of the present application provides a kind of source code reinforcement means and device based on execution sequence and single-point logic, to carry
The anti-reversing analysis ability of high source code.
In a first aspect, providing a kind of source code reinforcement means based on execution sequence and single-point logic, the method packet
It includes:
Logic is redirected in compiling or operation based on the original source code of application program, the original source code is split
At multiple code blocks;
Logic is redirected in compiling or operation based on the original source code, establishes and characterizes holding for the multiple code block
The jump list of row sequence preserves the correspondence of code block label and the address of code block in the jump list;Wherein, described
Address is the second source code after reinforcing in compiling or operation, the address of code block in memory, and code block label is used
In the address for accessing corresponding code block;
Logic will be redirected between the code block of the original source code, is marked by the code block in the jump list real
It is existing, to generate the first source code after reinforcing;
Fuzzy Processing is carried out to the conditional-variable in the function of first source code using opaque predicate, is obtained described
The second source code after reinforcing.
Second aspect provides a kind of source code bracing means based on execution sequence and single-point logic, including:
Code block splits module, and logic is redirected in compiling or operation for the original source code based on application program,
The original source code is split into multiple code blocks;
Jump list establishes module, for redirecting logic in compiling or operation based on the original source code, establishes table
The jump list of the execution sequence of the multiple code block is levied, the address of code block label and code block is preserved in the jump list
Correspondence;Wherein, described address be reinforce after the second source code in compiling or operation, the ground of code block in memory
Location, the code block mark the address for accessing corresponding code block;
First reinforcing module is redirected for will redirect logic between the code block of the original source code by described
Code block label in table is realized, to generate the first source code after reinforcing;
Second reinforces module, for being carried out to the conditional-variable in the function of first source code using opaque predicate
Fuzzy Processing obtains the second source code after the reinforcing.
The third aspect, the embodiment of the present application also provides a kind of electronic equipment, including:It memory, processor and is stored in
On the memory and the computer program that can run on the processor, the computer program are executed by the processor
The step of Shi Shixian methods as described in relation to the first aspect.
Fourth aspect, it is described computer-readable to deposit the embodiment of the present application also provides a kind of computer readable storage medium
It is stored with computer program on storage media, method as described in relation to the first aspect is realized when the computer program is executed by processor
The step of.
Above-mentioned at least one technical solution that the embodiment of the present application uses, can be existed based on the original source code of application program
Logic is redirected when compiling or operation, the original source code is split into multiple code blocks;Existed based on the original source code
Logic is redirected when compiling or operation, establishes the jump list for the execution sequence for characterizing the multiple code block, in the jump list
Preserve the correspondence of code block label and the address of code block;Wherein, described address is that the second source code after reinforcing exists
When compiling or operation, the address of code block in memory, the code block marks the address for accessing corresponding code block;It will
Logic is redirected between the code block of the original source code, is marked and is realized by the code block in the jump list, to generate
The first source code after reinforcing;Fuzzy place is carried out to the conditional-variable in the function of first source code using opaque predicate
Reason, obtains the second source code after the reinforcing.Due on the one hand, original source being realized by the code block label in jump list
Logic is redirected between the code block of code, therefore can hide original source code executes sequence;On the other hand, utilization is impermeable
Bright predicate carried out Fuzzy Processing to the conditional-variable in source code, therefore the source code that can increase after reinforcing cracks difficulty
Degree, and then the anti-reversing analysis ability of source code can be improved.
Description of the drawings
Attached drawing described herein is used for providing further understanding of the present application, constitutes part of this application, this Shen
Illustrative embodiments and their description please do not constitute the improper restriction to the application for explaining the application.In the accompanying drawings:
Fig. 1 is the one of a kind of source code reinforcement means based on execution sequence and single-point logic provided by the embodiments of the present application
The flow diagram of kind specific implementation;
Fig. 2 is a kind of detailed process schematic diagram of the step 103 in embodiment shown in FIG. 1;
Fig. 3 is the one of a kind of source code bracing means based on execution sequence and single-point logic provided by the embodiments of the present application
The structural schematic diagram of kind specific implementation;
Fig. 4 is a kind of detailed construction schematic diagram of the module 303 in embodiment shown in Fig. 3;
Fig. 5 is the structural schematic diagram of electronic equipment provided by the embodiments of the present application.
Specific implementation mode
To keep the purpose, technical scheme and advantage of the application clearer, below in conjunction with the application specific embodiment and
Technical scheme is clearly and completely described in corresponding attached drawing.Obviously, described embodiment is only the application one
Section Example, instead of all the embodiments.Based on the embodiment in the application, those of ordinary skill in the art are not doing
Go out the every other embodiment obtained under the premise of creative work, shall fall in the protection scope of this application.
In order to improve the anti-reversing analysis ability of source code, the embodiment of the present application provides a kind of based on execution sequence and list
The source code reinforcement means and device of point logic, illustrate separately below.
It should be noted that implementing a kind of source code based on execution sequence and single-point logic provided by the embodiments of the present application
The executive agent of reinforcement means and device can be client, can also be server, the embodiment of the present application is to implementing above-mentioned side
Method and the specific implementation main body of device do not limit.
Below first to a kind of source code reinforcement means based on execution sequence and single-point logic provided by the embodiments of the present application
It illustrates.
As shown in Figure 1, a kind of source code reinforcing side based on execution sequence and single-point logic provided by the embodiments of the present application
Method may include steps of:
Step 101 redirects logic based on the original source code of application program in compiling or operation, by the original source
Code splits into multiple code blocks.
Above application program can need destination application to be protected.
Code block, it can be understood as be the one section of code that can be sequentially executed in source code, with redirect logic start and with
It redirects logic to terminate, usually be bracketed by a brace " { } ".
Such as:
Certainly, in some cases, code block can not also be bracketed by brace.
More specifically, code block can be the corresponding code segment of skip instruction in original source code, such as above-mentioned example
In if sentences code block 1 corresponding with else sentences and code block 2.
Wherein, skip instruction may include:In the sentences such as Do statement, conditional statement, return statement and END
It is any.Do statement for example may include:The sentences such as while, do-while, for, for/in.Conditional statement for example can be with
Including:The sentences such as if/else, switch/case.Return statement for example can be return sentences.END for example can be with
It is break sentences.In addition, skip instruction can also including goto, continue etc. sentences.
It is appreciated that the sentences such as above-mentioned Do statement, conditional statement, return statement and END are only to skip instruction
For example, not constituting the restriction to the embodiment of the present application.
Step 102 redirects logic based on the original source code in compiling or operation, establishes and characterizes the multiple generation
The jump list of the execution sequence of code block.
The correspondence of code block label and the address of code block is preserved in above-mentioned jump list;Wherein, described address is
Source code after reinforcing is in compiling or operation, the address of code block in memory, and the code block label is for accessing correspondence
Code block address.
In the case of institute's illustrated example in continuing to use above-mentioned steps 101, for example, can be by array address_array [3]
={ address of code block 1, the address of code block 2, the address of code block 3 } is preserved as jump list, also i.e. by array member
The correspondence of plain " address_array [0] " and " address of code block 1 ", array element " address_array [1] " and
Pair of correspondence and array element " address_array [2] " and " address of code block 3 " of " address of code block 2 "
It should be related in preservation to jump list.Correspondingly, array element " address_array [0] " can be used as access " code block 1 " to exist
The first generation code block of address in memory marks, and array element " address_array [1] " can be used as and access " code block 2 "
The first generation code block of address in memory marks, and so on, this specification is no longer described in detail.
Step 103 will redirect logic between the code block of the original source code, pass through the code in the jump list
Block label is realized, to generate the source code after the reinforcing.
In a specific embodiment, as shown in Fig. 2, above-mentioned steps 103 may include:
Sub-step 201 determines initial position of the first generation code block in the original source code.
First generation code block can be the object code for needing to hide or obscure its execution sequence in original source code
Block.
It is appreciated that in the embodiment of the present application, needing the quantity for hiding or obscuring the first generation code block of its execution sequence
Can also be multiple with one, the embodiment of the present application does not limit this.
Sub-step 202 is inserted into the first generation code block in the first position of the original source code.
First position is the position different from the initial position, that is to say, that can be different from above-mentioned initial position
Any position is inserted into the first generation code block.
Assuming that original source code is:
It is above-mentioned initial when regarding " code block 1 " and " code block 2 " in above-mentioned original source code as first generation code block
Position is the position of " code block 1 " and " code block 2 " in above-mentioned original source code.
Then, the source code after first generation code block is inserted into the second position different from above-mentioned initial position can be:
Sub-step 203 will replace with the first pre-set code positioned at the first generation code block of the initial position.
First pre-set code may include:First default skip instruction and first generation code block label;Wherein, the first default jump
GO TO statement is for accessing first generation code block label, and the first default skip instruction includes but not limited to goto sentences.First code
Block is marked for accessing the corresponding address of the first generation code block, to execute the first generation code block.
It continues to use in sub-step 202 known to institute's illustrated example, it is assumed that 2 corresponding first generation code block mark of code block 1 and code block
Note is respectively:Address_array [0], address_array [1], the first default skip instruction are goto sentences, then are holding
It has gone after sub-step 203, obtained source code can be:
Sub-step 204 determines that second generation code block, the second generation code block are that the original source code is being compiled or run
When, need the next code block executed after having executed the first generation code block.
For example, when original source code is the source code described in sub-step 101, it is assumed that first generation code block is code block
1 and code block 2, then, execute that the next code block executed is needed after first generation code block is code block 3 namely second code
Block is code block 3.
Sub-step 205 is inserted into the second pre-set code in the ending for being inserted into the first generation code block of the first position.
Above-mentioned second pre-set code may include:Second default skip instruction and second generation code block label;Wherein, described
Two default skip instructions are for accessing the second generation code block label, and the second default sentence includes but not limited to goto sentences,
Such as second default sentence can redirect function, etc. with predefined.Second generation code block is marked for accessing the second generation
The corresponding address of code block, to execute the second generation code block.
For example, institute's illustrated example in sub-step 203 is continued to use, " code block 1 " and " generation that can be in being inserted into original source code
The second pre-set code is inserted into the ending of code block 2 " respectively --- goto address_array [2], with executed code block 1 or
Code block 3 is executed after code block 2, ensures that correct in actual motion of source code after reinforcing executes sequence.Source after insertion
Code is:
It should be noted that embodiment shown in Fig. 2 only lists a kind of specific implementation mode of above-mentioned steps 103,
In actual implementation, those skilled in the art are also based on present invention design using other specific implementation modes come real
Existing, the embodiment of the present application does not limit this.
Step 104 carries out Fuzzy Processing using opaque predicate to the conditional-variable in the function of first source code,
Obtain the second source code after the reinforcing.
In a specific embodiment, above-mentioned steps 104 may include:In the function for determining first source code
First condition variable;At least one opaque predicate is added in the first condition variable, obtains second condition variable, it is described
The value of opaque predicate is constant;Utilize first condition variable described in the second condition variable replacement.
Wherein, first condition variable can be understood as the corresponding variable of function conditional sentence of the first source code.Item
Part sentence includes but not limited to if sentences, do-while and switch-case sentences, etc..
More specifically, first condition variable can be that the branch in the first source code positioned at function redirects item at node
Part variable.It can be the node where the branch statements such as if, if else, switch that branch, which redirects node, correspondingly, first
Part variable is the variable in branch statement.
For example, for having executed the first source code after the reinforcing obtained after above-mentioned steps 103, it may be determined that go out the first source
Conditional-variable in the function of code is " condition ".
Opaque predicate can determine that the output of point determines that before obscuring in program and if only if a predicate
When, it is opaque to claim the predicate.
Specifically, in the embodiment of the present application, opaque predicate can be to be worth constant function expression.When opaque
Predicate is perseverance when being genuine function expression, after opaque predicate is added in first condition variable, to first condition variable
Value will not have any impact.
More specifically, opaque predicate can be perseverance be it is true or it is permanent be false mathematical formulae, such as:X (x+1) %2=
=0.Wherein, "==" indicate to be constantly equal to, " % " expression rems.In the expression formula, inevitable one of x and x+1 is odd number, another
A is even number, therefore x (x+1) is necessarily even number, and the value of x (x+1) %2 is also necessarily 0.Therefore, expression formula " x (x+1) %2=
=0 " perseverance is true.
Correspondingly, carrying out mould to the conditional-variable " condition " of the first source code in upper example using opaque predicate
Pasting replaced second source code can be:
Optionally, described that at least one opaque predicate is added in the first condition variable in above-mentioned steps 104
May include:At least one opaque predicate is added before or after the first condition variable, and utilizes default symbol
Number separate the first condition variable and the opaque predicate.
Continue to use the example above, opaque predicate is expression formula " x (x+1) %2==0 ", and predetermined symbol is "+", first
Part variable is " x ".So, opaque predicate is added after first condition variable, and following source codes can be obtained:
If (condition+x (x+1) %2==0)
…
}
More specifically, in above-mentioned steps 104, it is described added in the first condition variable it is at least one opaque
Predicate may include:The first condition variable is divided into multiple character fields using preset rules;In the multiple character field
Between add at least one opaque predicate.
In the present embodiment, due to being added to opaque predicate so that second condition variable " condition+x (x+1) %
2==0 " largely increases compared to complexity higher for original first condition variable " condition "
The decompiling difficulty of source code, strengthens source code.
Certainly, multiple opaque predicates can be also added in first condition variable, more to improve first condition variable
Complexity.For example, before first condition variable and adding opaque predicate " x (x+1) %2 after second condition variable respectively
==0 " is used in combination predetermined symbol "+" to separate first condition variable and opaque predicate, obtains second condition variable:X (x+1) %2
+ condition+x (x+1) %2==0.
In one embodiment, first condition variable is divided into multiple character fields using preset rules, and then more
At least one opaque predicate is added between a character field.
For example, first condition variable is " xy ", preset rules are:Each two variable is separated.So, default using this
First condition variable " xy " can be divided into character field " x " and " y " by rule.Assuming that opaque predicate is expression formula " x (x+1) %2
==0 ", then the result for adding opaque predicate between the character field obtained after singulation is x*x (x+1) %2==0*
Y, wherein " * " is the predetermined symbol for separated variable and opaque predicate.
In the present embodiment, when first condition variable is divided into three or three or more character fields, each two character
The opaque predicate added between section can be identical, also different.
It can be seen that by the present embodiment, be added in the first condition variable after segmentation due to opaque predicate so that
Second condition variable " x*x (x+1) %2==0*y " compared to complexity higher for original first condition variable " xy ", because
This materially increases the decompiling difficulty of source code, strengthens source code.
It should be noted that in above-mentioned steps 104, it can also be more that the conditional-variable that is blurred processing, which can be one,
A, the embodiment of the present application does not limit this.
A kind of source code reinforcement means based on execution sequence and single-point logic provided by the embodiments of the present application, due to a side
Face is realized by code block in jump list label and redirects logic between the code block of original source code, therefore can be hidden
That hides original source code executes sequence;On the other hand, the conditional-variable in source code is obscured using opaque predicate
Processing, therefore the source code that can increase after reinforcing cracks difficulty, and then can improve the anti-reversing analysis ability of source code.
Optionally, in another embodiment, a kind of source code based on code execution sequence provided by the embodiments of the present application
Reinforcement means can also include:First pre-set code and/or second pre-set code are encrypted.
For example, first pre-set code and/or second pre-set code can be replaced with mess code, to realize
Encryption to first pre-set code and/or second pre-set code.Other modes pair first can also be used pre- certainly
If code and/or the second pre-set code are encrypted, the embodiment of the present application does not limit this.
It is appreciated that in the embodiment of the present application, adding to the first pre-set code and/or second pre-set code
It is close, it can preferably hide the correct of code block in source code and execute sequence, improve the difficulty for cracking the source code after reinforcing, into
One step promotes the anti-reversing analysis ability of the source code after reinforcing.
Optionally, in another embodiment, a kind of source code based on code execution sequence provided by the embodiments of the present application
Reinforcement means can also include:The jump list is encrypted.
Existing Encryption Algorithm may be used to redirecting subtabulation to be encrypted, the embodiment of the present application does not limit this
It is fixed.
It is also understood that in the embodiment of the present application, the jump list of the correct execution sequence of reflection code block is added
It is close, it can preferably hide the correct of code block in source code and execute sequence so that even if static analysis attacker has taken source
Code executes sequence because that can not obtain preserved in jump list correct, and can not know the actual services logic of source code, into one
Step improves the anti-reversing analysis ability of source code.
Optionally, based on any of the above embodiments, provided by the embodiments of the present application a kind of suitable based on code execution
The source code reinforcement means of sequence can also include:The source code after reinforcing is stored into the first file;It will be encrypted
The jump list is stored into the second file.
Wherein, first file and second file are different files.
In the embodiment of the present application, since the source code after reinforcing and encrypted jump list have been saved in difference respectively
File in, therefore jump list can be made to become more hidden without being obtained by static analysis attacker, to make attacker without
Method obtains preserved in jump list correct and executes sequence, therefore the anti-reversing crack ability of source code can be further improved.
On this basis, a kind of source code reinforcement means based on code execution sequence provided by the embodiments of the present application, also
May include:Second file is encrypted.
Specific Encryption Algorithm can be existing Encryption Algorithm, and the application does not limit this.
It is appreciated that the second file is encrypted, static analysis attacker can be further increased and obtained in jump list
The difficulty of hiding correct execution sequence, to further promote the anti-reversing crack ability of source code.
Preferably, the Encryption Algorithm for the jump list can be different from the Encryption Algorithm for second file.
In this way, could obtain hidden in jump list correct due to needing to crack two different Encryption Algorithm executes sequence, it can
Further to increase the difficulty that static analysis attacker obtains the correct execution sequence hidden in jump list, to more into one
Step promotes the anti-reversing crack ability of source code.
Optionally, provided by the embodiments of the present application a kind of suitable based on code execution before the source code after being reinforced
The source code reinforcement means of sequence can also include:It is inserted into redundant code in the original source code.This can also further be carried
Rise the anti-reversing crack ability of source code.
Corresponding to above method embodiment, the embodiment of the present application also provides a kind of based on execution sequence and single-point logic
Source code bracing means, is illustrated below.
It is filled as shown in figure 3, the embodiment of the present application provides a kind of reinforced based on the source code of execution sequence and single-point logic
300 are set, which may include:Code block splits module 301, jump list establishes module 302 and first and reinforces module 303.
Code block splits module 301, is patrolled for the redirecting in compiling or operation of the original source code based on application program
Volume, the original source code is split into multiple code blocks.
Above application program can need destination application to be protected.
Code block, it can be understood as be the one section of code that can be sequentially executed in source code, with redirect logic start and with
It redirects logic to terminate, usually be bracketed by a brace " { } ", naturally it is also possible to not bracketed by brace.
More specifically, code block can be the corresponding code segment of skip instruction in original source code.
Jump list establishes module 302, for redirecting logic in compiling or operation based on the original source code, establishes
Characterize the jump list of the execution sequence of the multiple code block.
The correspondence of code block label and the address of code block is preserved in above-mentioned jump list;Wherein, described address is
Source code after reinforcing is in compiling or operation, the address of code block in memory, and the code block label is for accessing correspondence
Code block address.
First reinforcing module 303 passes through the jump for will redirect logic between the code block of the original source code
The code block label turned in table is realized, to generate the source code after the reinforcing.
In a specific embodiment, as shown in figure 4, the first reinforcing module 303 may include:First determination sub-module
401, it first is inserted into submodule 402, replaces submodule 403, the second determination sub-module 404 and second insertion submodule 405.
First determination sub-module 401, for determining initial position of the first generation code block in the original source code.
First generation code block can be the target code block for needing to obscure its execution sequence in original source code.
It is appreciated that in the embodiment of the present application, needing the quantity for hiding or obscuring the first generation code block of its execution sequence
Can also be multiple with one, the embodiment of the present application does not limit this.
First is inserted into submodule 402, for being inserted into the first generation code block in the first position of the original source code.
First position is the position different from the initial position, that is to say, that can be different from above-mentioned initial position
Any position is inserted into the first generation code block.
Submodule 403 is replaced, for the first generation code block for being located at the initial position to be replaced with for the first default generation
Code.
First pre-set code may include:First default skip instruction and first generation code block label;Wherein, the first default jump
GO TO statement is for accessing first generation code block label, and the first default skip instruction includes but not limited to goto sentences.First code
Block is marked for accessing the corresponding address of the first generation code block, to execute the first generation code block.
Second determination sub-module 404, for determining that second generation code block, the second generation code block are that the original source code exists
When compiling or operation, the next code block executed is needed after having executed the first generation code block.
Second is inserted into submodule 405, pre- for being inserted into second in the ending for being inserted into the first generation code block of the first position
If code.
Above-mentioned second pre-set code may include:Second default skip instruction and second generation code block label;Wherein, described
Two default skip instructions are for accessing the second generation code block label, and the second default sentence includes but not limited to goto sentences,
Such as second default sentence can redirect function, etc. with predefined.Second generation code block is marked for accessing the second generation
The corresponding address of code block, to execute the second generation code block.
It should be noted that embodiment shown in Fig. 4 only lists a kind of specific implementation mode of above-mentioned module 303,
In actual implementation, those skilled in the art are also based on present invention design using other specific implementation modes come real
Existing, the embodiment of the present application does not limit this.
Second reinforces module 304, for using opaque predicate to the conditional-variable in the function of first source code
Carry out Fuzzy Processing, the second source code after being reinforced.
In a specific embodiment, second module 304 is reinforced, can specifically include:
Determination sub-module, the first condition variable in function for determining first source code;
Addition submodule obtains Article 2 for adding at least one opaque predicate in the first condition variable
The value of part variable, the opaque predicate is constant;
Submodule is replaced, for utilizing first condition variable described in the second condition variable replacement.
In one embodiment, it is genuine function expression that opaque predicate, which includes permanent,.
In one embodiment, above-mentioned addition submodule may include:
Addition and separating element, for adding at least one opaque predicate before or after first condition variable, and
Separate first condition variable and opaque predicate using predetermined symbol.
In one embodiment, above-mentioned addition submodule may include:
Cutting unit, for first condition variable to be divided into multiple character fields using preset rules;
Adding device, for adding at least one opaque predicate between multiple character fields.
It should be noted that reinforced in module 304 second, the conditional-variable that is blurred processing can be one can also
It is multiple, the embodiment of the present application does not limit this.
A kind of source code bracing means based on execution sequence and single-point logic provided by the embodiments of the present application, due to a side
Face is realized by code block in jump list label and redirects logic between the code block of original source code, therefore can be hidden
That hides original source code executes sequence;On the other hand, the conditional-variable in source code is obscured using opaque predicate
Processing, therefore the source code that can increase after reinforcing cracks difficulty, and then can improve the anti-reversing analysis ability of source code.
Optionally, based on any of the above embodiments, provided by the embodiments of the present application a kind of suitable based on code execution
The source code bracing means 300 of sequence can also include:First encrypting module, for first pre-set code and/or described
Second pre-set code is encrypted.
For example, the first encrypting module can with mess code by first pre-set code and/or second pre-set code into
Row is replaced, to realize the encryption to first pre-set code and/or second pre-set code.Certain first encrypting module is also
The first pre-set code of other modes pair may be used and/or the second pre-set code is encrypted, the embodiment of the present application does not do this
It limits.
It is appreciated that in the embodiment of the present application, adding to the first pre-set code and/or second pre-set code
It is close, it can preferably hide the correct of code block in source code and execute sequence, improve the difficulty for cracking the source code after reinforcing, into
One step promotes the anti-reversing analysis ability of the source code after reinforcing.
Optionally, based on any of the above embodiments, provided by the embodiments of the present application a kind of suitable based on code execution
The source code bracing means 300 of sequence can also include:Second encrypting module, for the jump list to be encrypted.
Existing Encryption Algorithm may be used to redirecting subtabulation to be encrypted, the embodiment of the present application does not limit this
It is fixed.
It is also understood that in the embodiment of the present application, the jump list of the correct execution sequence of reflection code block is added
It is close, it can preferably hide the correct of code block in source code and execute sequence so that even if static analysis attacker has taken source
Code executes sequence because that can not obtain preserved in jump list correct, and can not know the actual services logic of source code, into one
Step improves the anti-reversing analysis ability of source code.
Optionally, based on any of the above embodiments, provided by the embodiments of the present application a kind of suitable based on code execution
The source code bracing means 300 of sequence can also include:First file preserving module and the second file preserving module.
First file preserving module, for storing the source code after reinforcing into the first file.
Second file preserving module, for storing the encrypted jump list into the second file.
Wherein, first file and second file are different files.
In the embodiment of the present application, since the source code after reinforcing and encrypted jump list have been saved in difference respectively
File in, therefore jump list can be made to become more hidden without being obtained by static analysis attacker, to make attacker without
Method obtains preserved in jump list correct and executes sequence, therefore the anti-reversing crack ability of source code can be further improved.
On this basis, a kind of source code bracing means based on code execution sequence provided by the embodiments of the present application, also
May include:File encryption module, for second file to be encrypted.
Specific Encryption Algorithm can be existing Encryption Algorithm, and the application does not limit this.
It is appreciated that the second file is encrypted, static analysis attacker can be further increased and obtained in jump list
The difficulty of hiding correct execution sequence, to further promote the anti-reversing crack ability of source code.
Preferably, the Encryption Algorithm for the jump list can be different from the Encryption Algorithm for second file.
In this way, could obtain hidden in jump list correct due to needing to crack two different Encryption Algorithm executes sequence, it can
Further to increase the difficulty that static analysis attacker obtains the correct execution sequence hidden in jump list, to more into one
Step promotes the anti-reversing crack ability of source code.
Optionally, provided by the embodiments of the present application a kind of suitable based on code execution before the source code after being reinforced
The source code bracing means of sequence can also include:Redundant code is inserted into module, for being inserted into redundancy in the original source code
Code.This can also further promote the anti-reversing crack ability of source code.
Fig. 5 show be a kind of electronic equipment provided by the embodiments of the present application structural schematic diagram.Referring to FIG. 5, hard
Part level, the electronic equipment include processor, further include optionally internal bus, network interface, memory.Wherein, memory
May include memory, such as high-speed random access memory (Random-Access Memory, RAM), it is also possible to further include non-
Volatile memory (non-volatile memory), for example, at least 1 magnetic disk storage etc..Certainly, which may be used also
Can include the required hardware of other business.
Processor, network interface and memory can be connected with each other by internal bus, which can be ISA
(Industry Standard Architecture, industry standard architecture) bus, PCI (Peripheral
Component Interconnect, Peripheral Component Interconnect standard) bus or EISA (Extended Industry Standard
Architecture, expanding the industrial standard structure) bus etc..The bus can be divided into address bus, data/address bus, control always
Line etc..For ease of indicating, only indicated with a four-headed arrow in Fig. 5, it is not intended that an only bus or a type of
Bus.
Memory, for storing program.Specifically, program may include program code, and said program code includes calculating
Machine operational order.Memory may include memory and nonvolatile memory, and provide instruction and data to processor.
Processor is from then operation in corresponding computer program to memory is read in nonvolatile memory, in logical layer
The source code bracing means based on execution sequence and single-point logic is formed on face.Processor executes the program that memory is stored,
And specifically for executing following operation:
Logic is redirected in compiling or operation based on the original source code of application program, the original source code is split
At multiple code blocks;
Logic is redirected in compiling or operation based on the original source code, establishes and characterizes holding for the multiple code block
The jump list of row sequence preserves the correspondence of code block label and the address of code block in the jump list;Wherein, described
Address is the second source code after reinforcing in compiling or operation, the address of code block in memory, and code block label is used
In the address for accessing corresponding code block;
Logic will be redirected between the code block of the original source code, is marked by the code block in the jump list real
It is existing, to generate the first source code after reinforcing;
Fuzzy Processing is carried out to the conditional-variable in the function of first source code using opaque predicate, is obtained described
The second source code after reinforcing.
The source code bracing means based on execution sequence and single-point logic disclosed in the above-mentioned embodiment illustrated in fig. 5 such as the application
The method of execution can be applied in processor, or be realized by processor.Processor may be a kind of IC chip, tool
There is the processing capacity of signal.During realization, each step of the above method can be patrolled by the integrated of the hardware in processor
The instruction for collecting circuit or software form is completed.Above-mentioned processor can be general processor, including central processing unit
(Central Processing Unit, CPU), network processing unit (Network Processor, NP) etc.;It can also be number
Signal processor (Digital Signal Processor, DSP), application-specific integrated circuit (Application Specific
Integrated Circuit, ASIC), field programmable gate array (Field-Programmable Gate Array,
FPGA) either other programmable logic device, discrete gate or transistor logic, discrete hardware components.May be implemented or
Person executes disclosed each method, step and logic diagram in the embodiment of the present application.General processor can be microprocessor or
Person's processor can also be any conventional processor etc..The step of method in conjunction with disclosed in the embodiment of the present application, can be straight
Connect and be presented as that hardware decoding processor executes completion, or in decoding processor hardware and software module combination executed
At.Software module can be located at random access memory, and flash memory, read-only memory, programmable read only memory or electrically-erasable can
In the storage medium of this fields such as programmable memory, register maturation.The storage medium is located at memory, and processor reads storage
Information in device, in conjunction with the step of its hardware completion above method.
The embodiment of the present application also proposed a kind of computer readable storage medium, the computer-readable recording medium storage one
A or multiple programs, the one or more program include instruction, which works as is held by the electronic equipment including multiple application programs
When row, the electronic equipment can be made to execute in embodiment illustrated in fig. 5, dress is reinforced based on the source code of execution sequence and single-point logic
The method for setting execution, and specifically for executing:
Logic is redirected in compiling or operation based on the original source code of application program, the original source code is split
At multiple code blocks;
Logic is redirected in compiling or operation based on the original source code, establishes and characterizes holding for the multiple code block
The jump list of row sequence preserves the correspondence of code block label and the address of code block in the jump list;Wherein, described
Address is the second source code after reinforcing in compiling or operation, the address of code block in memory, and code block label is used
In the address for accessing corresponding code block;
Logic will be redirected between the code block of the original source code, is marked by the code block in the jump list real
It is existing, to generate the first source code after reinforcing;
Fuzzy Processing is carried out to the conditional-variable in the function of first source code using opaque predicate, is obtained described
The second source code after reinforcing.
It should be understood by those skilled in the art that, embodiments herein can be provided as method, system or computer program
Product.Therefore, complete hardware embodiment, complete software embodiment or reality combining software and hardware aspects can be used in the application
Apply the form of example.Moreover, the application can be used in one or more wherein include computer usable program code computer
The computer program production implemented in usable storage medium (including but not limited to magnetic disk storage, CD-ROM, optical memory etc.)
The form of product.
The application is with reference to method, the flow of equipment (system) and computer program product according to the embodiment of the present application
Figure and/or block diagram describe.It should be understood that can be realized by computer program instructions every first-class in flowchart and/or the block diagram
The combination of flow and/or box in journey and/or box and flowchart and/or the block diagram.These computer programs can be provided
Instruct the processor of all-purpose computer, special purpose computer, Embedded Processor or other programmable data processing devices to produce
A raw machine so that the instruction executed by computer or the processor of other programmable data processing devices is generated for real
The device for the function of being specified in present one flow of flow chart or one box of multiple flows and/or block diagram or multiple boxes.
These computer program instructions, which may also be stored in, can guide computer or other programmable data processing devices with spy
Determine in the computer-readable memory that mode works so that instruction generation stored in the computer readable memory includes referring to
Enable the manufacture of device, the command device realize in one flow of flow chart or multiple flows and/or one box of block diagram or
The function of being specified in multiple boxes.
These computer program instructions also can be loaded onto a computer or other programmable data processing device so that count
Series of operation steps are executed on calculation machine or other programmable devices to generate computer implemented processing, in computer or
The instruction executed on other programmable devices is provided for realizing in one flow of flow chart or multiple flows and/or block diagram one
The step of function of being specified in a box or multiple boxes.
It is described it should be noted that each embodiment in the application is all made of relevant mode, between each embodiment
Just to refer each other for identical similar part, and each embodiment focuses on the differences from other embodiments.Especially
Its, for device embodiments, since it is substantially similar to the method embodiment, so description is fairly simple, related place
Illustrate referring to the part of embodiment of the method.
It should also be noted that, the terms "include", "comprise" or its any other variant are intended to nonexcludability
Including so that process, method, commodity or equipment including a series of elements include not only those elements, but also wrap
Include other elements that are not explicitly listed, or further include for this process, method, commodity or equipment intrinsic want
Element.In the absence of more restrictions, the element limited by sentence "including a ...", it is not excluded that including element
There is also other identical elements in process, method, commodity or equipment.
It these are only embodiments herein, be not intended to limit this application.To those skilled in the art,
The application can have various modifications and variations.It is all within spirit herein and principle made by any modification, equivalent replacement,
Improve etc., it should be included within the scope of claims hereof.
Claims (14)
1. a kind of source code reinforcement means based on execution sequence and single-point logic, which is characterized in that the method includes:
Logic is redirected in compiling or operation based on the original source code of application program, the original source code is split into more
A code block;
Logic is redirected in compiling or operation based on the original source code, the execution for establishing the multiple code block of characterization is suitable
The jump list of sequence preserves the correspondence of code block label and the address of code block in the jump list;Wherein, described address
For the second source code after reinforcing in compiling or operation, the address of code block in memory, the code block label is for visiting
Ask the address of corresponding code block;
Logic will be redirected between the code block of the original source code, is marked and realized by the code block in the jump list,
To generate the first source code after reinforcing;
Fuzzy Processing is carried out to the conditional-variable in the function of first source code using opaque predicate, obtains the reinforcing
The second source code afterwards.
2. according to the method described in claim 1, it is characterized in that, the jump by between the code block of the original source code
Turn logic, is marked and realized by the code block in the jump list, including:
Determine initial position of the first generation code block in the original source code;
It is inserted into the first generation code block in the first position of the original source code, the first position and the initial position are not
Together;
The first pre-set code, the first pre-set code packet will be replaced with positioned at the first generation code block of the initial position
It includes:First default skip instruction and first generation code block label;Wherein, the described first default skip instruction is for accessing described first
Code block marks, and the first generation code block label is for accessing the corresponding address of the first generation code block, to execute described first
Code block;
Determine second generation code block, the second generation code block is the original source code in compiling or operation, has executed described the
The next code block executed is needed after one code block;
It is inserted into the second pre-set code, the second pre-set code packet in the ending for being inserted into the first generation code block of the first position
It includes:Second default skip instruction and second generation code block label;Wherein, the described second default skip instruction is for accessing described second
Code block marks, and the second generation code block label is for accessing the corresponding address of the second generation code block, to execute described second
Code block.
3. according to the method described in claim 2, it is characterized in that, the method further includes:
First pre-set code and/or second pre-set code are encrypted.
4. according to claim 1-3 any one of them methods, which is characterized in that the method further includes:
The jump list is encrypted.
5. according to the method described in claim 4, it is characterized in that, the method further includes:
The source code after reinforcing is stored into the first file;
The encrypted jump list is stored into the second file;
Wherein, first file and second file are different files.
6. according to the method described in claim 1, it is characterized in that, it is described using opaque predicate to first source code
Conditional-variable in function carries out Fuzzy Processing, including:
Determine the first condition variable in the function of first source code;
At least one opaque predicate is added in the first condition variable, obtains second condition variable, the opaque meaning
The value of word is constant;
Utilize first condition variable described in the second condition variable replacement.
7. according to the method described in claim 6, it is characterized in that, the opaque predicate is perseverance be it is true or it is permanent be false function
Expression formula.
8. a kind of source code bracing means based on execution sequence and single-point logic, which is characterized in that described device includes:
Code block splits module, logic is redirected in compiling or operation for the original source code based on application program, by institute
It states original source code and splits into multiple code blocks;
Jump list establishes module, for redirecting logic in compiling or operation based on the original source code, establishes characterization institute
The jump list of the execution sequence of multiple code blocks is stated, pair of code block label and the address of code block is preserved in the jump list
It should be related to;Wherein, described address be reinforce after the second source code in compiling or operation, the address of code block in memory,
The code block marks the address for accessing corresponding code block;
First reinforces module, for will redirect logic between the code block of the original source code, by the jump list
Code block label realize, with generate reinforce after the first source code;
Second reinforces module, for being obscured to the conditional-variable in the function of first source code using opaque predicate
Processing, obtains the second source code after the reinforcing.
9. device according to claim 8, which is characterized in that described first, which reinforces module, includes:
First determination sub-module, for determining initial position of the first generation code block in the original source code;
First is inserted into submodule, for being inserted into the first generation code block in the first position of the original source code, described first
Position is different from the initial position;
Submodule is replaced, it is described for the first generation code block for being located at the initial position to be replaced with the first pre-set code
First pre-set code includes:First default skip instruction and first generation code block label;Wherein, the described first default skip instruction is used
In accessing the first generation code block label, the first generation code block is marked for accessing the corresponding address of the first generation code block,
To execute the first generation code block;
Second determination sub-module, for determining second generation code block, the second generation code block be the original source code in compiling or
When operation, the next code block executed is needed after having executed the first generation code block;
Second is inserted into submodule, for being inserted into the second pre-set code in the ending for being inserted into the first generation code block of the first position,
Second pre-set code includes:Second default skip instruction and second generation code block label;Wherein, described second default language is redirected
For sentence for accessing second generation code block label, the second generation code block label is corresponding for accessing the second generation code block
Location, to execute the second generation code block.
10. device according to claim 9, which is characterized in that described device further includes:
First encrypting module, for first pre-set code and/or second pre-set code to be encrypted.
11. according to claim 8-10 any one of them devices, which is characterized in that described device further includes:
Second encrypting module, for the jump list to be encrypted.
12. according to the devices described in claim 11, which is characterized in that described device further includes:
First file preserving module, for storing the source code after reinforcing into the first file;
Second file preserving module, for storing the encrypted jump list into the second file;
Wherein, first file and second file are different files.
13. device according to claim 8, which is characterized in that described second, which reinforces module, includes:
Determination sub-module, the first condition variable in function for determining first source code;
Submodule is added, for adding at least one opaque predicate in the first condition variable, obtains second condition change
Amount, the value of the opaque predicate are constant;
Submodule is replaced, for utilizing first condition variable described in the second condition variable replacement.
14. device according to claim 13, which is characterized in that the opaque predicate be perseverance be it is true or it is permanent be false letter
Number expression formula.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201810146606.4A CN108509772B (en) | 2018-02-12 | 2018-02-12 | Source code reinforcement method and device based on execution sequence and single-point logic |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201810146606.4A CN108509772B (en) | 2018-02-12 | 2018-02-12 | Source code reinforcement method and device based on execution sequence and single-point logic |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN108509772A true CN108509772A (en) | 2018-09-07 |
| CN108509772B CN108509772B (en) | 2022-01-07 |
Family
ID=63375021
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201810146606.4A Active CN108509772B (en) | 2018-02-12 | 2018-02-12 | Source code reinforcement method and device based on execution sequence and single-point logic |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN108509772B (en) |
Cited By (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN112541188A (en) * | 2019-09-20 | 2021-03-23 | 武汉斗鱼网络科技有限公司 | Method and device for preventing application program code from being statically analyzed |
| CN112965458A (en) * | 2021-02-01 | 2021-06-15 | 杭州和利时自动化有限公司 | Control logic simulation debugging method and device for control system and readable storage medium |
| CN112988778A (en) * | 2019-12-13 | 2021-06-18 | 北京沃东天骏信息技术有限公司 | A method and device for processing database query script |
| CN113536310A (en) * | 2021-07-08 | 2021-10-22 | 浙江网商银行股份有限公司 | Code file processing method, code file checking device and electronic equipment |
| CN113791770A (en) * | 2021-11-15 | 2021-12-14 | 北京壁仞科技开发有限公司 | Code compiler, code compiling method, code compiling system and computer medium |
| CN114675831A (en) * | 2022-03-09 | 2022-06-28 | 韩济澎 | Compiling system and method of programming language |
| CN115202662A (en) * | 2021-04-14 | 2022-10-18 | 华为技术有限公司 | Code checking method under weak memory order architecture and corresponding equipment |
| WO2024193164A1 (en) * | 2023-03-23 | 2024-09-26 | 华为技术有限公司 | Code processing method and apparatus |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP3057021A1 (en) * | 2015-02-16 | 2016-08-17 | Thomson Licensing | Control flow graph flattening device and method obfuscating branches via interprocedural data |
| CN106529225A (en) * | 2016-10-27 | 2017-03-22 | 努比亚技术有限公司 | Device and method for protecting source code of application program |
| CN106599620A (en) * | 2016-11-16 | 2017-04-26 | 中国人民解放军国防科学技术大学 | Binary software protection method based on dynamic code conversion |
| CN107341374A (en) * | 2017-07-17 | 2017-11-10 | 广东工业大学 | A kind of insertion method and device of opaque predicate |
-
2018
- 2018-02-12 CN CN201810146606.4A patent/CN108509772B/en active Active
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP3057021A1 (en) * | 2015-02-16 | 2016-08-17 | Thomson Licensing | Control flow graph flattening device and method obfuscating branches via interprocedural data |
| CN106529225A (en) * | 2016-10-27 | 2017-03-22 | 努比亚技术有限公司 | Device and method for protecting source code of application program |
| CN106599620A (en) * | 2016-11-16 | 2017-04-26 | 中国人民解放军国防科学技术大学 | Binary software protection method based on dynamic code conversion |
| CN107341374A (en) * | 2017-07-17 | 2017-11-10 | 广东工业大学 | A kind of insertion method and device of opaque predicate |
Cited By (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN112541188A (en) * | 2019-09-20 | 2021-03-23 | 武汉斗鱼网络科技有限公司 | Method and device for preventing application program code from being statically analyzed |
| CN112541188B (en) * | 2019-09-20 | 2022-05-13 | 武汉斗鱼网络科技有限公司 | Method and device for preventing application program code from being statically analyzed |
| CN112988778A (en) * | 2019-12-13 | 2021-06-18 | 北京沃东天骏信息技术有限公司 | A method and device for processing database query script |
| CN112965458A (en) * | 2021-02-01 | 2021-06-15 | 杭州和利时自动化有限公司 | Control logic simulation debugging method and device for control system and readable storage medium |
| CN115202662A (en) * | 2021-04-14 | 2022-10-18 | 华为技术有限公司 | Code checking method under weak memory order architecture and corresponding equipment |
| CN113536310A (en) * | 2021-07-08 | 2021-10-22 | 浙江网商银行股份有限公司 | Code file processing method, code file checking device and electronic equipment |
| CN113791770A (en) * | 2021-11-15 | 2021-12-14 | 北京壁仞科技开发有限公司 | Code compiler, code compiling method, code compiling system and computer medium |
| CN113791770B (en) * | 2021-11-15 | 2022-06-21 | 北京壁仞科技开发有限公司 | Code compiler, code compiling method, code compiling system, and computer medium |
| CN114675831A (en) * | 2022-03-09 | 2022-06-28 | 韩济澎 | Compiling system and method of programming language |
| CN114675831B (en) * | 2022-03-09 | 2023-10-31 | 韩济澎 | Compiling system and method for programming language |
| WO2024193164A1 (en) * | 2023-03-23 | 2024-09-26 | 华为技术有限公司 | Code processing method and apparatus |
Also Published As
| Publication number | Publication date |
|---|---|
| CN108509772B (en) | 2022-01-07 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN108509772A (en) | Source code reinforcement means and device based on execution sequence and single-point logic | |
| CN108446535A (en) | Source code reinforcement means based on code execution sequence and device | |
| TWI715999B (en) | Identification method and device of identity information | |
| US20150244737A1 (en) | Detecting malicious advertisements using source code analysis | |
| US8300809B2 (en) | System and method for modulus obfuscation | |
| CN111144576A (en) | Model training method and device and electronic equipment | |
| US20110295894A1 (en) | System and method for matching pattern | |
| CN110474900B (en) | Game protocol testing method and device | |
| CN111368164B (en) | A crawler recognition model training, crawler recognition method, device, system, equipment and medium | |
| US12086278B2 (en) | Method of encoding and decoding memory data for software security, recording medium and apparatus for performing the method | |
| WO2014190847A1 (en) | Validating card numbers | |
| EP2937803A1 (en) | Control flow flattening for code obfuscation where the next block calculation needs run-time information | |
| CN108446538A (en) | Source code reinforcement means and device based on state, semiology analysis and single-point logic | |
| EP3035228A1 (en) | Code integrity protection by computing target addresses from checksums | |
| CN112286968A (en) | Service identification method, equipment, medium and electronic equipment | |
| US10572579B2 (en) | Estimation of document structure | |
| CN108460253A (en) | Source code reinforcement means and device based on sequence, semiology analysis and single-point logic | |
| CN108415709A (en) | A kind of method and device for reinforcing source code based on finite state machine | |
| US7661064B2 (en) | Displaying text intraline diffing output | |
| CN111221690A (en) | Model determination method, device and terminal for integrated circuit design | |
| KR20230094296A (en) | A system that provides various asset management such as financial, real, and digital in the metaverse and interactive services between avatars | |
| CN107066623A (en) | A kind of article merging method and device | |
| CN108416191A (en) | The method and device of source code is reinforced based on opaque predicate and finite state machine | |
| KR102479183B1 (en) | Apparatus and method for providing market expansion factor recommendation service for online product sales | |
| CN111163078A (en) | Network link interception method, device, equipment and medium |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PB01 | Publication | ||
| PB01 | Publication | ||
| SE01 | Entry into force of request for substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| GR01 | Patent grant | ||
| GR01 | Patent grant |