KR20080054770A - Method and loader for providing software streaming - Google Patents

Method and loader for providing software streaming Download PDF

Info

Publication number
KR20080054770A
KR20080054770A KR1020060127317A KR20060127317A KR20080054770A KR 20080054770 A KR20080054770 A KR 20080054770A KR 1020060127317 A KR1020060127317 A KR 1020060127317A KR 20060127317 A KR20060127317 A KR 20060127317A KR 20080054770 A KR20080054770 A KR 20080054770A
Authority
KR
South Korea
Prior art keywords
file
program
streaming
loading module
local terminal
Prior art date
Application number
KR1020060127317A
Other languages
Korean (ko)
Other versions
KR100848284B1 (en
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 KR1020060127317A priority Critical patent/KR100848284B1/en
Publication of KR20080054770A publication Critical patent/KR20080054770A/en
Application granted granted Critical
Publication of KR100848284B1 publication Critical patent/KR100848284B1/en

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
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity

Abstract

A method and a loader for providing software streaming are provided to execute a program by using the loader having a function, which calls the functions replaced by hooking for correcting a starting point of 15 functions implementing file read functions. A loading module(222) searches a file necessary for a program to which a user commands execution by checking a recording medium(210) of a local terminal and a cache(240), generates/transfers program information for a program to a streaming server(270), and receives a file and an execution file for executing the program from the streaming server. The loading module executes a software streaming file access function equipped with a software streaming function when the file access function is called during the execution of the program. A streaming library(224) stores the software streaming file access function for providing the software streaming file to the file access function. The streaming server includes a streaming module(272) checking validity of the file related to the execution of the program returning a result to the loading module when the program information is received, transferring the file related to the execution of the valid program to the loading module, obtaining requested data from a streaming server storage medium(280), and transferring the obtained data to the loading module.

Description

소프트웨어 스트리밍을 제공하는 적재기 및 방법{Method and Loader for Providing Software Streaming}Loaders and Methods for Providing Software Streaming {Method and Loader for Providing Software Streaming}

도 1은 본 발명의 바람직한 실시예에 따라 적재기에서 수행되는 함수 시작 지점을 후킹하는 과정을 나타내는 도면,1 is a view showing a process of hooking a function start point performed in a loader according to a preferred embodiment of the present invention;

도 2는 본 발명의 바람직한 실시예에 따른 적재기를 이용한 소프트웨어 스트리밍을 제공하는 시스템을 간단하게 나타낸 도면, 2 is a simplified diagram of a system for providing software streaming using a loader in accordance with a preferred embodiment of the present invention;

도 3은 본 발명의 바람직한 실시예에 따른 적재기를 이용한 소프트웨어 스트리밍을 제공하는 과정을 나타낸 순서도,3 is a flowchart illustrating a process of providing software streaming using a loader according to a preferred embodiment of the present invention;

도 4는 본 발명의 바람직한 실시예에 따른 적재기에서 소프트웨어 스트리밍을 이용하여 파일을 호출하는 과정을 나타낸 순서도,4 is a flowchart illustrating a process of calling a file using software streaming in a loader according to a preferred embodiment of the present invention.

도 5는 본 발명의 바람직한 실시예에 따른 스트리밍 라이브러리를 이용하여 미리 읽기 기능을 제공하는 과정을 나타낸 순서도이다.5 is a flowchart illustrating a process of providing a read ahead function using a streaming library according to a preferred embodiment of the present invention.

< 도면의 주요 부분에 대한 부호의 설명 ><Description of Symbols for Main Parts of Drawings>

200: 로컬 단말기 210: 로컬 단말기 기록매체200: local terminal 210: local terminal recording medium

220: 적재기 222: 적재 모듈220: loader 222: loading module

224: 스트리밍 라이브러리 230: 캐시(Cache)224: streaming library 230: cache

240: 메모리 250: 인터넷240: memory 250: the Internet

260: 스트리밍 서버 270: 스트리밍 서버 메모리260: streaming server 270: streaming server memory

272: 스트리밍 모듈 280: 스트리밍 서버 기록매체272: streaming module 280: streaming server recording medium

본 발명은 소프트웨어 스트리밍을 제공하는 적재기 및 방법에 관한 것이다. 더욱 상세하게는, 파일을 읽는 함수들을 구현하는 열다섯 개의 함수의 시작 지점을 수정하는 후킹(Hooking)을 이용하여 치환되는 함수들을 호출하도록 하는 기능을 가진 실행 파일 로더(이하 '적재기'라 함)를 이용하여 프로그램을 실행하도록 하는 방법에 관한 것이다.The present invention relates to a loader and method for providing software streaming. More specifically, an executable file loader (hereinafter referred to as a "loader") that has the ability to call functions that are replaced using hooking that modifies the starting point of the fifteen functions that implement the file reading functions. It relates to a method to execute a program using.

인터넷 환경의 발달로 인하여 최근에는 다양한 프로그램을 CD나 DVD 등의 기록매체를 통하여 배포하지 않고 인터넷을 통하여 배포하는 방법이 널리 활용되고 있다. 이러한 방법은 사용자 단말기가 인터넷에 연결되어 있기만 하면 인터넷을 통하여 배포하는 프로그램을 다운로드 받아서 설치하고 실행할 수 있는 장점을 가진다.Recently, due to the development of the Internet environment, a method of distributing various programs through the Internet rather than through a recording medium such as a CD or a DVD has been widely used. This method has the advantage of being able to download, install and run a program distributed through the Internet as long as the user terminal is connected to the Internet.

그러나 위에 기술한 방법은 프로그램을 모두 다운로드 받기 전까지는 설치 또는 실행하지 못하기 때문에 프로그램의 용량이 큰 경우에는 프로그램을 다운로드 받는데 걸리는 시간이 길어진다는 문제점이 있다. 최근 배포되는 온라인 게임을 살펴보면 게임을 설치하기 위하여 기가바이트(Giga Byte) 단위의 파일을 다운로드 받아야 하는 경우가 대부분이고, 이 경우에는 인터넷 환경이 좋지 못한 장소에서 다 운로드 받고 설치하여 실행하는 데에는 수 시간이 걸리기도 한다. However, the above-described method does not install or execute until all the programs are downloaded, which causes a problem in that it takes longer to download the program if the program is large. Looking at online games that are recently distributed, it is necessary to download a gigabyte file in order to install the game. In this case, it is difficult to download, install, and run the file in a place where the Internet environment is not good. It may take time.

일반적으로 프로그램의 실행 중에 접근하는 파일은 전체 데이터의 극히 일부분에 불과하기 때문에 프로그램이 실행되는 중에 접근하고자 하는 파일을 인터넷을 통해 다운로드 받을 수 있으면 전체 파일들을 다운로드 받지 않고서도 마치 모든 파일을 다운로드 받아서 실행하는 것과 같은 효과를 낼 수 있는 데, 이러한 방법을 소프트웨어 스트리밍이라고 한다.Generally, the files accessed during the execution of the program are only a small part of the total data. If the files you want to access while the program is running can be downloaded from the Internet, all files are downloaded and executed without downloading the entire files. The same effect can be achieved, called software streaming.

소프트웨어 스트리밍은 기본적으로 시스템에 존재하지 않는 파일을 존재하는 것처럼 보여줌으로써 프로그램이 실행되도록 하는 데, 기존에는 존재하지 않는 파일을 존재하는 것처럼 보여주기 위하여 네트워크 파일 시스템을 구현하는 방법, 임시로 파일을 생성하는 방법 및 응용 프로그램을 수정하는 방법 등이 사용되었다. Software streaming basically allows a program to run by showing a file that does not exist on the system.How to implement a network file system to show a file that does not exist as existing, create a temporary file. How to and how to modify the application was used.

네트워크 파일 시스템은 NFS(Network File System)나 CIFS(Common Internet File System)을 통하여 멀리 떨어진 곳에 존재하는 파일들을 사용자 컴퓨터 안에 있는 것처럼 실행시키는 방법으로서 가장 손쉽게 소프트웨어 스트리밍을 구현할 수 있는 장점이 있으나, 일반적으로 NFS나 CIFS가 스트리밍 환경을 고려하여 설계되어 있지 않으므로 성능이 저하된다는 단점이 있고, NFS나 CIFS 자체의 구현이 매우 복잡하기 때문에 스트리밍 환경에 적합하도록 변형하는 것 또한 용이하지 못하며, NFS나 CIFS를 통하여 보이는 파일들은 소프트웨어 스트리밍을 하기 위한 프로그램 외에 다른 프로그램에도 보이기 때문에 파일의 복제 또는 변조에 노출되는 위험성이 있다. The network file system is the easiest way to implement software streaming as a method of executing files in a remote place as if they are in a user's computer through Network File System (NFS) or Common Internet File System (CIFS). Since NFS and CIFS are not designed for the streaming environment, there is a disadvantage in that the performance is degraded. Since the implementation of NFS or CIFS itself is very complicated, it is not easy to modify it to be suitable for the streaming environment. Visible files are visible to other programs besides software streaming software, so there is a risk of file duplication or tampering.

임시로 파일을 생성하는 방법은 프로그램 실행 중에 존재하지 않는 파일을 프로그램이 요구하는 경우에 파일 시스템에 요구하는 파일을 일시적으로 생성하여 제공하고, 프로그램의 실행이 완료되면 임시로 생성한 파일을 삭제하는 방법으로서, 네트워크 파일 시스템에 비해 성능이 저하되지 않는다는 장점이 있으나 네트워크 파일 시스템과 마찬가지로 임시로 생성한 파일이 복제 또는 변조에 노출되는 위험성이 있다. The temporary file creation method temporarily creates and provides a file required by the file system when the program requires a file that does not exist during the execution of the program, and deletes the temporarily created file when the program is completed. As a method, there is an advantage that performance is not reduced compared to a network file system, but like a network file system, there is a risk that a temporarily generated file is exposed to duplication or tampering.

네트워크 파일 시스템을 구현하거나 임시로 파일을 생성하는 방법이 공통적으로 가지는 파일의 복제 또는 변조에 대한 위험성의 문제를 해결하기 위하여 응용 프로그램을 수정하는 방법이 있다. 이 방법은 프로그램의 제작 단계에서 파일을 요구하는 부분을 고쳐서 소프트웨어 스트리밍이 되도록 하는 방법으로서, 최근 NC 소프트사에서 개발한 길드워(Guild-War)라는 게임을 이 방법을 이용하여 배포하고 있는데, 프로그램 수정에 걸리는 시간이 길다는 단점이 있지만 위에 기술한 두 방법에 비해 뛰어난 성능을 보이고, 주 실행 파일만을 사용자에게 보이기 때문에 나머지 파일의 노출을 방지할 수 있어 앞의 두 방법에 비해 향상된 파일 보호 기능을 제공할 수 있다. There is a method of modifying an application program to solve the problem of file duplication or tampering, which is common in a network file system or a method of temporarily creating a file. This method is to modify the part that requires files in the production stage of the program so that the software can be streamed. A game called Guild-War developed by NC Soft is recently distributed using this method. Although it takes a long time to modify, it shows better performance than the two methods described above, and only the main executable file is displayed to the user, which prevents the remaining files from being exposed. Can provide.

한편, (주)넥슨에서는 API 후킹을 이용하여 Import Address Table을 수정하는 방법으로 소프트웨어 스트리밍을 제안(한국등록특허 10-0408758, 2003년 11월 26일)하여 응용 프로그램을 수정하는 방법에서 프로그램 수정에 걸리는 시간이 길다는 단점을 보완하였다. API 후킹이란 프로그램이 사용한 API를 프로그램이 실행되는 시점에 다른 API로 바꾸는 방법으로서, (주)넥슨에서 제시하고 있는 방법은 일반적인 프로그램에서 많이 사용되는 Win32 API 라이브러리에 있는 함수들 가운데 파일 입출력 함수들을 새로 작성하고(이하 '스트리밍 라이브러리'라 함), 원래 프로그램에 극히 일부만을 수정해서 만들어진 스트리밍 라이브러리와 함께 컴파일을 해서 실행 파일을 만들어 내는 방법이고, 이 방법을 이용하면 이미 개발이 완료된 프로그램에서 극히 일부분만을 수정해서 스트리밍 기능을 구현할 수 있으므로 프로그램 수정에 걸리는 시간이 단축되는 것이다. Meanwhile, Nexon Inc. proposes software streaming as a method of modifying the Import Address Table using API hooking (Korean Patent Registration 10-0408758, November 26, 2003). The long time required was solved. API hooking is a method of changing the API used by a program to another API at the time of execution of the program. The method proposed by Nexon Co., Ltd. provides new file input / output functions among the functions in the Win32 API library that are commonly used in general programs. It is a method of writing (hereinafter referred to as a 'streaming library') and compiling it with a streaming library created by modifying only a small portion of the original program to generate an executable file. By modifying and implementing the streaming function, it takes less time to modify the program.

그러나, (주)넥슨에서 제안한 소프트웨어 스트리밍은 실제 적용하는데 있어서 다음과 같은 어려움이 존재한다. 첫째는 소프트웨어 스트리밍을 위하여 종래 프로그램의 소스를 구해서 극히 일부분이라도 수정을 하여야 하므로, 프로그램을 보호하는 데 있어서 보안의 문제점이 있다. 개발사와 유통사가 분리되어 있고, 유통사가 스트리밍 기술을 가진 경우에는 개발사는 유통을 위하여 프로그램 소스를 유통사에 제공해야 하나 이는 영업비밀 유출 등의 분쟁을 유발할 소지가 있다. 둘째는 스트리밍 라이브러리와 실행 프로그램이 합쳐져 있기 때문에 메인 프로그램 자체를 소프트웨어 스트리밍 할 수 없다는 문제점이 있다. 셋째는 Win32 API 라이브러리에 있는 파일 입출력 함수들을 새로 작성함에 있어서 사용되는 Import Address Table은 EXE나 DLL의 확장자를 가진 파일에 하나씩 존재하기 때문에 최악의 경우 윈도우즈(Windows)에 존재하는 수천 개의 DLL 파일을 모두 고려하여야 하고, 이에 대한 고려가 없는 경우에는 프로그램은 정상적으로 동작하는데 동영상이 디스플레이되지 않는 것과 같이 프로그램의 일부만이 소프트웨어 스트리밍 기능을 가지게 될 수 있는 문제점이 있으며, 여전히 주 실행 파일을 보호하지 못한다는 문제점이 있다. However, the software streaming proposed by Nexon has the following difficulties in practical application. First, the source of the conventional program must be obtained for software streaming, and at least a part of the program must be modified. Therefore, there is a security problem in protecting the program. If the developer and distributor are separated and the distributor has streaming technology, the developer must provide the program source to the distributor for distribution, but this may cause a dispute such as a trade secret leak. Second, there is a problem that the main program itself cannot be software streamed because the streaming library and the executing program are combined. Third, the Import Address Table, which is used to write new file I / O functions in the Win32 API library, exists in one file with an EXE or DLL extension, so in the worst case, all of the thousands of DLL files in Windows If there is no consideration, there is a problem that only a part of the program may have the software streaming function, such as the video is not displayed but the program operates normally, and still does not protect the main executable file. have.

이러한 문제점을 해결하기 위해 본 발명은, 파일을 읽는 함수들을 구현하는 열다섯 개의 함수의 시작 지점을 수정하는 후킹(Hooking)을 이용하여 치환되는 함수들을 호출하도록 하는 기능을 가진 실행 파일 로더(이하 '적재기'라 함)를 이용하여 프로그램을 실행하도록 하는 방법을 그 목적으로 한다.In order to solve this problem, the present invention provides an executable file loader having a function of calling a function that is replaced by a hooking that modifies the starting point of fifteen functions implementing the file reading functions. The purpose of the program is to execute a program using a loader.

이러한 목적을 달성하기 위하여, 본 발명의 제 1 목적에 의하면, 로컬 단말기의 메모리에 로딩한 적재 모듈 및 스트리밍 라이브러리를 포함한 적재기를 이용하여 프로그램을 실행하는 방법에 있어서, (a) 적재 모듈을 이용하여 프로그램의 실행에 관련된 파일에 대한 프로그램 파일 정보 데이터를 스트리밍 서버의 스트리밍 모듈에 전송하는 단계; (b) 스트리밍 서버에 프로그램의 실행을 위한 실행 파일을 요청하는 단계; (c) 스트리밍 모듈로부터 수신한 실행 파일 중 일부 데이터(이하 '실행 파일 수신 데이터'라 함)를 수신하여 실행하는 중에 실행 파일로부터 실행 파일 중 수신하지 않은 일부 데이터(이하 '실행 파일 미수신 데이터'라 함)를 요청하는 신호가 생성되었는지 여부와 파일 접근 함수가 호출되었는지 여부를 확인하는 단계; (d) 단계 (c)에서 실행 파일로부터 실행 파일 미수신 데이터를 요청하는 신호가 생성되었다고 판단한 경우 적재 모듈을 이용하여 스트리밍 모듈에 실행 파일 미수신 데이터를 요청하여 수신하는 단계; 및 (e) 단계 (c)에서 실행 파일로부터 파일 접근 함수가 호출되었다고 판단한 경우에 파일 접근 함수에 대응하는 스트리밍 라이브러리에 저장된 소프트웨어 스트리밍 기능을 위한 파일 접근 함수가 실행되도록 하는 단계를 포함하는 것을 특징으로 하는 로컬 단말기의 메모리에 로딩한 적재 모듈 및 스트리밍 라이브러리를 포함한 적재기를 이용하여 프로그램을 실행하는 방법을 제공한다.In order to achieve this object, according to a first object of the present invention, there is provided a method for executing a program using a loader including a loading module loaded in a memory of a local terminal and a streaming library, the method comprising: (a) using a loading module; Transmitting program file information data on a file related to execution of a program to a streaming module of a streaming server; (b) requesting an executable file for execution of a program from a streaming server; (c) some data not received from the executable file from the executable file (hereinafter referred to as 'execution file unreceived data') while receiving and executing some data (hereinafter referred to as 'executive file reception data') of the executable file received from the streaming module. Checking whether a signal for requesting a signal has been generated and whether a file access function has been called; (d) if it is determined in step (c) that a signal for requesting executable file unreceived data is generated from the executable file, requesting and receiving the executable file unreceived data from the streaming module using the loading module; And (e) causing the file access function for the software streaming function stored in the streaming library corresponding to the file access function to be executed when it is determined in step (c) that the file access function is called from the executable file. The present invention provides a method for executing a program using a loader including a loading module loaded in a memory of a local terminal and a streaming library.

또한, 본 발명의 제 2 목적에 의하면, 적재기를 이용하여 실행한 로컬 단말기의 프로그램에서 파일을 호출하는 방법에 있어서, (a) 적재기의 적재 모듈이 스트리밍 라이브러리의 파일 접근 함수를 이용하여 로컬 단말기의 기록매체 및 캐시(Cache)를 검색하여 프로그램에서 호출한 호출 대상 파일이 존재하는지 여부를 확인하는 단계; (b) 단계 (a)에서 호출 대상 파일이 존재한다고 판단한 경우 로컬 단말기의 기록매체 또는 캐시에 존재하는 호출 대상 파일이 유효한지 여부를 확인하는 단계; (c) 단계 (a)에서 호출 대상 파일이 존재하지 않는다고 판단하거나 단계 (b)에서 호출 대상 파일이 유효하지 않다고 판단한 경우 적재 모듈은 스트리밍 라이브러리의 파일 접근 함수를 이용하여 스트리밍 서버에 호출 대상 파일을 요청하는 단계; (d) 스트리밍 서버로부터 수신한 호출 대상 파일을 캐시에 저장하는 단계; 및 (e) 캐시를 검색하여 호출 대상 파일을 획득하고, 획득한 호출 대상 파일을 프로그램에 전달하는 단계를 포함하는 것을 특징으로 하는 적재기를 이용하여 실행한 로컬 단말기의 프로그램에서 파일을 호출하는 방법을 제공한다.According to a second object of the present invention, there is provided a method for calling a file in a program of a local terminal executed by using a loader, wherein (a) the loading module of the loader uses a file access function of a streaming library to access a file of a local terminal. Retrieving whether the file to be called by the program exists by searching the recording medium and the cache; (b) if it is determined in step (a) that the call target file exists, checking whether the call target file existing in the recording medium or the cache of the local terminal is valid; (c) If in step (a) it is determined that the called file does not exist or in step (b) it is determined that the called file is not valid, the loading module uses the streaming library's file access function to send the called file to the streaming server. Requesting; (d) storing the call target file received from the streaming server in a cache; And (e) retrieving a cache to obtain a file to be called, and transferring the obtained file to a program, wherein the file is called by a program of a local terminal executed using a loader. to provide.

또한, 본 발명의 제 3 목적에 의하면, 로컬 단말기의 프로그램에 소프트웨어 스트리밍을 제공하는 적재기에 있어서, 프로그램에 대한 프로그램 정보 데이터를 생성하여 스트리밍 서버에 전송하고, 스트리밍 서버로부터 프로그램의 실행에 관련된 파일과 프로그램을 실행하기 위한 실행 파일을 수신하며, 프로그램을 실행하는 중에 파일 접근 함수가 호출되면 파일 접근 함수에 대응하는 소프트웨어 스트리밍 기능을 구비한 소프트웨어 스트리밍 파일 접근 함수가 실행되도록 하는 적재 모듈; 및 파일 접근 함수에 대응하여 소프트웨어 스트리밍 기능을 제공하는 소프트웨어 스트리밍 파일 접근 함수를 저장하고 있는 스트리밍 라이브러리를 포함하는 것을 특징으로 하는 로컬 단말기의 프로그램에 소프트웨어 스트리밍을 제공하는 적재기를 제공한다.According to a third object of the present invention, in a loader that provides software streaming to a program of a local terminal, the program information data for the program is generated and transmitted to a streaming server, and a file related to the execution of the program from the streaming server; A loading module for receiving an executable file for executing a program, and executing a software streaming file access function having a software streaming function corresponding to the file access function when the file access function is called while executing the program; And a streaming library storing a software streaming file access function for providing a software streaming function in response to the file access function.

이하, 본 발명의 바람직한 실시예를 첨부된 도면들을 참조하여 상세히 설명한다. 우선 각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명을 설명함에 있어서, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings. First of all, in adding reference numerals to the components of each drawing, it should be noted that the same reference numerals are used as much as possible even if displayed on different drawings. In addition, in describing the present invention, when it is determined that the detailed description of the related well-known configuration or function may obscure the gist of the present invention, the detailed description thereof will be omitted.

도 1은 본 발명의 바람직한 실시예에 따라 적재기에서 수행되는 함수 시작 지점을 후킹하는 과정을 나타내는 도면이다.1 is a diagram illustrating a process of hooking a function starting point performed in a loader according to a preferred embodiment of the present invention.

본 발명의 바람직한 실시예에 따른 적재기(Loader)는 아래의 표 1에 도시한 ntdll.dll에 정의된 파일 관련 함수들에 대한 함수 시작 지점의 후킹(Hooking)을 실행한다. A loader according to a preferred embodiment of the present invention executes hooking of a function start point for file related functions defined in ntdll.dll shown in Table 1 below.

Function Name  Function Name NtOpenFile NtCreateFile NtClose NtReadFile NtWriteFile   NtOpenFile NtCreateFile NtClose NtReadFile NtWriteFile NtQueryAttributesFile NtQueryInformationFile NtQueryDirectoryFile NtSetInformationFile NtCreateDirectoryObject  NtQueryAttributesFile NtQueryInformationFile NtQueryDirectoryFile NtSetInformationFile NtCreateDirectoryObject NtMapViewOfSection NtUnmapViewOfSection NtCreateSection NtOpenSection NtQuerySection  NtMapViewOfSection NtUnmapViewOfSection NtCreateSection NtOpenSection NtQuerySection

파일을 읽는 기능을 하는 함수들은 그 종류가 매우 다양하지만, 이러한 파일을 읽는 기능을 하는 함수들은 모두 ntdll.dll에 정의된 함수를 통해 구현되므로, 적재기는 ntdll.dll에 정의된 파일 입출력 함수의 시작 지점을 후킹하도록 한다.There are many different types of functions that read files, but all functions that read these files are implemented through functions defined in ntdll.dll, so the loader is the beginning of the file I / O functions defined in ntdll.dll. Hook the point.

본래의 NtReadFile() 함수는 표 1에 도시한 바와 같이 ntdll.dll에 정의된 파일 읽기 함수이고, 프로그램에서 필요한 파일을 읽기 위해서는 NtReadFile() 함수를 이용하여야 한다. The original NtReadFile () function is a file read function defined in ntdll.dll as shown in Table 1, and the NtReadFile () function must be used to read a file required by a program.

본 발명의 바람직한 실시예와 같이 적재기를 이용하여 소프트웨어 스트리밍을 하기 위해서는 적재기를 이용하여 실행하는 프로그램에서 NtReadFile() 함수를 호출하는 경우에 소프트웨어 스트리밍 기능이 있는 NewNtReadFile() 함수가 호출되도록 하여야 하므로, 개발자는 1B와 같이 NtReadFile() 함수의 시작 부분에 "JMP label"을 삽입하고, NewNtReadFile() 함수를 "label"로 정의하도록 한다. 이후 프로그램의 실행 시에 NtReadFile() 함수가 호출되면 기존의 NtReadFile() 함수가 실행되는 시작 부분에서 NewNtReadFile() 함수로 점프하여 NewNtReadFile() 함수를 실행하도록 프로그래밍되어 있기 때문에, 호출된 NtReadFile() 함수는 NewNtReadFile() 함수가 가진 스트리밍 기능을 수행하게 된다.In order to perform software streaming using the loader as in the preferred embodiment of the present invention, when calling the NtReadFile () function in a program executed by the loader, the NewNtReadFile () function having the software streaming function should be called. Inserts "JMP label" at the beginning of NtReadFile () function as in 1B and defines NewNtReadFile () function as "label". When the NtReadFile () function is called at later execution of the program, the NtReadFile () function is called because it is programmed to jump to the NewNtReadFile () function and execute the NewNtReadFile () function at the beginning of the existing NtReadFile () function. Will perform the streaming function of NewNtReadFile () function.

도 1에서는 NtReadFile() 함수를 예를 들어 설명하고 있으나 표 1에 표시된 나머지 함수에 대해서도 동일한 방법으로 스트리밍 기능을 수행하도록 대체 함수를 구성한다.Although FIG. 1 illustrates the NtReadFile () function as an example, the alternative function is configured to perform the streaming function in the same manner with respect to the remaining functions shown in Table 1.

도 2는 본 발명의 바람직한 실시예에 따른 적재기를 이용한 소프트웨어 스트리밍을 제공하는 시스템을 간단하게 나타낸 도면이다. 2 is a simplified diagram of a system for providing software streaming using a loader in accordance with a preferred embodiment of the present invention.

본 발명의 바람직한 실시예에 따른 적재기를 이용한 소프트웨어 스트리밍을 제공하는 시스템은 로컬 단말기 기록매체(210), 적재기(220), 적재 모듈(222), 스트리밍 라이브러리(224), 캐시(Cache)(230) 및 메모리(240)를 포함하는 로컬 단말기(200)와, 인터넷(250)과, 스트리밍 서버 메모리(270), 스트리밍 모듈(272) 및 스트리밍 서버 기록매체(280)를 포함하는 스트리밍 서버(260)를 포함하여 구성된다.A system for providing software streaming using a loader according to a preferred embodiment of the present invention includes a local terminal recording medium 210, a loader 220, a loading module 222, a streaming library 224, and a cache 230. And a streaming server 260 including a local terminal 200 including a memory 240, the Internet 250, a streaming server memory 270, a streaming module 272, and a streaming server recording medium 280. It is configured to include.

본 발명의 바람직한 실시예에 따른 로컬 단말기(200)는 소프트웨어 스트리밍을 위한 적재기(220), 스트리밍 서버(260)로부터 수신한 파일이나 파일 블록을 캐싱하기 위한 캐시(230), 응용 프로그램의 수행에 필요한 실행파일, DLL 파일, 기타 파일 등을 저장하고 있는 로컬 단말기 기록매체(210)를 포함하여 구성되는 데, 본 발명에서 로컬 단말기(200)는 일반적으로 인터넷에 접속 가능한 노트북, 데스크탑 컴퓨터 등의 단말기를 말한다. The local terminal 200 according to the preferred embodiment of the present invention includes a loader 220 for streaming software, a cache 230 for caching a file or file block received from the streaming server 260, and an application program. It comprises a local terminal recording medium 210 that stores an executable file, a DLL file, other files, etc. In the present invention, the local terminal 200 generally includes a terminal such as a laptop, desktop computer, etc. that can be connected to the Internet Say.

본 발명에서 사용자가 프로그램을 실행하기 위하여 적재기(220)를 실행하면 적재기(220)는 메모리(240)에 적재모듈(222)과 스트리밍 라이브러리(224)를 적재하도록 한다. In the present invention, when the user executes the loader 220 to execute the program, the loader 220 loads the loading module 222 and the streaming library 224 in the memory 240.

본 발명의 바람직한 실시예에 따른 적재 모듈(222)은 메모리(222)에 적재된 후 로컬 단말기 기록매체(210)와 캐시(230)를 검색하여 사용자가 실행을 명령한 프로그램에 필요한 파일을 검색하고, 검색된 파일의 정보를 인터넷(250)을 이용하여 스트리밍 서버(260)에 전송하여 검색된 파일이 유효한지 여부를 확인한 후 유효한 경우에는 검색된 파일을 이용하여 프로그램을 실행하고, 유효하지 않은 경우에는 스트리밍 서버(260)에 프로그램의 실행에 필요한 유효한 데이터를 요청한다.The loading module 222 according to the preferred embodiment of the present invention loads the memory 222 and then searches the local terminal recording medium 210 and the cache 230 to search for a file required for a program in which the user commands execution. After transmitting the information of the searched file to the streaming server 260 by using the Internet 250 to check whether the searched file is valid and executing the program using the searched file if it is valid, and if not, the streaming server 260 requests valid data for execution of the program.

적재 모듈(222)은 스트리밍 서버(260)에 사용자가 실행을 명령한 프로그램의 실행 파일을 요청하고, 실행 파일의 요청을 수신한 스트리밍 서버(260)는 실행 파일 중 프로그램의 실행에 관련된 우선 순위에 따라 실행 파일의 데이터를 적재 모듈(222)에 전송하며, 스트리밍 서버(260)로부터 실행 파일을 수신하는 적재 모듈(222)은 스트리밍 서버(260)로부터 전송되는 일부 데이터(이하 '실행 파일 수신 데이터'라 함)를 로컬 단말기 기록매체(210) 또는 캐시(230)에 저장한 후 프로그램의 실행을 진행하며, 실행 파일 수신 데이터를 이용하여 프로그램의 실행을 진행하는 과정에서 스트리밍 서버(260)로부터 수신하지 않은 일부 데이터(이하 '실행 파일 미수신 데이터'라 함)가 호출되는 경우 적재 모듈(222)은 스트리밍 서버(260)에 실행 파일 미수신 데이터에 대한 전송을 요청한다. The loading module 222 requests the streaming server 260 to execute an executable file of a program commanded by the user, and the streaming server 260 receiving the request of the executable file has a priority related to the execution of the program among the executable files. Accordingly, the data of the executable file is transmitted to the loading module 222, and the loading module 222 receiving the executable file from the streaming server 260 may transmit some data transmitted from the streaming server 260 (hereinafter referred to as 'execution file receiving data'). The program is stored in the local terminal recording medium 210 or the cache 230 and the program is executed. The program is not received from the streaming server 260 in the process of executing the program using the executable file reception data. If some data (hereinafter referred to as 'execution unreceived data') is called, the loading module 222 transmits to the streaming server 260 a transmission for the unreceived executable data. It asks.

예를 들어, 프로그램을 실행하는 데 필요한 실행 파일이 A, B, C 및 D의 데이터로 구성되어 있고 A 및 C 데이터가 프로그램의 초기 실행에 필요한 데이터라고 하면 적재기(220)는 적재 모듈(222)을 이용하여 로컬 단말기 기록매체(210) 및 캐시(230)를 검색하여 A 및 C 데이터가 존재하는지 여부를 확인하고, 로컬 단말기 기록매체(210) 또는 캐시(230)에 A 및 C 데이터가 존재하는 경우에는 스트리밍 서버(260)에 A 및 C 데이터에 대한 유효성 여부를 확인(데이터의 버전 등)하며, 유효한 경우에는 A 및 C 데이터를 이용하여 프로그램을 실행하고, 유효하지 않은 경우에는 유효한 A 및 C 데이터를 요청하여 수신한 후 프로그램을 실행한다. A 및 C 데이터를 이용하여 프로그램을 실행하는 중에 프로그램 실행에 있어서 B 또는 D 데이터가 필요한 경우에 적재 모듈(222)은 로컬 단말기 기록매체(210) 및 캐시(230)를 검색하여 B 또는 D 데이터가 존재하는지 여부를 확인하고, 로컬 단말기 기록매체(210) 또는 캐시(230)에 B 및 D 데이터가 존재하는 경우에는 스트리밍 서버(260)에 B 및 D 데이터에 대한 유효성 여부를 확인(데이터의 버전 등)하며, 유효한 경우에는 B 및 D 데이터를 이용하여 프로그램을 실행한다. For example, if the executable file required to execute the program is composed of data of A, B, C, and D, and the A and C data are data necessary for the initial execution of the program, the loader 220 may load the module 222. Search whether the A and C data exist by searching the local terminal recording medium 210 and the cache 230, and the A and C data exist in the local terminal recording medium 210 or the cache 230. In the case of checking the validity of the A and C data to the streaming server 260 (version of the data, etc.), and if it is valid, the program is executed using the A and C data, and if it is not valid, the valid A and C data. Run the program after requesting and receiving the data. If B or D data is needed to execute a program while executing a program using A and C data, the loading module 222 may search the local terminal recording medium 210 and the cache 230 to store the B or D data. Check whether the B and D data exists in the local terminal recording medium 210 or the cache 230, and check the validity of the B and D data in the streaming server 260 (version of data, etc.). If valid, the program is executed using B and D data.

또한, 적재 모듈(222)은 실행 파일 수신 데이터를 이용하여 프로그램의 실행을 진행하는 과정에서 파일 접근 함수가 호출되면 스트리밍 라이브러리(224)를 통하여 호출된 파일 접근 함수에 대응하는 소프트웨어 스트리밍 기능을 제공하는 소프트웨어 스트리밍 파일 접근 함수가 실행되도록 한다.In addition, the loading module 222 provides a software streaming function corresponding to the file access function called through the streaming library 224 when the file access function is called in the process of executing the program using the execution file reception data. Causes the software streaming file access function to run.

본 발명에서는 적재 모듈(222)이 프로그램의 실행에 필요한 실행 파일을 스트리밍 서버(260)에 요청하기 전에 로컬 단말기 기록매체(210) 및 캐시(230)에 실행 파일이 존재하는지 여부를 확인하도록 설명하고 있으나 이 과정을 생략하고 필요한 실행 파일을 스트리밍 서버(260)에 바로 요청하는 것도 가능하다.In the present invention, the loading module 222 checks whether the executable file exists in the local terminal recording medium 210 and the cache 230 before requesting the streaming server 260 for the executable file required to execute the program. However, it is also possible to omit this process and directly request the required execution file to the streaming server 260.

본 발명의 바람직한 실시예에 따른 스트리밍 라이브러리(224)는 ntdll.dll에 정의된 파일 접근 함수와 일대일 대응하는 소프트웨어 스트리밍 기능을 제공하는 새로운 파일 접근 함수를 저장하고 있고, 프로그램을 실행하는 중에 파일 접근 함수가 호출되면 적재 모듈(222)에 호출된 파일 접근 함수에 대응하는 소프트웨어 스트리밍 파일 접근 함수를 제공한다. The streaming library 224 according to the preferred embodiment of the present invention stores a new file access function that provides a software streaming function that has a one-to-one correspondence with the file access function defined in ntdll.dll, and the file access function while executing a program. Is called, it provides a loading module 222 with a software streaming file access function corresponding to the called file access function.

스트리밍 서버(260)는 스트리밍 서버 메모리(270), 스트리밍 모듈(272) 및 스트리밍 서버 기록매체(280)를 포함하여 구성되는 데, 스트리밍 모듈(272)은 스트리밍 서버 메모리(270)에 위치하여 적재 모듈(222)로부터 사용자가 실행을 명령한 프로그램의 실행 파일에 대한 요청이 있는 경우에 스트리밍 서버 기록매체(280)로부터 실행 파일을 검색하여 획득하고, 획득한 실행 파일을 적재 모듈(222)에 전송한다. The streaming server 260 is configured to include a streaming server memory 270, a streaming module 272 and a streaming server recording medium 280, the streaming module 272 is located in the streaming server memory 270 to load module If there is a request for an executable file of a program commanded by the user from 222, the executable file is retrieved and acquired from the streaming server recording medium 280, and the obtained executable file is transmitted to the loading module 222. .

또한, 스트리밍 모듈(272)은 적재 모듈(222)이 획득한 파일의 정보를 이용하여 로컬 단말기 기록매체(210) 또는 캐시(230)에 존재하는 파일이 유효한지 여부를 적재 모듈(222)에 알려준다.In addition, the streaming module 272 informs the loading module 222 whether a file existing in the local terminal recording medium 210 or the cache 230 is valid by using the information of the file acquired by the loading module 222. .

도 3은 본 발명의 바람직한 실시예에 따른 프로그램 실행시에 적재기를 이용한 소프트웨어 스트리밍을 제공하는 과정을 나타낸 순서도이다. 3 is a flowchart illustrating a process of providing software streaming using a loader when executing a program according to a preferred embodiment of the present invention.

먼저 사용자는 로컬 단말기(200)에서 실행하고자 하는 프로그램을 선택한 후 적재기(220)를 구동하면 적재기(220)가 메모리(240)에 적재 모듈(222) 및 스트리밍 라이브러리(224)를 적재한다(S300).First, when a user selects a program to be executed in the local terminal 200 and drives the loader 220, the loader 220 loads the loading module 222 and the streaming library 224 into the memory 240 (S300). .

본 발명에서 사용자가 실행하고자 하는 프로그램은 사용자가 실행을 선택하면 적재기(220)를 호출하도록 구성되어 있다. In the present invention, the program that the user intends to execute is configured to call the loader 220 when the user selects execution.

메모리(240)에 적재 모듈(222)이 적재되면 적재 모듈(222)은 스트리밍 서버(260)에 실행할 프로그램에 대한 정보를 포함한 프로그램 정보 데이터를 전송한다(S302).When the loading module 222 is loaded in the memory 240, the loading module 222 transmits program information data including information about a program to be executed to the streaming server 260 (S302).

적재 모듈(222)로부터 프로그램 정보 데이터를 수신한 스트리밍 서버(260)는 스트리밍 모듈(272)을 이용하여 프로그램 정보 데이터에 포함된 프로그램에 대한 정보를 획득하고, 획득한 프로그램에 대한 정보를 바탕으로 프로그램의 실행에 관련된 파일에 대한 정보를 적재 모듈(222)에 전송한다(S304).The streaming server 260 receiving the program information data from the loading module 222 acquires information about a program included in the program information data using the streaming module 272, and based on the obtained information about the program Information about the file related to the execution of the data is transmitted to the loading module 222 (S304).

스트리밍 서버(260)로부터 프로그램의 실행에 관련된 파일에 대한 정보를 수신한 적재 모듈(222)이 로컬 단말기 기록매체(210)와 캐시(230)를 검색하여 프로그램의 실행에 관련된 파일이 존재하는지 여부를 확인한다(S306).The loading module 222, which has received information on a file related to the execution of the program from the streaming server 260, searches the local terminal recording medium 210 and the cache 230 to determine whether a file related to the execution of the program exists. Check (S306).

단계 S306에서 로컬 단말기 기록매체(210) 또는 캐시(230)에 프로그램의 실행에 관련된 파일이 존재한다고 판단한 경우에는 적재 모듈(222)은 로컬 단말기 기록매체(210) 또는 캐시(230)에 존재하는 프로그램의 실행에 관련된 파일에 대한 프로그램 파일 정보 데이터(예를 들어, 각 파일의 버전 정보, 갱신 일자 등)를 스트리밍 서버(260)의 스트리밍 모듈(272)에 전송한다(S308).If it is determined in step S306 that the file associated with the execution of the program exists in the local terminal recording medium 210 or cache 230, the loading module 222 is a program existing in the local terminal recording medium 210 or cache 230 Program file information data (for example, version information of each file, an update date, etc.) for a file related to execution of the data is transmitted to the streaming module 272 of the streaming server 260 (S308).

프로그램 파일 정보 데이터를 수신한 스트리밍 모듈(272)은 프로그램의 실행에 관련된 파일이 유효한지 여부를 확인한다(S310).The streaming module 272 which has received the program file information data checks whether a file related to execution of a program is valid (S310).

예를 들어, 사용자가 실행을 요청한 프로그램은 그 실행을 위한 실행 파일과 프로그램의 실행에 관련된 파일이 1.01의 버전(Version)이고 스트리밍 서버(260)에 저장된 실행 파일과 프로그램의 실행에 관련된 파일은 1.02의 버전인 경우에 적재 모듈(222)에서 전송한 프로그램 파일 정보 데이터에는 버전 정보가 1.01이므로 스트리밍 서버(260)는 적재 모듈(222)에 적재 모듈(222)에서 전송한 프로그램 파일 정보 데이터에서 버전 정보를 추출하여 유효성 여부를 확인하는 것이다.For example, a program requested by a user to execute is an executable file for execution and a file related to the execution of the program, and a file related to the execution file and the execution file stored in the streaming server 260 is 1.02. Since the version information is 1.01 in the program file information data transmitted from the stacking module 222 in the case of the version of, the streaming server 260 sends the version information from the program file information data transmitted from the stacking module 222 to the stacking module 222. Is to check the validity by extracting.

단계 S310에서 프로그램의 실행에 관련된 파일이 유효하지 않은 경우 스트리밍 모듈(272)은 스트리밍 서버 기록매체(280)를 검색하여 프로그램의 실행에 관련된 파일을 획득하여 적재 모듈(222)에 전송하고, 적재 모듈(222)은 수신한 프로그램의 실행에 관련된 파일을 로컬 단말기 기록매체(210) 또는 캐시(230)에 저장한다(S312).If the file associated with the execution of the program is not valid in step S310, the streaming module 272 searches the streaming server recording medium 280 to obtain a file related to the execution of the program and transmits the file to the loading module 222, loading module In operation S312, the file related to the execution of the received program is stored in the local terminal recording medium 210 or the cache 230.

단계 S306에서 로컬 단말기 기록매체(210) 또는 캐시(230)에 프로그램의 실행에 관련된 파일이 존재하지 않는다고 판단한 경우에는 적재 모듈(222)이 프로그램의 실행에 관련된 파일을 스트리밍 서버(260)에 요청하고, 스트리밍 모듈(272)은 스트리밍 서버 기록매체(280)를 검색하여 프로그램의 실행에 관련된 파일을 획득하여 적재 모듈(222)에 전송하며, 적재 모듈(222)은 수신한 프로그램의 실행에 관련된 파일을 로컬 단말기 기록매체(210) 또는 캐시(230)에 저장한다(S314).If it is determined in step S306 that the file related to the execution of the program does not exist in the local terminal recording medium 210 or the cache 230, the loading module 222 requests the streaming server 260 to request the file related to the execution of the program. The streaming module 272 searches the streaming server recording medium 280 to obtain a file related to the execution of the program and transmits the file to the loading module 222, and the loading module 222 sends the file related to the execution of the received program. The local terminal is stored in the recording medium 210 or the cache 230 (S314).

적재 모듈(222)은 프로그램을 실행하기 위하여 스트리밍 서버(260)에 실행 파일을 요청한다(S316).The loading module 222 requests the executable file from the streaming server 260 to execute the program (S316).

적재 모듈(222)로부터 실행 파일의 요청을 수신한 스트리밍 모듈(272)은 프로그램의 실행에 필요한 우선 순위를 바탕으로 스트리밍 서버 기록매체(280)로부터 실행 파일 중 일부 데이터를 획득하여 적재 모듈(222)에 전송한다(S318).The streaming module 272 receiving the request of the executable file from the loading module 222 acquires some data of the executable file from the streaming server recording medium 280 based on the priority required for executing the program, and loads the loading module 222. It transmits to (S318).

스트리밍 모듈(272)로부터 실행 파일 중 일부 데이터를 수신한 적재 모듈(222)은 수신한 일부 데이터(이하 '실행 파일 수신 데이터'라 함)를 이용하여 프로그램을 실행하는 중에 실행 파일 중 수신하지 않은 데이터(이하 '실행 파일 미수신 데이터'라 함)를 요청하는 신호가 생성되었는지 여부와 파일 접근 함수가 호출되었는지 여부를 확인한다(S320).The loading module 222, which has received some data of the executable file from the streaming module 272, uses the received data (hereinafter referred to as 'executable file reception data') to execute data that is not received among the executable files. It is checked whether a signal for requesting (hereinafter, referred to as 'execution file not received data') and whether a file access function is called (S320).

일반적으로 실행 파일은 다수 개의 데이터를 포함하고 있고, 실행 파일에 포함된 다수 개의 데이터는 프로그램을 실행함에 있어서 모두 필요한 것이 아니라 일부만이 필요하므로 본 발명에서는 소프트웨어 스트리밍의 목적에 부합하기 위하여 실행 파일을 전부 수신하는 것이 아니라 프로그램의 실행에 필요한 일부만을 선택적으로 우선 수신하고, 필요에 따라 수신하지 않은 데이터를 수신하는 것으로 설명하고 있다. In general, an executable file includes a plurality of data, and a plurality of data included in the executable file are not all necessary for executing a program, but only a part of them. Instead of receiving the data, only the parts necessary for the execution of the program are selectively received first, and the unreceived data is received if necessary.

또한, 설명의 편의를 위하여 실행 파일 중 프로그램의 실행을 위하여 수신한 일부 데이터를 실행 파일 수신 데이터라 하고, 실행 파일에 포함된 데이터이나 로컬 단말기(200)에 저장되어 있지 않은 실행 파일의 일부 데이터를 실행 파일 미수신 데이터라 하기로 한다. In addition, for convenience of description, some data received for execution of the program among the executable files are called executable file reception data, and data included in the executable file or partial data of the executable file not stored in the local terminal 200 may be used. This is referred to as executable file unreceived data.

단계 S320에서 실행 파일 미수신 데이터를 요청하는 신호가 생성되었다고 판단한 경우 적재기(220)는 적재 모듈(222)을 이용하여 스트리밍 모듈(272)에 실행 파일 미수신 데이터를 요청하고, 스트리밍 모듈(272)은 스트리밍 서버 기록매체(280)로부터 실행 파일 미수신 데이터를 획득하여 적재 모듈(222)에 전송하며, 적재 모듈(222)은 스트리밍 모듈(272)이 전송한 실행 파일 미수신 데이터를 로컬 단말기 기록매체(210) 또는 캐시(230)에 저장한다(S322).If it is determined in step S320 that a signal for requesting the executable file unreceived data is generated, the loader 220 requests the executable file unreceived data from the streaming module 272 using the loading module 222, and the streaming module 272 streams the received file. Acquire the execution file unreceived data from the server recording medium 280 and transmit it to the loading module 222, the loading module 222 transmits the execution file unreceived data transmitted by the streaming module 272 to the local terminal recording medium 210 or The cache is stored in the 230 (S322).

단계 S320에서 실행 파일 수신 데이터를 이용하여 프로그램을 실행하는 중에 파일 접근 함수가 호출되었다고 판단한 경우 적재기(220)는 스트리밍 라이브러리(224)로부터 호출된 파일 접근 함수에 대응하는 소프트웨어 스트리밍 기능을 위한 소프트웨어 스트리밍 파일 접근 함수를 획득하여 실행되도록 한다(S324).If it is determined in step S320 that the file access function is called while executing the program using the executable file reception data, the loader 220 loads the software streaming file for the software streaming function corresponding to the file access function called from the streaming library 224. The access function is acquired and executed (S324).

본 발명에서 호출된 파일 접근 함수에 대응하는 소프트웨어 스트리밍 파일 접근 함수의 동작 과정은 도 1을 통하여 전술한 바와 같다. The operation of the software streaming file access function corresponding to the file access function called in the present invention is as described above with reference to FIG. 1.

본 발명에서는 적재기(220)가 로컬 단말기 기록매체(210)에 저장되어 있는 것으로 설명하고 있으나 사용자가 인터넷(250)을 통하여 소프트웨어 스트리밍을 제공하는 스트리밍 서버(260)에 접속하여 최초 프로그램을 실행하고자 하는 경우에는 스트리밍 서버(260)에서 적재기(220)를 로컬 단말기(200)에 먼저 전송한 후 프로그램을 실행하도록 하는 것이 바람직하다. In the present invention, the loader 220 is described as being stored in the local terminal recording medium 210, but the user wants to execute the first program by accessing the streaming server 260 that provides software streaming through the Internet 250. In this case, it is preferable that the streaming server 260 transmits the loader 220 to the local terminal 200 first, and then executes the program.

도 4는 본 발명의 바람직한 실시예에 따른 적재기에서 소프트웨어 스트리밍을 이용하여 파일을 호출하는 과정을 나타낸 순서도이다.4 is a flowchart illustrating a process of calling a file using software streaming in a loader according to a preferred embodiment of the present invention.

사용자가 실행한 프로그램에서 파일 읽기를 하는 경우 적재 모듈(222)은 스트리밍 라이브러리(224)에 저장된 소프트웨어 스트리밍 기능을 위한 파일 읽기 함수를 호출한다(S400).When a file is read by a program executed by a user, the loading module 222 calls a file reading function for a software streaming function stored in the streaming library 224 (S400).

적재 모듈(222)은 스트리밍 라이브러리(224)의 파일 읽기 함수를 이용하여 프로그램에서 파일 읽기를 요청한 호출 대상 파일이 로컬 단말기 기록매체(210) 또는 캐시(230)에 존재하는지 여부를 확인한다(S402).The loading module 222 uses the file reading function of the streaming library 224 to check whether a call target file that has requested a file reading from the program exists in the local terminal recording medium 210 or the cache 230 (S402). .

단계 S402에서 호출 대상 파일이 존재한다고 판단한 경우 로컬 단말기 기록매체(210)에 존재하는 호출 대상 파일이 유효한지 여부를 확인한다(S404).If it is determined in step S402 that the call target file exists, it is checked whether the call target file existing in the local terminal recording medium 210 is valid (S404).

단계 S404에서 로컬 단말기 기록매체(210) 또는 캐시(230)에 존재하는 호출 대상 파일이 유효하다고 판단한 경우 적재 모듈(222)은 스트리밍 라이브러리(224)의 파일 읽기 함수를 이용하여 호출 대상 파일을 사용자가 실행한 프로그램에 전달한다(S406).If it is determined in step S404 that the call target file existing in the local terminal recording medium 210 or the cache 230 is valid, the loading module 222 uses the file reading function of the streaming library 224 to display the call target file. The program is transmitted to the executed program (S406).

단계 S402에서 로컬 단말기 기록매체(210) 또는 캐시(230)에 호출 대상 파일이 존재하지 않는다고 판단하거나 단계 S404에서 로컬 단말기 기록매체(210) 또는 캐시(230)에 존재하는 호출 대상 파일이 유효하지 않다고 판단한 경우 적재 모듈(222)은 스트리밍 라이브러리(224)의 파일 읽기 함수를 이용하여 스트리밍 서버(260)에 호출 대상 파일을 요청한다(S408).In step S402, it is determined that the call destination file does not exist in the local terminal recording medium 210 or the cache 230, or in step S404 that the call destination file that exists in the local terminal recording medium 210 or the cache 230 is invalid. If it is determined, the loading module 222 requests the call target file from the streaming server 260 using the file reading function of the streaming library 224 (S408).

스트리밍 모듈(272)은 스트리밍 서버 기록매체(280)로부터 호출 대상 파일을 검색하여 획득하고, 획득한 호출 대상 파일을 로컬 단말기(200)의 적재 모듈(222)에 전송한다(S410).The streaming module 272 retrieves and obtains a call target file from the streaming server recording medium 280, and transmits the obtained call target file to the loading module 222 of the local terminal 200 (S410).

적재 모듈(222)은 수신한 호출 대상 파일을 캐시(230)에 저장하고, 스트리밍 라이브러리(224)의 파일 읽기 함수를 이용하여 캐시(230)를 검색하여 호출 대상 파일을 획득하며, 획득한 호출 대상 파일을 사용자가 실행하는 프로그램에 전달한다(S412).The loading module 222 stores the received call target file in the cache 230, searches the cache 230 using the file reading function of the streaming library 224, obtains the call target file, and obtains the call target The file is transferred to a program executed by the user (S412).

본 발명에서는 스트리밍 서버(260)로부터 수신한 호출 대상 파일을 캐시(230)에 저장하는 것으로 설명하고 있으나 로컬 단말기 기록매체(210)에 저장하는 것도 가능하다.Although the present invention has been described as storing the call target file received from the streaming server 260 in the cache 230, it is also possible to store in the local terminal recording medium 210.

도 5는 본 발명의 바람직한 실시예에 따른 스트리밍 라이브러리를 이용하여 미리 읽기 기능을 제공하는 과정을 나타낸 순서도이다.5 is a flowchart illustrating a process of providing a read ahead function using a streaming library according to a preferred embodiment of the present invention.

본 발명에서 적재기(220)는 로컬 단말기(200)의 CPU, I/O, 네트워크 사용량 등을 감시하는 기능을 포함한다.In the present invention, the loader 220 includes a function of monitoring CPU, I / O, network usage, etc. of the local terminal 200.

먼저 적재기는 적재 모듈(222)을 이용하여 로컬 단말기(200)의 상태를 주기적으로 파악하여 로컬 단말기(200)가 유휴 상태에 있는지 여부를 확인한다(S500).First, the loader checks periodically the state of the local terminal 200 using the loading module 222 to determine whether the local terminal 200 is in an idle state (S500).

본 발명에서 로컬 단말기(200)가 유휴 상태의 판단 여부는 로컬 단말기(200) CPU의 동작 여부, I/O의 사용 여부 및 네트워크 사용량이 일정량 이하인지 여부를 확인하여 결정할 수 있다. In the present invention, whether the local terminal 200 determines the idle state may be determined by checking whether the local terminal CPU operates, whether I / O is used, and whether the network usage is less than a predetermined amount.

예를 들어, 로컬 단말기(200)의 CPU가 동작하기 않는 경우, I/O가 사용되지 않는 경우, 네트워크 사용량이 일정량 이하인 경우 중 어느 하나 이상인 경우에 로컬 단말기(200)가 유휴 상태에 있다고 판단할 수도 있고, 세 가지 조건을 모두 충족하는 경우에 로컬 단말기(200)가 유휴 상태에 있다고 판단하는 것도 가능하다. For example, if the CPU of the local terminal 200 does not operate, I / O is not used, it is determined that the local terminal 200 is idle when one or more of the network usage is a certain amount or less. Alternatively, when all three conditions are met, it is possible to determine that the local terminal 200 is in an idle state.

단계 S500에서 로컬 단말기(200)가 유휴 상태에 있다고 판단한 경우 적재기(220)는 적재 모듈(222)을 이용하여 스트리밍 서버(260)에 로컬 단말기(200)가 유휴 상태임을 알린다(S502).If it is determined in step S500 that the local terminal 200 is in the idle state, the loader 220 notifies the streaming server 260 that the local terminal 200 is in the idle state using the loading module 222 (S502).

스트리밍 서버(250)는 로컬 단말기(200)에 존재하지 않는 파일 중에서 로컬 단말기(200)에서 실행되는 프로그램에서 가장 필요로 할 것으로 예상되는 순서에 따라 파일을 전송한다(S504).The streaming server 250 transmits the files in the order expected to be most needed in the program executed in the local terminal 200 among the files that do not exist in the local terminal 200 (S504).

본 발명에서 로컬 단말기(200)에서 실행되는 프로그램에서 가장 필요로 할 것으로 예상되는 순서는 로컬 단말기(200)에서 실행되는 프로그램에 따라 다르다. In the present invention, the order expected to be most necessary in the program executed in the local terminal 200 depends on the program executed in the local terminal 200.

예를 들어, RPG 게임을 사용자가 이용하는 경우에 사용자에게 전송한 마지막 지도 데이터 파일을 스트리밍 서버(260)는 파악하고 있으므로, 그 다음의 지도 데이터 파일이 가장 필요로 할 것으로 예상될 수도 있고, 사용자가 이용하는 지도 데이터 파일에 이벤트가 존재하는 경우에는 이벤트 실행을 위한 데이터 파일이 가장 필요로 할 것으로 예상될 수도 있다. 즉, 각각의 프로그램을 실행하는 데 있어서, 로컬 단말기(200)에 마지막으로 전송한 파일 이후에 프로그램에서 필요할 것으로 판단되는 파일을 최우선적으로 전송하는 것이다.For example, when the user uses an RPG game, the streaming server 260 knows the last map data file sent to the user, so the next map data file may be expected to be most needed. If an event exists in the map data file to be used, it may be expected that the data file for event execution is most needed. That is, in executing each program, the file which is determined to be necessary in the program after the last file transmitted to the local terminal 200 is transmitted first.

적재기(220)는 적재 모듈(222)을 이용하여 수신한 파일을 캐시(230)에 저장한다(S506).The loader 220 stores the file received using the loading module 222 in the cache 230 (S506).

이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.The above description is merely illustrative of the technical idea of the present invention, and those skilled in the art to which the present invention pertains may make various modifications and changes without departing from the essential characteristics of the present invention. Therefore, the embodiments disclosed in the present invention are not intended to limit the technical idea of the present invention but to describe the present invention, and the scope of the technical idea of the present invention is not limited by these embodiments. The scope of protection of the present invention should be interpreted by the following claims, and all technical ideas within the scope equivalent thereto should be construed as being included in the scope of the present invention.

이상에서 설명한 바와 같이 본 발명에 의하면, 로컬 단말기의 운영 시스템(OS: Operating System)을 통하지 않고 적재기를 이용하여 프로그램을 실행시킴 으로써, 프로그램의 복제 또는 변조를 방지하는 효과가 있고, ntdll.dll 파일에 정의된 파일 접근 함수의 시작 지점을 후킹(Hooking)함으로써, 함수의 주소를 그대로 보존한 채로 함수들을 치환하므로 소프트웨어 스트리밍을 위한 프로그램의 추가적인 수정 작업이 없는 편리함을 제공하는 효과가 있다.As described above, according to the present invention, by executing a program using a loader without using an operating system (OS) of a local terminal, there is an effect of preventing the copying or tampering of the program, and the ntdll.dll file By hooking the starting point of the file access function defined in, the functions are replaced while preserving the address of the function, thereby providing convenience without additional modification of the program for software streaming.

Claims (13)

로컬 단말기의 메모리에 로딩한 적재 모듈 및 스트리밍 라이브러리를 포함한 적재기를 이용하여 프로그램을 실행하는 방법에 있어서, In the method for executing a program using a loader including a loading module and a streaming library loaded in the memory of the local terminal, (a) 상기 적재 모듈을 이용하여 상기 프로그램의 실행에 관련된 파일에 대한 프로그램 파일 정보 데이터를 스트리밍 서버의 스트리밍 모듈에 전송하는 단계; (a) transmitting the program file information data on the file related to the execution of the program to the streaming module of the streaming server using the loading module; (b) 상기 스트리밍 서버에 상기 프로그램의 실행을 위한 실행 파일을 요청하는 단계; (b) requesting an executable file for executing the program from the streaming server; (c) 상기 스트리밍 모듈로부터 수신한 상기 실행 파일 중 일부 데이터(이하 '실행 파일 수신 데이터'라 함)를 수신하여 실행하는 중에 상기 실행 파일로부터 상기 실행 파일 중 수신하지 않은 일부 데이터(이하 '실행 파일 미수신 데이터'라 함)를 요청하는 신호가 생성되었는지 여부와 파일 접근 함수가 호출되었는지 여부를 확인하는 단계; (c) some data not received from the executable file (hereinafter referred to as' executable file) from the executable file while receiving and executing some data (hereinafter referred to as' executable file reception data ') of the executable file received from the streaming module; Determining whether a signal for requesting unreceived data 'is generated and whether a file access function has been called; (d) 상기 단계 (c)에서 상기 실행 파일로부터 상기 실행 파일 미수신 데이터를 요청하는 신호가 생성되었다고 판단한 경우 상기 적재 모듈을 이용하여 상기 스트리밍 모듈에 상기 실행 파일 미수신 데이터를 요청하여 수신하는 단계; 및 (d) requesting and receiving the executable file unreceived data from the streaming module using the loading module when determining that a signal for requesting the executable file unreceived data is generated from the executable file in step (c); And (e) 상기 단계 (c)에서 상기 실행 파일로부터 상기 파일 접근 함수가 호출되었다고 판단한 경우에 상기 파일 접근 함수에 대응하는 상기 스트리밍 라이브러리에 저장된 소프트웨어 스트리밍 기능을 위한 파일 접근 함수가 실행되도록 하는 단계(e) causing the file access function for the software streaming function stored in the streaming library corresponding to the file access function to be executed when it is determined in step (c) that the file access function is called from the executable file; 를 포함하는 것을 특징으로 하는 로컬 단말기의 메모리에 로딩한 적재 모듈 및 스트리밍 라이브러리를 포함한 적재기를 이용하여 프로그램을 실행하는 방법.Method for executing a program using a loader including a loading module and a streaming library loaded in the memory of the local terminal comprising a. 제 1 항에 있어서, 상기 단계 (a)는, The method of claim 1, wherein step (a) comprises: (a1) 상기 적재 모듈은 상기 스트리밍 서버에 상기 프로그램 정보 데이터를 전송하는 단계; (a1) the loading module transmitting the program information data to the streaming server; (a2) 상기 스트리밍 서버가 상기 프로그램 정보 데이터를 바탕으로 상기 프로그램의 실행에 관련된 파일에 대한 정보를 상기 적재 모듈에 전송하는 단계; (a2) the streaming server transmitting information on a file related to execution of the program to the loading module based on the program information data; (a3) 상기 적재 모듈이 상기 로컬 단말기의 기록매체와 캐시(Cache)를 검색하여 상기 프로그램의 실행에 관련된 파일이 존재하는지 여부를 확인하는 단계; (a3) checking, by the loading module, whether a file related to execution of the program exists by searching a recording medium and a cache of the local terminal; (a4) 상기 단계 (a3)에서 상기 로컬 단말기의 기록매체 또는 캐시에 상기 프로그램의 실행에 관련된 파일이 존재하지 않는다고 판단한 경우 상기 적재 모듈은 상기 스트리밍 서버에 상기 프로그램의 실행에 관련된 파일을 요청하여 수신하는 단계; (a4) If it is determined in step (a3) that the file related to the execution of the program does not exist in the recording medium or the cache of the local terminal, the loading module requests and receives the file related to the execution of the program from the streaming server. Doing; (a5) 상기 단계 (a3)에서 상기 로컬 단말기의 기록매체 또는 캐시에 상기 프로그램의 실행에 관련된 파일이 존재한다고 판단한 경우에 상기 적재 모듈은 상기 로컬 단말기의 기록매체 또는 캐시에 존재하는 프로그램의 실행에 관련된 파일에 대한 프로그램 파일 정보 데이터를 상기 스트리밍 모듈에 전송하는 단계; (a5) If it is determined in step (a3) that a file related to the execution of the program exists in the recording medium or the cache of the local terminal, the loading module is configured to execute the program existing in the recording medium or the cache of the local terminal. Transmitting program file information data for a related file to the streaming module; (a6) 상기 프로그램 정보 데이터를 수신한 상기 스트리밍 모듈이 상기 프로그램의 실행에 관련된 파일이 유효한지 여부를 확인하는 단계; (a6) checking, by the streaming module, having received the program information data, whether a file related to execution of the program is valid; (a7) 상기 단계 (a6)에서 상기 프로그램의 실행에 관련된 파일이 유효하다고 판단한 경우 상기 스트리밍 모듈은 상기 적재 모듈에 상기 프로그램의 실행에 관련된 파일이 유효함을 전송하는 단계; 및(a7) if it is determined in step (a6) that the file related to the execution of the program is valid, the streaming module transmits to the loading module that the file related to the execution of the program is valid; And (a8) 상기 단계 (a6)에서 상기 프로그램의 실행에 관련된 파일이 유효하지 않다고 판단한 경우 상기 스트리밍 모듈은 스트리밍 서버 기록매체를 검색하여 유효한 프로그램의 실행에 관련된 파일을 획득하여 상기 적재 모듈에 전송하는 단계(a8) if it is determined in step (a6) that the file related to the execution of the program is not valid, the streaming module searches for a streaming server recording medium and obtains a file related to the execution of the valid program and transmits the file to the loading module. 를 포함하는 것을 특징으로 하는 로컬 단말기의 메모리에 로딩한 적재 모듈 및 스트리밍 라이브러리를 포함한 적재기를 이용하여 프로그램을 실행하는 방법.Method for executing a program using a loader including a loading module and a streaming library loaded in the memory of the local terminal comprising a. 제 1 항에 있어서, 상기 단계 (b)는, The method of claim 1, wherein step (b) comprises: (b1) 상기 적재 모듈이 상기 프로그램을 실행하기 위하여 상기 프로그램의 실행을 위한 상기 실행 파일이 상기 로컬 단말기의 기록매체 및 캐시에 존재하는지 여부를 확인하는 단계;(b1) checking, by the loading module, whether the executable file for executing the program exists in the recording medium and the cache of the local terminal in order to execute the program; (b2) 상기 단계 (b1)에서 상기 로컬 단말기의 기록매체 또는 캐시에 상기 실행 파일이 존재하지 않는다고 판단한 경우 상기 적재 모듈은 상기 스트리밍 서버에 상기 실행 파일을 요청하는 단계; (b2) if it is determined in step (b1) that the executable file does not exist in the recording medium or the cache of the local terminal, the loading module requests the executable file from the streaming server; (b3) 상기 단계 (b1)에서 상기 로컬 단말기의 기록매체 또는 캐시에 상기 실행 파일이 존재한다고 판단한 경우에 상기 적재 모듈은 상기 로컬 단말기의 기록매체 또는 캐시에 존재하는 실행 파일에 대한 실행 파일 정보 데이터를 상기 스트리밍 모듈에 전송하는 단계; (b3) when it is determined in step (b1) that the executable file exists in the recording medium or the cache of the local terminal, the loading module executes the file information data of the executable file existing in the recording medium or the cache of the local terminal. Transmitting to the streaming module; (b4) 상기 실행 파일 정보 데이터를 수신한 상기 스트리밍 모듈이 상기 실행 파일이 유효한지 여부를 확인하는 단계; (b4) checking whether the executable file is valid by the streaming module receiving the executable file information data; (b5) 상기 단계 (b4)에서 상기 실행 파일이 유효하다고 판단한 경우 상기 스트리밍 모듈은 상기 적재 모듈에 상기 실행 파일이 유효함을 전송하는 단계; 및(b5) if the executable file is determined to be valid in the step (b4), the streaming module transmitting the validity of the executable file to the loading module; And (b6) 상기 단계 (b4)에서 상기 실행 파일이 유효하지 않다고 판단한 경우 상기 스트리밍 모듈은 스트리밍 서버 기록매체를 검색하여 유효한 실행 파일을 획득하여 상기 적재 모듈에 전송하는 단계(b6) if it is determined in step (b4) that the executable file is not valid, the streaming module searches for a streaming server recording medium, obtains a valid executable file, and transmits it to the loading module 를 포함하는 것을 특징으로 하는 로컬 단말기의 메모리에 로딩한 적재 모듈 및 스트리밍 라이브러리를 포함한 적재기를 이용하여 프로그램을 실행하는 방법.Method for executing a program using a loader including a loading module and a streaming library loaded in the memory of the local terminal comprising a. 제 1 항에 있어서, 상기 프로그램 파일 정보 데이터는, The method of claim 1, wherein the program file information data, 상기 프로그램의 실행에 관련된 파일의 크기, 수정 일자 및 버전의 정보를 포함하는 것을 특징으로 하는 로컬 단말기의 메모리에 로딩한 적재 모듈 및 스트리밍 라이브러리를 포함한 적재기를 이용하여 프로그램을 실행하는 방법.A method of executing a program using a loader including a loading module and a streaming library loaded in a memory of a local terminal, comprising information on a file size, a modification date, and a version related to the execution of the program. 제 1 항에 있어서, 상기 파일 접근 함수는, The method of claim 1, wherein the file access function, ntdll.dll 파일에 정의된 함수 중 파일을 읽기 위하여 실행되는 함수인 것을 특징으로 하는 로컬 단말기의 메모리에 로딩한 적재 모듈 및 스트리밍 라이브러리를 포함한 적재기를 이용하여 프로그램을 실행하는 방법.A method for executing a program using a loader including a loading module and a streaming library loaded in a memory of a local terminal, the function being executed to read a file among the functions defined in the ntdll.dll file. 제 1 항에 있어서, 상기 스트리밍 라이브러리는, The method of claim 1, wherein the streaming library, 상기 파일 접근 함수와 일대일 대응하는 소프트웨어 스트리밍 기능을 구비한 새로운 파일 접근 함수를 저장하고 있는 것을 특징으로 하는 로컬 단말기의 메모리에 로딩한 적재 모듈 및 스트리밍 라이브러리를 포함한 적재기를 이용하여 프로그램을 실행하는 방법.And a new file access function having a software streaming function that has a one-to-one correspondence with the file access function, and executing a program using a loader including a loading module and a streaming library loaded in a memory of a local terminal. 제 1 항에 있어서, 상기 적재기는, According to claim 1, The loader is, 상기 로컬 단말기의 사용자가 상기 프로그램의 실행을 명령하면 상기 적재 모듈 및 상기 스트리밍 라이브러리를 상기 로컬 컴퓨터의 메모리에 적재하는 것을 특징으로 하는 로컬 단말기의 메모리에 로딩한 적재 모듈 및 스트리밍 라이브러리를 포함한 적재기를 이용하여 프로그램을 실행하는 방법.When the user of the local terminal instructs execution of the program, the loading module and the loading library including the loading module and the streaming library loaded in the memory of the local computer, characterized in that for loading the loading module and the streaming library into the memory of the local computer. How to run your program. 적재기를 이용하여 실행한 로컬 단말기의 프로그램에서 파일을 호출하는 방법에 있어서, In a method of calling a file from a program of a local terminal executed using a loader, (a) 상기 적재기의 적재 모듈이 스트리밍 라이브러리의 파일 접근 함수를 이용하여 상기 로컬 단말기의 기록매체 및 캐시(Cache)를 검색하여 상기 프로그램에서 호출한 호출 대상 파일이 존재하는지 여부를 확인하는 단계; (a) the loading module of the loader using the file access function of the streaming library to search the recording medium and the cache of the local terminal to determine whether a call target file called by the program exists; (b) 상기 단계 (a)에서 상기 호출 대상 파일이 존재한다고 판단한 경우 상기 로컬 단말기의 기록매체 또는 캐시에 존재하는 상기 호출 대상 파일이 유효한지 여부를 확인하는 단계; (b) if it is determined in step (a) that the call target file exists, checking whether the call target file existing in the recording medium or the cache of the local terminal is valid; (c) 상기 단계 (a)에서 상기 호출 대상 파일이 존재하지 않는다고 판단하거나 상기 단계 (b)에서 상기 호출 대상 파일이 유효하지 않다고 판단한 경우 상기 적재 모듈은 상기 스트리밍 라이브러리의 파일 접근 함수를 이용하여 스트리밍 서버에 상기 호출 대상 파일을 요청하는 단계; (c) if it is determined in step (a) that the call target file does not exist or in step (b) it is determined that the call target file is not valid, the loading module uses the file access function of the streaming library to stream. Requesting the call target file from a server; (d) 상기 스트리밍 서버로부터 수신한 상기 호출 대상 파일을 상기 캐시에 저장하는 단계; 및 (d) storing the call target file received from the streaming server in the cache; And (e) 상기 캐시를 검색하여 상기 호출 대상 파일을 획득하고, 획득한 상기 호출 대상 파일을 상기 프로그램에 전달하는 단계(e) searching the cache to obtain the call target file and delivering the obtained call target file to the program 를 포함하는 것을 특징으로 하는 적재기를 이용하여 실행한 로컬 단말기의 프로그램에서 파일을 호출하는 방법.Method for calling a file in the program of the local terminal executed using the loader, characterized in that it comprises a. 제 8 항에 있어서, 상기 단계 (b) 이후에, The method of claim 8, wherein after step (b), (b1) 상기 단계 (b)에서 상기 호출 대상 파일이 유효하다고 판단한 경우 상기 스트리밍 라이브러리의 상기 파일 접근 함수는 상기 호출 대상 파일을 상기 프로그램에 전달하는 단계(b1) in the step (b), if it is determined that the call target file is valid, the file access function of the streaming library delivers the call target file to the program. 를 추가로 포함하는 것을 특징으로 하는 적재기를 이용하여 실행한 로컬 단말기의 프로그램에서 파일을 호출하는 방법.Method for calling a file in the program of the local terminal executed using the loader, characterized in that it further comprises a. 제 8 항에 있어서, 상기 스트리밍 서버는, The method of claim 8, wherein the streaming server, 상기 스트리밍 라이브러리로부터 상기 호출 대상 파일에 대한 요청을 수신하 면 상기 스트리밍 서버의 메모리에 상주하는 스트리밍 모듈을 이용하여 스트리밍 서버 기록매체를 검색하여 상기 호출 대상 파일을 획득하는 것을 특징으로 하는 적재기를 이용하여 실행한 로컬 단말기의 프로그램에서 파일을 호출하는 방법.When the request for the call target file is received from the streaming library, a streaming server residing in the memory of the streaming server is used to search the streaming server recording medium to obtain the call target file. How to call a file from a program on a running local terminal. 로컬 단말기의 프로그램에 소프트웨어 스트리밍을 제공하는 적재기에 있어서, In a loader that provides software streaming to a program on a local terminal, 상기 프로그램에 대한 프로그램 정보 데이터를 생성하여 스트리밍 서버에 전송하고, 상기 스트리밍 서버로부터 상기 프로그램의 실행에 관련된 파일과 상기 프로그램을 실행하기 위한 실행 파일을 수신하며, 상기 프로그램을 실행하는 중에 파일 접근 함수가 호출되면 상기 파일 접근 함수에 대응하는 상기 소프트웨어 스트리밍 기능을 구비한 소프트웨어 스트리밍 파일 접근 함수가 실행되도록 하는 적재 모듈; 및 Generate and transmit program information data about the program to a streaming server, receive a file related to the execution of the program and an executable file for executing the program from the streaming server, and the file access function while executing the program A loading module that, when called, executes a software streaming file access function with the software streaming function corresponding to the file access function; And 상기 파일 접근 함수에 대응하여 상기 소프트웨어 스트리밍 기능을 제공하는 상기 소프트웨어 스트리밍 파일 접근 함수를 저장하고 있는 스트리밍 라이브러리A streaming library that stores the software streaming file access function that provides the software streaming function in response to the file access function 를 포함하는 것을 특징으로 하는 로컬 단말기의 프로그램에 소프트웨어 스트리밍을 제공하는 적재기.The loader providing software streaming to the program of the local terminal comprising a. 제 11 항에 있어서, 상기 적재 모듈은, The method of claim 11, wherein the stacking module, 상기 로컬 단말기의 기록매체 및 캐시(Cache)를 검색하여 상기 프로그램의 실행에 관련된 파일에 대한 프로그램 파일 정보 데이터를 생성하여 상기 스트리밍 서버에 전송하고, 상기 스트리밍 서버로부터 수신한 상기 프로그램의 실행에 관련된 파일과 상기 스트리밍 서버로부터 수신한 실행 파일 중 일부 데이터(이하 '실행 파일 수신 데이터'라 함)를 상기 로컬 단말기의 기록매체 또는 캐시에 저장하며, 상기 실행 파일을 실행하는 중에 상기 실행 파일 중 수신하지 않은 일부 데이터(이하 '실행 파일 미수신 데이터'라 함)을 요청하거나 파일을 호출하는 신호가 생성되는 경우에 상기 실행 파일 미수신 데이터 또는 호출 대상 파일을 상기 로컬 단말기의 기록매체 및 캐시에서 검색하여 유효성 여부를 확인하며, 상기 실행 파일 미수신 데이터 또는 상기 호출 대상 파일이 상기 로컬 단말기의 기록매체 또는 캐시에 존재하지 않거나 유효하지 않은 실행 파일 미수신 데이터 또는 호출 대상 파일이 존재하는 경우에는 상기 스트리밍 서버에 유효한 실행 파일 미수신 데이터 또는 호출 대상 파일을 요청하는 것을 특징으로 하는 로컬 단말기의 프로그램에 소프트웨어 스트리밍을 제공하는 적재기.Search the recording medium and the cache of the local terminal to generate program file information data for the file related to the execution of the program and transmit it to the streaming server, the file related to the execution of the program received from the streaming server And some data of the executable file received from the streaming server (hereinafter referred to as 'executable file reception data') are stored in a recording medium or a cache of the local terminal, and not received among the executable files while executing the executable file. When a signal for requesting some data (hereinafter referred to as 'unexecuted file data') or a signal is called, the non-received data file or a file to be called is searched in the recording medium and the cache of the local terminal for validity. Confirms that the executable file has not received data or the call If the outgoing target file does not exist in the recording medium or cache of the local terminal, or if there is an invalid executable file unreceived data or a call target file, the streaming server requests a valid executable file unreceived data or a call target file. A loader that provides software streaming to a program on a local terminal. 제 11 항에 있어서, 상기 스트리밍 서버는, The method of claim 11, wherein the streaming server, 상기 적재 모듈로부터 상기 프로그램의 실행에 관련된 파일의 상기 프로그램 파일 정보 데이터를 수신하면 상기 프로그램의 실행에 관련된 파일에 대한 유효성을 확인하여 그 결과를 상기 적재 모듈에 전송하고, 유효한 상기 프로그램의 실행에 관련된 파일을 상기 적재 모듈에 전송하며, 상기 적재 모듈이 요청한 데이터를 상기 스트리밍 서버의 기록매체에서 획득하여 상기 적재 모듈에 전송하는 스트리밍 모듈을 포함하는 것을 특징으로 하는 로컬 단말기의 프로그램에 소프트웨어 스트리 밍을 제공하는 적재기.Receiving the program file information data of the file related to the execution of the program from the loading module confirms the validity of the file related to the execution of the program and transmits the result to the loading module and relates to the execution of the valid program. And a streaming module which transmits a file to the loading module, and obtains the data requested by the loading module from a recording medium of the streaming server and transmits the data to the loading module. Loader.
KR1020060127317A 2006-12-13 2006-12-13 Method and Loader for Providing Software Streaming KR100848284B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020060127317A KR100848284B1 (en) 2006-12-13 2006-12-13 Method and Loader for Providing Software Streaming

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060127317A KR100848284B1 (en) 2006-12-13 2006-12-13 Method and Loader for Providing Software Streaming

Publications (2)

Publication Number Publication Date
KR20080054770A true KR20080054770A (en) 2008-06-19
KR100848284B1 KR100848284B1 (en) 2008-07-25

Family

ID=39801672

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060127317A KR100848284B1 (en) 2006-12-13 2006-12-13 Method and Loader for Providing Software Streaming

Country Status (1)

Country Link
KR (1) KR100848284B1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101288833B1 (en) * 2012-02-01 2013-08-23 주식회사 인프라웨어테크놀러지 Method for preventing malicious code using office documents, and computer-readable recording medium for the same
KR20150101333A (en) * 2014-02-26 2015-09-03 주식회사 웨어밸리 Database Backup and Recovery Method using Streaming

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100812211B1 (en) * 2001-10-06 2008-03-13 주식회사 비즈모델라인 System and Method for Providing Application by using Streaming
KR100391952B1 (en) * 2001-11-21 2003-07-23 최백준 Using server-side application direct file execution method on AIP system
KR20050056166A (en) * 2005-03-03 2005-06-14 (주) 후이즈홀딩스 Method and apparatus for program invoker based on information of data file's header and extension
KR20060108605A (en) * 2006-10-05 2006-10-18 주식회사 비즈모델라인 System and method for doing the remote-load with the application service via networks

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101288833B1 (en) * 2012-02-01 2013-08-23 주식회사 인프라웨어테크놀러지 Method for preventing malicious code using office documents, and computer-readable recording medium for the same
KR20150101333A (en) * 2014-02-26 2015-09-03 주식회사 웨어밸리 Database Backup and Recovery Method using Streaming

Also Published As

Publication number Publication date
KR100848284B1 (en) 2008-07-25

Similar Documents

Publication Publication Date Title
US20240048631A1 (en) Demand resources
US10157268B2 (en) Return flow guard using control stack identified by processor register
US9880824B2 (en) On demand resources
US7743228B2 (en) Information processing apparatus and method for obtaining software processing log
US20080256532A1 (en) Installing and Executing Shared Applications in Shared Folders
KR20040077531A (en) A method to delay locking of server files on edit
US20080047000A1 (en) Program Execution Device And Program Execution Method
US8380808B2 (en) Dynamic medium content streaming system
KR100800589B1 (en) Device for processing information and working method thereof
EP2447906B1 (en) Online game providing system through storage media and method thereof
US20180225058A1 (en) Write filter with dynamically expandable overlay
KR101555210B1 (en) Apparatus and method for downloadin contents using movinand in portable terminal
WO2006011343A1 (en) Competition solving device
CN112463230A (en) Program operation method and device, electronic equipment and storage medium
US7222338B2 (en) Method for upgrading data
US20070025197A1 (en) Information-processing apparatus, recording medium and information-processing method
CN103514004A (en) Method and device for managing system environment under Windows system
CN112219202A (en) Memory allocation for guest operating systems
KR100848284B1 (en) Method and Loader for Providing Software Streaming
US20040143586A1 (en) Method of controlling user application program
CN107667343B (en) System and method for loading on-demand resources
US10599617B2 (en) Methods and apparatus to modify a binary file for scalable dependency loading on distributed computing systems
US20070174311A1 (en) Asset management apparatus and asset management method
JP7320071B2 (en) Method and system for protecting executable files using heap memory
US20230359471A1 (en) Operating system partitioning of different users for single-user applications

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
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: 20130704

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140625

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150630

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160628

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee