KR20080054770A - Method and loader for providing software streaming - Google Patents
Method and loader for providing software streaming Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
Abstract
Description
도 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.
파일을 읽는 기능을 하는 함수들은 그 종류가 매우 다양하지만, 이러한 파일을 읽는 기능을 하는 함수들은 모두 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
본 발명의 바람직한 실시예에 따른 로컬 단말기(200)는 소프트웨어 스트리밍을 위한 적재기(220), 스트리밍 서버(260)로부터 수신한 파일이나 파일 블록을 캐싱하기 위한 캐시(230), 응용 프로그램의 수행에 필요한 실행파일, DLL 파일, 기타 파일 등을 저장하고 있는 로컬 단말기 기록매체(210)를 포함하여 구성되는 데, 본 발명에서 로컬 단말기(200)는 일반적으로 인터넷에 접속 가능한 노트북, 데스크탑 컴퓨터 등의 단말기를 말한다. The
본 발명에서 사용자가 프로그램을 실행하기 위하여 적재기(220)를 실행하면 적재기(220)는 메모리(240)에 적재모듈(222)과 스트리밍 라이브러리(224)를 적재하도록 한다. In the present invention, when the user executes the
본 발명의 바람직한 실시예에 따른 적재 모듈(222)은 메모리(222)에 적재된 후 로컬 단말기 기록매체(210)와 캐시(230)를 검색하여 사용자가 실행을 명령한 프로그램에 필요한 파일을 검색하고, 검색된 파일의 정보를 인터넷(250)을 이용하여 스트리밍 서버(260)에 전송하여 검색된 파일이 유효한지 여부를 확인한 후 유효한 경우에는 검색된 파일을 이용하여 프로그램을 실행하고, 유효하지 않은 경우에는 스트리밍 서버(260)에 프로그램의 실행에 필요한 유효한 데이터를 요청한다.The
적재 모듈(222)은 스트리밍 서버(260)에 사용자가 실행을 명령한 프로그램의 실행 파일을 요청하고, 실행 파일의 요청을 수신한 스트리밍 서버(260)는 실행 파일 중 프로그램의 실행에 관련된 우선 순위에 따라 실행 파일의 데이터를 적재 모듈(222)에 전송하며, 스트리밍 서버(260)로부터 실행 파일을 수신하는 적재 모듈(222)은 스트리밍 서버(260)로부터 전송되는 일부 데이터(이하 '실행 파일 수신 데이터'라 함)를 로컬 단말기 기록매체(210) 또는 캐시(230)에 저장한 후 프로그램의 실행을 진행하며, 실행 파일 수신 데이터를 이용하여 프로그램의 실행을 진행하는 과정에서 스트리밍 서버(260)로부터 수신하지 않은 일부 데이터(이하 '실행 파일 미수신 데이터'라 함)가 호출되는 경우 적재 모듈(222)은 스트리밍 서버(260)에 실행 파일 미수신 데이터에 대한 전송을 요청한다. The
예를 들어, 프로그램을 실행하는 데 필요한 실행 파일이 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
또한, 적재 모듈(222)은 실행 파일 수신 데이터를 이용하여 프로그램의 실행을 진행하는 과정에서 파일 접근 함수가 호출되면 스트리밍 라이브러리(224)를 통하여 호출된 파일 접근 함수에 대응하는 소프트웨어 스트리밍 기능을 제공하는 소프트웨어 스트리밍 파일 접근 함수가 실행되도록 한다.In addition, the
본 발명에서는 적재 모듈(222)이 프로그램의 실행에 필요한 실행 파일을 스트리밍 서버(260)에 요청하기 전에 로컬 단말기 기록매체(210) 및 캐시(230)에 실행 파일이 존재하는지 여부를 확인하도록 설명하고 있으나 이 과정을 생략하고 필요한 실행 파일을 스트리밍 서버(260)에 바로 요청하는 것도 가능하다.In the present invention, the
본 발명의 바람직한 실시예에 따른 스트리밍 라이브러리(224)는 ntdll.dll에 정의된 파일 접근 함수와 일대일 대응하는 소프트웨어 스트리밍 기능을 제공하는 새로운 파일 접근 함수를 저장하고 있고, 프로그램을 실행하는 중에 파일 접근 함수가 호출되면 적재 모듈(222)에 호출된 파일 접근 함수에 대응하는 소프트웨어 스트리밍 파일 접근 함수를 제공한다. The
스트리밍 서버(260)는 스트리밍 서버 메모리(270), 스트리밍 모듈(272) 및 스트리밍 서버 기록매체(280)를 포함하여 구성되는 데, 스트리밍 모듈(272)은 스트리밍 서버 메모리(270)에 위치하여 적재 모듈(222)로부터 사용자가 실행을 명령한 프로그램의 실행 파일에 대한 요청이 있는 경우에 스트리밍 서버 기록매체(280)로부터 실행 파일을 검색하여 획득하고, 획득한 실행 파일을 적재 모듈(222)에 전송한다. The streaming
또한, 스트리밍 모듈(272)은 적재 모듈(222)이 획득한 파일의 정보를 이용하여 로컬 단말기 기록매체(210) 또는 캐시(230)에 존재하는 파일이 유효한지 여부를 적재 모듈(222)에 알려준다.In addition, the
도 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
본 발명에서 사용자가 실행하고자 하는 프로그램은 사용자가 실행을 선택하면 적재기(220)를 호출하도록 구성되어 있다. In the present invention, the program that the user intends to execute is configured to call the
메모리(240)에 적재 모듈(222)이 적재되면 적재 모듈(222)은 스트리밍 서버(260)에 실행할 프로그램에 대한 정보를 포함한 프로그램 정보 데이터를 전송한다(S302).When the
적재 모듈(222)로부터 프로그램 정보 데이터를 수신한 스트리밍 서버(260)는 스트리밍 모듈(272)을 이용하여 프로그램 정보 데이터에 포함된 프로그램에 대한 정보를 획득하고, 획득한 프로그램에 대한 정보를 바탕으로 프로그램의 실행에 관련된 파일에 대한 정보를 적재 모듈(222)에 전송한다(S304).The streaming
스트리밍 서버(260)로부터 프로그램의 실행에 관련된 파일에 대한 정보를 수신한 적재 모듈(222)이 로컬 단말기 기록매체(210)와 캐시(230)를 검색하여 프로그램의 실행에 관련된 파일이 존재하는지 여부를 확인한다(S306).The
단계 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
프로그램 파일 정보 데이터를 수신한 스트리밍 모듈(272)은 프로그램의 실행에 관련된 파일이 유효한지 여부를 확인한다(S310).The
예를 들어, 사용자가 실행을 요청한 프로그램은 그 실행을 위한 실행 파일과 프로그램의 실행에 관련된 파일이 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
단계 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
단계 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
적재 모듈(222)은 프로그램을 실행하기 위하여 스트리밍 서버(260)에 실행 파일을 요청한다(S316).The
적재 모듈(222)로부터 실행 파일의 요청을 수신한 스트리밍 모듈(272)은 프로그램의 실행에 필요한 우선 순위를 바탕으로 스트리밍 서버 기록매체(280)로부터 실행 파일 중 일부 데이터를 획득하여 적재 모듈(222)에 전송한다(S318).The
스트리밍 모듈(272)로부터 실행 파일 중 일부 데이터를 수신한 적재 모듈(222)은 수신한 일부 데이터(이하 '실행 파일 수신 데이터'라 함)를 이용하여 프로그램을 실행하는 중에 실행 파일 중 수신하지 않은 데이터(이하 '실행 파일 미수신 데이터'라 함)를 요청하는 신호가 생성되었는지 여부와 파일 접근 함수가 호출되었는지 여부를 확인한다(S320).The
일반적으로 실행 파일은 다수 개의 데이터를 포함하고 있고, 실행 파일에 포함된 다수 개의 데이터는 프로그램을 실행함에 있어서 모두 필요한 것이 아니라 일부만이 필요하므로 본 발명에서는 소프트웨어 스트리밍의 목적에 부합하기 위하여 실행 파일을 전부 수신하는 것이 아니라 프로그램의 실행에 필요한 일부만을 선택적으로 우선 수신하고, 필요에 따라 수신하지 않은 데이터를 수신하는 것으로 설명하고 있다. 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
단계 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
단계 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
본 발명에서 호출된 파일 접근 함수에 대응하는 소프트웨어 스트리밍 파일 접근 함수의 동작 과정은 도 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
도 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
적재 모듈(222)은 스트리밍 라이브러리(224)의 파일 읽기 함수를 이용하여 프로그램에서 파일 읽기를 요청한 호출 대상 파일이 로컬 단말기 기록매체(210) 또는 캐시(230)에 존재하는지 여부를 확인한다(S402).The
단계 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
단계 S404에서 로컬 단말기 기록매체(210) 또는 캐시(230)에 존재하는 호출 대상 파일이 유효하다고 판단한 경우 적재 모듈(222)은 스트리밍 라이브러리(224)의 파일 읽기 함수를 이용하여 호출 대상 파일을 사용자가 실행한 프로그램에 전달한다(S406).If it is determined in step S404 that the call target file existing in the local
단계 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
스트리밍 모듈(272)은 스트리밍 서버 기록매체(280)로부터 호출 대상 파일을 검색하여 획득하고, 획득한 호출 대상 파일을 로컬 단말기(200)의 적재 모듈(222)에 전송한다(S410).The
적재 모듈(222)은 수신한 호출 대상 파일을 캐시(230)에 저장하고, 스트리밍 라이브러리(224)의 파일 읽기 함수를 이용하여 캐시(230)를 검색하여 호출 대상 파일을 획득하며, 획득한 호출 대상 파일을 사용자가 실행하는 프로그램에 전달한다(S412).The
본 발명에서는 스트리밍 서버(260)로부터 수신한 호출 대상 파일을 캐시(230)에 저장하는 것으로 설명하고 있으나 로컬 단말기 기록매체(210)에 저장하는 것도 가능하다.Although the present invention has been described as storing the call target file received from the streaming
도 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
먼저 적재기는 적재 모듈(222)을 이용하여 로컬 단말기(200)의 상태를 주기적으로 파악하여 로컬 단말기(200)가 유휴 상태에 있는지 여부를 확인한다(S500).First, the loader checks periodically the state of the
본 발명에서 로컬 단말기(200)가 유휴 상태의 판단 여부는 로컬 단말기(200) CPU의 동작 여부, I/O의 사용 여부 및 네트워크 사용량이 일정량 이하인지 여부를 확인하여 결정할 수 있다. In the present invention, whether the
예를 들어, 로컬 단말기(200)의 CPU가 동작하기 않는 경우, I/O가 사용되지 않는 경우, 네트워크 사용량이 일정량 이하인 경우 중 어느 하나 이상인 경우에 로컬 단말기(200)가 유휴 상태에 있다고 판단할 수도 있고, 세 가지 조건을 모두 충족하는 경우에 로컬 단말기(200)가 유휴 상태에 있다고 판단하는 것도 가능하다. For example, if the CPU of the
단계 S500에서 로컬 단말기(200)가 유휴 상태에 있다고 판단한 경우 적재기(220)는 적재 모듈(222)을 이용하여 스트리밍 서버(260)에 로컬 단말기(200)가 유휴 상태임을 알린다(S502).If it is determined in step S500 that the
스트리밍 서버(250)는 로컬 단말기(200)에 존재하지 않는 파일 중에서 로컬 단말기(200)에서 실행되는 프로그램에서 가장 필요로 할 것으로 예상되는 순서에 따라 파일을 전송한다(S504).The streaming
본 발명에서 로컬 단말기(200)에서 실행되는 프로그램에서 가장 필요로 할 것으로 예상되는 순서는 로컬 단말기(200)에서 실행되는 프로그램에 따라 다르다. In the present invention, the order expected to be most necessary in the program executed in the
예를 들어, RPG 게임을 사용자가 이용하는 경우에 사용자에게 전송한 마지막 지도 데이터 파일을 스트리밍 서버(260)는 파악하고 있으므로, 그 다음의 지도 데이터 파일이 가장 필요로 할 것으로 예상될 수도 있고, 사용자가 이용하는 지도 데이터 파일에 이벤트가 존재하는 경우에는 이벤트 실행을 위한 데이터 파일이 가장 필요로 할 것으로 예상될 수도 있다. 즉, 각각의 프로그램을 실행하는 데 있어서, 로컬 단말기(200)에 마지막으로 전송한 파일 이후에 프로그램에서 필요할 것으로 판단되는 파일을 최우선적으로 전송하는 것이다.For example, when the user uses an RPG game, the streaming
적재기(220)는 적재 모듈(222)을 이용하여 수신한 파일을 캐시(230)에 저장한다(S506).The
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.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)
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)
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)
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 |
-
2006
- 2006-12-13 KR KR1020060127317A patent/KR100848284B1/en not_active IP Right Cessation
Cited By (2)
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 |