KR101013509B1 - 가상 응용 프로그램 시스템, 저장장치, 가상 응용 프로그램수행 방법 및 가상 환경 보호 방법 - Google Patents

가상 응용 프로그램 시스템, 저장장치, 가상 응용 프로그램수행 방법 및 가상 환경 보호 방법 Download PDF

Info

Publication number
KR101013509B1
KR101013509B1 KR1020080022462A KR20080022462A KR101013509B1 KR 101013509 B1 KR101013509 B1 KR 101013509B1 KR 1020080022462 A KR1020080022462 A KR 1020080022462A KR 20080022462 A KR20080022462 A KR 20080022462A KR 101013509 B1 KR101013509 B1 KR 101013509B1
Authority
KR
South Korea
Prior art keywords
virtual
application
module
access
virtual application
Prior art date
Application number
KR1020080022462A
Other languages
English (en)
Other versions
KR20090075595A (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 주식회사 마크애니
Priority to PCT/KR2008/007857 priority Critical patent/WO2009088175A2/en
Priority to US12/811,596 priority patent/US20110010756A1/en
Priority to CN2008801259694A priority patent/CN101965553A/zh
Publication of KR20090075595A publication Critical patent/KR20090075595A/ko
Application granted granted Critical
Publication of KR101013509B1 publication Critical patent/KR101013509B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Abstract

가상 응용 프로그램 시스템, 저장장치, 가상 응용 프로그램 수행 방법 및 가상 환경 보호 방법이 개시되어 있다. 가상 응용 프로그램 시스템은 가상 응용 프로그램을 수행시키는 수행 제어 모듈 및 그 수행 제어 모듈에 의하여 로딩되며, 가상 응용 프로그램이 접근하는 가상 환경으로 허용되지 않은 응용 프로그램이 접근하는 것을 차단하는 가상 환경 보호 모듈을 포함한다. 따라서 가상 환경을 호스트 응용 프로그램 등으로부터 보호하고 가상 응용 프로그램을 사용한 작업의 독립성 및 보안성을 보장할 수 있다.
가상 환경, 가상 응용 프로그램, 보안, 가상 머신, 접근

Description

가상 응용 프로그램 시스템, 저장장치, 가상 응용 프로그램 수행 방법 및 가상 환경 보호 방법 {Virtual Application Program System, Storing Device, Method for Executing Virtual Application Program and Method for Protecting Virtual Environment}
본 발명은 가상 응용 프로그램 시스템, 저장장치, 가상 응용 프로그램 수행 방법 및 가상 환경 보호 방법에 관한 것으로서, 가상 응용 프로그램을 수행하기 위한 가상 환경을 보호하고 가상 응용 프로그램을 통한 작업의 독립성 및 보안성을 보장할 수 있는 가상 응용 프로그램 시스템과 그 관련 기술에 관한 것이다.
최근 들어, 디지털 기술의 발달, 초고속 인터넷 서비스의 대중화 등으로 인하여 컴퓨팅 작업 여건이 양호해지면서, 기존에 수작업을 통하여 수행되던 다양한 작업들이 컴퓨팅 작업으로 대체되고 있다. 예를 들어, 업무적인 측면에서 사용자는 워드나 워크시트 등과 같은 툴을 이용하여 자신이 원하는 문서를 다양한 형태로 편집함으로써 시간 및 업무 효율의 향상을 가져올 수 있다.
통상, 사용자는 원하는 컴퓨팅 작업을 수행하기 위하여 호스트 컴퓨터에 응용프로그램을 설치한 뒤 응용 프로그램을 수행시켜 해당 응용 프로그램에 의하여 제공되는 각종 기능들을 사용하여 디지털 정보를 작성할 수 있다. 이때 응용 프로그램은 호스트 컴퓨터에 구비된 호스트 자원을 사용하게 된다. 예를 들면 응용 프로그램은 데이터를 리드(Read)하거나 라이트(Write)하는 작업을 수행하기 위하여 호스트의 파일 시스템(File System)과 레지스트리(Registry)로 접근할 수 있다.
그런데, 이러한 종래의 경우 작업의 이동성을 지원할 수 없는 문제점이 있다. 예를 들어, 사용자가 호스트 컴퓨터에서 특정 응용 프로그램을 사용하여 작업을 수행하다가 중단한 뒤, 그 작업 데이터를 가지고 다른 호스트 컴퓨터에서 작업을 계속하려면 해당 호스트 컴퓨터에는 상기 작업을 지원할 수 있는 응용 프로그램이 설치되어 있어야 한다. 만약 상기 작업을 지원할 수 있는 응용 프로그램이 존재하지 않는다면, 사용자는 설치 시디나 파일을 입수하여 해당 응용 프로그램을 설치하여 사용하여야 한다.
따라서 이러한 문제를 개선할 수 있도록 현재 다양한 기술들이 연구되고 있는데, 그 연구의 산물로서 대표적인 것 중의 하나가 바로 가상 응용 프로그램 생성 기술이다. 가상 응용 프로그램 생성 기술은 응용 프로그램을 가상화하여 패키징함으로써, 단일화된 포터블 프로그램(Portable Program)을 생성하는 기술을 의미한다. 즉 응용 프로그램을 포터블화하는 것이다. 현재 시판되어 있는 가상 응용 프로그램 생성 툴로는 Thinstall, Autolt Macro Script, Auto Batch File 등이 있다.
그런데, 상술한 종래 기술들은 가상 응용 프로그램 생성 시 프리스캔, 포스 트스캔을 이용한 이미지 비교 알고리즘을 통하여 패키징을 수행하기 때문에, 패키징 시에 정확성이 떨어지고 에러 발생률이 높은 문제가 있다. 즉, 사용자가 원하는 응용 프로그램과 그 관련 오브젝트만을 가진 완전한 소프트웨어를 생성하지 못하는 것이다. 또한 가상 응용 프로그램을 생성하기 위하여 너무 많은 절차를 거쳐야 하며 그 과정도 복잡하다.
뿐만 아니라, 상기 종래 기술들은 가상 응용 프로그램을 이용한 작업 시에 보안이 취약한 단점이 있으며, 작업 후에도 호스트 컴퓨터에 그 작업 흔적이 잔존하는 문제점들이 존재한다. 예를 들어, 종래의 경우 가상 응용 프로그램에 의하여 사용되는 호스트 자원, 예컨대 파일 시스템이나 레지스트리를 타 응용 프로그램이 손쉽게 접근할 수 있고, 작업 후에도 파일 시스템이나 레지스트리 등에 작업 흔적이 존재할 수도 있다.
이와 같이, 상술한 종래 기술은 가상 응용 프로그램의 독립성과 보안성을 충분히 만족시키지 못하는 문제점을 내포하고 있다. 따라서 이를 해결할 수 있는 가상화 및 가상 응용 프로그램 관련 기술이 시급히 요구되고 있는 실정이다.
본 발명이 해결하고자 하는 기술적 과제는 가상 응용 프로그램이 수행되는 가상 환경으로 허용되지 않은 응용 프로그램, 예컨대 호스트 응용 프로그램 등이 접근하는 것을 차단함으로써 보안성을 보장할 수 있는 가상 응용 프로그램 시스템을 제공하는데 있다.
본 발명이 해결하고자 하는 다른 기술적 과제는 호스트 환경과 격리된 가상 환경에서 가상 응용 프로그램을 설치 및 수행할 수 있는 가상 응용 프로그램 시스템을 제공하는데 있다.
본 발명이 해결하고자 하는 또 다른 기술적 과제는 호스트와 연동하면서도 독립성과 보안성이 보장되는 가상 응용 프로그램을 수행할 수 있는 휴대 가능한 저장 장치를 제공하는데 있다.
본 발명이 해결하고자 하는 또 다른 기술적 과제는 가상 응용 프로그램을 독립적이고 보안성 높은 환경에서 수행시킬 수 있는 가상 응용 프로그램 수행 방법을 제공하는데 있다.
본 발명이 해결하고자 하는 또 다른 기술적 과제는 가상 응용 프로그램을 수행하기 위한 가상 환경을 외부로부터 보호할 수 있는 가상 환경 보호 방법을 제공하는데 있다.
이러한 기술적 과제를 해결하기 위하여 본 발명은 일 측면(Aspect)에서 가상 응용 프로그램 시스템을 제공한다. 상기 가상 응용 프로그램 시스템은, 가상 응용 프로그램을 수행시키는 수행 제어 모듈; 및 상기 수행 제어 모듈에 의하여 로딩되며, 상기 가상 응용 프로그램이 접근하는 가상 환경으로 허용되지 않은 응용 프로그램이 접근하는 것을 차단하는 가상 환경 보호 모듈을 포함한다.
상기 가상 환경 보호 모듈은 상기 가상 환경으로의 접근이 허용되는 응용 프로그램의 고유 식별 정보를 테이블에 저장하고, 어떤 응용 프로그램이 상기 가상 환경으로 접근하고자 할 경우 상기 어떤 응용 프로그램의 고유 식별 정보가 상기 테이블에 존재하는지를 판단할 수 있다.
이때, 상기 고유 식별 정보는 해당 응용 프로그램으로부터 생성되는 프로세스 식별자(ID), 메시지 다이제스트 등일 수 있다. 상기 고유 식별 정보가 프로세스 식별자일 경우, 상기 가상 환경 보호 모듈은 상기 가상 환경으로의 접근이 허용되는 응용 프로그램으로부터 생성되는 프로세스의 프로세스 식별자를 프로세스 식별자 테이블에 저장하고, 어떤 응용 프로그램으로부터 생성된 프로세스가 상기 가상 환경으로 접근하고자 경우, 그 프로세스의 프로세스 식별자가 상기 프로세스 식별자 테이블에 존재하는지를 판단할 수 있다.
상기 가상 환경 보호 모듈은 상기 어떤 응용 프로그램의 고유 식별자가 상기 테이블에 존재할 경우 상기 가상 환경으로의 접근을 허용하고 존재하지 않을 경우 상기 가상 환경으로의 접근을 허용할 수 있다. 또한, 상기 가상 환경 보호 모듈은 상기 가상 환경으로의 접근이 허용되는 응용 프로그램의 고유 식별 정보를 상기 수 행 제어 모듈 또는 상기 가상 응용 프로그램으로부터 전달받을 수도 있다.
상기 가상 환경으로의 접근이 허용되는 응용 프로그램은 상기 가상 응용 프로그램, 상기 수행 제어 모듈 등일 수 있다.
상기 가상 환경 보호 모듈은, 상기 가상 응용 프로그램이 접근하는 가상 파일 시스템으로 상기 허용되지 않은 응용 프로그램이 접근하는 것을 차단하는 가상 파일 시스템 보호 모듈; 및 상기 가상 응용 프로그램이 접근하는 가상 레지스트리로 상기 허용되지 않은 응용 프로그램이 접근하는 것을 차단하는 가상 레지스트리 보호 모듈을 포함할 수 있다.
한편, 상기 가상 응용 프로그램 시스템은 상기 가상 응용 프로그램이 사용하는 메모리 영역으로 허용되지 않은 응용 프로그램이 접근하는 것을 차단하는 가상 응용 프로그램 메모리 보호 모듈을 더 포함할 수도 있다. 상기 가상 환경 보호 모듈 및 상기 가상 응용 프로그램 메모리 보호 모듈은 커널 모드에서 동작하는 드라이버의 형태로 구성될 수 있다.
상기 가상 응용 프로그램 메모리 보호 모듈은 상기 가상 응용 프로그램이 사용하는 메모리 영역으로의 접근이 허용되는 응용 프로그램의 고유 식별 정보를 테이블에 저장하고, 어떤 응용 프로그램이 상기 메모리 영역으로 접근하고자 할 경우 상기 어떤 응용 프로그램의 고유 식별 정보가 상기 테이블에 존재하는지를 판단할 수 있다. 또한, 상기 가상 응용 프로그램 메모리 보호 모듈은 응용 프로그램이 물리 메모리로 접근하는 것을 차단할 수도 있다.
상기 가상 응용 프로그램 시스템은, 운영체제의 API(Application Program Interface)를 상기 가상 환경에 부합되도록 처리하는 가상화 모듈; 및 상기 가상화 모듈을 이용하여 지정된 설치 장소에 상기 가상 환경을 구성하고, 상기 가상 응용 프로그램을 설치하는 가상 응용 프로그램 설치 모듈을 더 포함할 수도 있다.
상기 가상화 모듈은, 상기 가상 응용 프로그램에서 파일 시스템으로의 접근 API를 호출하면, 상기 파일 시스템으로의 접근 경로를 가상 파일 시스템으로의 접근 경로로 변환하는 파일 시스템 가상화 모듈; 및 상기 가상 응용 프로그램에서 레지스트리로의 접근 API를 호출하면, 상기 레지스트리로의 접근 경로를 가상 레지스트리로의 접근 경로로 변환하는 레지스트리 가상화 모듈을 포함할 수 있다.
상기 가상 응용 프로그램 설치 모듈은 상기 가상 응용 프로그램을 설치하기 위한 설치 프로세스에 상기 가상화 모듈을 주입할 수 있다. 또한 상기 수행 제어 모듈은 상기 가상 응용 프로그램의 수행 프로세스에 상기 가상화 모듈을 주입할 수 있다.
한편, 상술한 본 발명의 다른 기술적 과제를 해결하기 위하여 본 발명은 다른 측면에서 가상 응용 프로그램 시스템을 제공한다. 상기 가상 응용 프로그램 시스템은, 프로세스에서 호스트 환경으로의 접근 API를 호출하면 상기 호스트 환경으로의 접근 경로를 가상 환경으로의 접근 경로로 변환할 수 있는 가상화 모듈과; 지정된 장소에 상기 가상 환경을 구성하고, 상기 가상화 모듈을 이용하여 가상 응용 프로그램을 설치하는 가상 응용 프로그램 설치 모듈; 및 상기 가상화 모듈을 이용하여 상기 가상 응용 프로그램을 상기 호스트 환경과 격리되는 독립적인 상기 가상 환경에서 수행시키는 수행 제어 모듈을 포함할 수 있다.
상기 가상 응용 프로그램 설치 모듈은 사용자로부터 설치 장소 및 가상화할 응용 프로그램의 설치 파일의 위치 정보를 입력받고, 상기 가상화할 응용 프로그램의 설치 프로세스에 상기 가상화 모듈을 주입하여 상기 설치 장소에 상기 가상 응용 프로그램을 설치할 수 있다. 또한, 상기 수행 제어 모듈은 상기 가상 응용 프로그램의 수행 프로세스에 상기 가상화 모듈을 주입할 수 있다.
상기 가상 응용 프로그램 시스템은 상기 가상 응용 프로그램이 접근하는 상기 가상 환경으로 허용되지 않은 응용 프로그램이 접근하는 것을 차단하는 가상 환경 보호 모듈을 더 포함할 수도 있다.
상기 가상 환경은 가상 파일 시스템 및 가상 레지스트리를 포함할 수 있다. 이 경우 상기 가상 환경 보호 모듈은, 상기 가상 파일 시스템으로 상기 허용되지 않은 응용 프로그램이 접근하는 것을 차단하는 가상 파일 시스템 보호 모듈; 및 상기 가상 레지스트리로 상기 허용되지 않은 응용 프로그램이 접근하는 것을 차단하는 가상 레지스트리 보호 모듈을 포함할 수 있다.
한편, 상술한 본 발명의 또 다른 기술적 과제를 해결하기 위하여 본 발명은 또 다른 측면에서 저장장치를 제공한다. 상기 저장장치는, 호스트 시스템과 연동하는 휴대 가능한 저장장치에 있어서, 상기 호스트 시스템의 호스트 환경과 격리되는 가상 환경과; 상기 가상 환경에 접근하는 가상 응용 프로그램; 및 상기 가상 응용 프로그램을 상기 가상 환경에서 수행시키며, 허용되지 않은 응용 프로그램이 상기 가상 환경으로 접근하는 것을 차단하는 가상 응용 프로그램 시스템을 포함할 수 있다.
한편, 상술한 본 발명의 또 다른 기술적 과제를 해결하기 위하여 본 발명으 또 다른 측면에서 가상 응용 프로그램 수행 방법을 제공한다. 상기 가상 응용 프로그램 수행 방법은, 가상 환경을 보호하기 위한 보호 모듈을 로딩하는 단계와; 상기 가상 환경으로 접근 가능한 가상 응용 프로그램의 고유 식별 정보를 상기 보호 모듈로 전달하는 단계; 및 상기 가상 응용 프로그램을 수행하는 단계를 포함할 수 있다.
상기 보호 모듈은, 상기 가상 응용 프로그램이 접근하는 가상 파일 시스템으로 허용되지 않은 응용 프로그램이 접근하는 것을 차단하는 가상 파일 시스템 보호 모듈과; 상기 가상 응용 프로그램이 접근하는 가상 레지스트리로 허용되지 않은 응용 프로그램이 접근하는 것을 차단하는 가상 레지스트리 보호 모듈; 및 상기 가상 응용 프로그램이 사용하는 메모리 영역으로 허용되지 않은 응용 프로그램이 접근하는 것을 차단하거나, 응용 프로그램이 물리 메모리로 접근하는 것을 차단하는 가상 응용 프로그램 메모리 보호 모듈 중 적어도 어느 하나를 포함할 수 있다.
한편, 상술한 본 발명의 또 다른 기술적 과제를 해결하기 위하여 본 발명은 또 다른 측면에서 가상 환경 보호 방법을 제공한다. 상기 가상 환경 보호 방법은, 가상 환경으로 접근 가능한 가상 응용 프로그램의 고유 식별 정보를 테이블로 저장하는 단계와; 상기 가상 환경으로 응용 프로그램이 접근을 시도하면, 상기 응용 프로그램의 고유 식별 정보가 상기 테이블에 존재하는지를 조회하는 단계; 및 상기 조회에서 상기 응용 프로그램의 고유 식별 정보가 상기 테이블에 존재하지 않을 경우 상기 가상 환경으로의 접근을 차단하고, 존재할 경우 상기 가상 환경으로의 접 근을 허용하는 단계를 포함할 수 있다. 상기 고유 식별 정보는 해당 응용 프로그램으로부터 생성되는 프로세스 식별자, 메시지 다이제스트 등일 수 있다.
이상 설명한 바와 같이, 본 발명에 따르면 호스트 환경과는 격리된 가상 환경에서 가상 응용 프로그램을 설치하고 수행할 수 있으며, 가상 응용 프로그램이 수행되는 가상 환경을 허용되지 않은 접근으로부터 보호할 수 있다. 따라서 높은 독립성 및 보안성이 요구되는 디지털 작업의 수행 시에 가상 응용 프로그램을 용이하게 활용할 수 있다.
이하, 본 발명이 속하는 분야에 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있도록 본 발명의 바람직한 실시예를 첨부된 도면을 참조하여 상세히 설명한다. 이하에 설명할 본 발명의 바람직한 실시예에서는 내용의 명료성을 위하여 특정한 기술 용어를 사용한다. 하지만 본 발명은 그 선택된 특정 용어에 한정되지는 않으며, 각각의 특정 용어가 유사한 목적을 달성하기 위하여 유사한 방식으로 동작하는 모든 기술 동의어를 포함함을 미리 밝혀둔다.
도 1은 본 발명의 바람직한 실시예에 따른 가상 응용 프로그램 시스템의 구성을 도시하는 블록도이다.
도 1에 도시된 바와 같이, 가상 응용 프로그램 시스템(100)은 가상 응용 프 로그램 설치 모듈(10), 가상화 모듈(20), 가상 환경 보호 모듈(30), 가상 응용 프로그램 메모리 보호 모듈(40) 및 수행 제어 모듈(50)을 포함할 수 있다.
가상 응용 프로그램 설치 모듈(10)은 지정된 설치 장소에 가상 환경을 구성하고 응용 프로그램을 가상화하여 설치하는 기능을 수행한다. 예를 들어, 가상 응용 프로그램 설치 모듈(10)은 사용자로부터 가상 응용 프로그램을 설치할 설치 장소 정보 및 가상화할 응용 프로그램의 설치 파일의 위치 정보를 입력받은 뒤, 그 응용 프로그램의 설치 프로세스에 가상화 모듈(20)을 주입하여 해당 설치 장소에 상기 응용 프로그램을 가상화하여 설치할 수 있다.
상기 설치 장소는 USB 메모리 카드, CD 등과 같은 이동식 외장형 저장장치일 수도 있고, 호스트 컴퓨터의 저장 공간 예컨대 하드 디스크 등일 수도 있고, 통신망을 통하여 연동되는 원격지 컴퓨터의 저장 공간일 수도 있다. 가상 응용 프로그램 설치 모듈(10)은 이러한 설치 장소에 가상 환경, 예컨대 가상 파일 시스템 및 가상 레지스트리를 구성하고 가상 응용 프로그램을 설치할 수 있다. 설치된 가상 응용 프로그램은 가상 환경 내에서 독립적으로 수행된다. 이때 가상 환경은 외부(예컨대 호스트 응용 프로그램, 타 컴퓨터의 응용 프로그램 등)로부터의 접근이 차단되기 때문에 보안성이 확보된다.
가상화 모듈(20)은 가상 응용 프로그램의 설치 또는 수행을 가상화하는 기능을 수행할 수 있다. 상기 가상화 모듈(20)은 운영체제의 네이티브 API(Application Program Interface)를 가상 환경으로 리다이렉션(Redirection)할 수 있는 다수 개의 기능 모듈(예컨대 함수 등)을 구비하는 다이내믹 랭킹 라이브러리를 포함할 수 있다. 예를 들어, 가상화 모듈(20)은 윈도우 라이브러리 파일인 "nt.dll"에 대응하는 다이내믹 랭킹 라이브러리 파일인 "Vm.dll" 등으로 표현될 수도 있다.
이러한 가상화 모듈(20)은 가상 응용 프로그램 설치 모듈(10) 또는 수행 제어 모듈(50)에 의하여 가상 응용 프로그램의 설치 프로세스 또는 수행 프로세스에 주입되어, 프로세스에서 호스트 환경, 예컨대 파일 시스템 또는 레지스트리로의 접근 API를 호출하면 그 접근 경로를 가상 환경, 예컨대 가상 파일 시스템 또는 가상 레지스트리로 변환하여 해당 프로세스를 가상 환경에서 수행되게 할 수 있다. 예를 들어, 가상 응용 프로그램의 설치 또는 수행 시에 윈도우의 네이티브 라이브러리인 "ntdll.dll"의 특정 NTDLL 함수, 즉 윈도우 네이티브 API가 호출되면, 호출된 윈도우 네이티브 API가 가상 환경에서 해당 기능을 실행할 수 있도록 가상화 처리를 수행할 수 있다.
상기 가상화 모듈(20)은 파일 시스템 가상화 모듈(22) 및 레지스트리 가상화 모듈(24)을 포함할 수 있다. 상기 파일 시스템 가상화 모듈(22) 및 레지스트리 가상화 모듈(24)은 다수의 기능 모듈로 구성된 라이브러리 파일을 의미할 수 있다. 이러한 파일 시스템 가상화 모듈(22) 및 레지스트리 가상화 모듈(24)은 유저 모드(User Mode)에서 구동할 수 있다.
파일 시스템 가상화 모듈(22)은 가상 응용 프로그램에서 파일 시스템으로의 접근 API를 호출하면, 이 호출이 사용한 접근 경로를 가상 파일 시스템(예컨대 가상 환경에 정의된 디렉토리 환경)의 경로로 변경하여 해당 API를 호출할 수 있다. 이러한 파일 시스템 가상화 모듈(22)은 커널의 파일 시스템을 가상 응용 프로그램 만 접근할 수 있는 가상 파일 시스템과 호스트의 응용 프로그램이 접근할 수 있는 호스트 파일 시스템으로 분리할 수 있다.
레지스트리 가상화 모듈(24)은 가상 응용 프로그램에서 레지스트리로의 접근 API를 호출하면, 이 호출이 사용한 접근 경로를 가상 레지스트리의 경로로 변경하여 해당 API를 호출할 수 있다. 이러한 레지스트리 가상화 모듈(24)은 커널의 레지스트리를 가상 응용 프로그램만 접근할 수 있는 가상 레지스트리와 호스트의 응용 프로그램도 접근 가능한 호스트 레지스트리로 분리할 수 있다.
가상 환경 보호 모듈(30)은 가상 환경에 허용되지 않은 응용 프로그램, 예컨대 호스트 응용 프로그램 등이 접근하는 것을 차단하는 기능을 수행한다. 예를 들어, 가상 환경 보호 모듈(30)은 가상 파일 시스템이나 가상 레지스트리에 가상 응용 프로그램 또는 수행 제어 모듈(50)이 아닌 응용 프로그램이 접근하는 것을 차단하는 기능을 수행할 수 있다.
이러한 가상 환경 보호 모듈(30)은 가상 파일 시스템 보호 모듈(32) 및 가상 레지스트리 보호 모듈(34)을 포함할 수 있다. 상기 가상 파일 시스템 보호 모듈(32) 및 가상 레지스트리 보호 모듈(34)은 커널 모드(Kernel Mode)에서 드라이버(예컨대, 미니 필터)의 형태로 구현될 수 있다.
가상 파일 시스템 보호 모듈(32)은 가상 파일 시스템으로 접근 가능한 허용된 응용 프로그램(예컨대, 가상 응용 프로그램, 수행 제어 모듈(50) 등)이 아닌 응용 프로그램, 예컨대 호스트 응용 프로그램 등이 가상 파일 시스템으로 접근하는 것을 차단하는 기능을 수행한다. 예를 들어, 가상 파일 시스템 보호 모듈(32)은 가 상 파일 시스템의 경로 정보 및 해당 경로로 접근 가능한 응용 프로그램(예컨대, 가상 응용 프로그램, 수행 제어 모듈(50) 등)의 고유 식별 정보를 특정 개체, 예컨대 수행 제어 모듈(50) 또는 가상 응용 프로그램으로부터 제공받고, 어떤 응용 프로그램이 가상 파일 시스템 내의 파일로 접근을 시도하면 해당 응용 프로그램의 고유 식별 정보를 분석하여 접근 가능한 응용 프로그램이 아닐 경우 해당 파일로의 접근을 차단할 수 있다.
가상 레지스트리 보호 모듈(34)은 가상 레지스트리로 접근 가능한 응용 프로그램이 아닌 허용되지 않은 응용 프로그램, 예컨대 호스트 응용 프로그램 등이 가상 레지스트리로 접근하는 것을 차단하는 기능을 수행한다. 예를 들어, 가상 레지스트리 보호 모듈(34)은 가상 레지스트리의 경로 정보 및 해당 경로로 접근 가능한 응용 프로그램(예컨대 가상 응용 프로그램, 수행 제어 모듈(50) 등)의 고유 식별 정보를 수행 제어 모듈(50) 또는 가상 응용 프로그램으로부터 제공받고, 어떤 응용 프로그램이 가상 레지스트리 내의 키(Key)로 접근을 시도하면, 해당 응용 프로그램의 고유 식별 정보를 분석하여 접근 가능한 응용 프로그램이 아닐 경우 해당 키로의 접근을 차단할 수 있다.
가상 응용 프로그램 메모리 보호 모듈(40)은 허용된 응용 프로그램(예컨대 가상 응용 프로그램, 수행 제어 모듈(50) 등)이 아닌 응용 프로그램, 예컨대 호스트 응용 프로그램이 가상 응용 프로그램이 사용하는 메모리 영역으로 접근하는 것을 차단하는 기능을 수행한다. 예를 들어, 가상 응용 프로그램 메모리 보호 모듈(40)은 가상 응용 프로그램이 사용하는 메모리 영역으로 접근 가능한 응용 프로 그램의 고유 식별 정보를 수행 제어 모듈(50) 또는 가상 응용 프로그램으로부터 제공받고, 어떤 응용 프로그램이 상기 메모리 영역으로 접근을 시도하면, 해당 응용 프로그램의 고유 식별 정보를 분석하여 접근 가능한 응용 프로그램이 아닐 경우 상기 메모리 영역으로의 접근을 차단할 수 있다. 이때 메모리 영역이란 논리 메모리를 의미할 수 있다. 즉, 가상 응용 프로그램 메모리 보호 모듈(40)은 가상 응용 프로그램이 사용하는 논리 메모리 영역을 보호하는 기능을 수행할 수 있다.
또한, 가상 응용 프로그램 메모리 보호 모듈(40)은 응용 프로그램에 의한 물리 메모리로의 접근은 차단한다. 이는 특정 응용 프로그램이 물리 메모리로 직접 접근하여 정보를 유출하는 동작, 예컨대 해킹 등을 방지하기 위함이다. 이러한 가상 응용 프로그램 메모리 보호 모듈(40)은 커널 모드에서 드라이버(예컨대, 미니 필터)의 형태로 구현될 수 있다.
수행 제어 모듈(50)은 가상 환경 보호 모듈(30), 가상 응용 프로그램 메모리 보호 모듈(40) 등을 동작시키고 가상 응용 프로그램을 수행시키는 기능을 수행한다. 예를 들어, 수행 제어 모듈(50)은 가상 환경 보호 모듈(30) 및 가상 응용 프로그램 메모리 보호 모듈(40)을 커널 모드 단으로 로딩하고 동작에 필요한 정보들을 제공할 수 있다. 또한 수행 제어 모듈(50)은 가상 응용 프로그램을 수행시키고 해당 가상 응용 프로그램의 수행 시에는 프로세스에 가상화 모듈(20)을 주입하여 해당 프로세스가 가상 환경, 예컨대 가상 파일 시스템 및 가상 레지스트리에서 수행되도록 할 수 있다.
이러한 수행 제어 모듈(50)은 자신도 하나의 응용 프로그램으로 존재하여 가 상 응응 프로그램의 수행에 필요한 부가 기능들, 예컨대 사용자가 가상 응용 프로그램을 용이하게 수행시킬 수 있도록 하기 위한 사용자 인터페이스 기능 등을 제공할 수도 있다. 예를 들어, 수행 제어 모듈(50)은 설치된 가상 응용 프로그램의 목록을 제공하고, 해당 목록에서 사용자가 원하는 가상 응용 프로그램을 선택할 수 있도록 할 수 있다.
이상, 가상 응용 프로그램 시스템(100)의 모듈 구성을 개략적으로 살펴보았다.
이하에서는 이러한 가상 응용 프로그램 시스템(100)의 각 모듈의 동작 및 그 구현 예를 상세히 설명하기로 한다.
먼저, 가상 응용 프로그램 설치 모듈(10)은 실행 파일(예컨대 *.exe)의 형태를 갖는 응용 프로그램일 수 있다. 이러한 가상 응용 프로그램 설치 모듈(10)은 수행 아이콘을 형성하며 해당 아이콘을 사용자가 클릭하면 동작을 수행할 수 있다. 이 경우 가상 응용 프로그램 설치 모듈(10)은 가상 응용 프로그램 시스템(100)을 설치하는 기능을 수행할 수도 있다. 예컨대 가상화 모듈(20), 가상 환경 보호 모듈(30), 가상 응용 프로그램 메모리 보호 모듈(40), 수행 제어 모듈(50) 등은 하나의 압축 파일 형태로 구성되며, 가상 응용 프로그램 설치 모듈(10)은 특정 위치(미리 정해지거나 또는 사용자에 의해 선택될 수도 있음)에서 상기 압축 파일을 해제하여 가상 응용 프로그램 시스템(100)을 설치할 수 있다.
한편, 가상 응용 프로그램 설치 모듈(10)은 수행 제어 모듈(50)의 한 기능으 로서 구현될 수도 있다. 예를 들어, 수행 제어 모듈(50)에 의해 제공되는 메뉴에 가상 응용 프로그램 설치 모듈(10)을 수행할 수 있는 항목이 포함되고, 사용자가 해당 항목을 선택하면 동작을 수행할 수도 있다. 이와 같이 가상 응용 프로그램 설치 모듈(10)은 실시 환경에 따라 다양한 형태로 구성 가능하다. 본 설명에서는 상술한 전자의 경우(가상 응용 프로그램 설치 모듈(10)이 독자적인 응용 프로그램으로 존재하는 경우)를 예를 들기로 한다. 그러나 이는 한정된 사항은 아님은 물론이다.
도 2는 이러한 가상 응용 프로그램 설치 모듈(10)의 동작을 설명하기 위한 흐름도이다.
도 2를 참조하면, 먼저 가상 응용 프로그램 설치 모듈(10)은 사용자로부터 가상 응용 프로그램을 설치할 설치 장소 정보를 입력받는다(단계:S1). 이때 설치 장소란 가상 환경이 구성될 장소를 의미할 수 있다. 예를 들어, 가상 응용 프로그램 설치 모듈(10)은 사용자에게 디렉토리 선택창을 제공하고, 사용자가 상기 디렉토리 선택창을 통하여 원하는 디렉토리(즉, 가상 응용 프로그램의 루트 디렉토리)를 설치 위치로 선택하면 해당 디렉토리의 정보를 저장할 수 있다. 상기 설치 장소는 USB 메모리 카드, CD 등과 같은 휴대 가능한 외장형 저장장치, 호스트 컴퓨터의 저장 공간, 원격지 컴퓨터의 저장 공간 등일 수 있다.
또한, 가상 응용 프로그램 설치 모듈(10)은 사용자로부터 가상화할 응용 프로그램의 설치 파일의 위치 정보를 입력받는다(단계:S2). 이때 위치 정보는 호스트 컴퓨터 등에 존재하는 응용 프로그램 셋업(Set Up) 파일의 위치 정보, 즉 셋업 파 일로 접근할 수 있는 경로 정보를 의미할 수 있다. 예를 들어, 가상 응용 프로그램 설치 모듈(10)은 사용자에게 파일 선택창을 제공하고, 그 파일 선택차을 통하여 사용자가 원하는 응용 프로그램의 셋업 파일을 선택하면 해당 셋업 파일의 위치 정보를 저장할 수 있다.
이어서, 가상 응용 프로그램 설치 모듈(10)은 상기 가상화할 응용 프로그램의 설치 프로세스에 가상화 모듈(20)을 주입한 뒤(단계:S3), 응용 프로그램의 설치 프로세스를 수행시킨다(단계:S4). 그러면 수행된 응용 프로그램의 설치 프로세스에서 파일 시스템이나 레지스트리 접근 API를 호출할 경우, 가상화 모듈(20)은 해당 접근을 가상 경로로 리다이렉션하고 API는 가상 파일 시스템 및 가상 레지스트리로 접근하여 기능을 수행하게 된다. 따라서 설치 장소에는 가상화된 응용 프로그램 즉, 가상 응용 프로그램이 설치되게 된다(단계:S5).
이와 같이 설치된 가상 응용 프로그램은 수행 제어 모듈(50)에 의하여 수행될 수 있다. 수행 제어 모듈(50)은 실행 파일(예컨대, *.exe 등)의 형태로 동작하는 응용 프로그램일 수 있다. 이러한 수행 제어 모듈(50)은 수행 아이콘을 형성할 수 있다. 사용자는 가상 응용 프로그램의 수행을 위하여, 예컨대 수행 제어 모듈(50)의 수행 아이콘을 클릭하는 등의 행위를 통하여 수행 제어 모듈(50)을 수행시킬 수 있다. 반면 수행 제어 모듈(50)은 가상 응용 프로그램의 아이콘을 클릭하는 등의 행위에 따라 동작하는 형태로 구현될 수도 있다. 이렇게 수행 제어 모듈(50)은 실시 환경에 따라 다양한 형태로 구현 가능하다. 본 설명에서는 상술한 전자의 경우(수행 제어 모듈(50)이 응용 프로그램으로 존재하는 경우)를 예를 들기 로 한다. 그러나 이는 한정된 사항은 아님은 물론이다.
도 3은 가상 응용 프로그램 시스템(100)의 수행 제어 모듈(50)의 동작 흐름을 설명하기 위한 흐름도이다.
도 3을 참조하면, 먼저, 수행 제어 모듈(50)은 가상 환경 보호 모듈(30) 및 가상 응용 프로그램 메모리 보호 모듈(40)을 로드한 뒤(단계:S1), 가상 환경 보호 모듈(30)에게 보호 대상인 가상 환경의 경로 정보를 전달한다(단계:S2). 예를 들어, 수행 제어 모듈(50)은 가상 파일 시스템 및 가상 레지스트리 보호 모듈(34)을 로드하고, 가상 파일 시스템의 경로 정보 및 가상 레지스트리의 경로 정보를 각각 전달할 수 있다.
또한, 수행 제어 모듈(50)은 가상 환경 보호 모듈(30)의 가상 파일 시스템 보호 모듈(32)과 가상 레지스트리 보호 모듈(34) 및 가상 응용 프로그램 메모리 보호 모듈(40)로 자신(즉, 수행 제어 모듈(50))의 고유 식별 정보를 전달한다(단계:S13). 이때 고유 식별 정보란 해당 응용 프로그램을 통하여 생성되는 프로세스 식별자(ID), 메시지 다이제스트(Message Digest) 등을 의미할 수 있다. 가상 환경 보호 모듈(30) 및 가상 응용 프로그램 메모리 보호 모듈(40)은 수행 제어 모듈(50)로부터 전달된 고유 식별 정보를 특정 형태, 예컨대 테이블의 형태로 저장 및 관리할 수 있다.
한편, 수행 제어 모듈(50)은 가상 응용 프로그램의 수행에 필요한 사용자 인터페이스 기능을 수행할 수 있다. 예를 들어, 수행 제어 모듈(50)은 가상 응용 프로그램의 구동을 나타내는 아이콘을 생성하여 화면의 특정 위치(예컨대 태스크바 등)에 표시할 수 있으며, 사용자가 그 아이콘을 선택하면 소정 방식으로 메뉴(예컨대 태스크바 팝업 메뉴)를 제공할 수 있다. 상기 메뉴는 설치된 가상 응용 프로그램의 리스트를 포함할 수 있다. 따라서 사용자는 수행 제어 모듈(50)에 의하여 제공되는 메뉴를 통하여 원하는 가상 응용 프로그램을 선택할 수 있다(단계:S14).
사용자가 가상 응용 프로그램을 선택하면, 수행 제어 모듈(50)은 해당 가상 응용 프로그램을 수행시킨다. 먼저, 수행 제어 모듈(50)은 해당 가상 응용 프로그램에 의하여 프로세스가 생성될 때 상기 가상 응용 프로그램의 고유 식별 정보(즉, 해당 응용 프로그램을 통하여 생성되는 프로세스 식별자, 메시지 다이제스트 등)를 가상 환경 보호 모듈(30) 및 가상 응용 프로그램 메모리 보호 모듈(40)로 전달할 수 있다(단계:S15). 상기 가상 응용 프로그램의 고유 식별 정보는 가상 응용 프로그램에서 해당 모듈(30, 40)로 전달할 수도 있다. 또한 수행 제어 모듈(50)은 가상 응용 프로그램의 상기 프로세스에 가상화 모듈(20), 즉 파일 시스템 가상화 모듈(22) 및 레지스트리 가상화 모듈(24)을 주입할 수 있다(단계:S16). 이러한 과정 후 수행 제어 모듈(50)은 상기 프로세스를 수행시킨다(단계:S17). 그러면 가상 응용 프로그램은 가상 환경에서 수행될 수 있다.
이후, 가상 응용 프로그램의 수행이 종료되면, 수행 제어 모듈(50)은 가상 파일 시스템 보호 모듈(32), 가상 레지스트리 보호 모듈(34) 및 가상 응용 프로그램 메모리 보호 모듈(40)을 언로드(Unload)할 수 있다.
한편, 가상 응용 프로그램의 수행 시에 상기 가상 응용 프로그램이 접근하는 가상 파일 시스템과 가상 레지스트리 및 상기 가상 응용 프로그램이 사용하는 메모 리 영역은 가상 파일 시스템 보호 모듈(32), 가상 레지스트리 보호 모듈(34) 및 가상 응용 프로그램 메모리 보호 모듈(40)에 의하여 각각 보호 될 수 있다. 즉, 가상 파일 시스템, 가상 레지스트리 및 가상 응용 프로그램이 사용하는 메모리 영역은 해당 가상 응용 프로그램 및 수행 제어 모듈(50)만 접근이 허용되며, 허용되지 않은 응용 프로그램, 예컨대 호스트 응용 프로그램 등은 그 접근이 차단된다.
도 4 내지 도 5는 가상 응용 프로그램의 수행 시에 가상 응용 프로그램 시스템(100)의 동작을 보여주는 예시도로서, 도 4는 가상 응용 프로그램(3)이 가상 파일 시스템(60), 가상 레지스트리(62) 등으로 접근하는 예를 보여주고 있으며, 도 5는 호스트 응용 프로그램(7)이 가상 파일 시스템(60), 가상 레지스트리(62) 및 가상 응용 프로그램(3)이 사용하는 메모리 영역(64)으로 접근하는 것을 가상 파일 시스템 보호 모듈(32), 가상 레지스트리 보호 모듈(34) 및 가상 응용 프로그램 메모리 보호 모듈(40)이 각각 차단하는 예를 주고 있다.
도 4 내지 도 5에 도시된 바와 같이, 파일 시스템 가상화 모듈(22) 및 레지스트리 가상화 모듈(24)은 사용자 모드(User Mode)에서 동작할 수 있다.
파일 시스템 가상화 모듈(22)은 가상 응용 프로그램(3)에서 파일 시스템 접근 API를 호출하면 이 호출이 사용한 접근 경로를 가상 파일 시스템(60)의 경로로 변환하여 해당 API를 호출한다. 따라서 파일 시스템 가상화 모듈(22)은 가상 응용 프로그램(3)의 프로세스가 가상 파일 시스템(60)으로 접근할 수 있도록 한다. 이러한 파일 시스템 가상화 모듈(22)에 의하여, 파일 시스템은 가상 응용 프로그램(3) 및 수행 제어 모듈(50)만 접근 가능한 가상 파일 시스템(60)과, 호스트 응용 프로 그램(7)이 접근할 수 있는 호스트 파일 시스템(70)으로 분리될 수 있다.
레지스트리 가상화 모듈(24)은 가상 응용 프로그램(3)에서 레지스트리 접근 API를 호출하면 이 호출이 사용한 접근 경로를 가상 레지스트리 경로로 변환하여 해당 API를 호출한다. 따라서 레지스트리 가상화 모듈(24)은 가상 응용 프로그램(3)의 프로세스가 가상 레지스트리로 접근할 수 있도록 한다. 이러한 레지스트리 가상화 모듈(24)에 의하여, 레지스트리는 가상 응용 프로그램(3) 및 수행 제어 모듈(50)만 접근 가능한 가상 레지스트리(62)와, 호스트 응용 프로그램(7)이 접근할 수 있는 호스트 레지스트리(72)로 분리될 수 있다.
한편, 가상 파일 시스템 보호 모듈(32), 가상 레지스트리 보호 모듈(34) 및 가상 응용 프로그램 메모리 보호 모듈(40)은 커널 모드(Kernel Mode)에서 동작할 수 있다. 예를 들어 이들은 커널 모드의 미니 필터 드라이버와 같은 커널 드라이버의 형태로 구현될 수 있다.
상기 가상 파일 시스템 보호 모듈(32)은 가상 파일 시스템(60)으로의 접근이 허용되는 응용 프로그램(예컨대 가상 응용 프로그램(3), 수행 제어 모듈(50) 등)이 아닌 허용되지 않은 응용 프로그램, 예컨대 호스트 응용 프로그램(7) 등이 가상 파일 시스템(60)으로 접근하는 것을 차단함으로써, 가상 파일 시스템(60)을 허용되지 않은 접근으로부터 보호하는 기능을 수행할 수 있다.
도 6은 이러한 가상 파일 시스템 보호 모듈(32)의 동작 흐름을 도시하는 흐름도이다.
도 6에 도시된 바와 같이, 가상 파일 시스템 보호 모듈(32)은 수행 제어 모 듈(50)에 의하여 로딩 된 뒤, 수행 제어 모듈(50)로부터 가상 파일 시스템(60))의 경로 정보를 전달받는다(단계:S21). 또한, 가상 파일 시스템 보호 모듈(32)은 수행 제어 모듈(50) 또는 가상 응용 프로그램(3)로부터 가상 파일 시스템(60)으로의 접근이 허용되는 응용 프로그램, 즉 수행 제어 모듈(50) 및 가상 응용 프로그램(3)의 고유 식별 정보를 전달받는다(단계:S22). 이때 고유 식별 정보란, 앞서도 언급했듯이, 해당 응용 프로그램을 통하여 생성되는 프로세스 식별자(ID), 메시지 다이제스트(Message Digest) 등을 의미할 수 있다. 가상 응용 프로그램(3)의 고유 식별 정보의 경우 수행 제어 모듈(50)이 가상 파일 시스템 보호 모듈(32)로 전달할 수도 있고, 가상 응용 프로그램(3)이 자신이 생성하는 자식 응용 프로그램(예컨대 프로세스 등)을 가상 파일 시스템 보호 모듈(32)로 전달할 수도 있다. 가상 파일 시스템 보호 모듈(32)은 수행 제어 모듈(50) 또는 가상 응용 프로그램(3)로부터 전달받은 수행 제어 모듈(50) 및 가상 응용 프로그램(3)의 고유 식별 정보를 특정 형태, 예컨대 테이블의 형태로 저장한다(단계:S23).
이후, 가상 파일 시스템 보호 모듈(32)은 응용 프로그램이 접근하고자 하는 파일의 경로를 확인하고(단계:S24), 그 파일의 경로가 가상 파일 시스템(60)의 파일 경로인지를 판단한다(단계:S25). 이때 만약 상기 응용 프로그램이 접근하고자 하는 파일 경로가 가상 파일 시스템(60)의 경로가 아니라면 가상 파일 시스템 보호 모듈(32)은 해당 접근을 허용한다(단계:S27). 반면, 상기 응용 프로그램이 접근하고자 하는 파일 경로가 가상 파일 시스템(60)의 파일 경로라면 이는 가상 파일 시스템(60)으로의 접근을 의미하는 것이므로, 가상 파일 시스템 보호 모듈(32)은 상 기 응용 프로그램의 고유 식별 정보가 미리 저장된 테이블(즉, 가상 응용 프로그램, 수행 제어 모듈(50)의 고유 식별 정보를 포함하는 정보)에 존재하는지를 조회하여(단계:S26), 존재하지 않을 경우 상기 접근을 차단하고(단계:S28), 존재할 경우 상기 접근을 허용한다(단계:S27).
이와 같은 가상 파일 시스템 보호 과정(단계:S21~단계:S28)의 일 실시예로서, 상기 고유 식별 정보를 프로세스 ID라 가정하면, 먼저 가상 파일 시스템 보호 모듈(32)은 수행 제어 모듈(50)로부터 가상 파일 시스템(60)의 경로 정보를 제공받고, 가상 응용 프로그램(3) 또는 수행 제어 모듈(50)로부터 가상 응용 프로그램(3) 및 수행 제어 모듈(50)에 의하여 생성되는 프로세스 ID를 제공받아 테이블로 저장한다. 이후, 가상 파일 시스템 보호 모듈(32)은, 어떤 응용 프로그램에 의해 생성된 프로세스가 가상 파일 시스템(60)의 파일 경로로 접근하고자 할 경우, 상기 프로세스의 프로세스 ID가 상기 테이블에 존재하는 프로세스 ID인지를 조회하여, 상기 테이블에 존재하는 프로세스 ID일 경우 파일로의 접근을 허용하고, 존재하지 않는 프로세스 ID일 경우 파일로의 접근을 차단한다. 따라서, 가상 파일 시스템(60)으로의 접근은 가상 응용 프로그램(3)이나 수행 제어 모듈(50)에 의하여 발생된 프로세스만이 허용될 수 있다.
도 7은 가상 응용 프로그램 시스템(100)에 구비되는 가상 레지스트리 보호 모듈(34)의 동작 흐름을 도시하는 흐름도이다.
도 7에 도시된 바와 같이, 가상 레지스트리 보호 모듈(34)은 수행 제어 모듈(50)에 의하여 로딩 된 뒤, 수행 제어 모듈(50)로부터 가상 레지스트리(62)의 경 로 정보를 전달받는다(단계:S31). 또한, 가상 레지스트리 보호 모듈(34)은 수행 제어 모듈(50) 또는 가상 응용 프로그램(3)로부터 가상 레지스트리(62)로의 접근이 허용되는 응용 프로그램, 즉 수행 제어 모듈(50) 및 가상 응용 프로그램(3)의 고유 식별 정보를 전달받는다(단계:S32). 이때 고유 식별 정보는 해당 응용 프로그램을 통하여 생성되는 프로세스 식별자(ID), 메시지 다이제스트(Message Digest) 등을 의미할 수 있다. 가상 응용 프로그램(3)의 고유 식별 정보는 수행 제어 모듈(50)이 가상 레지스트리 보호 모듈(34)로 전달할 수도 있고, 가상 응용 프로그램(3)이 자신이 생성하는 자식 응용 프로그램(예컨대 프로세스 등)을 가상 레지스트리 보호 모듈(34)로 전달할 수도 있다. 가상 레지스트리 보호 모듈(34)은 수행 제어 모듈(50) 또는 가상 응용 프로그램(3)으로부터 전달받은 수행 제어 모듈(50) 및 가상 응용 프로그램(3)의 고유 식별 정보를 예컨대 테이블의 형태로 저장할 수 있다(단계:S33).
이후, 가상 레지스트리 보호 모듈(34)은 응용 프로그램이 접근하고자 하는 키의 경로를 확인하고(단계:S34), 그 키의 경로가 가상 레지스트리(62)의 키 경로인지를 판단한다(단계:S35). 이때 만약 상기 응용 프로그램이 접근하고자 하는 키 경로가 가상 레지스트리(62)의 키 경로가 아니라면 가상 레지스트리 보호 모듈(34)은 해당 접근을 허용한다(단계:S37). 반면, 상기 응용 프로그램이 접근고자 하는 키 경로가 가상 레지스트리(35)의 키 경로라면 이는 곧 가상 레지스트리(35)로의 접근을 의미하는 것이므로, 가상 레지스트리 보호 모듈(34)은 상기 응용 프로그램의 고유 식별 정보가 미리 저장된 테이블(즉, 가상 응용 프로그램(3), 수행 제어 모듈(50)의 고유 식별 정보를 포함하는 정보)에 존재하는지를 조회하여(단계:S36), 존재하지 않을 경우 상기 접근을 차단하고(단계:S38), 존재할 경우 상기 접근을 허용한다(단계:S37).
이와 같은 가상 레지스트리 보호 과정(단계:S31~단계:S38)의 일 실시예로서, 상기 고유 식별 정보를 프로세스 ID라 가정하면, 가상 레지스트리 보호 모듈(34)은 수행 제어 모듈(50)로부터 가상 레지스트리(62)의 경로 정보를 제공받고, 가상 응용 프로그램(3) 또는 수행 제어 모듈(50)로부터 가상 응용 프로그램(3) 및 수행 제어 모듈(50)에 의하여 생성되는 프로세스 ID를 제공받아 테이블로 저장한다. 이후, 가상 레지스트리 보호 모듈(34)은, 어떤 응용 프로그램에 의해 생성된 프로세스가 가상 레지스트리(62)의 키 경로로 접근하고자 할 경우, 상기 프로세스의 프로세스 ID가 상기 테이블에 존재하는 프로세스 ID인지를 조회하여, 상기 테이블에 존재하는 프로세스 ID일 경우 키로의 접근을 허용하고, 존재하지 않는 프로세스 ID일 경우 키로의 접근을 차단한다. 따라서, 가상 레지스트리(62)로의 접근은 가상 응용 프로그램(3)이나 수행 제어 모듈(50)에 의하여 발생된 프로세스만이 허용될 수 있다.
도 8은 가상 응용 프로그램 시스템(100)에 구비되는 가상 응용 프로그램 메모리 보호 모듈(40)의 동작 흐름을 도시하는 흐름도이다.
도 8에 도시된 바와 같이, 가상 응용 프로그램 메모리 보호 모듈(40)은 수행 제어 모듈(50) 또는 가상 응용 프로그램(3)으로부터 가상 응용 프로그램(3)이 사용하는 메모리 영역(64)으로의 접근이 허용되는 응용 프로그램, 예컨대 수행 제어 모 듈(50) 및 가상 응용 프로그램(3)의 고유 식별 정보를 전달받는다(단계:S41). 이때 상기 메모리 영역(64)은 앞서도 언급했듯이 논리 메모리 영역을 의미할 수 있다. 또한 고유 식별 정보는 해당 응용 프로그램을 통하여 생성되는 프로세스 식별자(ID), 메시지 다이제스트(Message Digest) 등을 의미할 수 있다. 가상 응용 프로그램(3)의 고유 식별 정보의 경우 수행 제어 모듈(50)이 가상 응용 프로그램 메모리 보호 모듈(40)로 전달할 수도 있고, 가상 응용 프로그램(3)이 자신이 생성하는 자식 응용 프로그램(예컨대 프로세스 등)을 가상 응용 프로그램 메모리 보호 모듈(40)로 전달할 수도 있다. 가상 응용 프로그램 메모리 보호 모듈(40)은 수행 제어 모듈(50) 또는 가상 응용 프로그램(3)으로부터 전달받은 수행 제어 모듈(50) 및 가상 응용 프로그램(3)의 고유 식별 정보를 테이블 등의 형태로 저장할 수 있다(단계:S42).
이어서 가상 응용 프로그램 메모리 보호 모듈(40)은 가상 응용 프로그램(3)이 사용하는 메모리 영역(64)으로 어떤 응용 프로그램이 접근하고자 할 경우(단계:S43), 해당 응용 프로그램의 고유 식별 정보가 미리 저장된 테이블(즉, 가상 응용 프로그램, 수행 제어 모듈(50)의 고유 식별 정보를 포함하는 정보)에 존재하는지를 판단(단계:S44). 이때, 상기 응용 프로그램의 고유 식별 정보가 상기 테이블에 존재하지 않을 경우(즉, 접근하려는 응용 프로그램이 가상 응용 프로그램이나 수행 제어 모듈(50)이 아닐 경우)에는 상기 접근을 차단하고(단계:S46), 존재할 경우(즉 접근하려는 응용 프로그램이 가상 응용 프로그램이나 수행 제어 모듈(50)일 경우)에는 상기 접근을 허용한다(단계:S45).
이와 같은 가상 메모리 영역 보호 과정(단계:S41~단계:S46)의 일 실시예로서, 상기 고유 식별 정보를 프로세스 ID라 가정하면, 가상 응용 프로그램 메모리 보호 모듈(40)은 가상 응용 프로그램(3) 또는 수행 제어 모듈(50)로부터 가상 응용 프로그램(3) 및 수행 제어 모듈(50)에 의하여 생성되는 프로세스 ID를 제공받아 테이블로 저장한다. 이어서 가상 응용 프로그램(3)에 의하여 생성된 프로세스가 특정한 메모리 영역(64)에서 수행되는 중 어떤 응용 프로그램에 의하여 생성된 프로세스가 상기 메모리 영역(64)으로 접근을 시도하면, 가상 응용 프로그램 메모리 보호 모듈(40)은 상기 프로세스의 프로세스 ID를 상기 테이블에서 조회하여 존재하는지의 여부를 검사할 수 있다. 이때 상기 프로세스의 프로세스 ID가 상기 테이블에 존재할 경우 이는 곧 상기 프로세스가 가상 응용 프로그램(3) 또는 수행 제어 모듈(50)에 의하여 생성된 프로세스임을 뜻하므로 가상 응용 프로그램 메모리 보호 모듈(40)은 상기 프로세스가 상기 메모리 영역(64)으로 접근하는 것을 허용한다. 반면 상기 프로세스의 프로세스 ID가 상기 테이블에 존재하지 않을 경우 상기 프로세스가 허용되지 않은 응용 프로그램, 예컨대 호스트 응용 프로그램임을 의미하므로 가상 응용 프로그램 메모리 보호 모듈(40)은 상기 프로세스가 상기 메모리 영역(64)으로 접근하는 것을 차단한다.
한편, 가상 응용 프로그램 메모리 보호 모듈(40)은 응용 프로그램이 물리 메모리로 접근하는 것을 차단할 수도 있다.
도 9는 가상 응용 프로그램 시스템(100)에 구비되는 가상 응용 프로그램 메모리 보호 모듈(40)의 물리 메모리 접근 차단 동작의 흐름을 도시하는 흐름도이다.
도 9에 도시된 바와 같이, 어떠한 응용 프로그램이 물리 메모리로 직접적인 접근을 시도하면(단계:S51), 가상 응용 프로그램 메모리 보호 모듈(40)은 상기 접근을 차단할 수 있다(단계:S52). 예를 들어, 특정 응용 프로그램에 의하여 발생된 프로세스가 물리 메모리(예컨대 호스트 컴퓨터의 RAM 등)로 직접적인 접근을 시도하는 API를 호출하면, 가상 응용 프로그램 메모리 보호 모듈(40)은 접근을 거부하는 에러 값을 반환할 수 있다.
응용 프로그램은 통상적으로 논리 메모리로 접근하여 기능을 수행하며, 물리 메모리로의 직접적인 접근은 수행하지 않는다. 그런데, 불순한 의도를 가진자가 특정 응용 프로그램을 사용하여 물리 메모리로 직접 접근하여 정보를 유출하는 행위를 할 수 있다. 따라서 가상 응용 프로그램 메모리 보호 모듈(40)은 물리 메모리로의 접근을 원천적으로 차단함으로써 보안성을 높일 수 있다.
이상 설명한 바와 같이, 가상 응용 프로그램 시스템은 호스트 환경과는 격리되는 독립적인 가상 환경에서 가상 응용 프로그램을 설치 및 수행할 수 있으며, 커널 모드에서 동작하는 가상 파일 시스템 보호 모듈, 가상 레지스트리 보호 모듈 및 가상 응용 프로그램 메모리 보호 모듈 등을 이용하여 가상 환경 및 메모리를 보호할 수 있다.
이러한 가상 응용 프로그램 시스템은 다양한 활용이 가능하다. 예를 들어 사용자는 가상 응용 프로그램 시스템을 휴대 가능한 외장형 저장장치(예컨대 USB 메모리, CD, DVD, 이동 통신 단말기 등)에 구비하고, 그 외장형 저장장치에 가상 환경을 구성하고 원하는 응용 프로그램을 가상화하여 설치할 수 있다. 이후 사용자는 그 외장형 저장장치를 휴대하면서 컴퓨터 단말기가 구비된 장소이면 어디서든 외장형 저장장치를 호스트 컴퓨터에 연결하여 가상 응용 프로그램을 수행시킬 수 있다.
이때 가상 응용 프로그램은 호스트 컴퓨터와는 완전히 독립된 가상 환경에서 수행되게 된다. 예를 들어, 가상 응용 프로그램에 의하여 수행되는 파일 및 레지스트리의 수정은 외장형 저장장치에 구성되어 있는 가상 환경의 가상 파일 시스템 및 가상 레지스트리에서만 이루어진다. 또한 상기 가상 환경은 호스트 응용 프로그램 등과 같은 허용되지 않은 응용 프로그램으로부터의 접근이 차단되므로 보안성을 확보할 수 있다.
따라서, 사용자는 인터넷 익스플로러, 파이어 폭스, 워드 프로세서 등과 같은 응용 프로그램을 이동 가능한 외장형 저장장치에 가상화하여 설치한 후, 그 가상 응용 프로그램을 이용하여 독립성 및 보안성이 요구되는 행위들, 예컨대 전자상거래나 인터넷 뱅킹 등을 수행할 수 있다. 이때 생성되거나 수정되는 파일 또는 레지스트리 키는 가상 환경에서만 저장 또는 수정되며, 가상 환경으로의 허용되지 않은 접근은 모두 차단된다. 따라서 호스트 컴퓨터에는 아무런 정보를 남기지 않아 개인 정보의 유출을 원천적으로 제거할 수 있다.
다른 예로서, 사용자는 가상 응용 프로그램 시스템을 이용하여, 통신망을 통하여 연동된 원격지의 컴퓨터 시스템에 가상 환경을 구성하고 가상 응용 프로그램을 가상화하여 설치할 수도 있다. 이 경우 가상 응용 프로그램은 원격지의 컴퓨터 시스템에 존재하는 가상 환경 내에서 독립적으로 수행될 수 있다. 예를 들어, 가상 응용 프로그램에 의하여 수행되는 파일 및 레지스트리의 수정은 원격지의 가상 파 일 시스템 및 가상 레지스트리에서만 이루어진다. 이때 원격지의 컴퓨터 시스템에 구비된 다른 응용 프로그램들은 해당 가상 환경으로 접근할 수 없다. 따라서 사용자는 원격지의 컴퓨터 시스템을 이용하여 보안이 요구되는 작업 등을 수행할 수 있다.
또 다른 예로서, 사용자는 가상 응용 프로그램 시스템을 이용하여 호스트 컴퓨터 내에 가상 환경을 구성하고 가상 응용 프로그램을 가상화하여 설치할 수도 있다. 이 경우 가상 응용 프로그램은 호스트 컴퓨터 내의 존재하는 가상 환경에서 독립적으로 수행될 수 있다. 이때 상기 가상 환경으로는 다른 호스트 응용 프로그램들이 접근할 수 없다. 따라서 호스트 컴퓨터 내에서도 보안이 요구되는 작업을 수행할 수 있다.
이상 본 발명에 대하여 그 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 기술적 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시켜 실시할 수 있음을 이해할 수 있을 것이다. 따라서, 본 발명의 앞으로의 실시예들의 변경은 본 발명의 기술을 벗어날 수 없을 것이다.
도 1은 본 발명의 바람직한 실시예에 따른 가상 응용 프로그램 시스템의 구성을 도시하는 블록도이다.
도 2는 가상 응용 프로그램 시스템의 가상 응용 프로그램 설치 모듈의 동작을 설명하기 위한 흐름도이다.
도 3은 가상 응용 프로그램 시스템의 수행 제어 모듈의 동작 흐름을 설명하기 위한 흐름도이다.
도 4는 가상 응용 프로그램이 가상 파일 시스템, 가상 레지스트리 등으로 접근하는 예를 보여주는 예시도이다.
도 5는 가상 파일 시스템 보호 모듈, 가상 레지스트리 보호 모듈 및 가상 응용 프로그램 메모리 보호 모듈이 가상 환경 및 메모리를 보호하는 예를 보여주는 예시도이다.
도 6은 가상 응용 프로그램 시스템에 구비되는 가상 파일 시스템 보호 모듈의 동작 흐름을 도시하는 흐름도이다.
도 7은 가상 응용 프로그램 시스템에 구비되는 가상 레지스트리 보호 모듈의 동작 흐름을 도시하는 흐름도이다.
도 8은 가상 응용 프로그램 시스템에 구비되는 가상 응용 프로그램 메모리 보호 모듈의 동작 흐름을 도시하는 흐름도이다.
도 9는 가상 응용 프로그램 시스템에 구비되는 가상 응용 프로그램 메모리 보호 모듈의 물리 메모리 접근 차단 동작의 흐름을 도시하는 흐름도이다.
<도면의 주요 부분에 대한 부호 설명>
10 : 가상 응용 프로그램 설치 모듈
20 : 가상화 모듈
22 : 파일 시스템 가상화 모듈
24 : 레지스트리 가상화 모듈
30 : 가상 환경 보호 모듈
32 : 가상 파일 시스템 보호 모듈
34 : 가상 레지스트리 보호 모듈
40 : 가상 응용 프로그램 메모리 보호 모듈
50 : 수행 제어 모듈
100 : 가상 응용 프로그램 시스템

Claims (25)

  1. 운영체제의 네이티브 API(Application Program Interface)를 가상 환경으로 리다이렉션할 수 있는 다수 개의 기능 모듈을 구비하는 가상화 모듈;
    사용자로부터 가상화할 응용 프로그램의 설치 파일의 위치 정보 및 상기 응용 프로그램을 가상화하여 설치할 설치 장소의 정보를 입력받고, 상기 가상화 모듈을 사용하여 상기 설치 장소에 상기 응용 프로그램을 가상화한 가상 응용 프로그램을 설치하는 가상 응용 프로그램 설치 모듈;
    상기 설치 장소에 설치된 상기 가상 응용 프로그램을 수행시키는 수행 제어 모듈; 및
    상기 수행 제어 모듈에 의하여 로딩되며, 상기 가상 환경으로의 접근이 허용되는 응용 프로그램의 고유 식별 정보를 테이블에 저장하고, 어떤 응용 프로그램이 상기 가상 환경으로 접근하고자 할 경우 상기 어떤 응용 프로그램의 고유 식별 정보가 상기 테이블에 존재하는지를 판단하고, 상기 판단을 기반으로 하여 상기 가상 응용 프로그램이 접근하는 상기 가상 환경으로 허용되지 않은 응용 프로그램이 접근하는 것을 차단하는 가상 환경 보호 모듈을 포함하는 것을 특징으로 하는 가상 응용 프로그램 시스템.
  2. 삭제
  3. 제 1 항에 있어서, 상기 고유 식별 정보는 해당 응용 프로그램으로부터 생성되는 프로세스 식별자 및 메시지 다이제스트 중 적어도 어느 하나인 것을 특징으로 하는 가상 응용 프로그램 시스템.
  4. 제 3 항에 있어서, 상기 고유 식별 정보가 프로세스 식별자일 경우,
    상기 가상 환경 보호 모듈은 상기 가상 환경으로의 접근이 허용되는 응용 프로그램으로부터 생성되는 프로세스의 프로세스 식별자를 프로세스 식별자 테이블에 저장하고, 어떤 응용 프로그램으로부터 생성된 프로세스가 상기 가상 환경으로 접근하고자 경우, 그 프로세스의 프로세스 식별자가 상기 프로세스 식별자 테이블에 존재하는지를 판단하는 것을 특징으로 하는 가상 응용 프로그램 시스템.
  5. 제 1 항에 있어서, 상기 가상 환경 보호 모듈은 상기 어떤 응용 프로그램의 고유 식별자가 상기 테이블에 존재할 경우 상기 가상 환경으로의 접근을 허용하고 존재하지 않을 경우 상기 가상 환경으로의 접근을 차단하는 것을 특징으로 하는 가상 응용 프로그램 시스템.
  6. 제 1 항에 있어서, 상기 가상 환경 보호 모듈은 상기 가상 환경으로의 접근이 허용되는 응용 프로그램의 고유 식별 정보를 상기 수행 제어 모듈 및 상기 가상 응용 프로그램 중 적어도 어느 하나로부터 전달받는 것을 특징으로 하는 가상 응용 프로그램 시스템.
  7. 제 1 항에 있어서, 상기 가상 환경으로의 접근이 허용되는 응용 프로그램은 상기 가상 응용 프로그램 및 상기 수행 제어 모듈 중 적어도 어느 하나인 것을 특징으로 하는 가상 응용 프로그램 시스템.
  8. 제 1 항에 있어서, 상기 가상 환경 보호 모듈은,
    상기 가상 응용 프로그램이 접근하는 가상 파일 시스템으로 상기 허용되지 않은 응용 프로그램이 접근하는 것을 차단하는 가상 파일 시스템 보호 모듈; 및
    상기 가상 응용 프로그램이 접근하는 가상 레지스트리로 상기 허용되지 않은 응용 프로그램이 접근하는 것을 차단하는 가상 레지스트리 보호 모듈을 포함하는 것을 특징으로 하는 가상 응용 프로그램 시스템.
  9. 제 1 항에 있어서, 상기 가상 응용 프로그램이 사용하는 메모리 영역으로 허용되지 않은 응용 프로그램이 접근하는 것을 차단하는 가상 응용 프로그램 메모리 보호 모듈을 더 포함하는 것을 특징으로 하는 가상 응용 프로그램 시스템.
  10. 제 9 항에 있어서, 상기 가상 환경 보호 모듈 및 상기 가상 응용 프로그램 메모리 보호 모듈은 커널 모드에서 동작하는 드라이버의 형태로 구성되는 것을 특 징으로 하는 가상 응용 프로그램 시스템.
  11. 제 9 항에 있어서, 상기 가상 응용 프로그램 메모리 보호 모듈은 상기 가상 응용 프로그램이 사용하는 메모리 영역으로의 접근이 허용되는 응용 프로그램의 고유 식별 정보를 테이블에 저장하고, 어떤 응용 프로그램이 상기 메모리 영역으로 접근하고자 할 경우 상기 어떤 응용 프로그램의 고유 식별 정보가 상기 테이블에 존재하는지를 판단하는 것을 특징으로 하는 가상 응용 프로그램 시스템.
  12. 제 9 항에 있어서, 상기 가상 응용 프로그램 메모리 보호 모듈은 응용 프로그램이 물리 메모리로 접근하는 것을 차단하는 것을 특징으로 하는 가상 응용 프로그램 시스템.
  13. 삭제
  14. 제 1 항에 있어서, 상기 가상화 모듈은,
    상기 가상 응용 프로그램에서 파일 시스템으로의 접근 API를 호출하면, 상기 파일 시스템으로의 접근 경로를 가상 파일 시스템으로의 접근 경로로 변환하는 파일 시스템 가상화 모듈; 및
    상기 가상 응용 프로그램에서 레지스트리로의 접근 API를 호출하면, 상기 레지스트리로의 접근 경로를 가상 레지스트리로의 접근 경로로 변환하는 레지스트리 가상화 모듈을 포함하는 것을 특징으로 하는 가상 응용 프로그램 시스템.
  15. 제 1 항에 있어서, 상기 가상 응용 프로그램 설치 모듈은 상기 가상 응용 프로그램을 설치하기 위한 설치 프로세스에 상기 가상화 모듈을 주입하고, 상기 수행 제어 모듈은 상기 가상 응용 프로그램의 수행 프로세스에 상기 가상화 모듈을 주입하는 것을 특징으로 하는 가상 응용 프로그램 시스템.
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
KR1020080022462A 2008-01-04 2008-03-11 가상 응용 프로그램 시스템, 저장장치, 가상 응용 프로그램수행 방법 및 가상 환경 보호 방법 KR101013509B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
PCT/KR2008/007857 WO2009088175A2 (en) 2008-01-04 2008-12-31 Virtual application program system, storing device, method for executing virtual application program and method for protecting virtual environment
US12/811,596 US20110010756A1 (en) 2008-01-04 2008-12-31 Virtual application program system, storing device, method for executing virtual application program and method for protecting virtual environment
CN2008801259694A CN101965553A (zh) 2008-01-04 2008-12-31 虚拟应用程序系统、存储设备、虚拟应用程序的运行方法及虚拟环境的保护方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020080001199 2008-01-04
KR20080001199 2008-01-04

Publications (2)

Publication Number Publication Date
KR20090075595A KR20090075595A (ko) 2009-07-08
KR101013509B1 true KR101013509B1 (ko) 2011-02-11

Family

ID=41332784

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080022462A KR101013509B1 (ko) 2008-01-04 2008-03-11 가상 응용 프로그램 시스템, 저장장치, 가상 응용 프로그램수행 방법 및 가상 환경 보호 방법

Country Status (3)

Country Link
US (1) US20110010756A1 (ko)
KR (1) KR101013509B1 (ko)
CN (1) CN101965553A (ko)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8402458B1 (en) * 2009-03-18 2013-03-19 Symantec Corporation Methods and systems for converting non-layered-software-application installations into layered installations
US8612994B1 (en) * 2009-03-30 2013-12-17 Symantec Corporation Methods and systems for activating and deactivating virtualization layers
US8881140B1 (en) 2009-09-04 2014-11-04 Symantec Corporation Systems and methods for virtualizing software associated with external computer hardware devices
US9229748B2 (en) * 2010-01-29 2016-01-05 Code Systems Corporation Method and system for improving startup performance and interoperability of a virtual application
US8782106B2 (en) 2010-07-02 2014-07-15 Code Systems Corporation Method and system for managing execution of virtual applications
CN102231116A (zh) * 2011-07-04 2011-11-02 成都市华为赛门铁克科技有限公司 应用程序虚拟化安装及加载方法及装置
US9069607B1 (en) 2012-01-31 2015-06-30 Vmware, Inc. Selective migration of virtualized applications and configuration settings thereof
CN102662870B (zh) * 2012-03-20 2014-08-13 武汉噢易科技有限公司 基于vfs层拦截读写请求的安卓操作系统保护方法
US8875096B1 (en) 2012-09-25 2014-10-28 Amazon Technologies, Inc. Dynamic class loading
CN103309666B (zh) * 2013-06-09 2016-08-24 北京奇虎科技有限公司 一种软件运行控制方法和装置
CN103617129B (zh) * 2013-12-10 2017-10-24 中科创达软件股份有限公司 一种内存处理的方法及装置
CN106161517B (zh) * 2015-03-31 2019-07-12 阿里巴巴集团控股有限公司 通过云文件系统实现云存储接入的方法和装置
CN105573741A (zh) * 2015-09-25 2016-05-11 中国电子科技集团公司第三十二研究所 界面可重构的虚拟应用系统和方法
CN105700914A (zh) * 2015-12-31 2016-06-22 北京金山安全软件有限公司 一种应用软件安装、启动方法和装置
WO2018010794A1 (en) * 2016-07-14 2018-01-18 Huawei Technologies Co., Ltd. Device and method for preventing memory data leakage
US10769267B1 (en) * 2016-09-14 2020-09-08 Ca, Inc. Systems and methods for controlling access to credentials
CN108021372A (zh) * 2016-11-01 2018-05-11 深圳市中兴微电子技术有限公司 一种应用程序的管理方法和装置
CN106709327A (zh) * 2016-12-07 2017-05-24 深圳市君格科技有限公司 一种应用隐藏的方法及其移动终端
CN106650491A (zh) * 2016-12-09 2017-05-10 上海斐讯数据通信技术有限公司 一种保护用户隐私的方法及移动终端
WO2019009601A1 (ko) * 2017-07-04 2019-01-10 주식회사 수산아이앤티 웹 소스를 보호하기 위한 장치 및 방법
US10452838B2 (en) * 2017-07-27 2019-10-22 Symantec Corporation Providing joint access to an isolated computer object by both an isolated computer application and a non-isolated computer application
KR20190021673A (ko) * 2017-08-23 2019-03-06 주식회사 수산아이앤티 랜섬웨어 방지 장치 및 방법
US11163880B2 (en) * 2017-09-29 2021-11-02 Crowdstrike, Inc. Using indirection to facilitate software upgrades
GB2578099B (en) * 2018-10-15 2021-05-12 Advanced Risc Mach Ltd Memory access control
CN110443876A (zh) * 2019-07-31 2019-11-12 新华三大数据技术有限公司 3d图像渲染方法及装置
KR102232919B1 (ko) * 2020-08-10 2021-03-29 (유)아홉 가상화 및 cow 파일 시스템 기술을 이용한 자가 변이 시스템

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060062587A (ko) * 2004-12-04 2006-06-12 소프트온넷(주) 호스트 컴퓨터상에서 응용프로그램 수행을 위한 휴대용디지털 저장장치 시스템 및 방법
US20070168937A1 (en) * 2005-11-28 2007-07-19 Soummya Mallick Apparatus and method of application virtualization
KR20080005493A (ko) * 2005-04-07 2008-01-14 코닌클리케 필립스 일렉트로닉스 엔.브이. 소프트웨어 보호
KR20090017942A (ko) * 2007-08-16 2009-02-19 주식회사 마크애니 가상 응용프로그램 생성 시스템, 가상 응용프로그램 설치방법, 네이티브 api 호출 처리 방법 및 가상응용프로그램 수행 방법

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050114870A1 (en) * 2003-11-21 2005-05-26 Song Dong H. System and method for executing an application on a secured run-time environment

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060062587A (ko) * 2004-12-04 2006-06-12 소프트온넷(주) 호스트 컴퓨터상에서 응용프로그램 수행을 위한 휴대용디지털 저장장치 시스템 및 방법
KR20080005493A (ko) * 2005-04-07 2008-01-14 코닌클리케 필립스 일렉트로닉스 엔.브이. 소프트웨어 보호
US20070168937A1 (en) * 2005-11-28 2007-07-19 Soummya Mallick Apparatus and method of application virtualization
KR20090017942A (ko) * 2007-08-16 2009-02-19 주식회사 마크애니 가상 응용프로그램 생성 시스템, 가상 응용프로그램 설치방법, 네이티브 api 호출 처리 방법 및 가상응용프로그램 수행 방법

Also Published As

Publication number Publication date
US20110010756A1 (en) 2011-01-13
KR20090075595A (ko) 2009-07-08
CN101965553A (zh) 2011-02-02

Similar Documents

Publication Publication Date Title
KR101013509B1 (ko) 가상 응용 프로그램 시스템, 저장장치, 가상 응용 프로그램수행 방법 및 가상 환경 보호 방법
CA2761563C (en) Annotating virtual application processes
KR101489301B1 (ko) 가상환경 시스템 및 그의 구동방법
EP3123311B1 (en) Malicious code protection for computer systems based on process modification
US8694981B2 (en) Shared resource dependencies
KR101540798B1 (ko) 가상화 환경에서 보안 정보를 제공하기 위한 장치 및 방법
US8972976B2 (en) Device and method for automatic driver installation
US9405521B2 (en) Mapping of virtualized setup-free applications for a computing system
EP2705422B1 (en) Dynamically redirecting boot to another operating system
US11822654B2 (en) System and method for runtime detection, analysis and signature determination of obfuscated malicious code
KR101836058B1 (ko) 가상화를 위한 확장 포인트 선언적 등록
US20190044971A1 (en) Techniques to provide function-level isolation with capability-based security
WO2019100897A1 (zh) 一种应用程序启动方法、启动装置及计算机可读存储介质
US6754889B1 (en) Java automation, testing, and analysis
US20170180427A1 (en) Clipboard hardening
EP2856306B1 (en) Virtualizing integrated calls to provide access to resources in a virtual namespace
JP6670318B2 (ja) ソフトウェアアプリケーションにおける分類及びirmの実現
US20040123308A1 (en) Hybird of implicit and explicit linkage of windows dynamic link labraries
EP3769247B1 (en) System and method for preventing unwanted bundled software installation
WO2009088175A2 (en) Virtual application program system, storing device, method for executing virtual application program and method for protecting virtual environment
JP4472706B2 (ja) デバイスに特権モードフックを動的に登録するためのシステム

Legal Events

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

Payment date: 20140217

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150114

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160125

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170111

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180104

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190124

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20191205

Year of fee payment: 10