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 PDF

Info

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
Application number
CN201810146606.4A
Other languages
Chinese (zh)
Other versions
CN108509772B (en
Inventor
阚志刚
陈彪
王文洋
李世杰
尉爽生
卢佐华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Bang Bang Safety Technology Co Ltd
Original Assignee
Beijing Bang Bang Safety Technology Co Ltd
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 Beijing Bang Bang Safety Technology Co Ltd filed Critical Beijing Bang Bang Safety Technology Co Ltd
Priority to CN201810146606.4A priority Critical patent/CN108509772B/en
Publication of CN108509772A publication Critical patent/CN108509772A/en
Application granted granted Critical
Publication of CN108509772B publication Critical patent/CN108509772B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

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

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

Source code reinforcement means and device based on execution sequence and single-point logic
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.
CN201810146606.4A 2018-02-12 2018-02-12 Source code reinforcement method and device based on execution sequence and single-point logic Active CN108509772B (en)

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)

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

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

Patent Citations (4)

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

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