Source: http://patents.com/us-9910743.html
Timestamp: 2018-10-23 11:33:42
Document Index: 603240581

Matched Legal Cases: ['Application No. 2', 'Application No. 201110405228', 'Application No. 201110405228', 'Application No. 201110405228', 'Application No. 2010364976', 'Application No. 201110405228', 'Application No. 2010364976', 'Application No. 10', 'application No. 2010364976', 'Application No. 10860373', 'Application No. 2816814']

US Patent # 9,910,743. Method, system and device for validating repair files and repairing corrupt software - Patents.com
United States Patent 9,910,743
Mishra , et al. March 6, 2018
Method, system and device for validating repair files and repairing corrupt software
A system and method for repairing corrupt software components of a computer system. Corrupt software is detected and repaired utilizing an automated component repair service. Repair files are downloaded from an external storage location and used to repair the corruption. The downloaded files are preferably the smallest amount of data necessary to repair the identified corruption. The process of repairing corrupt files is used in conjunction with a software updating service to resolve problems that occur when corrupt software is updated by allowing a corrupt component to be repaired and then uninstalled such that an updated component can be properly installed.
Mishra; Abhinav (Redmond, WA), Day; Michael (Kirkland, WA), Keen; Charles (Seattle, WA), Fei; Mingbiao (Sammamish, WA), Rivait; Derek (Redmond, WA), Back; Alan B. (Redmond, WA), Sigwald; Rainer (Norman, OK)
Family ID: 1000003163214
14/855,236
US 20160004606 A1 Jan 7, 2016
12958267 Dec 1, 2010 9158605
Current CPC Class: G06F 11/1469 (20130101); G06F 11/00 (20130101); G06F 11/0793 (20130101); H04L 9/3236 (20130101); G06F 11/36 (20130101); G06F 8/658 (20180201); G06F 11/1433 (20130101); G06F 2201/84 (20130101)
Current International Class: G06F 9/44 (20060101); G06F 11/00 (20060101); G06F 11/14 (20060101); G06F 11/36 (20060101); H04L 9/32 (20060101); G06F 11/07 (20060101)
6049612 April 2000 Fielder
6430608 August 2002 Shaio
6567826 May 2003 Fischer
6694434 February 2004 McGee
7293201 November 2007 Ansari
7337427 February 2008 Carrigan
7523343 April 2009 Leis et al.
7594136 September 2009 Kerner et al.
7716660 May 2010 Mackay
7913114 March 2011 Leppard
8074103 December 2011 Dilman
8225135 July 2012 Barrall et al.
8347086 January 2013 Vlcan
8528075 September 2013 Heim et al.
8607328 December 2013 Hodges
8612398 December 2013 Jarrett et al.
9324361 April 2016 Hars
2002/0069363 June 2002 Winburn
2002/0087914 July 2002 Sarra et al.
2003/0079216 April 2003 Drane et al.
2004/0093507 May 2004 Courcambeck
2005/0055686 March 2005 Buban et al.
2005/0166198 July 2005 Gigliotti et al.
2006/0090209 April 2006 Garay et al.
2007/0168708 July 2007 McCuller
2007/0294560 December 2007 Muthukumarasamy et al.
2008/0046786 February 2008 Patel et al.
2008/0162915 July 2008 Price et al.
2008/0320336 December 2008 Qadir et al.
2009/0199064 August 2009 Radha et al.
2010/0030878 February 2010 Grabowski et al.
2010/0031086 February 2010 Leppard
2010/0064285 March 2010 Dechovich et al.
2010/0146325 June 2010 John
2010/0180271 July 2010 Arsenault
2011/0029805 February 2011 Pericin
2011/0214021 September 2011 Vidal et al.
1485732 Mar 2004 CN
101021797 Aug 2007 CN
101566959 Oct 2009 CN
2009-238227 Oct 2009 JP
10-2006-0118464 Nov 2006 KR
10-2008-0080399 Sep 2008 KR
Automatic Detection and Repair of Errors in Data Structures--Brian Demsky, Martin Rinard--Laboratory for Computer Science Massachusetts Institute of Technology Cambridge--OOPSLA'03, Oct. 26-30, 2003. cited by examiner .
Data Structure Repair Using Goal-Directed Reasoning--Brian Demsky and Martin Rinard--Computer Science and Artificial Intelligence Lab, Massachusetts Institute of Technology Cambridge--ICSE'05, May 15-21, 2005. cited by examiner .
Canadian Intellectual Property Office, CA Office Action for Application No. 2,816,814, dated Jan. 24, 2017, 5 pages, Canada. cited by applicant .
"Third Office Action Received for Chinese Patent Application No. 201110405228.5", dated Mar. 20, 2015, 11 Pages. cited by applicant .
"Second Office Action and Search Report Received for Chinese Patent Application No. 201110405228.5", dated Aug. 21, 2014, 17 Pages. cited by applicant .
CN Notice on the First Office Action and Search Report for Application No. 201110405228.5, dated Dec. 25, 2013. cited by applicant .
International Search Report and Written Opinion for International Patent Application No. PCT/US2010/060013 Nov. 2, 2011. cited by applicant .
Chang et al., "Self-healing Strategies For component Integration Faults," http://www.lta.disco.unimib.it/lta/uploads/papers/Chang-HealigCOTS-ARAMIS- -2008.pdf, Nov. 24, 2008 (8 pages). cited by applicant .
Ghosh et al., "Self-healing systems--survey and synthesis," Decision Support Systems 42:2164-2185 (2007), http://www.som.buffalo.edu/isinterface/papers/Self-healing%20systems.pdf. cited by applicant .
Montani et al., "Achieving Self-Healing in Service Delivery Software Systems by Means of Case-Based Reasoning," pp. 1-19 http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.78.5439&rep=rep1- &type=pdf, Apr. 2008. cited by applicant .
Park et al., "Self-healing Mechanism for Reliable Computing," Int'l J Multimedia and Ubiquitous Engineering 3(2): 1-10 (Apr. 2008) http://www.serc.org/journals/IJMUE/vol3.sub.--2008.sub.--/1%20pp1-10.pdf. cited by applicant .
Saha, G. K., "Software--Implemented Self-healing System," CLEI Electronic J 10(2):1-6 (Paper 5) (Dec. 2007), http://www.clei/cl/cleij/papers/v10i2p5.pdf. cited by applicant .
AU Patent Examination Report No. 1 for Application No. 2010364976, dated Mar. 22, 2016. cited by applicant .
CN Notice on Fourth Office Action for Application No. 201110405228.5, dated Sep. 25, 2015. cited by applicant .
AU Patent Examination Report No. 2 for Application No. 2010364976, dated May 5, 2016. cited by applicant .
Korean Intellectual Property Office, KR Notice of Preliminary Rejection for Application No. 10-2013-7013808, p. 1, dated Jul. 18, 2016, Korea. cited by applicant .
U.S. Appl. No. 12/958,267, filed Dec. 1, 2010, Mishra. cited by applicant .
Australian Patent Office, Author unknown, AU Notice of acceptance for patent application No. 2010364976, dated Dec. 13, 2016, 3 pages, Australia. cited by applicant .
"Office Action Issued in European Patent Application No. 10860373.9", dated Oct. 19, 2017, 8 Pages. cited by applicant .
"Office Action Issued in Canadian Patent Application No. 2816814", dated Sep. 21, 2017, 4 Pages. cited by applicant.
This Application is a Continuation of, and claims benefit from, U.S. patent application Ser. No. 12/958,267 that was filed on Dec. 1, 2010, and that is incorporated herein by reference in its entirety.
1. A computing device comprising: at least one processor; memory coupled to the at least one processor and comprising computer-executable instructions that, based on execution by the at least one processor, configure the computing device to: determine, based on a comparison of a hash of a file of a component to a cryptographically secure hash of an uncorrupt version of the file, that the file is corrupt, where the uncorrupted version of the file is stored on another device that is separate from the computing device; download, from the another device in response to determining that the file is corrupt, the uncorrupted version of the file; validate, in response to downloading the uncorrupted version of the file, the downloaded version of the file resulting in a determination that the validated version of the file is authentic and safe to install; overwrite, in response to validating the downloaded version of the file, the corrupt file with the downloaded version of the file resulting in the component being repaired; and install, after overwriting the corrupt file with the downloaded version of the file, an updated version of the repaired component.
2. The computing device of claim 1 further configured to generate, via the at least one processor, the hash of the file.
3. The computing device of claim 1 further configured to determine that the component needs to be updated to a newer version.
4. The computing device of claim 1 further configured to download, prior to installing the updated version of the repaired component, the updated version of the repaired component.
5. The computing device of claim 1 further configured to repair the component in response to an indication that software including the component is compromising integrity of the another device.
6. A method performed on a computing device, the method comprising: determining, by the computing device based on a comparison of a hash of a file of a component to a cryptographically secure hash of an uncorrupted version of the file, that the file is corrupt, where the uncorrupted version of the file is stored on another device that is separate from the computing device; downloading, by the computing device from the another device in response to the determining that the file is corrupt, the uncorrupted version of the file; validating, by the computing device in response to the downloading the uncorrupted version of the file, the downloaded version of the file resulting in a determination that the validated version of the file is authentic and safe to install; overwriting, by the computing device in response to the validating the downloaded version of the file, the corrupt file with the downloaded version of the file resulting in the component being repaired; and installing, by the computing device after the overwriting the corrupt file with the downloaded version of the file, an updated version of the repaired component.
7. The method of claim 6 further comprising generating, by the computing device, the hash of the file.
8. The method of claim 6 further comprising determining, by the computing device, that the component needs to be updated to a newer version.
9. The method of claim 6 further comprising downloading, by the computing device prior to installing the updated version of the repaired component, the updated version of the repaired component.
10. The method of claim 6 further comprising repairing, by the computing device, the component in response to an indication that software including the component is compromising integrity of the another device.
11. At least one memory device that comprises computer-executable instructions that, based on execution by a computing device, configure the computing device to perform actions comprising: determining, based on a comparison of a hash of a file of a component to a cryptographically secure hash of an uncorrupted version of the file, that the file is corrupt, where the uncorrupted version of the file is stored on another device that is separate from the computing device; downloading, by the computing device from the another device in response to the determining that the file is corrupt, the uncorrupt version of the file; validating, by the computing device in response to the downloading the uncorrupted version of the file, the downloaded version of the file resulting in a determination that the validated version of the file is authentic and safe to install; overwriting, by the computing device in response to the validating the downloaded version of the file, the corrupt file with the downloaded version of the file resulting in the component being repaired; and installing, by the computing device after the overwriting the corrupt file with the downloaded version of the file, an updated version of the repaired component.
12. The at least one memory device of claim 11, the actions further comprising generating the hash of the file.
13. The at least one memory device of claim 11, the actions further comprising determining that the component needs to be updated to a newer version.
14. The at least one memory device of claim 11, the actions further comprising downloading, prior to installing the updated version of the repaired component, the updated version of the repaired component.
15. The at least one memory device of claim 11, the actions further comprising repairing the component in response to an indication that software including the component is compromising integrity of the another device.
Regardless of the cause, corruption may block an update from being completed. For example, the WINDOWS' OS sold by Microsoft Corporation includes software updating services that accesses a remote service, called WINDOWS UPDATE.RTM., to install new versions of components of the WINDOWS.RTM. operating system. An update by this service often entails uninstalling older versions of components before installing updated versions of those components. If the older versions are corrupt, the uninstall action may not be able to proceed. This will prevent the installation of the updated components, leaving the user with an out of date computer system.
In some embodiments the validity of the manifest may also be checked to ensure that the hash results for files in the package or other portions of the manifest have not been corrupted. Such a check may be performed before the hash results for individual files stored in the manifest are used to test the files such that the manifest may be repaired prior to use to test the payload files. A check of the manifest may be based on a hash result stored on the computing device at the time the component was installed. For example, some operating systems employ a database, which may be called a "registry," to store information about software or hardware components installed on a computing device. Upon validating a package upon install, for example, an installation of a component may write into the registry a hash result value for each manifest associated with the component. This hash result value may be used to subsequently identify any corruption of the manifest.
Such an approach to testing the manifest and payload files separately allows portions of the component that need to be repaired to be identified and then obtained from a trusted source. Though security techniques could be used on a computing device to maintain a trusted store of back-up copies of components installed on the computing device, in some embodiments, the trusted source of components may be a server or other device external to the computing device. In some embodiments, the source of the files used to repair corrupt files on a computing device may be an update server, such as the WINDOWS UPDATE.RTM. server in computers with the WINDOWS.RTM. operating system.
The processor 214 is connected to at least one storage device 220. This storage device may be volatile memory, such as RAM 132, non-volatile memory 141, such as a hard disk drive or flash memory, or a combination of non-volatile and volatile memory. The storage device stores multiple software components 240, 250, 260 and 270. Each software component 240, 250, 260 and 270 is a collection of individual files that are related to one another. Here, a "file" may be an organized grouping of digital data stored in a predefined format in memory allocated by a file management component (not shown). Though, it should be appreciated that a "file" may be any suitable collection of data that may be manipulated, and the specific structure of such a "file" is not critical to the invention.
In the illustrated example, component 270 comprises payload files 272/274 and a metadata file 276, which may in some embodiments be implemented as a "manifest" of a component. Payload files are files that are used by the processor 214 of the computer system 210 while executing the component 270. These files may include executable files, which may sometimes be formatted as dynamically linked libraries (DLL). The metadata file 276 stores information about the payload files, such as details regarding dependencies between executables of component 270. For example, if payload 272 depends on payload 274, this will be explicitly recorded in the metadata file 276. The present invention is not limited to the aforementioned file types. Files of any suitable format may be supported and the format of the files may depend on the component being repaired.
The metadata file 276 also stores information allowing the payload files to be tested for corruption. In the illustrated embodiment, that information is in the form of one or more hash keys 278 for a hash function 228, which is also stored on the storage device 220. The hash key 278 is the result of operating hash function 228 on an uncorrupted version of payload 274. The hash function 228 is a computer-executable component that may be applied to a file to generate a hash result. This hash function 228 is preferably cryptographically secure, but is not required to be so limited. If the hash function 228 is performed upon a corrupt version of the payload 274, then the value that results from the hash function will differ from the stored hash key 278. This difference acts as a clear indication that the payload file 274 has changed in some way--and potentially in a manner that is harmful to the computer system 210.
In this respect, the invention may be embodied as a computer readable medium (or multiple computer readable media) (e.g., a computer memory, one or more floppy discs, compact discs (CD), optical discs, digital video disks (DVD), magnetic tapes, flash memories, circuit configurations in Field Programmable Gate Arrays or other semiconductor devices, or other non-transitory, tangible computer storage medium) encoded with one or more programs that, when executed on one or more computers or other processors, perform methods that implement the various embodiments of the invention discussed above. The computer readable medium or media can be transportable, such that the program or programs stored thereon can be loaded onto one or more different computers or other processors to implement various aspects of the present invention as discussed above. As used herein, the term "non-transitory computer-readable storage medium" encompasses only a computer-readable medium that can be considered to be a manufacture (i.e., article of manufacture) or a machine.
Previous Patent US 9,910,742 | Next Patent US 9,910,744