KR101692817B1 - 손상된 소프트웨어의 치료 - Google Patents

손상된 소프트웨어의 치료 Download PDF

Info

Publication number
KR101692817B1
KR101692817B1 KR1020137013808A KR20137013808A KR101692817B1 KR 101692817 B1 KR101692817 B1 KR 101692817B1 KR 1020137013808 A KR1020137013808 A KR 1020137013808A KR 20137013808 A KR20137013808 A KR 20137013808A KR 101692817 B1 KR101692817 B1 KR 101692817B1
Authority
KR
South Korea
Prior art keywords
files
treatment
component
corrupted
file
Prior art date
Application number
KR1020137013808A
Other languages
English (en)
Other versions
KR20130122747A (ko
Inventor
아비나브 미쉬라
마이클 데이
찰스 킨
밍비아오 페이
데렉 리바이트
알랜 비 백
라이너 시그왈드
Original Assignee
마이크로소프트 테크놀로지 라이센싱, 엘엘씨
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 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 filed Critical 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20130122747A publication Critical patent/KR20130122747A/ko
Application granted granted Critical
Publication of KR101692817B1 publication Critical patent/KR101692817B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1433Saving, restoring, recovering or retrying at system level during software upgrading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates

Abstract

컴퓨터 시스템의 손상된 소프트웨어 컴포넌트들을 치료하기 위한 시스템 및 방법이 개시된다. 자동화된 컴포넌트 치료 서비스를 이용하여 손상된 소프트웨어가 검출되고 치료된다. 치료 파일들이 외부 저장 위치로부터 다운로드되고 손상을 치료하는 데 사용된다. 다운로드된 파일들은 바람직하게는 식별된 손상을 치료하는 데 필요한 최소량의 데이터이다. 손상된 파일들을 치료하는 프로세스는 소프트웨어 갱신 서비스와 함께 사용되어, 갱신된 컴포넌트가 적절히 설치될 수 있도록 손상된 컴포넌트가 치료되며 그 후 설치 해제되게 함으로써, 손상된 소프트웨어가 갱신될 때 발생하는 문제들을 해결한다.

Description

손상된 소프트웨어의 치료{REPAIRING CORRUPT SOFTWARE}
현대의 컴퓨터 시스템들은 운영 체제(OS)로부터 애플리케이션 프로그램들에 이르는 복합적인 소프트웨어 어레이를 실행한다. OS만도 수만 개의 파일을 포함할 수 있다. 관련 파일들은 소프트웨어 컴포넌트들로 그룹화될 수 있다.
컴퓨터 시스템들의 사용자들은 그들의 컴퓨터 시스템들에 설치된 소프트웨어를 갱신한다는 것이 알려져 있다. 갱신들(updates)은 버그 수정 또는 새로 발견된 잠재적 공격을 방지하기 위한 보안 갱신을 포함할 수 있다. 또한, 갱신들은 소프트웨어의 이전 버전들에 포함되지 않은 새로운 특징들을 공개할 수 있다. 갱신의 이유에 관계없이, 사용자의 컴퓨터 시스템 상의 손상된 소프트웨어 컴포넌트들은 소프트웨어 갱신들의 적절한 설치를 방해할 수 있다.
그러한 손상은 다수의 원인 중 어느 것을 가질 수 있다. 손상은 컴퓨터 시스템 내에 유입된 바이러스 또는 악의 있는 자에 의한 소정의 다른 공격으로 인해 발생할 수 있다. 소프트웨어의 잘못된 구성, 및 메모리 및 비휘발성 저장 장치와 같은 하드웨어 컴포넌트들의 장애도 컴포넌트 손상을 유발할 수 있다.
원인에 관계없이, 손상은 갱신의 완료를 방해할 수 있다. 예컨대, 마이크로소프트 코퍼레이션에 의해 판매되는 WINDOWS® OS는 WINDOWS® 운영 체제의 컴포넌트들의 새로운 버전들을 설치하기 위해 WINDOWS UPDATE®라고 하는 원격 서비스에 액세스하는 소프트웨어 갱신 서비스들을 포함한다. 종종, 이러한 서비스에 의한 갱신은 컴포넌트들의 갱신 버전들을 설치하기 전에 그러한 컴포넌트들의 이전 버전들의 설치 해제를 필요로 한다. 이전 버전들이 손상된 경우, 설치 해제 액션이 진행되지 못할 수도 있다. 이것은 갱신된 컴포넌트들의 설치를 방해하여, 사용자에게 구식 컴퓨터 시스템을 남길 것이다.
손상된 소프트웨어를 치료하기 위한 방법을 이용하여 향상된 컴퓨터 시스템 안정성 및 신뢰성이 달성될 수 있다. 손상된 소프트웨어 컴포넌트들의 치료는 예를 들어 컴포넌트들의 이전 버전들의 설치 해제를 허용하여 갱신된 컴포넌트들이 설치될 수 있도록 할 수 있다. 그 후, 최신 컴포넌트들을 갖는 시스템을 작동시키는 것으로부터 향상된 시스템 안정성 및 신뢰성이 달성될 수 있다.
소프트웨어 치료는 소프트웨어의 무결성이 의심된다면 언제라도 중요하다. 예를 들어, 소프트웨어가 손상되었거나 적절하게 동작하지 않는 경우, 컴퓨터 시스템은 소프트웨어의 치료로부터 이익을 얻을 것이다. 특히, 소프트웨어 치료 방법은 가능한 최저 입도 레벨(the lowest level of granularity)에서 수행되는 것이 유리하다. 예를 들어, 소프트웨어 컴포넌트가 손상되어 치료가 필요한 것으로 밝혀지는 경우, 시스템은 손상을 치료하는 데 필요한 최소 세트의 파일들만을 치료해야 한다.
손상된 소프트웨어 컴포넌트들의 치료에 대한 이유들에 관계없이, 손상된 소프트웨어 컴포넌트들을 검출하고 손상된 파일들의 리스트를 작성함으로써 치료가 이루어질 수 있다. 손상된 파일들을 치료하는 데 필요한 파일들의 세트를 찾아서 다운로드할 수 있다. 이어서, 손상된 컴포넌트들은 다운로드된 파일들을 이용하여 치료될 수 있다.
일부 실시예들에서, 파일 손상은 해시(hash) 함수 및 별도 저장된 해시 키를 이용하여 검출된다. 이어서, 컴퓨터 시스템은 손상된 파일들에 대응하는 치료 파일들의 세트를 다운로드할 수 있다. 일부 실시예들은 컴퓨터 시스템에 의해 수신된 치료 파일들이 믿을 만한 것이고 설치하기에 안전하다는 것을 보증하기 위한 검증 동작을 포함한다.
일부 실시예들에서, 손상된 파일들을 치료하기 위한 방법은 소프트웨어 갱신 프로세스에서 사용된다. 갱신될 컴포넌트가 손상된 것으로 결정되면, 컴포넌트는 치료 및 설치 해제될 것이다. 그 후에만 컴포넌트의 갱신 버전이 설치될 것이다.
다른 실시예들에서, 손상된 소프트웨어의 치료는 사용자에 의해 수동으로 트리거링(triggering)될 수 있다. 대안으로서, 이 치료는 안티바이러스 소프트웨어 애플리케이션과 같은 시스템 건강 검사기에 의해 트리거링될 수 있다.
위의 내용은 첨부된 청구범위에 의해 정의되는 본 발명의 비제한적인 요약이다.
첨부 도면들은 축척에 따라 도시되도록 의도되지 않는다. 도면들에서, 다양한 도면들에 도시된 각각의 동일한 또는 거의 동일한 컴포넌트는 동일한 번호로 표시된다. 명료화를 위해, 모든 도면에서 모든 컴포넌트들에게 참조부호가 부여되지 않을 수 있다.
도 1은 본 발명의 실시예들이 동작할 수 있는 예시적인 환경의 블록도이다.
도 2는 본 발명의 일부 실시예들에 따른 컴퓨팅 장치의 블록도이다.
도 3은 본 발명의 일부 실시예들에서 손상된 소프트웨어를 치료하는 예시적인 프로세스의 흐름도이다.
도 4는 본 발명의 일부 실시예들에서 손상된 소프트웨어를 갱신하는 예시적인 프로세스의 흐름도이다.
도 5는 본 발명의 일부 실시예들에서 치료 파일들을 찾는 예시적인 프로세스의 흐름도이다.
도 6은 본 발명의 일부 실시예들에서 컴포넌트가 손상되었는지를 결정하는 예시적인 프로세스의 흐름도이다.
본 발명자들은 손상된 소프트웨어 컴포넌트들의 치료가 컴퓨터 시스템에서 실행되는 소프트웨어 컴포넌트들의 갱신을 용이하게 할 수 있으며 더 안정적이고 신뢰성 있는 컴퓨터 시스템을 달성한다는 것을 인식하고 이해하였다. 본 명세서에서 제시되는 시스템 및 방법은 사용자의 최소한의 개입으로 컴포넌트들을 치료할 수 있다. 자동화된 치료 서비스를 이용함으로써, 사용자의 불만이 줄어들 수 있으며, 사용자는 소프트웨어 갱신 프로세스에서 발생하는 장애들로부터 발생하는 문제들을 해결하는 데에 더 적은 시간을 소비할 수 있다.
일부 실시예들에서, 컴포넌트 치료 서비스는 컴퓨팅 장치에서 실행될 수 있다. 그러한 치료 서비스는 갱신을 완료하기 위한 컴퓨팅 장치에서의 갱신 서비스의 실패, 또는 아마도 손상된 컴포넌트 또는 소프트웨어 서브시스템과 같은 컴포넌트들의 집합을 지시하는 안티바이러스 또는 다른 안티악성코드 컴포넌트로부터의 지시 등의 하나 이상의 트리거에 응답하여 동작할 수 있다. 다른 트리거들이 대안으로서 또는 추가로 사용될 수 있다. 일부 실시예들에서, 트리거는 검증될 서브시스템으로부터의 명확한 요청일 수 있다. 다른 실시예들에서, 트리거는 시스템 무결성이 손상되었다는 임의의 지시일 수 있다.
치료를 위한 트리거에 관계없이, 치료 서비스는 적절한 소스로부터 손상된 컴포넌트의 일부인 하나 이상의 파일의 사본을 획득할 수 있다. 획득된 파일들은 손상된 컴포넌트의 손상에 기여하고 있는 손상된 파일들의 손상되지 않은 버전들을 제공할 수 있다. 다운로드된 파일들은 컴퓨팅 장치에 설치된 것과 동일한 버전일 수 있으며, 아마도 그러한 파일들을 대체함으로써 그들을 치료하는 데 사용될 수 있다.
치료 파일들의 적절한 소스는 실시예에 따라 다를 수 있다. 일부 실시예들에서, 소스는 외부 서버이다. 일부 실시예들에서, 이 외부 서버는 신뢰되는 소스일 수 있다. 이것은 또한 이 분야에 공지된 검증 프로세스에 의해 검증될 수 있다. 이것은 컴퓨터가 접속하는 근거리 네트워크 상의 서버일 수 있다. 대안으로서, 소스는 전통적인 서버일 필요는 없으며, 대신에 피어(peer) 대 피어 네트워크 소스일 수 있다. 일부 실시예들에서, 적절한 소스는 내부 저장소 또는 디스크일 수 있다. OS는 컴퓨터가 네트워크에 접속되지 않을 때에도 소프트웨어 컴포넌트들을 치료하는 데 사용될 수 있는 소프트웨어 파일들의 저장소를 유지할 수 있다. 일례로서, OS 개발자는 오리지널 장비 제조자들에게 컴퓨터 저장 장치에 이미 저장된 복구 존(recovery zone)을 갖는 컴퓨터 하드웨어를 보내게 할 수 있다.
이어서, 치료된 파일들은 손상된 컴포넌트의 설치 해제 동작의 일부로서 사용될 수 있다. 이어서, 그 컴포넌트는 손상되지 않은 파일들을 이용하여 재설치될 수 있다. 컴포넌트의 동일 버전이 치료된 파일들에 기초하여 재설치될 수 있으며, 이는 손상된 소프트웨어를 치료하는 것이 목적인 경우에 해당할 수 있다. 그러나, 일부 실시예들에서는 컴포넌트의 갱신된 버전이 설치될 수 있으며, 이는 손상된 것으로 밝혀진 소프트웨어를 갱신하는 것이 목적인 경우에 해당할 수 있다.
손상된 컴포넌트에 대응하는 파일들의 세트를 식별하기 위해 임의의 적절한 메커니즘이 이용될 수 있다. 일부 실시예들에서, 파일들은 손상된 컴포넌트의 서브세트에 대응할 수 있다. 이러한 서브세트를 식별하기 위하여, 컴퓨팅 장치에 존재하는 바와 같은 파일들을 검사하여, 임의의 파일이 손상되었는지를 결정할 수 있다. 그러한 검사는 해시 함수를 이용하며 컴포넌트의 파일들과 관련된 하나 이상의 해시 결과를 손상되지 않은 파일들의 대응하는 해시 결과들과 비교하여 손상을 의미하는 임의의 편차를 식별하는 것을 필요로 할 수 있다.
손상되지 않은 파일들에 대한 해시 결과들은 임의의 적절한 소스로부터 획득될 수 있다. 일부 실시예들에서는, 매니페스트(manifest) 및 페이로드(payload) 양자를 각자 포함하는 하나 이상의 패키지를 이용하여 소프트웨어 컴포넌트가 구현될 수 있다. 페이로드는 컴포넌트의 기능들을 수행하도록 실행되는 컴퓨터 실행 가능 명령어들을 포함하는 파일들로 구성될 수 있다. 매니페스트는 패키지의 일부를 형성하는 파일들을 식별할 수 있으며, 추가로 각각의 파일에 대한 예상 해시 결과를 저장할 수 있다. 예를 들어, 컴퓨팅 장치에 존재하는 바와 같은 파일에 대한 해시 결과를 계산하며 계산된 해시 결과를 매니페스트 내의 결과와 비교함으로써 파일에서 손상이 검출될 수 있다.
일부 실시예들에서는, 패키지 내의 파일들 또는 매니페스트의 다른 부분들에 대한 해시 결과들이 손상되지 않은 것을 보증하기 위해 매니페스트의 유효성이 또한 검사될 수 있다. 그러한 검사는 매니페스트에 저장된 개별 파일들에 대한 해시 결과들이 파일들을 검사하는 데 사용되기 전에 수행될 수 있으며, 따라서 매니페스트는 페이로드 파일들을 검사하는 데 사용하기 전에 치료될 수 있다. 매니페스트의 검사는 컴포넌트가 설치된 시간에 컴퓨팅 장치에 저장된 해시 결과에 기초할 수 있다. 예를 들어, 일부 운영 체제들은 "레지스트리(registry)"로서 지칭될 수 있는 데이터베이스를 이용하여 컴퓨팅 장치에 설치된 소프트웨어 또는 하드웨어 컴포넌트들에 대한 정보를 저장한다. 예를 들어, 설치시에 패키지를 검증할 때, 컴포넌트의 설치는 컴포넌트와 관련된 각각의 매니페스트에 대한 해시 결과 값을 레지스트리 내에 기록할 수 있다. 이러한 해시 결과 값은 매니페스트의 임의의 손상을 후속 식별하는 데 사용될 수 있다.
매니페스트 및 페이로드 파일들을 개별적으로 검사하는 그러한 접근법은 치료가 필요한 컴포넌트의 부분들이 신뢰되는 소스로부터 식별된 후에 획득되는 것을 가능하게 한다. 컴퓨팅 장치에 설치된 컴포넌트들의 백업 사본들의 신뢰되는 저장소를 유지하기 위해 컴퓨팅 장치에서 보안 기술들이 이용될 수 있지만, 일부 실시예들에서, 컴포넌트들의 신뢰되는 소스는 컴퓨팅 장치 외부의 서버 또는 다른 장치일 수 있다. 일부 실시예들에서, 컴퓨팅 장치의 손상된 파일들을 치료하는 데 사용되는 파일들의 소스는 WINDOWS® 운영 체제를 갖는 컴퓨터들에서 WINDOWS UPDATE® 서버와 같은 갱신 서버일 수 있다.
갱신 서버들은 통상적으로 컴퓨터 시스템이 다운로드할 전체 패키지들을 제공한다. 이러한 패키지들은 클 수 있으며, 컴퓨터 시스템의 가용 대역폭의 상당한 부분을 사용할 수 있다. 손상된 소프트웨어 컴포넌트의 치료를 지원하기 위하여, 갱신 서버는 컴퓨팅 장치로 하여금 전체 갱신 패키지를 다운로드하는 것이 아니라 그의 다운로드를 손상된 컴포넌트들의 치료에 필요한 파일들로 제한하는 것을 가능하게 할 수 있다.
다운로드되는 파일들은 임의의 적절한 형태를 가질 수 있다. 일부 실시예들에서는, 치료에 필요한 최소 부분만이 다운로드된다. 다운로드에 이용가능한 최소 단위는 치료되는 전체 소프트웨어 환경의 임의의 크기 단위일 수 있다. 다운로드되는 최소 단위는 전체 컴포넌트, 개별 파일 또는 심지어 치료를 필요로 하는 파일의 일부일 수도 있다. 다운로드되는 파일들은 임의의 특정 포맷을 가질 필요는 없다. 일부 실시예들에서, 파일들은 인코딩 또는 암호화될 수 있다. 다른 실시예들에서는, 전체 파일이 아니라 파일의 일부만이 다운로드될 수 있다.
일부 실시예들에서는, 컴퓨팅 장치 상의 특정 파일을 외부 서버 상에서 액세스될 수 있는 특정 콘텐츠 단위와 관련시키기 위해 맵핑이 필요할 수 있다. 예를 들어, 갱신 서버는 파일들을 컴포넌트들 내에 체계화할 수 있고, 이어서 컴포넌트들은 패키지들 내에 배치되며, 이어서 패키지들은 버전들에 의해 체계화된다. 식별된 손상 파일과 갱신 서버 또는 다른 신뢰되는 소스에 의해 제공될 수 있는 콘텐츠 단위 간의 맵핑은 컴퓨팅 장치 상의 손상된 파일들을 치료하기 위한 파일들을 포함하는 적절한 단위 또는 단위들을 결정하기 위해 행해질 수 있다. 이러한 맵핑은 컴퓨팅 장치, 외부 서버 또는 이들 각각의 일부를 포함하는 임의의 적절한 곳에서 수행될 수 있다.
도 1은 본 발명이 구현될 수 있는 적절한 컴퓨팅 시스템 환경(100)의 일례를 나타낸다. 컴퓨팅 시스템 환경(100)은 적절한 컴퓨팅 환경의 일례일 뿐, 본 발명의 이용 및 기능의 범위에 관한 어떠한 한정도 제안하도록 의도되지 않는다. 또한, 컴퓨팅 환경(100)은 예시적인 동작 환경(100)에 도시된 컴포넌트들 중 임의의 컴포넌트 또는 조합과 관련하여 어떠한 종속성 또는 요구도 갖지 않는 것으로 해석되어야 한다.
본 발명은 다양한 다른 범용 또는 특수 목적 컴퓨팅 시스템 환경들 또는 구성들에서 동작한다. 본 발명과 함께 사용하는 데 적합할 수 있는 공지된 컴퓨팅 시스템들, 환경들 및/또는 구성들의 예는 개인용 컴퓨터, 서버 컴퓨터, 핸드헬드 또는 랩탑 장치, 태블릿 컴퓨터, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 셋톱 박스, 프로그래밍 가능 소비자 전자 장치, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 임의의 상기 시스템들 또는 장치들을 포함하는 분산형 컴퓨팅 환경 등을 포함하지만 이에 한정되지 않는다.
컴퓨팅 환경은 프로그램 모듈들과 같은 컴퓨터 실행 가능 명령어들을 실행할 수 있다. 일반적으로, 프로그램 모듈들은 특정 작업들을 수행하거나 특정 추상 데이터 타입들을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 본 발명은 통신 네트워크를 통해 링크되는 원격 처리 장치들에 의해 작업들이 수행되는 분산형 컴퓨팅 환경들에서도 실시될 수 있다. 분산형 컴퓨팅 환경에서, 프로그램 모듈들은 메모리 저장 장치들을 포함하는 국지적 및 원격 컴퓨터 저장 매체들 양자에 위치할 수 있다.
도 1을 참조하면, 본 발명을 구현하기 위한 예시적인 시스템은 컴퓨터(110) 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)는 컴퓨팅 장치 상의 운영 체제 또는 다른 소프트웨어의 컴포넌트들을 선택적으로 치료할 수 있는 컴퓨팅 장치의 일례이다. 컴퓨터(110)의 컴포넌트들은 처리 유닛(120), 시스템 메모리(130), 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트들을 처리 유닛(120)에 결합하는 시스템 버스(121)를 포함할 수 있지만 이에 한정되지 않는다. 시스템 버스(121)는 임의의 다양한 버스 구조를 이용하는 메모리 버스 또는 메모리 제어기, 주변장치 버스 및 로컬 버스를 포함하는 임의의 여러 가지 타입의 버스 구조일 수 있다. 한정이 아니라 예로서, 그러한 아키텍처들은 ISA(Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스, 및 메자닌(Mezzanine) 버스로도 알려진 PCI 버스를 포함한다.
컴퓨터(110)는 통상적으로 다양한 컴퓨터 판독 가능 매체들을 포함한다. 컴퓨터 판독 가능 매체들은 컴퓨터(110)에 의해 액세스될 수 있는 임의의 이용 가능 매체들일 수 있으며, 휘발성 및 비휘발성, 이동식 및 비이동식 매체들 모두를 포함한다. 한정이 아니라 예로서, 컴퓨터 판독 가능 매체들은 컴퓨터 저장 매체들 및 통신 매체들을 포함할 수 있다. 컴퓨터 저장 매체들은 컴퓨터 판독 가능 명령어들, 데이터 구조들, 프로그램 모듈들 및 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체들 모두를 포함한다. 컴퓨터 저장 매체들은 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, 디지털 다기능 디스크(DVD) 또는 광 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 다른 자기 저장 장치, 또는 원하는 정보를 저장하는 데 사용될 수 있고 컴퓨터(110)에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만 이에 한정되지 않는다. 통신 매체들은 통상적으로 반송파 또는 다른 운반 메커니즘과 같은 변조된 데이터 신호 내에 컴퓨터 판독 가능 명령어들, 데이터 구조들, 프로그램 모듈들 또는 다른 데이터를 구현하며, 임의의 정보 전달 매체들을 포함한다. "변조된 데이터 신호(modulated date signal)"라는 용어는 신호 내에 정보를 인코딩하는 방식으로 신호의 특성들 중 하나 이상을 설정 또는 변경한 신호를 의미한다. 한정이 아니라 예로서, 통신 매체들은 유선 네트워크 또는 직접 유선 접속과 같은 유선 매체들 및 음향, RF, 적외선 및 다른 무선 매체들과 같은 무선 매체들을 포함한다. 임의의 위의 것들의 조합들도 컴퓨터 판독 가능 매체들의 범위 내에 포함되어야 한다.
시스템 메모리(130)는 판독 전용 메모리(ROM)(131) 및 랜덤 액세스 메모리(RAM)(132)와 같은 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체들을 포함한다. 예를 들어 시동 중에 컴퓨터(110) 내의 요소들 간의 정보 전송을 돕는 기본 루틴들을 포함하는 기본 입출력 시스템(BIOS)(133)은 통상적으로 ROM(131)에 저장된다. 통상적으로, RAM(132)은 처리 유닛(120)에 의해 즉시 액세스될 수 있으며/있거나 처리 유닛(120) 상에서 현재 동작하고 있는 데이터 및/또는 프로그램 모듈들을 포함한다. 한정이 아니라 예로서, 도 1은 운영 체제(134), 애플리케이션 프로그램들(135), 다른 프로그램 모듈들(136) 및 프로그램 데이터(137)를 도시한다.
컴퓨터(110)는 다른 이동식/비이동식, 휘발성/비휘발성 컴퓨터 저장 매체들도 포함할 수 있다. 단지 예로서, 도 1은 비이동식, 비휘발성 자기 매체들로부터 판독하거나 그들에 기록하는 하드 디스크 드라이브(141), 이동식, 비휘발성 자기 디스크(152)로부터 판독하거나 그에 기록하는 자기 디스크 드라이브(151), 및 CD ROM 또는 다른 광학 매체들과 같은 이동식, 비휘발성 광 디스크(156)로부터 판독하거나 그에 기록하는 광 디스크 드라이브(155)를 도시한다. 예시적인 동작 환경에서 사용될 수 있는 다른 이동식/비이동식, 휘발성/비휘발성 컴퓨터 저장 매체들은 자기 테이프 카세트, 플래시 메모리 카드, 디지털 다기능 디스크, 디지털 비디오 테이프, 반도체 RAM, 반도체 ROM 등을 포함하지만 이에 한정되지 않는다. 하드 디스크 드라이브(141)는 통상적으로 인터페이스(140)와 같은 비이동식 메모리 인터페이스를 통해 시스템 버스(121)에 접속되며, 자기 디스크 드라이브(151) 및 광 디스크 드라이브(155)는 통상적으로 인터페이스(150)와 같은 이동식 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
위에서 설명되었고 도 1에 도시된 드라이브들 및 이들의 관련 컴퓨터 저장 매체들은 컴퓨터(110)를 위한 컴퓨터 판독 가능 명령어들, 데이터 구조들, 프로그램 모듈들 및 다른 데이터의 저장을 제공한다. 도 1에서, 예를 들어, 하드 디스크 드라이브(141)는 운영 체제(144), 애플리케이션 프로그램들(145), 다른 프로그램 모듈들(146) 및 프로그램 데이터(147)를 저장하는 것으로 도시된다. 이러한 컴포넌트들은 운영 체제(134), 애플리케이션 프로그램들(135), 다른 프로그램 모듈들(136) 및 프로그램 데이터(137)와 동일하거나 상이할 수 있다는 점에 유의한다. 여기서, 운영 체제(144), 애플리케이션 프로그램들(145), 다른 프로그램 모듈들(146) 및 프로그램 데이터(147)는 최소한 이들이 상이한 사본들임을 나타내기 위하여 상이한 번호들을 부여받는다. 사용자(101)는 키보드(162), 및 일반적으로 마우스, 트랙볼 또는 터치 패드로서 지칭되는 포인팅 장치(161)와 같은 입력 장치들을 통해 컴퓨터(110)에 명령들 및 정보를 입력할 수 있다. 다른 입력 장치들(도시되지 않음)은 마이크, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다. 이들 및 다른 입력 장치들은 종종 시스템 버스에 결합되는 사용자 입력 인터페이스(160)를 통해 처리 유닛(120)에 접속되지만, 병렬 포트, 게임 포트 또는 유니버설 직렬 버스(USB)와 같은 다른 인터페이스 및 버스 구조들에 의해 접속될 수도 있다. 모니터(191) 또는 다른 타입의 디스플레이 장치도 비디오 인터페이스(190)와 같은 인터페이스를 통해 시스템 버스(121)에 접속된다. 모니터 외에도, 컴퓨터들은 출력 주변장치 인터페이스(195)를 통해 접속될 수 있는 스피커(197) 및 프린터(196)와 같은 다른 주변 출력 장치들도 포함할 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터에 대한 논리적 접속들을 이용하여 네트워킹된 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 개인용 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 다른 일반 네트워크 노드일 수 있다. 원격 컴퓨터(180)는 갱신 서버의 일례일 수 있다.
원격 컴퓨터(180)는 통상적으로 컴퓨터(110)와 관련하여 전술한 요소들 중 다수 또는 전부를 포함하지만, 도 1에는 메모리 저장 장치(181)만이 도시되어 있다. 도 1에 도시된 논리적 접속들은 근거리 네트워크(LAN)(171) 및 광역 네트워크(WAN)(173)를 포함하지만, 다른 네트워크들도 포함할 수 있다. 그러한 네트워킹 환경들은 사무실, 기업 광역 컴퓨터 네트워크, 인트라넷 및 인터넷에서 일반적이다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 통상적으로 인터넷과 같은 WAN(173)을 통해 통신을 설정하기 위한 모뎀(172) 또는 다른 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 다른 적절한 메커니즘을 통해 시스템 버스(121)에 접속될 수 있다. 네트워킹된 환경에서, 컴퓨터(110) 또는 그의 부분들과 관련하여 도시된 프로그램 모듈들은 원격 메모리 저장 장치에 저장될 수 있다. 한정이 아니라 예로서, 도 1은 원격 애플리케이션 프로그램들(185)을 메모리 장치(181)에 상주하는 것으로 도시한다. 도시된 네트워크 접속들은 예시적이며, 컴퓨터들 사이에 통신 링크를 설정하는 다른 수단들이 사용될 수 있다는 것을 알 것이다.
도 2는 본 발명의 일부 실시예들과 관련된 컴퓨터 환경(200)의 부분들을 나타낸다. 컴퓨터 시스템(210)은 소프트웨어를 실행하기 위한 적어도 하나의 프로세서(214)를 구비한다. 소프트웨어는 도 1에 도시된 바와 같은 운영 체제(OS)(134), 애플리케이션 프로그램들(135) 및 다른 프로그램 모듈들(136)을 포함할 수 있다. 그러나, 컴퓨터 시스템(210)에서 실행되거나 치료되는 소프트웨어의 타입은 본 발명에 중요하지 않다는 것을 알아야 한다.
프로세서(214)는 적어도 하나의 저장 장치(220)에 접속된다. 이러한 저장 장치는 RAM(132)과 같은 휘발성 메모리, 하드 디스크 드라이브 또는 플래시 메모리와 같은 비휘발성 메모리(141), 또는 비휘발성 및 휘발성 메모리의 조합일 수 있다. 저장 장치는 다수의 소프트웨어 컴포넌트(240, 250, 260, 270)를 저장한다. 각각의 소프트웨어 컴포넌트(240, 250, 260, 270)는 서로 관련된 개별 파일들의 집합이다. 여기서, "파일(file)"은 파일 관리 컴포넌트(도시되지 않음)에 의해 할당된 메모리 내에 사전 정의된 포맷으로 저장된 디지털 데이터의 체계화된 그룹핑일 수 있다. 그러나, "파일"은 처리될 수 있는 데이터의 임의의 적절한 집합일 수 있으며, 그러한 "파일"의 특정 구조는 본 발명에 중요하지 않다는 것을 알아야 한다.
도시된 예에서, 컴포넌트(270)는 페이로드 파일들(272/274) 및 메타데이터 파일(276)을 포함하며, 이 메타데이터 파일은 일부 실시예들에서 컴포넌트의 "매니페스트(manifest)"로서 구현될 수 있다. 페이로드 파일들은 컴포넌트(270)의 실행 동안에 컴퓨터 시스템(210)의 프로세서(214)에 의해 사용되는 파일들이다. 이 파일들은 때때로 동적 링크 라이브러리들(DLL)로서 포맷될 수 있는 실행 가능 파일들을 포함할 수 있다. 메타데이터 파일(276)은 컴포넌트(270)의 실행 가능 파일들 사이의 의존성들에 관한 상세들과 같은, 페이로드 파일들에 대한 정보를 저장한다. 예컨대, 페이로드(272)가 페이로드(274)에 의존하는 경우, 이것은 메타데이터 파일(276) 내에 명시적으로 기록될 것이다. 본 발명은 전술한 파일 타입들로 한정되지 않는다. 임의의 적절한 포맷의 파일들이 지원될 수 있으며, 파일들의 포맷은 치료되는 컴포넌트에 의존할 수 있다.
메타데이터 파일(276)은 페이로드 파일들로 하여금 손상에 대해 검사될 수 있게 하는 정보도 저장한다. 도시된 실시예에서, 그러한 정보는 저장 장치(220)에 또한 저장되는 해시 함수(228)에 대한 하나 이상의 해시 키(278)의 형태이다. 해시 키(278)는 페이로드(274)의 손상되지 않은 버전에 대해 해시 함수(228)를 연산한 결과이다. 해시 함수(228)는 해시 결과를 생성하기 위해 파일에 적용될 수 있는 컴퓨터 실행 가능 컴포넌트이다. 이 해시 함수(228)는 암호로 보호되는 것이 바람직하지만, 그에 한정될 필요는 없다. 해시 함수(228)가 페이로드(274)의 손상된 버전에 대해 수행되는 경우, 해시 함수로부터 발생하는 값은 저장된 해시 키(278)와 다를 것이다. 이러한 차이는 페이로드 파일(274)이 소정의 방식으로 그리고 잠재적으로는 컴퓨터 시스템(210)에 해로운 방식으로 변경되었다는 명백한 지시로서 작용한다.
메타데이터 파일(276) 자체도 손상될 수 있다. 따라서, 해시 키(232)를 시스템 상의 어딘가에 저장하는 것이 유용하다. 메타데이터 파일(276)의 해시 키(232)의 저장을 위한 적절한 위치의 일례는 레지스트리(230) 내이다.
그러나, 도 2는 손상된 파일들이 식별될 수 있게 하는 정보의 배열의 일례를 나타낼 뿐이라는 것을 알아야 한다. 일부 실시예들에서는, 메타데이터가 페이로드 파일(274) 내에 포함되는 것이 가능하며, 따라서 별도의 메타데이터 파일(276)은 필요하지 않다. 이 경우, 해시 키(278)는 메타데이터의 나머지와 함께 페이로드 파일(274) 내에 삽입될 수 있다.
저장 장치(220)는 컴포넌트 치료 서비스(222)도 저장한다. 이것은 바람직하게는 OS(134)의 일부인 소프트웨어일 수도 있지만, 별개의 애플리케이션 프로그램(135)일 수도 있다. 컴포넌트 치료 서비스(222)의 동작은 손상된 소프트웨어 컴포넌트를 치료하기 위한 방법의 일 실시예를 상술하는 도 3과 관련하여 설명될 것이다.
컴포넌트 치료 서비스(222)는 여러 상이한 방법 중 어느 한 방법에서 개시(302)될 수 있다. 일부 실시예들에서, 이것은 컴포넌트 치료 서비스(222)를 수동으로 실행하는 사용자(101)에 의해 개시될 수 있다. 다른 실시예에서, 컴포넌트 치료 서비스(222)는 잠재적 손상의 검출에 응답하여 안티바이러스 프로그램과 같은 시스템 건강 검사기에 의해 활성화될 수 있다. 또 다른 실시예에서, 컴포넌트 치료 서비스(222)는 소프트웨어 갱신 서비스(224)의 실패로 인해 실행될 수 있다. 전술한 바와 같이, 일부 예들에서, 소프트웨어 컴포넌트(270)는 손상된 경우에는 새로운 버전으로 적절히 갱신되지 못한다. 따라서, 손상된 컴포넌트(270)는 소프트웨어 갱신 서비스(224)가 갱신을 완료하기 전에 컴포넌트 치료 서비스(222)에 의해 치료될 수 있다.
갱신은 손상된 컴포넌트의 치료가 수행될 수 있는 시나리오의 일례일 뿐이라는 것을 알아야 한다. 다른 시나리오들의 예는 소프트웨어 서브시스템 검증 요청을 포함한다. 일부 실시예들에서, 손상의 치료는 잠재적 손상이 식별되었다는 시스템 건강 검사기로부터의 지시에 기초하여 수행될 수 있다. 다른 실시예들은 소프트웨어가 적절히 동작하지 않고 시스템의 무결성의 손상을 유발하고 있다는 임의의 지시에 기초하여 손상된 소프트웨어를 치료하기로 결정할 수 있다.
본 명세서에서 설명되는 바와 같이, 치료 서비스(222) 및 갱신 서비스(224)는 개별 컴포넌트들이다. 그러나, 일부 실시예들에서, 치료 서비스(222)는 갱신 서비스(224)의 일부일 수 있다. 그러한 실시예는 외부 갱신 서비스에 액세스하고, 소프트웨어 컴포넌트들에 대한 액세스 및 치료 서비스와 갱신 서비스에 의해 유사하게 수행되는 임의의 다른 동작들을 중지하기 위한 기존의 특징들에 의존할 수 있다.
컴포넌트 치료 서비스(222)의 동작을 트리거링하는 이벤트의 타입에 관계없이, 컴포넌트 치료 서비스(222)가 동작 302에서 개시되면, 이 컴포넌트 치료 서비스는 동작 304에서 손상된 컴포넌트를 검출할 것이다. 이것은 도 6에 더 상세히 도시된 바와 같이 해시 함수(228)를 이용하여 달성될 수 있다. 도 6의 프로세스는 602에서 컴포넌트 치료 서비스(222)의 실행에 의해 개시된다. 도시된 프로세스의 일부로서, 컴포넌트 치료 서비스(222)는 동작 604에서 검사되는 컴포넌트(270)의 일부인 파일(274)에 대해 해시 함수(228)를 실행한다. 파일은 페이로드 파일(274), 매니페스트 파일(276) 또는 임의의 다른 적절한 파일을 나타낼 수 있다. 이어서, 동작 606에서, 파일에 대한 해시 함수의 연산으로부터 생성된 해시 값이 매니페스트(276)를 포함하는 파일의 경우에는 저장된 해시 키(232)와 또는 페이로드 파일(274)의 경우에는 키(278)와 비교된다. 생성된 해시 값이 저장된 해시 키(278)와 일치하지 않는 경우, 파일은 처음 설치된 파일과 다르며, 이는 파일 손상의 지시이다.
동작 608에서, 컴포넌트 치료 서비스(222)는 평가될 파일 더 존재하는지를 검사한다. 평가될 파일이 더 존재하는 경우, 컴포넌트 치료 서비스는 604에서 다음 파일을 해싱하고, 606에서 해시 값을 해시 키와 비교하는 프로세스를 반복하도록 루프 백(loop back)할 것이다. 검사할 파일이 더 존재하지 않는 경우, 컴포넌트 치료 서비스(222)는 동작 610에서 손상된 컴포넌트들의 검출을 종료할 것이다.
평가될 파일이 더 존재하는지의 여부는 임의의 적절한 방식으로 결정될 수 있으며, 어떤 이벤트가 컴포넌트 치료 서비스(222)의 동작을 트리거링했는지에 의존할 수 있다. 일부 실시예들에서는, 컴퓨터 시스템(210)의 모든 컴포넌트(240, 250, 260, 270)가 손상에 대해 검사될 것이다. 다른 실시예들에서는, 선택된 컴포넌트 세트만이 검사될 것이다. 예를 들어, 안티바이러스 프로그램(226)과 같은 시스템 건강 검사기가 특정 컴포넌트가 아마도 손상되었음을 지시하는 경우, 동작 304에서의 손상된 컴포넌트들의 검출은 플래그가 첨부된 컴포넌트들에 대해서만 실행될 수 있으며, 따라서 그러한 컴포넌트들의 파일들만이 도 6의 프로세스에서 평가된다.
도 6의 프로세스에서 어떤 파일들이 평가되는지에 관계없이, 그러한 평가들의 결과들은 도 3의 프로세스에서 사용될 수 있다. 동작 306에서, 컴포넌트 치료 서비스(222)는 치료가 필요한 손상된 파일들의 세트를 결정한다. 이 시점에서, 동작 304에서 손상된 것으로서 검출된 컴포넌트들 및 파일들 중 어느 것이 치료되어야 하는지가 결정된다.
컴포넌트 치료 서비스(222)는 동작 308에서 컴퓨터 시스템(210)에 의해 손상된 파일들을 치료하는 데 사용될 치료 파일들(294, 296, 298)의 세트를 찾는다. 이러한 파일들은 예를 들어 외부 서버(280)에서 찾을 수 있다. 도 5는 이러한 동작의 하나의 가능한 실시예를 나타낸다.
컴포넌트 치료 서비스(222)가 도 3의 동작 308을 개시할 때 동작 502에서 루틴이 시작된다. 동작 504에서, 손상된 컴포넌트(270)는 패키지(292)에 맵핑된다. 이러한 맵핑은 특히 치료 파일들(294, 296, 298)의 소스가 컴포넌트 치료 서비스(222)에 의해 손상된 컴포넌트를 식별하는 데 사용된 것과 다른 포맷으로 소프트웨어를 체계화하는 경우에 컴포넌트 또는 컴포넌트의 개별 파일들의 적절한 사본들의 식별을 가능하게 할 수 있다. 예를 들어, 외부 서버(280)는 패키지들 내에 파일들의 그룹들을 저장할 수 있다. 또한, 치료되는 OS의 상이한 버전들 또는 컴포넌트 자체의 상이한 버전들에 대응하는, 동일 컴포넌트의 다수의 버전에 대한 소프트웨어가 존재할 수 있다. 외부 서버 상의 소프트웨어의 특정 체계화에 관계없이, 다운로드될 수 있는 소프트웨어의 적절한 단위가 맵핑에 의해 식별될 수 있다. 도시된 예에서, 소프트웨어의 단위는 패키지이다. 소프트웨어의 단위는 대안으로서 개별 파일 또는 컴포넌트일 수 있다.
패키지(292)가 결정되면, 패키지는 외부 서버(280) 상에서 찾아야 하며, 이는 동작 506에서 달성된다. 그 위치는 URL(Uniform Resource Locator)에 의해 또는 패키지 저장 장치(290) 내의 위치를 나타내는 소정의 다른 형태의 데이터에 의해 표현될 수 있다. 위치가 결정되면, 동작 308은 508에서 종료된다.
다수의 파일이 획득되어야 하는 경우, 도 5의 프로세스는 각각의 그러한 파일에 대해 반복될 수 있다. 이어서, 결정된 위치 또는 위치들은 도 3에 도시된 바와 같이 사용된다. 동작 310에서, 컴포넌트 치료 서비스(222)는 모든 필요한 치료 파일들(294, 296, 298)의 결정된 위치 또는 위치들을 이용하여, 파일들(294, 296, 298)(도 2)과 같은 치료 파일들을 다운로드한다. 일부 실시예들에서, 컴퓨터 시스템(210)은 네트워크 어댑터(212)를 이용하여 외부 서버(280)와 통신하며, 이 외부 서버는 또한 네트워크 어댑터(282)를 통해 통신한다. 이 분야에 공지된 바와 같은 네트워크 어댑터들은 이러한 목적을 위해 사용될 수 있다. 그러나, 컴퓨터 시스템(210)이 외부 서버(280)에 접속될 수 있는 많은 방법이 존재한다. 이것은 직접 접속, 근거리 네트워크, 광역 네트워크, 인터넷 또는 인트라넷일 수 있다. 이 분야의 통상의 기술자는 임의의 적절한 접속이 컴퓨터 시스템(210)을 외부 서버(280)에 접속하는 데 사용될 수 있다는 것을 이해할 것이다. 또한, 파일들이 외부 서버(280)로부터 획득될 필요는 없다는 것을 알아야 한다. 파일들은 피어 대 피어 네트워크 소스로부터도 획득될 수 있다. 소스 또한 외부 소스로 제한될 필요는 없다. 일부 실시예들에서는, 치료 파일들의 국지적 저장소가 컴퓨터 시스템(210)에 저장될 수 있다.
동작 310에서 치료 파일들(294, 296, 298)이 컴퓨터 시스템(210)에 의해 수신된 때, 컴포넌트 치료 서비스(222)는 옵션으로서 동작 312에서 치료 파일들(294-298)을 검증할 수 있다. 이러한 검증 프로세스는 동작 304에서 손상된 컴포넌트들을 검출하는 데 사용된 것과 동일한 암호 보안 해시 함수(228) 및 해시 키들(278)에 의존할 수 있다. 그러나, 해시 함수(228)와 무관한 검증 프로세스를 이용하는 것이 가능하며, 치료 파일들을 수반하는 증명서 또는 서명과 같은 임의의 적절한 검증 기술이 이용될 수 있다. 더욱이, 상이한 파일들 또는 상이한 타입의 파일들에 대해 상이한 검증 기술들이 이용될 수 있다. 예컨대, 매니페스트(276)는 페이로드 파일(274)과 다르게 검증될 수 있다.
검증 동작이 동일 해시 함수(228)를 사용하는 경우, 프로세스는 도 6에 도시된 것과 매우 유사하다. 각각의 수신된 파일은 해시 함수(228)에 의해 해싱되며, 결과 값은 저장된 해시 키(278)와 비교된다. 해시 함수(228)에 의해 반환된 값이 해시 키(278)와 일치하는 경우, 치료 파일(298)은 유효한 것으로 추정된다.
도 3에 도시된 프로세스의 마지막 동작 314는 손상된 컴포넌트를 치료하는 것이다. 일부 실시예들에서, 이것은 손상된 파일들(274)을 삭제하고 이들을 치료 파일들(298)로 대체하여 손상된 파일들(274)을 겹쳐쓰기함으로써 달성될 수 있다. 손상된 파일(274)의 특정 부분을 치료하기 위해 치료 파일(298)로부터 특정 정보를 선택하는 것과 같은 더 복잡한 치료 프로세스들도 가능하다. 이용되는 특정 치료 프로세스에 관계없이, 치료 프로세스는 동작 308에서 치료가 필요한 것으로 결정된 모든 파일에 대해 수행될 수 있다. 그러나, 일부 실시예들에서는, 상이한 파일 타입들 또는 에러 타입들이 식별될 수 있으며, 손상된 파일들 모두가 한꺼번에 치료되지는 않도록 상이한 치료 우선 순위들을 부여받을 수 있다. 동작 314에서 치료를 필요로 하는 모든 파일들이 치료되면, 컴포넌트 치료 서비스(222) 소프트웨어는 동작 316에서 실행을 종료한다.
설명된 바와 같은 실시예들은 손상된 컴포넌트와 관련된 개별 손상 파일들을 식별하고 치료한다. 이러한 접근법은 비교적 적은 양의 네트워크 대역폭을 소비하면서 치료가 빠르게 수행되는 것을 가능하게 할 수 있는 반면, 컴포넌트들이 파일 레벨에서 치료되어야 하는 것을 요구하지 않는다. 임의의 적절한 단위의 소프트웨어가 손상된 것으로서 식별되고 치료될 수 있다. 일부 실시예들에서는, 치료에 필요한 최소 부분이 다운로드된다. 다운로드에 이용 가능한 최소 단위는 치료되는 전체 소프트웨어 환경의 임의의 크기 단위일 수 있다. 다운로드되는 최소 단위는 전체 컴포넌트, 개별 파일 또는 심지어 치료가 필요한 파일의 일부일 수도 있다. 일부 실시예들에서는, 전체 파일이 다운로드될 필요가 없는 대신에, 파일의 일부만이 다운로드된다.
또한, 실시예들은 운영 체제가 치료되는 것을 설명한다. 애플리케이션들을 포함하는 임의의 소프트웨어가 본 명세서에서 설명되는 바와 같은 기술들을 이용하여 갱신될 수 있다는 것을 인식해야 한다.
본 발명의 추가 실시예에서, 컴포넌트 치료 서비스(222)는 최소한의 사용자 상호작용으로 무결함 소프트웨어 갱신들을 제공하기 위해 소프트웨어 갱신 서비스(224)와 연계하여 사용될 수 있다. 이러한 방법의 일 실시예가 도 4에 도시되어 있다. 소프트웨어 갱신 서비스(224)는 임의의 적절한 방식으로 시작될 수 있다(402). 예를 들어, 이것은 자동으로, 타이밍 스케줄에 기초하여, 또는 갱신들이 이용 가능해질 때 시작될 수 있거나, 컴퓨터 시스템(210)의 사용자(101)에 의해 수동으로 개시될 수 있다.
이어서, 소프트웨어 갱신 서비스(224)는 동작 404에서 소정의 소프트웨어를 갱신하기 위한 요청을 수신한다. 요청은 사용자(101)로부터, OS(134)로부터, 애플리케이션 프로그램(135)으로부터, 다른 프로그램 모듈들(136)로부터 또는 아마도 이용 가능한 갱신들에 대한 정보를 제공하는 외부 갱신 서버와 같은 외부 소스로부터 올 수 있다. 소프트웨어 갱신 서비스(224)는 동작 406에서 어떤 컴포넌트들을 갱신할지를 결정한다. 소프트웨어를 갱신하기 위한 요청은 갱신되어야 하는 특정 컴포넌트들(270)을 지정할 수 있다. 대안으로서, 이것은 어떤 소프트웨어를 갱신할지를 결정하기 위한 규칙들의 세트를 가질 수 있다. 예컨대, 요청은 최근에 갱신되지 않은 모든 컴포넌트들에 대해 갱신들이 수행되어야 한다는 것을 지시할 수 있다. 추가 실시예에서, 소프트웨어 갱신 서비스(224)는 컴퓨터 시스템(210)의 모든 컴포넌트들에 대한 갱신들을 검사하고, 이용 가능한 갱신들을 갖는 컴포넌트들을 갱신할 수 있다. 따라서, 갱신을 트리거링하는 특정 이벤트 및 갱신되는 특정 컴포넌트들은 본 발명에 중요하지 않다.
동작 406에서 갱신할 컴포넌트들이 결정되면, 소프트웨어 갱신 서비스(224)는 동작 300에서 컴포넌트들(270) 중 하나를 선택하고 손상된 파일들을 치료할 것이다. 이러한 동작은 도 3과 관련하여 상세히 설명된 컴포넌트 치료 서비스(222) 프로세스와 동일할 수 있다. 이 프로세스는 컴포넌트 치료 서비스(222)에 의해 수행될 수 있다. 갱신되는 컴포넌트가 손상된 경우, 이 컴포넌트는 먼저 컴포넌트 치료 서비스(222)에 의해 치료되어야 한다.
치료 후에, 컴포넌트(270)는 더 이상 손상되지 않았으며, 컴포넌트(270)는 동작 412에서 적절히 설치 해제될 수 있다. 컴포넌트의 설치 해제는 레지스트리(230)의 갱신, 컴포넌트와 관련된 파일들(272-276)의 변경 및/또는 삭제 및 다른 관리 작업들을 포함할 수 있다. 동작 414에서, 컴포넌트의 갱신 버전이 외부 서버(280)로부터 다운로드된다. 이러한 컴포넌트들은 패키지 저장 장치(290)에서 찾은 패키지들(291)의 일부일 수 있다. 이어서, 동작 416에서, 갱신된 컴포넌트가 설치된다.
동작 418에서 결정되는 바와 같이, 갱신을 필요로 하는 컴포넌트가 더 존재하는 경우, 소프트웨어 갱신 서비스(224)는 동작 408로 복귀하여, 갱신할 다음 컴포넌트를 선택하고, 각각의 나머지 컴포넌트에 대해 갱신 절차를 반복할 것이다. 갱신이 필요한 것으로 결정된 컴포넌트들 모두가 갱신되면, 소프트웨어 갱신 서비스(222)는 동작 420에서 종료된다.
도 4의 동작들의 순서는 본 명세서에서 제시되는 순서로 한정되지 않는다는 점에 유의한다. 예를 들어, 동작 414에서의 갱신된 컴포넌트의 다운로딩은 프로세스 내의 임의의 이전 시점에 이루어질 수 있다. 더구나, 프로세스의 동작들은 동시에 수행될 수 있다. 예를 들어, 동작 414에서의 컴포넌트들의 다운로딩은 동작 300에서 손상된 컴포넌트들이 치료되고 있는 동안에 이루어질 수 있다. 또한, 각각의 컴포넌트는 다음 컴포넌트로의 이동 전에 전부 갱신될 필요는 없다. 대신, 소프트웨어 갱신 서비스(224)에 의해 갱신되고 있는 모든 컴포넌트에 대해 동작들 모두가 동시에 수행될 수 있다.
또 다른 실시예에서는, 손상된 파일들에 대한 치료들이 캐스케이딩(cascading)될 수 있다. 예를 들어, 메타데이터 파일(276)이 손상된 경우, 이것은 페이로드 파일(274)의 손상을 검출하기 위해 유효 해시 키(278)를 공급하는 데에 의존될 수 없다. 따라서, 먼저 메타데이터 파일(276)이 치료되어야 한다. 이것이 치료되면, 컴포넌트 치료 서비스(222)는 해시 키(278)를 이용하여 손상에 대해 페이로드(274)를 검사하며, 페이로드(274)에 대한 치료 프로세스를 완료할 수 있다.
전술한 실시예들에서는, 현재 실행되고 있는 OS의 컴포넌트들(240, 250, 260, 270)이 치료되고 있다. 이러한 실시예에서는, 치료 또는 갱신되고 있는 임의의 컴포넌트에 대한 액세스가 차단될 수 있다. 따라서, 액세스가 임시 차단될 수 있는 임의의 컴포넌트는 OS가 사용되고 있는 동안에도 갱신될 수 있다. 그러나, 대안 실시예에서는, 실행중인 OS가 현재 컴퓨터 시스템에 의해 실행되고 있지 않은 별개의 OS의 이미지들의 컴포넌트들을 치료할 수 있다. 이것은 현재 실행중인 OS가 저장 장치(210) 또는 소정의 다른 외부 또는 이동식 저장 매체에 저장된 OS 이미지 내의 파일들에 대해 그의 컴포넌트 치료 서비스를 이용할 수 있게 함으로써 달성될 수 있다.
이와 같이 본 발명의 적어도 일 실시예의 여러 양태가 설명되었지만, 이 분야의 기술자들에게는 다양한 변경들, 수정들 및 개량들이 쉽게 떠오를 것이라는 것을 알아야 한다. 그러한 변경들, 수정들 및 개량들은 본 명세서의 일부인 것을 의도하며, 본 발명의 사상 및 범위 내에 속하는 것을 의도한다. 따라서, 위의 설명 및 도면들은 예시적일 뿐이다.
전술한 본 발명의 실시예들은 임의의 다양한 방식으로 구현될 수 있다. 예를 들어, 실시예들은 하드웨어, 소프트웨어 또는 이들의 조합을 이용하여 구현될 수 있다. 소프트웨어로 구현될 때, 소프트웨어 코드는 단일 컴퓨터 내에 제공되거나 다수의 컴퓨터 사이에 분산되는지에 관계없이 임의의 적절한 프로세서 또는 프로세서들의 집합에서 실행될 수 있다. 이러한 프로세서들은 집적 회로들로서, 집적 회로 컴포넌트 내의 하나 이상의 프로세서를 이용하여 구현될 수 있다. 그러나, 프로세서는 임의의 적절한 포맷의 회로를 이용하여 구현될 수도 있다.
또한, 컴퓨터는 선반에 설치된 컴퓨터, 데스크탑 컴퓨터, 랩탑 컴퓨터 또는 태블릿 컴퓨터와 같은 임의의 다양한 형태로 구현될 수 있다. 게다가, 컴퓨터는 개인 휴대 단말기(PDA), 스마트폰 또는 임의의 다른 적절한 휴대용 또는 고정 전자 장치를 포함하는 일반적으로는 컴퓨터로 간주되지 않지만 적절한 처리 능력을 갖는 장치 내에 내장될 수 있다.
또한, 컴퓨터는 하나 이상의 입력 및 출력 장치를 구비할 수 있다. 이러한 장치들은 특히 사용자 인터페이스를 제공하는 데 사용될 수 있다. 사용자 인터페이스를 제공하는 데 사용될 수 있는 출력 장치들의 예는 출력의 시각적 제공을 위한 프린터들 또는 디스플레이 스크린들 및 출력의 가청 제공을 위한 스피커들 또는 다른 사운드 생성 장치들을 포함한다. 사용자 인터페이스를 위해 사용될 수 있는 입력 장치들의 예는 키보드, 마우스와 같은 포인팅 장치, 터치 패드 및 디지타이징 태블릿을 포함한다. 다른 예로서, 컴퓨터는 음성 인식을 통해 또는 다른 적절한 포맷으로 입력 정보를 수신할 수 있다.
그러한 컴퓨터들은 근거리 네트워크 또는 기업 네트워크 또는 인터넷과 같은 광역 네트워크를 포함하는 임의의 적절한 형태로 하나 이상의 네트워크에 의해 상호접속될 수 있다. 이러한 네트워크들은 임의의 적절한 기술에 기초할 수 있고, 임의의 적절한 프로토콜에 따라 동작할 수 있으며, 무선 네트워크, 유선 네트워크 또는 광섬유 네트워크를 포함할 수 있다.
또한, 본 명세서에서 설명된 다양한 방법들 및 프로세스들은 다양한 운영 체제들 또는 플랫폼들 중 임의의 것을 이용하는 하나 이상의 프로세서에서 실행될 수 있는 소프트웨어로서 코딩될 수 있다. 게다가, 이러한 소프트웨어는 임의의 다양한 적절한 프로그래밍 언어 및/또는 프로그래밍 또는 스크립팅 도구를 이용하여 작성될 수 있으며, 또한 프레임워크 또는 가상 기계에서 실행되는 실행 가능 기계 언어 코드 또는 중간 코드로서 컴파일될 수 있다.
이와 관련하여, 본 발명은 하나 이상의 컴퓨터 또는 다른 프로세서에서 실행될 때 전술한 본 발명의 다양한 실시예들을 구현하는 방법들을 수행하는 하나 이상의 프로그램이 인코딩된 컴퓨터 판독 가능 매체(또는 다수의 컴퓨터 판독 가능 매체)(예를 들어, 컴퓨터 메모리, 하나 이상의 플로피 디스크, 컴팩트 디스크(CD), 광 디스크, 디지털 비디오 디스크(DVD), 자기 테이프, 플래시 메모리, 필드 프로그래머블 게이트 어레이 또는 다른 반도체 장치 내의 회로 구성, 또는 다른 비일시적인 유형의 컴퓨터 저장 매체)로서 구현될 수 있다. 컴퓨터 판독 가능 매체 또는 매체들은 운반 가능할 수 있으며, 따라서 그에 저장된 프로그램 또는 프로그램들은 하나 이상의 상이한 컴퓨터 또는 다른 프로세서에 로딩되어, 전술한 바와 같은 본 발명의 다양한 양태들을 구현할 수 있다. 본 명세서에서 사용되는 바와 같이, "비일시적 컴퓨터 판독 가능 저장 매체(non-transitory computer-readable storage medium)"라는 용어는 제품(즉, 제조물) 또는 기계인 것으로 간주될 수 있는 컴퓨터 판독 가능 매체만을 포함한다.
"프로그램(program)" 또는 "소프트웨어(software)"라는 용어들은 본 명세서에서 일반적으로 전술한 바와 같은 본 발명의 다양한 양태들을 구현하도록 컴퓨터 또는 다른 프로세서를 프로그래밍하는 데 사용될 수 있는 임의 타입의 컴퓨터 코드 또는 컴퓨터 실행 가능 명령어들의 세트를 지칭하는 데 사용된다. 게다가, 이 실시예의 일 양태에 따르면, 실행될 때 본 발명의 방법들을 수행하는 하나 이상의 컴퓨터 프로그램이 단일 컴퓨터 또는 프로세서에 상주할 필요가 없으며 본 발명의 다양한 양태들을 구현하도록 다수의 상이한 컴퓨터 또는 프로세서 사이에 모듈 방식으로 분산될 수 있다는 것을 알아야 한다.
컴퓨터 실행 가능 명령어들은 하나 이상의 컴퓨터 또는 다른 장치에 의해 실행되는 프로그램 모듈들과 같은 다양한 형태를 가질 수 있다. 일반적으로, 프로그램 모듈들은 특정 작업들을 수행하거나 특정 추상 데이터 타입들을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 통상적으로, 프로그램 모듈들의 기능은 다양한 실시예들에서 필요에 따라 결합 또는 분산될 수 있다.
또한, 데이터 구조들은 임의의 적절한 형태로 컴퓨터 판독 가능 매체들에 저장될 수 있다. 설명의 간소화를 위해, 데이터 구조들은 데이터 구조 내의 위치를 통해 관련되는 필드들을 갖는 것으로 도시될 수 있다. 그러한 관계들은 또한 필드들 사이의 관계를 전달하는 컴퓨터 판독 가능 매체 내의 위치들을 갖는 필드들에 대해 저장을 할당함으로써 달성될 수 있다. 그러나, 데이터 요소들 사이의 관계를 설정하는 포인터들, 태그들 또는 다른 메커니즘들의 사용을 포함하는 임의의 적절한 메커니즘이 데이터 구조의 필드들 내의 정보들 사이의 관계를 설정하는 데 사용될 수 있다.
본 발명의 다양한 양태들은 단독으로, 조합하여, 또는 위에서 설명된 실시예들에서 구체적으로 설명되지 않은 다양한 배열로 이용될 수 있으며, 따라서 위에서 설명되거나 도면들에 도시된 상세들 및 컴포넌트들의 배열로 그의 응용이 한정되지 않는다. 예를 들어, 일 실시예에서 설명되는 양태들은 다른 실시예들에서 설명되는 양태들과 임의의 방식으로 조합될 수 있다.
또한, 본 발명은 그 일례가 제공된 방법으로서 구현될 수 있다. 방법의 일부로서 수행되는 동작들은 임의의 적절한 방식으로 배열될 수 있다. 따라서, 설명적인 실시예들에서는 순차적 동작들로서 도시되지만, 일부 동작들을 동시에 수행하는 것을 포함할 수 있는, 도시된 것과 다른 순서로 동작들이 수행되는 실시예들이 구성될 수 있다.
청구항들에서 청구항 요소를 수식하기 위해 "제1(first)", "제2(second)", "제3(third)" 등과 같은 순서 용어들을 사용하는 것은 그것만으로는 하나의 청구항 요소의 다른 청구항 요소에 대한 임의의 우선권, 우선 순위 또는 순서, 또는 방법의 동작들이 수행되는 시간 순서를 의미하는 것이 아니라, 소정의 이름을 갖는 하나의 청구항 요소를 동일 이름을 갖는(그러나 순서 용어의 사용을 위해) 다른 요소로부터 구별함으로써 청구항 요소들을 구별하기 위한 표시들로서 사용될 뿐이다.
또한, 본 명세서에서 사용되는 표현 및 용어는 설명의 목적을 위한 것이며, 한정으로 간주되지 않아야 한다. 본 명세서에서 "포함하는(including)" 또는 "포함하는(comprising)"이라는 용어들 및 이들의 변형들의 사용은 그 뒤에 나열된 항목들 및 이들의 균등물들은 물론 추가적인 항목들을 포함하는 것을 의도한다.

Claims (20)

  1. 프로세서, 메모리 및 컴포넌트 치료 서비스부를 포함하는 컴퓨팅 장치에서 수행되는 방법으로서,
    상기 컴퓨팅 장치 상에서 동작하는 상기 컴포넌트 치료 서비스부에 의해, 손상된 파일 세트를 판정하는 단계와,
    상기 컴포넌트 치료 서비스부에 의해, 상기 판정된 손상된 파일 세트에 대응하는 치료 파일 세트를 획득하는 단계 -상기 컴포넌트 치료 서비스부는 또한 상기 손상된 파일 세트를 판정하는 것에 더하여 상기 치료 파일 세트를 검증(validate)하도록 구성되고, 상기 판정하는 것과 상기 검증하는 것은 각각
    상기 판정을 위해 상기 손상된 파일 세트 내에 있는 각각의 파일에 대해, 그리고 상기 검증을 위해 상기 치료 파일 세트 내에 있는 각각의 파일에 대해 상기 각각의 파일의 해시(hash)를 생성하는 것과,
    각각의 생성된 해시를 상기 각각의 파일의 손상되지 않은 버전의 대응하는 암호로 보호되는 해시 키와 비교하는 것
    을 포함함- 와,
    상기 컴포넌트 치료 서비스부에 의해, 상기 획득된 치료 파일 세트에 기초하여, 상기 판정된 손상된 파일 세트에 대응하는 손상된 소프트웨어 컴포넌트를 치료하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 획득된 치료 파일 세트 내의 각각의 치료 파일을 검증하는 단계를 더 포함하는
    방법.
  3. 제1항에 있어서,
    상기 치료 파일 세트를 획득하는 단계는 외부 서버로부터 상기 치료 파일 세트를 획득하는 단계를 포함하는
    방법.
  4. 제1항에 있어서,
    상기 손상된 소프트웨어 컴포넌트를 치료하는 단계는 적어도 부분적으로 상기 판정된 손상된 파일 세트를 상기 획득된 치료 파일 세트의 적어도 일부분으로 대체하는 단계를 포함하는
    방법.
  5. 제1항에 있어서,
    상기 판정하는 단계는 시스템 건강 검사기 컴포넌트로부터 수신된 통지에 의해 트리거되는
    방법.
  6. 제1항에 있어서,
    상기 치료 파일 세트를 획득하는 단계는 상기 컴퓨팅 장치에 로컬인 저장소 또는 네트워크 소스로부터 상기 치료 파일 세트를 획득하는 단계를 포함하는
    방법.
  7. 제1항에 있어서,
    상기 판정하는 단계는 사용자가 수동으로 스캔을 개시하는 것에 의해 트리거되는
    방법.
  8. 액션들을 수행하도록 구성된 적어도 하나의 프로그램 모듈 및 컴퓨팅 장치 -상기 컴퓨팅 장치는 프로세서, 메모리 및 컴포넌트 치료 서비스부를 포함함- 를 포함하는 시스템으로서,
    상기 액션들은
    상기 컴퓨팅 장치 상에서 동작하는 상기 컴포넌트 치료 서비스부에 의해, 손상된 파일 세트를 판정하는 단계와,
    상기 컴포넌트 치료 서비스부에 의해, 상기 판정된 손상된 파일 세트에 대응하는 치료 파일 세트를 획득하는 단계 -상기 컴포넌트 치료 서비스부는 또한 상기 손상된 파일 세트를 판정하는 것에 더하여 상기 치료 파일 세트를 검증하도록 구성되고, 상기 판정하는 것과 상기 검증하는 것은 각각
    상기 판정을 위해 상기 손상된 파일 세트 내에 있는 각각의 파일에 대해, 그리고 상기 검증을 위해 상기 치료 파일 세트 내에 있는 각각의 파일에 대해 상기 각각의 파일의 해시(hash)를 생성하는 것과,
    각각의 생성된 해시를 상기 각각의 파일의 손상되지 않은 버전의 대응하는 암호로 보호되는 해시 키와 비교하는 것
    을 포함함- 와,
    상기 컴포넌트 치료 서비스부에 의해, 상기 획득된 치료 파일 세트에 기초하여, 상기 판정된 손상된 파일 세트에 대응하는 손상된 소프트웨어 컴포넌트를 치료하는 단계
    를 포함하는 시스템.
  9. 제8항에 있어서,
    상기 액션들은 상기 획득된 치료 파일 세트 내의 각각의 치료 파일을 검증하는 단계를 더 포함하는
    시스템.
  10. 제8항에 있어서,
    상기 치료 파일 세트를 획득하는 단계는 외부 서버로부터 상기 치료 파일 세트를 획득하는 단계를 포함하는
    시스템.
  11. 제8항에 있어서,
    상기 판정하는 단계는 시스템 건강 검사기 컴포넌트로부터 수신된 통지에 의해 트리거되는
    시스템.
  12. 제8항에 있어서,
    상기 판정하는 단계는 사용자가 수동으로 스캔을 개시하는 것에 의해 트리거되는
    시스템.
  13. 제8항에 있어서,
    상기 손상된 소프트웨어 컴포넌트를 치료하는 단계는 적어도 부분적으로 상기 판정된 손상된 파일 세트를 상기 획득된 치료 파일 세트의 적어도 일부분으로 대체하는 단계를 포함하는
    시스템.
  14. 제8항에 있어서,
    상기 치료 파일 세트를 획득하는 단계는 상기 컴퓨팅 장치에 로컬인 저장소 또는 네트워크 소스로부터 상기 치료 파일 세트를 획득하는 단계를 포함하는
    시스템.
  15. 프로세서, 메모리 및 컴포넌트 치료 서비스부를 포함하는 컴퓨팅 장치에 의해 실행될 경우에 상기 컴퓨팅 장치로 하여금 액션들을 수행하게 하는 컴퓨터 실행가능 명령어가 저장되어 있는 적어도 하나의 메모리 장치로서,
    상기 액션들은
    상기 컴퓨팅 장치 상에서 동작하는 상기 컴포넌트 치료 서비스부에 의해, 손상된 파일 세트를 판정하는 단계와,
    상기 컴퓨팅 장치의 상기 컴포넌트 치료 서비스부에 의해, 상기 판정된 손상된 파일 세트에 대응하는 치료 파일 세트를 획득하는 단계 -상기 컴포넌트 치료 서비스부는 또한 상기 손상된 파일 세트를 판정하는 것에 더하여 상기 치료 파일 세트를 검증하도록 구성되고, 상기 판정하는 것과 상기 검증하는 것은 각각
    상기 판정을 위해 상기 손상된 파일 세트 내에 있는 각각의 파일에 대해, 그리고 상기 검증을 위해 상기 치료 파일 세트 내에 있는 각각의 파일에 대해 상기 각각의 파일의 해시(hash)를 생성하는 것과,
    각각의 생성된 해시를 상기 각각의 파일의 손상되지 않은 버전의 대응하는 암호로 보호되는 해시 키와 비교하는 것
    을 포함함- 와,
    상기 컴포넌트 치료 서비스부에 의해, 상기 획득된 치료 파일 세트에 기초하여, 상기 판정된 손상된 파일 세트에 대응하는 손상된 소프트웨어 컴포넌트를 치료하는 단계
    를 포함하는 메모리 장치.
  16. 제15항에 있어서,
    상기 손상된 소프트웨어 컴포넌트를 치료하는 단계는 적어도 부분적으로 상기 판정된 손상된 파일 세트를 상기 획득된 치료 파일 세트의 적어도 일부분으로 겹쳐쓰기하는 단계를 포함하는
    메모리 장치.
  17. 제15항에 있어서,
    상기 판정하는 단계는 시스템 건강 검사기 컴포넌트로부터 수신된 통지에 의해 트리거되는
    메모리 장치.
  18. 제15항에 있어서,
    상기 판정하는 단계는 수동으로 스캔을 개시하는 사용자에 의해 트리거되는
    메모리 장치.
  19. 제15항에 있어서,
    상기 액션들은 상기 획득된 치료 파일 세트 내의 각각의 치료 파일을 검증하는 단계를 더 포함하되, 상기 손상된 파일 세트를 판정하는 단계는 페이로드 파일 각각에 대해 해시 함수를 수행하는 단계를 포함하고, 상기 해시 함수를 수행하는 것에 의해 상기 페이로드 파일 각각에 대한 해시 결과가 생성되는
    메모리 장치.
  20. 제15항에 있어서,
    상기 치료 파일 세트를 획득하는 단계는 상기 컴퓨팅 장치에 로컬인 저장소, 네트워크 소스 또는 서버로부터 상기 치료 파일 세트를 획득하는 단계를 포함하는
    메모리 장치.
KR1020137013808A 2010-12-01 2010-12-13 손상된 소프트웨어의 치료 KR101692817B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/958,267 US9158605B2 (en) 2010-12-01 2010-12-01 Method, system and device for validating repair files and repairing corrupt software
US12/958,267 2010-12-01
PCT/US2010/060013 WO2012074535A1 (en) 2010-12-01 2010-12-13 Repairing corrupt software

Publications (2)

Publication Number Publication Date
KR20130122747A KR20130122747A (ko) 2013-11-08
KR101692817B1 true KR101692817B1 (ko) 2017-01-05

Family

ID=46163499

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137013808A KR101692817B1 (ko) 2010-12-01 2010-12-13 손상된 소프트웨어의 치료

Country Status (7)

Country Link
US (2) US9158605B2 (ko)
EP (1) EP2646913B1 (ko)
KR (1) KR101692817B1 (ko)
CN (1) CN102521081B (ko)
AU (1) AU2010364976B2 (ko)
CA (1) CA2816814C (ko)
WO (1) WO2012074535A1 (ko)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9117071B2 (en) 2009-06-03 2015-08-25 Apple Inc. Methods and apparatuses for secure compilation
US8677329B2 (en) * 2009-06-03 2014-03-18 Apple Inc. Methods and apparatuses for a compiler server
US8745095B2 (en) * 2011-08-12 2014-06-03 Nexenta Systems, Inc. Systems and methods for scalable object storage
US9110747B2 (en) 2011-11-22 2015-08-18 1Elimited Obtaining program data over a network
US9183393B2 (en) * 2012-01-12 2015-11-10 Facebook, Inc. Multiple system images for over-the-air updates
US8725702B1 (en) * 2012-03-15 2014-05-13 Symantec Corporation Systems and methods for repairing system files
CN103577215A (zh) * 2012-08-10 2014-02-12 腾讯科技(深圳)有限公司 一种软件卸载安装方法及系统
US11126418B2 (en) * 2012-10-11 2021-09-21 Mcafee, Llc Efficient shared image deployment
CN103778114B (zh) * 2012-10-17 2016-03-09 腾讯科技(深圳)有限公司 文件修复系统和方法
JP6259601B2 (ja) * 2013-07-25 2018-01-10 任天堂株式会社 情報処理装置、情報処理システム、情報処理方法及びコンピュータプログラム
US9639572B2 (en) 2013-09-06 2017-05-02 Sap Se SQL enhancements simplifying database querying
US9430523B2 (en) 2013-09-06 2016-08-30 Sap Se Entity-relationship model extensions using annotations
US9619552B2 (en) 2013-09-06 2017-04-11 Sap Se Core data services extensibility for entity-relationship models
US9361407B2 (en) 2013-09-06 2016-06-07 Sap Se SQL extended with transient fields for calculation expressions in enhanced data models
US9354948B2 (en) * 2013-09-06 2016-05-31 Sap Se Data models containing host language embedded constraints
US9442977B2 (en) 2013-09-06 2016-09-13 Sap Se Database language extended to accommodate entity-relationship models
US9621424B2 (en) * 2013-10-04 2017-04-11 Microsoft Technologies Licensing, LLC Providing a common interface for accessing and presenting component configuration settings
US9483249B2 (en) 2014-01-06 2016-11-01 Apple Inc. On-board applet migration
US9436455B2 (en) * 2014-01-06 2016-09-06 Apple Inc. Logging operating system updates of a secure element of an electronic device
CN104216736A (zh) * 2014-08-14 2014-12-17 小米科技有限责任公司 增量升级方法、装置及终端设备
US9558060B1 (en) * 2014-08-22 2017-01-31 Sprint Communications Company L.P. End use self-help delivery system
US9934014B2 (en) 2014-08-22 2018-04-03 Apple Inc. Automatic purposed-application creation
US10733045B2 (en) * 2016-07-14 2020-08-04 Microsoft Technology Licensing, Llc Online repair of metadata for structured data including file systems
US10528339B2 (en) * 2017-03-20 2020-01-07 International Business Machines Corporation Cognitive feature based code level update
US11636021B2 (en) * 2017-05-09 2023-04-25 Vmware, Inc. Preserving system integrity using file manifests
US10365910B2 (en) * 2017-07-06 2019-07-30 Citrix Systems, Inc. Systems and methods for uninstalling or upgrading software if package cache is removed or corrupted
US10545840B1 (en) * 2017-07-26 2020-01-28 Amazon Technologies, Inc. Crash tolerant computer system
CN108205446A (zh) * 2017-10-24 2018-06-26 中兴通讯股份有限公司 固件修复方法及装置
US11422901B2 (en) * 2017-11-06 2022-08-23 Hewlett-Packard Development Company, L.P. Operating system repairs via recovery agents
CN109144967B (zh) * 2018-08-13 2021-01-12 爱智慧(广州)科技有限公司 一种用于改进分布式计算系统的维护系统及方法
US10846080B2 (en) 2018-09-06 2020-11-24 International Business Machines Corporation Cooperative updating of software
CN109660398A (zh) * 2018-12-21 2019-04-19 深圳创维数字技术有限公司 路由器系统修复方法、终端及存储介质
US11531532B2 (en) * 2019-01-16 2022-12-20 Vmware, Inc. Remote deployment of provisioned packages
US11636778B2 (en) 2019-04-12 2023-04-25 Holberton, Inc. Correction of software coding projects
WO2020209863A1 (en) * 2019-04-12 2020-10-15 Holberton School Correction of software coding projects
CN110188004A (zh) * 2019-05-31 2019-08-30 烽火通信科技股份有限公司 一种终端设备的双备份软件系统管理方法及系统
RU2739832C1 (ru) * 2019-07-17 2020-12-28 Акционерное общество "Лаборатория Касперского" Система и способ выявления измененных системных файлов для проверки на вредоносность в облачном сервисе
RU2757330C1 (ru) * 2020-06-19 2021-10-13 Акционерное общество "Лаборатория Касперского" Способ выявления несогласованного использования ресурсов вычислительного устройства пользователя
CN112286548A (zh) * 2020-10-16 2021-01-29 锐捷网络股份有限公司 一种补丁升级方法、装置、电子设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009238227A (ja) 2008-03-26 2009-10-15 Symantec Corp 失敗した復元動作においてファイルの破損を防ぐためのボリュームスナップショットの使用
US20100031086A1 (en) 2008-07-31 2010-02-04 Andrew Charles Leppard Repair of a corrupt data segment used by a de-duplication engine

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998047259A2 (en) * 1997-03-10 1998-10-22 Fielder Guy L File encryption method and system
US6108420A (en) * 1997-04-10 2000-08-22 Channelware Inc. Method and system for networked installation of uniquely customized, authenticable, and traceable software application
US6233687B1 (en) * 1998-01-21 2001-05-15 Nortel Networks Limited Method and apparatus for providing configuration information in a network
US6694434B1 (en) * 1998-12-23 2004-02-17 Entrust Technologies Limited Method and apparatus for controlling program execution and program distribution
US6430608B1 (en) * 1999-02-09 2002-08-06 Marimba, Inc. Method and apparatus for accepting and rejecting files according to a manifest
US8347086B2 (en) * 2000-12-18 2013-01-01 Citibank, N.A. System and method for automatically detecting and then self-repairing corrupt, modified of non-existent files via a communication medium
US6757837B1 (en) * 1999-10-19 2004-06-29 Tivo, Inc. Method and apparatus for software failure diagnosis and repair
US6338152B1 (en) * 1999-10-28 2002-01-08 General Electric Company Method and system for remotely managing communication of data used for predicting malfunctions in a plurality of machines
US6567826B1 (en) * 2000-06-23 2003-05-20 Microsoft Corporation Method and system for repairing corrupt files and recovering data
US20040236843A1 (en) * 2001-11-15 2004-11-25 Robert Wing Online diagnosing of computer hardware and software
US20020069363A1 (en) * 2000-12-05 2002-06-06 Winburn Michael Lee System and method for data recovery and protection
US7146531B2 (en) * 2000-12-28 2006-12-05 Landesk Software Limited Repairing applications
US20030079216A1 (en) * 2001-10-18 2003-04-24 International Business Machines Corporation Apparatus and method of using a hybrid of fixed media data and network-based data to provide software changes
US7603440B1 (en) * 2001-11-09 2009-10-13 Persystent Technology Corporation System and method for management of end user computing devices
EP1376367A2 (fr) 2002-06-26 2004-01-02 STMicroelectronics S.A. Vérification d'intégrité d'un code logiciel exécuté par un processeur intégré
CN1208719C (zh) 2002-09-27 2005-06-29 联想(北京)有限公司 应用软件自动安装与自动修复的方法
US7047448B2 (en) * 2002-11-21 2006-05-16 Bitfone Corporation Software self-repair toolkit for electronic devices
US7293201B2 (en) * 2003-01-17 2007-11-06 Microsoft Corporation System and method for active diagnosis and self healing of software systems
US7673297B1 (en) 2003-09-03 2010-03-02 The Directv Group, Inc. Automatic software update detection and flexible installer for set-top boxes
US7313792B2 (en) * 2003-09-08 2007-12-25 Microsoft Corporation Method and system for servicing software
EP1533695B1 (en) * 2003-11-19 2013-08-07 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Updating data in a mobile terminal
US7337427B2 (en) 2004-01-08 2008-02-26 International Business Machines Corporation Self-healing cross development environment
US20050166198A1 (en) * 2004-01-22 2005-07-28 Autonomic Software, Inc., A California Corporation Distributed policy driven software delivery
US7523343B2 (en) * 2004-04-30 2009-04-21 Microsoft Corporation Real-time file system repairs
US8887287B2 (en) * 2004-10-27 2014-11-11 Alcatel Lucent Method and apparatus for software integrity protection using timed executable agents
US7716660B2 (en) 2004-12-14 2010-05-11 Microsoft Corporation Method and system for downloading updates
US8607328B1 (en) * 2005-03-04 2013-12-10 David Hodges Methods and systems for automated system support
US20090199064A1 (en) * 2005-05-11 2009-08-06 Board Of Trustees Of Michigan State University Corrupted packet toleration and correction system
US20070050678A1 (en) * 2005-08-25 2007-03-01 Motorola, Inc. Apparatus for self-diagnosis and treatment of critical software flaws
US7546492B2 (en) * 2005-12-22 2009-06-09 Sony Corporation Remotely repairing files by hierarchical and segmented cyclic redundancy checks
US7962798B2 (en) 2006-04-17 2011-06-14 The Trustees Of Columbia University In The City Of New York Methods, systems and media for software self-healing
US7594136B2 (en) * 2006-04-19 2009-09-22 Microsoft Corporation Paging-triggered corrupted file recovery
US7523340B2 (en) * 2006-05-31 2009-04-21 Microsoft Corporation Support self-heal tool
US9104574B2 (en) * 2006-06-05 2015-08-11 Reimage Limited System and method for software application remediation
US7617423B2 (en) * 2006-08-14 2009-11-10 Kyocera Corporation System and method for detecting, reporting, and repairing of software defects for a wireless device
US20080162915A1 (en) * 2006-12-29 2008-07-03 Price Mark H Self-healing computing system
CN101021797A (zh) 2007-04-06 2007-08-22 中兴通讯股份有限公司 一种用于嵌入式系统的软件修复和升级方法
US8140908B2 (en) * 2007-06-22 2012-03-20 Microsoft Corporation System and method of client side analysis for identifying failing RAM after a user mode or kernel mode exception
US9324361B2 (en) * 2007-08-14 2016-04-26 Seagate Technology Llc Protecting stored data from traffic analysis
US7904756B2 (en) * 2007-10-19 2011-03-08 Oracle International Corporation Repair planning engine for data corruptions
US8528075B2 (en) * 2008-11-30 2013-09-03 Red Hat Israel, Ltd. Accelerating the execution of anti-virus programs in a virtual machine environment
US8296605B2 (en) * 2008-12-10 2012-10-23 Sap Ag Systems and methods for correcting software errors
US8225135B2 (en) * 2009-07-07 2012-07-17 Drobo, Inc. System and method for protecting users of data storage systems against known problems
NO2460075T3 (ko) * 2009-07-29 2018-04-21
US8209564B2 (en) * 2010-02-26 2012-06-26 Red Hat, Inc. Systems and methods for initiating software repairs in conjunction with software package updates
US8612398B2 (en) * 2010-03-11 2013-12-17 Microsoft Corporation Clean store for operating system and software recovery

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009238227A (ja) 2008-03-26 2009-10-15 Symantec Corp 失敗した復元動作においてファイルの破損を防ぐためのボリュームスナップショットの使用
US20100031086A1 (en) 2008-07-31 2010-02-04 Andrew Charles Leppard Repair of a corrupt data segment used by a de-duplication engine

Also Published As

Publication number Publication date
US9910743B2 (en) 2018-03-06
US9158605B2 (en) 2015-10-13
AU2010364976A1 (en) 2013-05-30
WO2012074535A1 (en) 2012-06-07
EP2646913A1 (en) 2013-10-09
CN102521081B (zh) 2016-08-03
EP2646913B1 (en) 2020-05-06
CN102521081A (zh) 2012-06-27
US20160004606A1 (en) 2016-01-07
CA2816814C (en) 2020-04-14
EP2646913A4 (en) 2017-11-22
AU2010364976B2 (en) 2016-12-22
US20120144383A1 (en) 2012-06-07
KR20130122747A (ko) 2013-11-08
CA2816814A1 (en) 2012-06-07

Similar Documents

Publication Publication Date Title
KR101692817B1 (ko) 손상된 소프트웨어의 치료
JP6949951B2 (ja) コンピュータアプリケーション内のメモリ破損を修復するためのシステム及び方法
KR101247022B1 (ko) 실행가능 파일의 신뢰를 검증하는 시스템 및 방법
US8612398B2 (en) Clean store for operating system and software recovery
US8745743B2 (en) Anti-virus trusted files database
Doupe et al. deDacota: toward preventing server-side XSS via automatic code and data separation
EP2807598B1 (en) Identifying trojanized applications for mobile environments
JP2021518705A (ja) ブロックチェーン台帳のためのランタイム自己修正
US11907378B2 (en) Automated application vulnerability and risk assessment
KR20060083850A (ko) 부분적인 이미지 해시들을 이용하여 실행가능한 파일무결성을 검증하기 위한 시스템 및 방법
US20140223566A1 (en) System and method for automatic generation of heuristic algorithms for malicious object identification
US9606905B2 (en) Systems, methods, and media for testing software patches
CN103329093A (zh) 更新软件
US20090132999A1 (en) Secure and fault-tolerant system and method for testing a software patch
US20060253760A1 (en) System and methods for processing software authorization and error feedback
RU2510530C1 (ru) Способ автоматического формирования эвристических алгоритмов поиска вредоносных объектов
US10880316B2 (en) Method and system for determining initial execution of an attack
Akcay Android's Performance Anxiety: An In-Depth Analysis of the Stagefright Bugs

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
FPAY Annual fee payment

Payment date: 20191127

Year of fee payment: 4