← Back to Patent Explorer
US6305010B2 Expired / Lapsed US ⏱️ 0.0 years remaining

Test, protection, and repair through binary code augmentation

Assignee: Incert Software Corp
•
Filing: 1999-07-22
•
Granted: 2001-10-16
•
Expires: 2019-07-22
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A type mismatch problem in computer programs is said to occur when there is a mismatch between the form or classification of a value encountered during program execution and that anticipated by the program. A method for repairing or testing for many type mismatch problems in programs works by transforming a binary representation of the program into a new binary in which the problem is fixed or identified. The fix or identification is implemented by converting code that operates on variables that can suffer a mismatch into code that correctly accounts for or tests for the mismatch. Static or dynamic correlation methods, and/or control and data flow graphs are used to track certain values, to determine where to install patches and how to adjust branch, jump and procedure call references after patch installation has shifted the target references.

Inventors

  • 👤 Anant Agarwal

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-03 19:26
CPC Classifications
G; G06; G06F; G06F8/00; G06F8/40; G06F8/52

Claims Analysis

Total Claims: 39
Claim 1
Independent Claim 64 words
A method of patching binary code, comprising: generating a control flow representation of the binary code; rewriting the binary code by installing a binary software patch into the original binary code at a determined location; and further modifying, using the control flow representation, instructions from the original binary code which need to have their target addresses changed to account for installed binary software patches.
Claim 2
Independent Claim 64 words
A method of patching binary code, comprising: generating a control flow representation of the binary code; rewriting the binary code by installing a binary software patch into the original binary code at a determined location; and further modifying, using the control flow representation, instructions from the original binary code which need to have their target addresses changed to account for installed binary software patches.
Claim 3
Dependent Claim 20 words
A method as claimed in claim 1 , wherein such method is used to perform overflow detection, repair and test.
Claim 4
Dependent Claim 17 words
A method as claimed in claim 1 , wherein such method is used to perform assertion checking.
Claim 5
Dependent Claim 17 words
A method as claimed in claim 1 , wherein such method is used to perform coverage testing.
Claim 6
Dependent Claim 55 words
The method of claim 4 , further comprising: maintaining indicators corresponding to code blocks, the software patch being installed in at least one code block, the software patch being such that when a code block instrumented with the software patch is executed, the corresponding indicator is set to indicate that the code block has executed.
Claim 7
Dependent Claim 33 words
The method of claim 5 , wherein an indicator is a counter which counts, under control of the corresponding code block's software patch, the number of times said corresponding code block has executed.
Claim 8
Dependent Claim 12 words
The method of claim 4 , wherein coverage information is gathered selectively.
Claim 9
Dependent Claim 34 words
The method of claim 7 , further comprising: generating a data flow representation of the binary code; and using the data flow representation, selecting only paths affected by a specified argument for coverage information.
Claim 10
Dependent Claim 15 words
The method of claim 7 , further comprising: selecting only specified functions for coverage information.
Claim 11
Dependent Claim 12 words
The method of claim 9 , wherein the specified functions are user-specified.
Claim 12
Dependent Claim 15 words
The method of claim 7 , further comprising: selecting only modified code for coverage information.
Claim 13
Dependent Claim 19 words
A method as claimed in claim 1 , wherein such method is used to perform argument remediation coverage testing.
Claim 14
Dependent Claim 17 words
A method as claimed in claim 1 , wherein such method is used to perform continuous testing.
Claim 15
Dependent Claim 18 words
A method as claimed in claim 1 , wherein such method is used to perform bootstrap regression testing.
Claim 16
Dependent Claim 18 words
A method as claimed in claim 1 , wherein such method is used to perform test path identification.
Claim 17
Dependent Claim 17 words
A method as claimed in claim 1 , wherein such method is used to perform date identification.
Claim 18
Dependent Claim 18 words
A method as claimed in claim 1 , wherein such method is used to perform zip code identification.
Claim 19
Dependent Claim 21 words
A method as claimed in claim 1 , wherein such method is used to perform telephone number or area code identification.
Claim 20
Dependent Claim 17 words
A method as claimed in claim 1 , wherein such method is used to perform currency identification.
Claim 21
Dependent Claim 58 words
A method is claimed in claim 1 , further comprising: generating a data flow representation of the binary code; choosing which values or variables to track; and using the data flow representation to track the chosen values or variables wherein determining where to install the software patches is further based on an analysis of the data flow representation.
Claim 22
Dependent Claim 19 words
A method as claimed in claim 20 wherein the control and data flow representations are generated from source code.
Claim 23
Dependent Claim 21 words
The method of claim 1 , wherein the binary software patch performs any of testing, protecting or correcting the binary code.
Claim 24
Dependent Claim 23 words
The method of claim 1 , wherein further modifying the original binary code is based on an analysis of the control flow representation.
Claim 25
Dependent Claim 20 words
The method of claim 1 , wherein determining a location is based on an analysis of the control flow representation.
Claim 26
Dependent Claim 31 words
The method of claim 1 , further comprising: generating a data flow representation of the binary code, wherein determining a location is based on an analysis of the data flow representation.
Claim 27
Dependent Claim 37 words
The method of claim 1 , wherein further modifying the original binary code comprises: modifying instructions from the original binary code which need to have their target addresses changed as a result of the installed software patches.
Claim 28
Dependent Claim 75 words
A data processing system for patching binary code, comprising: means for generating a control flow representation of the binary code; means for rewriting the binary code by installing a binary software patch into the original binary code at a determined location; and means for modifying, using the control flow representation, instructions from the original binary code which need to have their target addresses changed to account for code displacements due to installed binary software patches.
Claim 29
Dependent Claim 75 words
A data processing system for patching binary code, comprising: means for generating a control flow representation of the binary code; means for rewriting the binary code by installing a binary software patch into the original binary code at a determined location; and means for modifying, using the control flow representation, instructions from the original binary code which need to have their target addresses changed to account for code displacements due to installed binary software patches.
Claim 30
Dependent Claim 63 words
A data processing system as claimed in claim 27 , further comprising: a data flow representation of the binary code; means for choosing which values or variables to track; and means for using the data flow representation to track the chosen values or variables wherein determining where to install the software patches is further based on an analysis of the data flow representation.
Claim 31
Dependent Claim 24 words
The data processing system of claim 27 , wherein the means for modifying the original binary code is based on the control flow representation.
Claim 32
Dependent Claim 23 words
The data processing system of claim 27 , wherein the binary software patch performs any of testing, protecting or correcting the binary code.
Claim 33
Dependent Claim 83 words
A computer program product for patching binary code, the computer program product comprising a computer usable medium having computer readable code thereon, including program code which: generates a control flow representation of the binary code; rewrites the binary code by installing a binary software patch into a determined location in the original binary code; and further modifies, using the control flow representation, instructions from the original binary code which need to have their target addresses changed to account for installed binary software patches.
Claim 34
Dependent Claim 83 words
A computer program product for patching binary code, the computer program product comprising a computer usable medium having computer readable code thereon, including program code which: generates a control flow representation of the binary code; rewrites the binary code by installing a binary software patch into a determined location in the original binary code; and further modifies, using the control flow representation, instructions from the original binary code which need to have their target addresses changed to account for installed binary software patches.
Claim 35
Dependent Claim 53 words
The computer program product of claim 31 , wherein the program code further: generates a data flow representation of the binary code; tracks chosen values or variables using the data flow representation; and determines where to install the software patches based on the tracked values or variables and on the data flow representation.
Claim 36
Dependent Claim 20 words
The computer program product of claim 31 , wherein the program code further uses target correlation to identify branch targets.
Claim 37
Dependent Claim 24 words
The computer program product of claim 31 , wherein the program code further modifies the original binary code based on the control flow representation.
Claim 38
Independent Claim 107 words
A method of patching binary code, comprising: generating a control flow representation of the binary code; generating a data flow representation of the binary code; determining a location in the binary code in which to install a binary software patch, based on an analysis of the control flow and data flow representations; rewriting the binary code by installing the binary software patch into the original binary code at the determined location; and further modifying, using the control flow representation, the original binary code by modifying instructions from the original binary code which need to have their target addresses changed as a result of the installed software patches.
Claim 39
Independent Claim 107 words
A method of patching binary code, comprising: generating a control flow representation of the binary code; generating a data flow representation of the binary code; determining a location in the binary code in which to install a binary software patch, based on an analysis of the control flow and data flow representations; rewriting the binary code by installing the binary software patch into the original binary code at the determined location; and further modifying, using the control flow representation, the original binary code by modifying instructions from the original binary code which need to have their target addresses changed as a result of the installed software patches.

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2004-10-15 2005-04-16 2005-10-16 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2008-10-15 2009-04-16 2009-10-16 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2012-10-15 2013-04-16 2013-10-16 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag