CN101271398B - Recognition method of multi-path branch structure - Google Patents

Recognition method of multi-path branch structure Download PDF

Info

Publication number
CN101271398B
CN101271398B CN2007100900043A CN200710090004A CN101271398B CN 101271398 B CN101271398 B CN 101271398B CN 2007100900043 A CN2007100900043 A CN 2007100900043A CN 200710090004 A CN200710090004 A CN 200710090004A CN 101271398 B CN101271398 B CN 101271398B
Authority
CN
China
Prior art keywords
node
branch
control flow
ingress
subgraph
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.)
Expired - Fee Related
Application number
CN2007100900043A
Other languages
Chinese (zh)
Other versions
CN101271398A (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.)
Peking University
Original Assignee
Peking University
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 Peking University filed Critical Peking University
Priority to CN2007100900043A priority Critical patent/CN101271398B/en
Publication of CN101271398A publication Critical patent/CN101271398A/en
Application granted granted Critical
Publication of CN101271398B publication Critical patent/CN101271398B/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Debugging And Monitoring (AREA)

Abstract

The invention pertains to the field of reverse project and program analysis, in particular to a method for recognizing a multi-path branched structure which can decompile executive files and then getintermediate codes of the executive file. Control flow information is extracted from the intermediate codes, thus obtaining a control flow chart; the control flow chart is compiled and expended, thusrecognizing a separation judging branched sub-chart; the separation judging branched sub-chart is recognized as a multi-path branched structure. The method simplifies the program control flow chart, results in a more reasonable object code structure after decompiling, strengthens the readability of the object code, facilitates successive analysis, and effectively structurizes the program control flow chart. The method can be used in decompiling and software testing equipment, etc.

Description

The recognition methods of multi-path branch structure
Technical field
The invention belongs to reverse-engineering and process analysis field, be specifically related to the method for a kind of identification multi-path branch structure (or being N road branched structure), can be used in the equipment such as decompiling, software test, can be effectively with the program control flow graph structureization.
Background technology
Compiling is meant the algorithm of representing with target language that an algorithm of representing with source language is transformed into an equivalence, is transformed into the machine-executable instruction sequence as the algorithm that higher level lanquage is represented; Decompiling is the inverse process of compiling, specifically refers to from the technology of executable file (showing as the executable binary coding of computing machine) acquisition with the high-level code of source program equivalence; Further, dis-assembling is the pith of inverse compiling technique, and its effect is from the assembly language code of executable file acquisition with the source program equivalence.
At first, inverse compiling technique is mainly used in auxiliary routine and transplants, as program is moved to third-generation computer from second-generation computer; To the seventies and the eighties, inverse compiling technique begins to be used to reengineering (Re-engineering), comprises losing source code or third-party binary program is understood, documenting, reconstruct and modification; Since the middle and later periods nineties, information security field has had huge application demand to inverse compiling technique, such as excavating work such as software security flaw, analysis Malware, all inverse compiling technique is had very high dependence.
On the one hand, owing to many structured features of the higher level lanquage that is beyond expression in the machine-executable instruction rank, after higher-level language code was transformed into the machine-executable instruction sequence by compiling, many structurings control stream informations were lost in the higher level lanquage.In addition, the various optimisation strategy and the implementation method of compiler also can cause in the higher level lanquage some structuring control stream information to lack after compiling.
On the other hand, the dis-assembling technology is very ripe now, and a large amount of disassemblers are widely used.Disassemblers is handled the executable file dis-assembling, obtains intermediate code and represents (showing as the assembly language code).The control flow structure of these intermediate codes, consistent with the control flow structure of executable file inherence.
Though the dis-assembling technology can obtain the control flow graph of the intermediate code consistent with the control flow structure of executable file inherence, a large amount of peculiar structured features of higher level lanquage lack.By control structure in the control flow analysis identification higher level lanquage, be the important research field in the decompiling, also be one of core technology of decompiling robotization.
Particularly, compound condition branch, three kinds of structures of nested loop and N road branch (switch), the structured features disappearance is the most serious after compiling, and these three kinds of structures are three kinds of most important control structures of higher level lanquage.If in the decompiling process, can not accurately discern these three kinds of control structures, the seriously development of restriction inverse compiling technique, the restriction inverse compiling technique is in the application in other field.
As one of three kinds of most important control structures, after N road branched structure is compiled conversion, generally exist with following two kinds of control forms:
1. " jump list ": the offset address of each road branch of record in jump list, the concrete case according to N road branch selects predefined offset address, directly determines the transfer address of instruction.After N road branched structure is transformed into the jump list structure by compiling among Fig. 1, the part fragment is as shown in Figure 2 as a result through IDA Pro dis-assembling: the offset address that has write down each road branch in off_80484F8, in actual the execution, determine instruction stream according to concrete case (value of register eax);
2. discrete branch is judged: with original N road branched structure, be decomposed into many branches and judge, and then determine the instruction transfer address.After N road branched structure is compiled and is converted to the judgement of discrete branch among Fig. 1,, obtain its assembly language level intermediate code segment as shown in Figure 3 through disassemblers IDA Pro dis-assembling; Fig. 4 is the control flow graph synoptic diagram of assembly code among Fig. 3.
Use the method for " jump list " expression switch structure to be easy to judge that existing disassemblers can be finished, as disassemblers IDA Pro.The result of dis-assembling is promptly obtained by IDA Pro among Fig. 2, and the switch structure is by complete identification, and has made sign (if no special instructions, switch structure and N road branched structure are equal to).
Yet when branched structure was converted to " discrete branch is judged " form by compiling when the N road, existing control flow analysis method just was treated to a plurality of if with " discrete branch is judged " simply and judges statement.For example, when N road branched structure is converted to " branch that disperses is judged " form by compiling in high-level code shown in Figure 1, among the dis-assembling result of IDA Pro, only " discrete branch is judged " is interpreted as a plurality of branches judgement statement.Above-mentioned disposal route is too simple, makes the program that generates after the decompiling lack a large amount of switch structural informations, has reduced the structuring characteristic of program; Judge statement owing to increased a large amount of unnecessary if, the control flow relation of program integral body is complicated more, has reduced the readability of program; And, when N road branched structure during with other control flow structures (compound branched structure, loop structure, N road branched structure) nested couplings, the control flow graph that classic method can't the resulting structure program can only the outer goto statement of supplementary quota, the structure of Rogue program, the difficulty of increase post analysis.Code as shown in Figure 5, optimize after the compiling the programmed control flow graph as shown in Figure 6.If the switch structure is taken as the processing of a plurality of if judgement statements in Fig. 6, the destination node of each branch node (return statement) all has two inlets, and program no longer meets the structuring principle, needs additional goto statement be connected control and flows.
Notion about program control flow, as notions such as programmed control flow graph, fundamental block, direct precursor, immediate successors is this area key concept, does not specify, can be with reference to " program compiler design concept " book (Du Shumin etc., the BJ University Press, 2003).Usually control the immediate successor set of node of node n in the flow graph with Succ (n) representative; Direct precursor set of node with node n in Pred (n) the representative control flow graph; | Pred (n) | and | Succ (n) | represent the forerunner's node number of node n and the descendant node number of node n respectively.
Summary of the invention
The object of the present invention is to provide a kind of in the control flow graph automatically identification be converted to discrete branch by compiling and judge the method for the N road branched structure of form, and then make program control flow have more structured features, be convenient to the follow-up work of decompiling.
The recognition methods of multi-path branch structure of the present invention, its step comprises:
1) executable file is carried out dis-assembling, obtain the intermediate code of this executable file;
2) from above-mentioned intermediate code, extract control stream information, controlled flow graph;
Whether 3) traversal control flow graph, identification exist discrete the judgements branch subgraph that satisfies following condition, if exist, the judgement branch subgraph that then will disperse is identified as multi-path branch structure, otherwise does not have multi-path branch structure; Described condition is:
3-1) have unique Ingress node, this Ingress node is a branch node, has two immediate successor nodes;
3-2) have first kind node, this category node is branch node, has and only have a direct precursor node that belongs to first kind node or Ingress node together, and first kind node is all done different the comparison to same parameter with Ingress node;
3-3) have second category node, this category node has the direct precursor node that belongs to first kind node or Ingress node, and the immediate successor node of first kind node or Ingress node or belong to first kind node, or belongs to second category node;
3-4) number of second category node is greater than 2;
Above-mentioned traversal control flow graph, the step of judging branch's subgraph that obtains dispersing is specially:
A) branch node that does not belong to any known multi-path branch structure of traversal control flow graph;
B) the immediate successor node of the above-mentioned branch node of traversal, and the immediate successor node of these immediate successor nodes is designated as first kind node with the above-mentioned node that satisfies following condition:
B-1) this immediate successor node is a branch node;
B-2) this immediate successor node has only direct forerunner's node, and this direct precursor node is first kind node or Ingress node;
B-3) with a) described branch node is different relatively to same parameter work;
B-4) do not constitute circulating path with other first kind nodes;
C) node that will satisfy following condition is designated as second category node:
C-1) has the direct precursor node that belongs to first kind node or Ingress node;
C-2) the immediate successor node of first kind node or Ingress node or belong to first kind node, or belong to second category node;
D) number of calculating second category node, if greater than 2, then a) described branch node is judged branch's subgraph Ingress node for dispersing, the subgraph of Ingress node, the first kind and the second category node correspondence is judged branch's subgraph for dispersing; Otherwise traversal is controlled other branch nodes of flow graph in the manner described above.
Above-mentioned node is the node after expanding, and the control flow graph is the control flow graph after expanding.
Because " discrete branch is judged " subgraph is the topological representation of N road branched structure, so N road branched structure after compiling conversion generates discrete branch judgement form, " discrete branch is judged " subgraph structure that its inherent control structure necessarily meets the present invention to be discerned.
The present invention proposes first to discern by compiling and is converted to the method that the N road branched structure of form is judged by discrete branch, has following beneficial effect:
1) in the decompiling stage, structure is judged by the unnecessary branch that has introduced when having avoided conventional process " discrete branch is judged " subgraph, has simplified the programmed control flow graph;
2) the switch structure that identifies more meets the structuring characteristic of higher level lanquage, makes the object code structure after the decompiling more reasonable, has strengthened the readability of object code, is convenient to follow-up analysis;
3) when N road branched structure was associated coupling with other control structures, classic method possibly can't can only be introduced the goto statement with its structuring, the structuring characteristic of brokenization program inherence.The present invention can accurately discern N road branched structure, the goto statement of avoiding classic method to introduce, prewired program immanent structure characteristic.
The compiling of the method for the invention full automation identification quilt is converted to the N road branched structure that form is judged by discrete branch, realizes that simply recognition result is accurate; Further, this method complexity is low, and the recognition efficiency height has promotional value.
Description of drawings
Fig. 1 is the example code of N road branched structure in the higher level lanquage
Fig. 2 is after code is converted to the jump list form by compiling among Fig. 1, IDA Pro code snippet that dis-assembling obtains
Fig. 3 is after code is converted to discrete branch judgement form by compiling among Fig. 1, IDA Pro code snippet that dis-assembling obtains
Fig. 4 is the control flow graph of assembly code among Fig. 3
Fig. 5 is the example code that N road branched structure is coupled in the higher level lanquage
Fig. 6 is the control flow graph of code after by compile optimization among Fig. 5
Fig. 7 is that identification is converted to the overall flow figure that the N road branched structure of form is judged by discrete branch by compiling
Fig. 8 is the particular flow sheet of identification " discrete branch is judged " subgraph
Embodiment
Identification of the present invention is converted to the method that the N road branched structure of form is judged by discrete branch by compiling, comprises by following step and explaining:
1) executable file is carried out dis-assembling, obtain the intermediate code of this executable file;
2) extract the control stream information from above-mentioned intermediate code, (h): N is a node set to controlled flow graph G=for N, E, and E is the set on limit, and h is a control flow graph Ingress node;
3) traversal control flow graph, and identification " judgement branch disperses " subgraph S=(N ', E ', h ', C): N ' and C are the subclass of control flow graph node; H ' is the Ingress node of subgraph, and E ' is the subclass of control flow graph limit set; This subgraph S further satisfies following condition:
A) h ' is the unique inlet of subgraph S, and h ' is branch node (two immediate successor nodes is arranged);
B) for
Figure G2007100900043D00041
N is a branch node, | Pred (n) |=1 and
Figure G2007100900043D00042
Further, all branch nodes among the N ' are all done different comparisons to same parameter;
C)
Figure G2007100900043D00051
And ∀ n ∈ N ′ Succ ( n ) ⊆ N ′ ∪ C ;
d)E′={<n 1,n 2>|n 1∈N′,n 2∈N′-?C,<n 1,n 2>∈E}
4) with above-mentioned discrete judgement branch " subgraph is identified as N road branched structure: node is each road branch of switch structure among the C.
Further, on the control flow graph basis that dis-assembling obtains, obtain expansion control flow graph by following method:
1) for any two node b, c in the control flow graph, satisfies: { b}=Pred (c) and { c}=Succ (b) then merges into a new node b ' with b and c, replaces b, c in the programmed control flow graph as fruit dot b, c;
2) merging repetition 1), alternative Process, any two nodes do not satisfy 1 in the programmed control flow graph) middle merging condition.
Further, identification above-mentioned " disperse and judge branch " subgraph may further comprise the steps:
1) preset sequence expansion control flow graph G=(N, E, h) and branch node h '
2) if h ' does not belong to any known N road branched structure, then make N '={ h ' }; Otherwise return;
3) for set
Figure G2007100900043D00053
Interior arbitrary element n iIf, n iSatisfy:
A) n iIt is branch node
B) n iHave and have only a direct precursor, and this forerunner's node belongs to N '
C) n iWith other nodes among the N ' is that same parameter is done different comparisons;
D) n iDo not constitute circulating path with other nodes among the N '
Then with n iBe added among the N ';
4) repeat 3) middle process, no longer change until N '
5) computing node set C; Calculate limit set E ';
6) if | C|>2, return S=(N ', E ', h ', C); Otherwise h ' is not the inlet of " discrete branch subgraph ".
Below in conjunction with accompanying drawing, more detailed description the specific embodiment of the present invention.
Referring to Fig. 7, identification is converted to discrete branch by compiling and judges that the overall flow of the N road branched structure of form is:
Step 1: utilize various disassemblers, the executable file dis-assembling is handled, obtain intermediate code and represent;
Various disassemblers, as IDA Pro, Objdump can finish this process automatically;
Step 2: on the intermediate code basis, extract the control stream information, further obtain expansion control flow graph;
Step 3: on expansion control stream basis, identification " discrete branch is judged " subgraph.
Further, referring to Fig. 8, the idiographic flow of identification " discrete branch is judged " subgraph is:
Step 1: input expansion control flow graph, pending node h ';
Step 2: if h ' is not a branch node, return: h ' is not " discrete branch is judged " subgraph inlet; Otherwise continue;
Step 3: make N '={ h ' }; And C and Pipe to be set to two of h ' follow-up, mark h ' is processed;
Step 4: following operation is carried out in circulation, does not contain any node in Pipe:
1) make b as first node among the Pipe, and b deletion from Pipe;
2) satisfy as b:
A) be branch node
B) not processed
C) has only forerunner's node
D) b does different comparisons with h ' at same parameter
Carry out 3); Otherwise carry out 1)
3) be added into b among the N ', the descendant node of b is added among Pipe and the C, with the b deletion, and b is denoted as processed from C.
Step 5: in the step 4 after the loop ends, if unnecessary two of element number among the C, returning h ' is " discrete branch is judged " subgraph inlet and N ' and C; Otherwise returning h ' is not " discrete branch is judged " subgraph inlet.
Referring to Fig. 6,, make a concrete analysis of as follows according to the process of above-mentioned identification " discrete branch is judged " subgraph:
1) with " a=1 " as h ' time, the parameter of two follow-up comparisons of " a=1 " is b, and is different with " a=1 " parameter a relatively, after step 4) finishes, do not have node among the C.So " a=1 " is not the inlet of " discrete branch is judged " subgraph;
2) incite somebody to action " ( *C) ++; B==1 " as h ' time, can discern " discrete branch judge " subgraph S=(N ', E ', h ', C), wherein:
a)N′={″( *c)++;b==1″,″b==2″,″b==3″}
b)C={″Retrun?1″,″Retrun?2″,″Retrun?0″,″Retrun-1″}
3) incite somebody to action " ( *C)--; B==0 " as h ' time, can discern " discrete branch judge " subgraph S=(N ', E ', h ', C), wherein:
a)N′={″( *c)--;b==0″,″b==1″″b==2″},
b)C={″Retrun?1″,″Retrun?2″,″Retrun?0″,″Retrun-1″}.

Claims (4)

1. the recognition methods of a multi-path branch structure, its step comprises:
1) executable file is carried out dis-assembling, obtain the intermediate code of this executable file;
2) from above-mentioned intermediate code, extract control stream information, controlled flow graph;
Whether 3) traversal control flow graph, identification exist discrete the judgements branch subgraph that satisfies following condition, if exist, the judgement branch subgraph that then will disperse is identified as multi-path branch structure, otherwise does not have multi-path branch structure; Described condition is:
3-1) have unique Ingress node, this Ingress node is a branch node, has two immediate successor nodes;
3-2) have first kind node, this category node is branch node, has and only have a direct precursor node that belongs to first kind node or Ingress node together, and first kind node is all done different the comparison to same parameter with Ingress node;
3-3) have second category node, this category node has the direct precursor node that belongs to first kind node or Ingress node, and the immediate successor node of first kind node or Ingress node or belong to first kind node, or belongs to second category node;
3-4) number of second category node is greater than 2.
2. the recognition methods of multi-path branch structure as claimed in claim 1 is characterized in that described traversal control flow graph, obtains dispersing and judges that branch's subgraph is specially:
A) branch node that does not belong to any known multi-path branch structure of traversal control flow graph;
B) the immediate successor node of the above-mentioned branch node of traversal, and the immediate successor node of these immediate successor nodes is designated as first kind node with the above-mentioned node that satisfies following condition:
B-1) this immediate successor node is a branch node;
B-2) this immediate successor node has only direct forerunner's node, and this direct precursor node is first kind node or Ingress node;
B-3) with a) described branch node is different relatively to same parameter work;
B-4) do not constitute circulating path with other first kind nodes;
C) node that will satisfy following condition is designated as second category node:
C-1) has the direct precursor node that belongs to first kind node or Ingress node;
C-2) the immediate successor node of first kind node or Ingress node or belong to first kind node, or belong to second category node;
D) number of calculating second category node, if greater than 2, then a) described branch node is judged branch's subgraph Ingress node for dispersing, the subgraph of Ingress node, the first kind and the second category node correspondence is judged branch's subgraph for dispersing; Otherwise traversal is controlled other branch nodes of flow graph in the manner described above.
3. the recognition methods of multi-path branch structure as claimed in claim 1 or 2 is characterized in that the node after described node is for expansion.4. the recognition methods of multi-path branch structure as claimed in claim 1 is characterized in that executable file is carried out dis-assembling by disassemblers IDA Pro.
5. the recognition methods of multi-path branch structure as claimed in claim 1 is characterized in that executable file is carried out dis-assembling by disassemblers Objdump.
CN2007100900043A 2007-03-23 2007-03-23 Recognition method of multi-path branch structure Expired - Fee Related CN101271398B (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2007100900043A CN101271398B (en) 2007-03-23 2007-03-23 Recognition method of multi-path branch structure

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2007100900043A CN101271398B (en) 2007-03-23 2007-03-23 Recognition method of multi-path branch structure

Publications (2)

Publication Number Publication Date
CN101271398A CN101271398A (en) 2008-09-24
CN101271398B true CN101271398B (en) 2010-06-09

Family

ID=40005391

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007100900043A Expired - Fee Related CN101271398B (en) 2007-03-23 2007-03-23 Recognition method of multi-path branch structure

Country Status (1)

Country Link
CN (1) CN101271398B (en)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102012862A (en) * 2010-11-09 2011-04-13 北京神舟航天软件技术有限公司 Verification method of compiler based on contrast of logical structures of control flow graphs
US9251071B2 (en) * 2013-08-30 2016-02-02 Apple Inc. Concurrent inline cache optimization in accessing dynamically typed objects
CN103838571B (en) * 2013-12-03 2017-04-19 华为技术有限公司 Information processing method and device
US9182955B1 (en) * 2014-06-06 2015-11-10 Microsoft Technology Licensing, Llc Data-dependent control flow reduction
CN104657190B (en) * 2015-02-14 2018-05-11 南威软件股份有限公司 A kind of method of the enhancing switch statement function based on C language family
EP3106982B1 (en) * 2015-06-18 2021-03-10 ARM Limited Determination of branch convergence in a sequence of program instructions
CN105044653A (en) * 2015-06-30 2015-11-11 武汉大学 Software conformance detection method for smart electric meters
CN108959920A (en) * 2017-05-26 2018-12-07 阿里巴巴集团控股有限公司 A kind of application program risk operations recognition methods and device

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1990001738A1 (en) * 1988-07-29 1990-02-22 Hunter Systems Software, Inc. Machine process for translating programs in binary machine language into another binary machine language
CN1860435A (en) * 2003-07-09 2006-11-08 皇家飞利浦电子股份有限公司 Method and system for branch prediction
CN1900910A (en) * 2005-07-22 2007-01-24 中国科学院计算技术研究所 Identifying method of multiple target branch statement through jump list in binary translation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1990001738A1 (en) * 1988-07-29 1990-02-22 Hunter Systems Software, Inc. Machine process for translating programs in binary machine language into another binary machine language
CN1860435A (en) * 2003-07-09 2006-11-08 皇家飞利浦电子股份有限公司 Method and system for branch prediction
CN1900910A (en) * 2005-07-22 2007-01-24 中国科学院计算技术研究所 Identifying method of multiple target branch statement through jump list in binary translation

Also Published As

Publication number Publication date
CN101271398A (en) 2008-09-24

Similar Documents

Publication Publication Date Title
CN101271398B (en) Recognition method of multi-path branch structure
CN100559347C (en) A kind of recognition methods of nested loop structure
CN108874396A (en) The cross-compiler and Compilation Method of multi-platform multiple target language based on HLSL
CN110147235B (en) Semantic comparison method and device between source code and binary code
CN101650651A (en) Visualizing method of source code level program structure
CN102231134A (en) Method for detecting redundant code defects based on static analysis
CN105138335A (en) Function call path extracting method and device based on control flow diagram
CN107367686A (en) A kind of generation method of RTL hardware Trojan horses test vector
CN102289362A (en) Segmented symbolic execution device and working method thereof
CA2010067C (en) Reducing pipeline delays in compilers by code hoisting
CN109145534A (en) For the antialiasing system and method for software virtual machine protection
Ferrante et al. A program form based on data dependency in predicate regions
CN104915680A (en) Improved RBF neural network-based multi-label metamorphic relationship prediction method
CN100451969C (en) Method for recognizing composite conditional branch structure
CN1932766A (en) Semi-automatic parallel method of large serial program code quantity-oriented field
Ryder et al. Profiling an incremental data flow analysis algorithm
Mao et al. Cross-input learning and discriminative prediction in evolvable virtual machines
CN115310095A (en) Block chain intelligent contract mixed formal verification method and system
Xiao et al. An efficient algorithm for custom instruction enumeration
CN101876899B (en) Method and system for optimizing computer program
Schmidt-Schauß et al. Strictness analysis by abstract reduction using a tableau calculus
CN102866893B (en) Legacy software structure disjunction method based on intermediate language-interpretative language (IL)
Ogawa et al. Iterative-free program analysis
CN104317572A (en) Circulation boundary inward direction analysis method of real-time system
Boekhold et al. A programmable ANSI C transformation engine

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100609

Termination date: 20150323

EXPY Termination of patent right or utility model