KR20110013191A - Separating execution method of executable contents, device for forming separating execution based executable contents, and storage media recorded separating execution based executable contents - Google Patents

Separating execution method of executable contents, device for forming separating execution based executable contents, and storage media recorded separating execution based executable contents Download PDF

Info

Publication number
KR20110013191A
KR20110013191A KR1020100030784A KR20100030784A KR20110013191A KR 20110013191 A KR20110013191 A KR 20110013191A KR 1020100030784 A KR1020100030784 A KR 1020100030784A KR 20100030784 A KR20100030784 A KR 20100030784A KR 20110013191 A KR20110013191 A KR 20110013191A
Authority
KR
South Korea
Prior art keywords
code
code block
execution
storage device
block
Prior art date
Application number
KR1020100030784A
Other languages
Korean (ko)
Other versions
KR101525402B1 (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 에스케이텔레콤 주식회사
Publication of KR20110013191A publication Critical patent/KR20110013191A/en
Application granted granted Critical
Publication of KR101525402B1 publication Critical patent/KR101525402B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/45Management operations performed by the client for facilitating the reception of or the interaction with the content or administrating data related to the end-user or to the client device itself, e.g. learning user preferences for recommending movies, resolving scheduling conflicts
    • H04N21/462Content or additional data management, e.g. creating a master electronic program guide from data received from the Internet and a Head-end, controlling the complexity of a video stream by scaling the resolution or bit-rate based on the client capabilities
    • H04N21/4627Rights management associated to the content

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

PURPOSE: An isolation executable method of an executable contents, an isolation executable contents configuration device and a recording medium recording an isolation executable contents for executing the executable contents through the coupling of a heterogeneous processor are provided to originally block the illegal copy of the executable contents in order to implement a random code block. CONSTITUTION: A code analyzer(120) analyzes a code area of the executable contents. The code analyzer selects an executable target code block from the code area. A code converter(140) isolates the selected isolation executable target code block. The code converter converts the isolating code block into the executable code block in a storage device. A code controller(130) calls the code block.

Description

실행형 컨텐츠의 분리 실행 방법, 분리 실행 기반 실행형 컨텐츠 구성 장치, 그리고 분리 실행 기반 실행형 컨텐츠를 기록한 기록 매체{Separating execution method of executable contents, device for forming separating execution based executable contents, and storage media recorded separating execution based executable contents}Technical Field [0001] The present invention relates to a method and apparatus for separating executable content, a method for separating execution-based content from an executable content, a recording medium for separating executable contents, execution based executable contents}

본 발명은 디지털 컨텐츠의 저작권 보호를 위하여, 실행형 컨텐츠의 코드 영역에서 임의의 코드 블록을 분리하여, 호스트 단말과 프로세서를 구비한 저장 장치간의 상호 작용을 통해 실행형 컨텐츠가 분리 실행되도록 하는 실행형 컨텐츠의 분리 실행 방법, 분리 실행 기반 실행형 컨텐츠 구성 장치, 그리고 분리 실행 기반 실행형 컨텐츠를 기록한 기록 매체에 관한 것이다.In order to protect copyright of digital contents, an embodiment of the present invention separates an arbitrary code block in a code area of executable content and executes executable content by separating execution code contents through interaction between a storage device having a host terminal and a processor A separate execution method of content, an execution-based content composition apparatus based on separation execution, and a recording medium on which execution-based content is recorded.

실행형 컨텐츠는 디지털 형식으로 만들어진 문자, 음성, 음향, 이미지 등을 의미하는 것으로서, 최근 디지털 기술이 발달하면서 그 종류가 다양해지고 있다. 그리고, 디지털 컨텐츠가 일종의 창작물로 받아들여지면서, 이러한 디지털 컨텐츠에 대한 저작권을 보호하기 위한 디지털 저작권 관리(Digital Rights Management) 기술에 대한 중요성이 커지고 있다.Executable content refers to characters, sounds, sounds, images, and the like, which are created in a digital format. And, as digital contents are accepted as a kind of creation, the importance of digital rights management technology for protecting copyright of such digital contents is increasing.

DRM은 디지털 컨텐츠의 무단 사용을 막아, 디지털 컨텐츠 제공자의 권리와 이익을 보호하며 불법 복제를 막고 사용료 부과와 결제 대행 등 컨텐츠의 생성에서 유통/관리까지를 지원하는 기술 및 서비스를 통틀어 일컫는 것으로서, 여기에는 적법한 사용자만 컨텐츠를 사용하고 적절한 요금을 지불하도록 하는 디지털 저작권 관리기술, 저작권 승인과 집행을 위한 소프트웨어 및 보안기술, 지불·결제기술이 모두 포함된다.DRM refers to technologies and services that prevent the unauthorized use of digital contents, protect the rights and interests of digital contents providers, prevent illegal copying, charge fees and settlement agents, and support the distribution and management of contents. Include digital rights management technology that allows only legitimate users to use content and pay appropriate fees, software and security technologies for copyright approval and enforcement, and payment and billing technologies.

특히, 디지털 컨텐츠의 불법적인 복제 및 사용을 방지하기 위하여, 다양한 방법들이 이용되고 있는데, 가장 보편적인 방법은 인증 키를 이용하는 것이다. 이 방법은 인증 키를 입력하는 경우에만 디지털 컨텐츠를 설치하거나 실행할 수 있도록 한 것이나, 사용자들이 인증 키를 공유하거나, 키 검증 알고리즘의 리버스 엔지니어링을 통한 불법 사용이나 불법 복제가 여전히 이루어지고 있다.In particular, various methods have been used to prevent illegal copying and use of digital contents. The most common method is to use an authentication key. This method allows digital content to be installed or executed only when an authentication key is input. However, illegal use or illegal copying is still performed by users sharing the authentication key or reverse engineering the key verification algorithm.

더 강력한 방법으로, 하드웨어 키 록을 제공하여, 프로그램 실행 시 제공된 키 록이 존재하는 경우에만 실행이 되도록 하는 방법이 있다. 그러나 이 방식 또한 키 록을 확인하는 부분만 바이패스(bypass)하도록 프로그램을 수정하는 방법으로 무력화될 수 있다.In a more powerful way, there is a way to provide a hardware key lock so that it is executed only when the provided key lock is present when the program is executed. However, this method can also be disabled by modifying the program to bypass only the portion of the key lock.

이로 인하여 디지털 컨텐츠의 불법 사용은 여전히 이루어지고 있으며, 디지털 컨텐츠의 무단 사용으로 인한 컨텐츠 개발사의 피해가 증가하고 있는 실정이다. 디지털 컨텐츠의 무단 사용은 컨텐츠 개발사의 응용프로그램의 개발 의욕을 떨어뜨리는 요인으로 작용하고, 또한 디지털 컨텐츠의 개발 시, 불법 복제 및 사용을 억제하기 위한 보안 기술에 더 집중해야 하기 때문에, 디지털 컨텐츠의 개발 비용을 증가시켜, 컨텐츠 제공자에게 부담으로 작용한다.As a result, the illegal use of digital contents is still being performed, and the damage caused by content developers due to unauthorized use of digital contents is increasing. Unauthorized use of digital contents is a factor that deteriorates the development desire of the application program of the content developer. Further, when developing digital contents, it is necessary to concentrate more on security technology for suppressing illegal copying and use, Thereby increasing the cost and burdening the content provider.

본 발명은 종래의 문제점을 해결하기 위하여 제안된 것으로서, 컨텐츠의 저작권 보호를 위하여, 실행형 컨텐츠의 코드 영역에서 임의의 코드 블록을 분리하여, 호스트 단말과 프로세서를 구비한 저장 장치간의 상호 작용을 통해 실행형 컨텐츠가 분리 실행되도록 하는 실행형 컨텐츠의 분리 실행 방법, 분리 실행 기반 실행형 컨텐츠 구성 장치, 그리고 분리 실행 기반 실행형 컨텐츠를 기록한 기록 매체를 제공하고자 한다.Disclosure of Invention Technical Problem [8] The present invention has been proposed in order to solve the problems of the related art, and it is an object of the present invention to isolate an arbitrary code block in the code area of executable contents, A separate execution method of executable content for executing executable content separately, an executable content configuration apparatus based on separate execution, and a recording medium recording executable content based on execution execution.

또한, 본 발명은 서로 다른 프로세서를 구비한 호스트 단말과 저장장치 간에 실행형 컨텐츠의 분리 실행을 가능하게 하는 실행형 컨텐츠의 분리 실행 방법, 분리 실행 기반 실행형 컨텐츠 구성 장치, 그리고 분리 실행 기반 실행형 컨텐츠를 기록한 기록 매체를 제공하고자 한다.It is another object of the present invention to provide a method and system for separating and executing executable content that enables executable content to be separated between a host terminal and a storage device having different processors, And a recording medium on which the content is recorded.

상기 과제를 해결하기 위한 수단으로서, 본 발명은 코드 분석부와, 코드 변환부와, 코드 조작부와, 제어부를 포함하여, 호스트 단말과 프로세서를 구비한 저장 장치의 연동을 통해 실행되는 분리 실행 기반 실행형 컨텐츠 구성 장치를 제공한다. 코드 분석부는 실행형 컨텐츠의 코드 영역을 분석하여, 코드 영역으로부터 하나 이상의 분리 실행 대상 코드 블록을 선택한다. 코드 변환부는 선택된 분리 실행 대상 코드 블록을 분리하여, 저장 장치에서 실행 가능한 형태의 저장장치용 코드 블록으로 변환한다. 코드 조작부는 실행형 컨텐츠의 실행 시에 상기 저장장치용 코드 블록을 호출하여 결과값을 반환 받도록 실행형 컨텐츠를 변환한다. 제어부는 코드 분석부와 코드 조작부와 코드 변환부의 동작을 제어하여, 코드 조작부에 의해 변환된 실행형 컨텐츠 및 저장 장치용 코드 블록을 출력한다.As a means for solving the above-mentioned problems, the present invention provides a data processing system including a code analysis unit, a code conversion unit, a code operation unit, and a control unit, Type content composing apparatus. The code analyzing unit analyzes the code area of the executable content and selects one or more code blocks to be separated from the code area. The code conversion unit separates the selected separation execution object code block and converts it into a code block for a storage device executable in the storage device. The code operation unit calls the storage device code block at execution time of the executable content and converts the executable content to receive the result value. The control unit controls the operations of the code analysis unit, the code operation unit, and the code conversion unit to output the executable content and the code block for the storage device converted by the code operation unit.

본 발명에 의한 분리 실행 기반 실행형 컨텐츠 구성 장치에 있어서, 상기 저장장치용 코드 블록은, 호스트 단말과 다른 구조의 프로세서를 구비한 저장장치에서 실행되는 것이다.In the execution-based content composing apparatus according to the present invention, the code block for the storage device is executed in a storage device having a processor having a structure different from that of the host terminal.

본 발명에 의한 분리 실행 기반 실행형 컨텐츠 구성 장치에 있어서, 코드 분석부는, 파서, 프로파일 로더, 규칙 로더 및 코드 선택기를 포함하여 이루어질 수 있다. 파서는 실행형 컨텐츠의 프로파일링을 통해 얻어진 프로파일 데이터 및 프로파일 데이터의 정보 중에서 어느 항목에 가장 큰 비중을 두어 분리 실행 대상 코드 블록을 선택할 것인지를 정의하는 코드 블록 선택 규칙을 지정된 내부 데이터 포맷으로 변환한다. 프로파일 로더는 파서를 통해, 프로파일 데이터를 로드한다. 규칙 로더는 파서를 통해, 코드 블록 선택 규칙을 로드한다. 코드 선택기는 로드된 프로파일 데이터 및 코드 블록 선택 규칙을 참조하여, 실행형 컨텐츠의 코드 영역에서 하나 이상의 분리 실행 대상 코드 블록을 선택한다. In the execution-based content composition apparatus according to the present invention, the code analysis unit may include a parser, a profile loader, a rule loader, and a code selector. The parser converts a code block selection rule for defining to which item the profile data and the profile data obtained through the profiling of the executable content have the greatest weight and selects the detached execution object code block into the specified internal data format . The profile loader loads the profile data through the parser. The rule loader loads code block selection rules through the parser. The code selector selects one or more execution target code blocks in the code area of the executable content with reference to the loaded profile data and code block selection rules.

코드 분석부는, 선택된 분리 실행 대상 코드 블록의 검증 결과를 피드백 받아, 코드 블록 선택 규칙을 갱신하는 규칙 업데이터를 더 포함할 수 있다.The code analyzer may further include a rule updater that receives the verification result of the selected detachment execution target code block and updates the code block selection rule.

프로파일 데이터는, 코드 블록 시작 주소, 코드 블록 종료 주소, 코드 블록 호출 회수, 코드 블록 크기, 플로팅 포인트 연산 유무, 코드 블록의 메모리 참조 회수, 코드 블록의 OS API를 호출하는 회수, 코드 블록의 실행 시간, 코드 블록에서 수행되는 전체 명령어(instruction) 개수, 코드 블록의 실행을 위해 전달되는 파라메터 개수 및 타입, 코드 블록의 실행 후에 반환되는 결과값의 종류 중에서 하나 이상을 포함한다.The profile data includes a code block start address, a code block end address, a code block call count, a code block size, a floating point calculation count, a memory block reference count, a code block OS API call count, The total number of instructions to be executed in the code block, the number and types of parameters to be transmitted for execution of the code block, and the kind of result value to be returned after execution of the code block.

코드 블록 선택 규칙은, 각 코드 블록에 대한 호출 빈도, 호출 위치, 호스트 단말의 메모리 참조 빈도, 호스트 단말의 OS API 참조 빈도, 및 저장장치의 하드웨어 요소 중에 적어도 하나에 가중치를 부여하여 나타낸 것이다.The code block selection rule is weighted to at least one of a calling frequency, a calling position, a memory reference frequency of a host terminal, an OS API reference frequency of a host terminal, and a hardware element of a storage device for each code block.

본 발명에 의한 분리 실행 기반 실행형 컨텐츠 구성 장치에 있어서, 코드 조작부는, 스택과 레지스터의 정보를 패킹하여 상기 저장장치용 코드블록을 호출하고, 호출이 종료되면 상기 저장장치용 코드블록으로부터 반환된 결과값에 의해 스택과 레지스터의 정보를 리스토어하는 보조 실행 코드를 생성하고, 실행형 컨텐츠의 분리 실행 대상 코드 블록이 있던 위치에, 보조 실행 코드로 점프하는 스터브 코드를 삽입한다.In the apparatus for constructing an execution-based content according to the present invention, the code operation unit may call the storage device code block by packing stack and register information, and when the call is terminated, The auxiliary execution code for restoring the information of the stack and the register by the result value is generated and the stub code for jumping to the auxiliary execution code is inserted at the position where the execution execution target code block of the execution content is located.

본 발명에 의한 분리 실행 기반 실행형 컨텐츠 구성 장치에 있어서, 보조 실행 코드는 DLL(Dynamic Link Library) 파일로 구현된다.In the apparatus for constructing an execution-based content according to the present invention, the auxiliary executable code is implemented as a DLL (Dynamic Link Library) file.

본 발명에 의한 분리 실행 기반 실행형 컨텐츠 구성 장치에 있어서, 코드 조작부는, 실행형 컨텐츠가 실행될 때 보조 실행 코드가 로딩되도록, 실행형 컨텐츠의 임포트 테이블(Import table)을 더 수정할 수 있다.In the apparatus for constructing an execution-based content according to the present invention, the code operating unit may further modify an import table of executable content so that the auxiliary executable code is loaded when the executable content is executed.

보조 실행 코드는, 상기 저장장치용 코드블록과의 통신 채널을 제공하는 인터페이스 기능부; 스터브 코드로부터 스택과 레지스터의 정보를 전달받아 패킹하여, 인터페이스 기능부를 통해 상기 저장장치용 코드블록으로 전달하는 패킹 기능부; 인터페이스 기능부를 통해 상기 저장장치용 코드블록으로부터 전달된 결과값을 언패킹하여 스택과 레지스터의 정보를 리스토어하는 언패킹 기능부; 상기 저장장치용 코드블록에서 호스트 단말의 메모리를 호출할 경우, 인터페이스 기능부를 통해, 상기 저장장치용 코드블록에서 전달된 데이터를 메모리에 기록하고, 메모리에서 데이터를 디스패치하여 상기 저장장치용 코드블록으로 전달하는 메모리 매핑 기능부; 및 인터페이스 기능부를 통해, 상기 저장장치용 코드블록으로부터 API 명 및 파라메터 값을 전달받아, 호스트 단말의 OS API를 호출하고, 그 결과를 반환받아 상기 저장장치용 코드블록으로 전달하는 OS API 매핑 기능부를 포함한다.The auxiliary execution code includes an interface function unit for providing a communication channel with the code block for the storage device; A packing function for receiving information of the stack and the register from the stub code, packing the same, and transmitting the packed information to the storage device code block through the interface function unit; An unpacking function unit for unpacking a result value transferred from the code block for the storage device through the interface function unit to restore information of the stack and the register; When the memory of the host terminal is called in the code block for the storage device, the data transferred from the code block for the storage device is written into the memory via the interface function unit, the data is dispatched from the memory, A memory mapping function for transferring the memory mapping information; And an OS API mapping function unit for receiving an API name and a parameter value from the storage device code block through the interface function unit, calling OS API of the host terminal, and returning the result to the storage device code block. .

본 발명에 의한 분리 실행 기반 실행형 컨텐츠 구성 장치에 있어서, 코드 변환부는 LLVM(LLVM Intermediate Representation)을 이용하여 구현될 수 있으며, 분리 실행 대상 코드 블록을 중간 단계 언어로 변환하는 선단 처리기; 선단 처리기에서 중간 단계 언어로 변환된 분리 실행 대상 코드 블록을 최적화하는 중간 단계 최적화기; 및 최적화된 중간 단계 언어의 분리 실행 대상 코드 블록을 하나 이상의 서로 다른 구조의 프로세서 기반 저장장치용 코드 블록으로 변환하는 코드 생성기를 포함하여 이루어진다.In the apparatus for constructing an execution-based content according to the present invention, the code conversion unit may be implemented using an LLVM (LLVM Intermediate Representation), and includes a preprocessor for converting a code block to be separated into an intermediate language; An intermediate stage optimizer for optimizing a code block to be separated from the front end processor into an intermediate language; And a code generator for converting an optimized intermediate language target separation code block into a code block for processor-based storage devices having one or more different structures.

본 발명에 의한 분리 실행 기반 실행형 컨텐츠 구성 장치는, 제어부의 제어에 따라서, 코드 영역에서 암호화될 초기 코드 블록이 선정되면, 초기 코드 블록을 특정 키로 암호화하고, 실행형 컨텐츠의 실행시에 특정 키를 획득하여 암호화된 초기 코드 블록을 복호화하여 실행하도록 실행형 컨텐츠를 변환하는 코드 암호화부를 더 포함할 수 있다.According to an embodiment of the present invention, when an initial code block to be encrypted is selected in a code area under control of a control unit, an initial code block is encrypted with a specific key, and a specific key And a code encryption unit for converting the executable content to decrypt and execute the encrypted initial code block.

코드 암호화부는 선정된 초기 코드 블록 대신에 암호화된 초기 코드 블록을 복호화한 후 실행시키는 보조 실행 코드의 함수를 호출하는 시동 스터브 코드를 생성하여, 초기 코드 블록의 위치에 삽입하는 시동 스터브 생성기; 실행형 컨텐츠에 보안 영역을 생성하고, 생성된 보안 영역에 암호화된 초기 코드 블록을 적재하는 섹션 생성기; 선정된 초기 코드 블록을 특정 키로 암호화하여 섹션 생성기로 제공하는 암호화기; 및 실행형 컨텐츠의 실행시에 보조 실행 코드를 로딩하도록 임포트 영역의 임포트 테이블을 수정하는 임포트 테이블 변경기를 포함하여 이루어질 수 있다.The code encryption unit may generate a start up stub code for calling a function of an auxiliary execution code for decrypting and executing the encrypted initial code block instead of the selected initial code block and inserting the start stub code at a position of the initial code block; A section generator for generating a security zone in the executable content and loading an encrypted initial code block in the generated security zone; An encryptor for encrypting the selected initial code block with a specific key and providing the encrypted initial code block to a section generator; And an import table modifier for modifying the import table of the import area to load the auxiliary executable code at execution time of the executable content.

그리고, 보조 실행 코드는 시동 스터브 코드의 호출에 따라서, 저장장치로부터 특정 키를 획득하여 보안 영역에 적재된 암호화된 초기 코드 블록을 복호화하고, 복호화된 초기 코드 블록을 실행시키는 코드 복호화 기능부를 더 포함할 수 있다.The auxiliary execution code further includes a code decryption function unit for acquiring a specific key from the storage device in response to the start stub code call, decrypting the encrypted initial code block loaded in the secure area, and executing the decrypted initial code block can do.

코드 복호화 기능부는 복호화된 초기 코드 블록으로 인스트럭션 포인터(Instruction Pointer)를 매핑하여 점프시킴으로써, 복호화된 초기 코드 블록을 메모리 상에서 실행시킨다.The code decoding function unit maps the instruction pointer to the decoded initial code block and jumps the decoded initial code block to execute the decoded initial code block on the memory.

상기 과제를 해결하기 위한 다른 수단으로서, 본 발명은 호스트 단말과 프로세서를 구비한 저장 장치를 통해 분리 실행되는 분리 실행 기반 실행형 컨텐츠가 기록된 컴퓨터 판독 가능한 기록 매체를 제공한다.As another means for solving the above problems, the present invention provides a computer-readable recording medium on which separate execution-based executive contents are separately executed through a storage device having a host terminal and a processor.

분리 실행 기반 실행형 컨텐츠가 기록된 기록매체는, 스택과 레지스터의 정보를 패킹하여, 실행 파일의 코드 영역에서 분리된 하나 이상의 분리 실행 대상 코드 블록이 저장장치에서 실행가능하도록 변환된 하나 이상의 저장장치용 코드 블록을 호출하고, 호출이 종료되면 상기 저장장치용 코드 블록으로부터 반환된 스택과 레지스터의 정보를 리스토어하는 보조 실행 코드; 및 하나 이상의 분리 실행 대상 코드 블록을 대신하여 실행 파일의 코드 영역에 삽입되어, 해당 분리 실행 대상 코드 블록의 실행이 요구될 때 보조 실행 코드로 점프하는 하나 이상의 스터브 코드를 포함한다.The recording medium on which the execution-based execution contents are recorded may pack information of the stack and registers so that one or more separate execution target code blocks separated from the code area of the executable file are stored in one or more storage devices An auxiliary executable code for calling the use code block and restoring information of the stack and registers returned from the code block for the storage device when the call is terminated; And one or more stub codes inserted into the code area of the executable file on behalf of one or more separate execution target code blocks and jumping to the auxiliary executable code when execution of the corresponding separate execution target code block is requested.

본 발명에 의한 분리 실행 기반 실행형 컨텐츠가 기록된 기록 매체에 있어서, 저장장치용 코드 블록은, 호스트단말과는 다른 구조의 프로세서를 내장한 저장장치에서 실행되는 것임을 특징으로 한다.In a recording medium on which execution-based content according to the present invention is recorded, a code block for a storage device is executed in a storage device having a processor having a structure different from that of the host terminal.

본 발명에 의한 분리 실행 기반 실행형 컨텐츠가 기록된 기록 매체는 실행 파일의 실행 시에 보조 실행 코드를 로딩하도록 보조 실행 코드 정보가 삽입된 임포트 테이블을 더 포함한다.The recording medium on which the execution-based content according to the present invention is recorded further includes an import table into which the auxiliary execution code information is inserted so as to load the auxiliary execution code when the execution file is executed.

본 발명에 의한 분리 실행 기반 실행형 컨텐츠가 기록된 기록 매체에 있어서, 보조 실행 코드는, 저장장치용 코드 블록과의 통신 채널을 제공하는 인터페이스 기능부; 스터브 코드로부터 스택과 레지스터의 정보를 전달받아 언패킹하여, 인터페이스 기능부를 통해 저장장치용 코드 블록으로 전달하는 패킹 기능부; 인터페이스 기능부를 통해 저장장치용 코드 블록으로부터 전달된 스택과 레지스터의 정보를 언패킹하여 스터브 코드로 반환하는 언패킹 기능부; 인터페이스 기능부를 통해 저장장치용 코드블록에서 전달된 데이터를 호스트 단말의 메모리에 기록하거나, 호스트 단말의 메모리에서 데이터를 디스패치하여 저장장치용 코드 블록으로 전달하는 메모리 매핑 기능부; 및 인터페이스 기능부를 통해 저장장치용 코드 블록으로부터 API 명 및 파라메터 값을 전달받아, 호스트 단말의 OS API를 호출하고, 그 결과를 반환받아 저장장치용 코드 블록으로 전달하는 OS API 매핑 기능부를 포함하여 이루어질 수 있다.In the recording medium on which the execution-based content according to the present invention is recorded, the auxiliary execution code includes an interface function unit for providing a communication channel with the code block for the storage device; A packing function for receiving stack information and register information from the stub code, unpacking the stack information, and transmitting the unpacked information to the code block for the storage device through the interface function unit; An unpacking function unit for unpacking the stack and the information of the register transferred from the code block for the storage device through the interface function unit and returning it as the stub code; A memory mapping function unit for writing the data transferred from the code block for the storage device to the memory of the host terminal via the interface function unit or dispatching the data from the memory of the host terminal to the code block for the storage device; And an OS API mapping function unit that receives the API name and parameter value from the code block for storage device through the interface function unit, calls the OS API of the host terminal, and returns the result to the code block for the storage device .

더하여, 보조 실행 코드는, 저장장치로부터 특정 키를 획득하여 보안 영역에 적재된 암호화된 초기 코드 블록을 복호화하고, 복호화된 초기 코드 블록을 실행시키는 코드 복호화 기능부를 더 포함할 수 있다.In addition, the assistant executable code may further include a code decryption function for obtaining a specific key from the storage device, decrypting the encrypted initial code block loaded in the secure area, and executing the decrypted initial code block.

본 발명에 의한 분리 실행 기반 실행형 컨텐츠가 기록된 기록매체는, 실행 파일의 코드 영역에서 선정된 초기 코드 블록 대신하여 삽입되어, 초기 코드 블록의 실행이 요구될 때, 보조 실행 코드의 코드 복호화 기능부를 호출하는 시동 스터브 코드; 및 특정 키로 암호화된 초기 코드 블록이 적재된 보안 영역을 더 포함할 수 있다.The recording medium on which the execution-based content according to the present invention is recorded is inserted in place of the initial code block selected in the code area of the executable file so that when the execution of the initial code block is requested, A start-up stub code that calls the part; And a security area in which an initial code block encrypted with a specific key is loaded.

본 발명에 의한 분리 실행 기반 실행형 컨텐츠가 기록된 기록매체에 있어서, 코드 복호화 기능부는 복호화된 초기 코드 블록으로 인스트럭션 포인터(Instruction Pointer)를 매핑하여 점프시킴으로써, 복호화된 초기 코드 블록을 메모리 상에서 실행시킨다.In the recording medium on which execution-based content according to the present invention is recorded, the code decoding functional unit maps an instruction pointer to a decoded initial code block, and jumps the decoded initial code block to execute the decoded initial code block on the memory .

또한, 상기 과제를 해결하기 위한 또 다른 수단으로서, 본 발명은, 실행형 컨텐츠의 실행 파일의 코드 영역에서 분리된 하나 이상의 분리 실행 대상 코드 블록이 저장장치에서 실행가능하도록 변환된 저장장치용 코드 블록을 저장된 프로세서를 구비한 저장 장치와 연결된 호스트 단말에서의 실행형 컨텐츠의 분리 실행 방법을 제공한다.As another means for solving the above problems, the present invention provides a code block for a storage device, which is converted so as to be executable in a storage device, The present invention provides a method for separating executable content from a host terminal connected to a storage device having a stored processor.

본 발명에 의한 실행형 컨텐츠의 분리 실행 방법은, 호스트 단말이 실행형 컨텐츠의 실행 파일을 실행하는 중에, 분리 실행 대상 코드 블록으로의 진입이 요구되면, 스택 및 레지스터 정보를 패킹하는 단계; 저장 장치에 저장된 저장장치용 코드 블록을 호출하여, 패킹된 스택 및 레지스터 정보를 전달하는 단계; 저장 장치로부터 저장장치용 코드 블록의 결과값이 포함된 데이터를 전달받는 단계; 및 저장 장치로부터 전달된 데이터를 언패킹하여 저장장치용 코드 블록의 결과값을 얻고, 결과값에 근거하여 스택 및 레지스터 정보를 리스토어 하는 단계를 포함한다.A method for separating and executing executable content according to the present invention comprises packing stack and register information when an entry into a code block to be separated is requested while the host terminal is executing an executable file of executable content; Calling a code block for the storage device stored in the storage device, and transferring the packed stack and register information; Receiving data including a result of the code block for the storage device from the storage device; And unpacking the data transferred from the storage device to obtain the result of the code block for the storage device, and restoring the stack and register information based on the result.

저장장치용 코드 블록은 호스트 단말과는 다른 구조의 프로세서를 내장한 저장장치에서 실행되는 것이다.The code block for the storage device is executed in a storage device having a processor having a structure different from that of the host terminal.

상술한 실행형 컨텐츠의 분리 실행 방법, 분리 실행 기반 실행형 컨텐츠 구성 장치 및 분리 실행 기반 실행형 컨텐츠를 기록한 기록 매체에 있어서, 분리 실행 대상 코드 블록은 복수의 베이식 블록으로 이루어진 복수의 베이식 블록 그룹 중에서 실행형 컨텐츠의 중요 경로(critical path) 상에 있는 베이식 블록 그룹이다. 베이식 블록 그룹은 시작점(entry point)을 통한 제어 신호의 진입 및 복수의 베이식 블록 간의 제어 신호의 이동은 허용하고, 시작점을 제외한 복수의 베이식 블록 내부로의 제어 신호의 진입이 없는 서로 관련된 복수의 베이식 블록의 모임이다. 베이식 블록은 단일 입력(single input) 및 단일 출력(single output)의 속성과, 외부에서 내부로의 제어 신호의 진입을 허용하지 않는 속성을 갖는 코드 블록이다.A separate execution method for executing executable content, a run-based content execution device based on separation execution, and a recording medium on which execution-based execution content is recorded, characterized in that the code execution object code block includes a plurality of basic block groups It is a basic block group on the critical path of executable content. The basic block group allows entry of a control signal through an entry point and movement of a control signal between a plurality of basic blocks and permits movement of control signals between a plurality of basic It is a gathering of blocks. A basic block is a block of code with attributes of single input and single output and attributes that do not allow entry of control signals from outside to inside.

더하여, 본 발명은 상기 과제를 해결하기 위한 또 다른 수단으로서, 상술한 실행형 컨텐츠의 분리 실행 방법을 수행하는 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체를 제공한다.In addition, the present invention provides, as yet another means for solving the above-mentioned problems, a computer-readable recording medium on which a program for performing the above-described execution execution method for executing executable content is recorded.

본 발명은 디지털 컨텐츠의 코드 영역에 존재하는 임의의 코드 블록이 분리 실행되도록 실행형 컨텐츠를 구성함으로써, 분리된 코드 블록이 없는 경우 실행형 컨텐츠가 정상적으로 동작할 수 없게 됨은 물론, 실행형 컨텐츠의 불법 복제 및 사용을 원천적으로 차단할 수 있는 우수한 효과가 있다.The present invention configures executable content such that arbitrary code blocks existing in a code area of digital contents are separated and executed. In addition, when there is no separate code block, executable content can not operate normally, There is an excellent effect that it is possible to block copying and use at the source.

더하여, 본 발명은 실행형 컨텐츠에서 분리 실행 대상 코드 블록을 분리하여 저장 장치의 프로세서에서 실행 가능한 저장장치용 코드 블록으로 변환하며, 변환된 저장장치용 코드 블록과 상호 작용하기 위한 보조 실행 코드를 추가로 생성하고, 실행형 컨텐츠의 실행 중에 보조 실행 코드로 분기하여, 저장장치용 코드 블록을 실행시키고 그 결과값을 리턴 받도록 분리 실행 기반 실행형 컨텐츠를 구성함으로써, 실행형 컨텐츠가 이종 프로세서의 연동을 통해 분리 실행될 수 있도록 하며, 그 결과, X86 실행형 컨텐츠가 ARM 프로세서를 갖는 스마트 카드나 USIM 등에서 분리 실행되도록 할 수 있다.In addition, the present invention separates the detachment target code block from the executable content and converts it into a code block for a storage device executable on the processor of the storage device, and adds an auxiliary execution code for interacting with the code block for the converted storage device The execution-type content is branched to the auxiliary execution code during the execution of the execution-type content, and the separation-execution-based execution content is configured to execute the storage device code block and receive the resultant value. So that the X86 executable content can be executed separately from a smart card or an USIM having an ARM processor.

도 1은 본 발명이 적용되는 디지털 저작권 관리 시스템의 개략적인 구조를 보인 도면이다.
도 2는 본 발명이 적용되는 실행형 컨텐츠의 구조를 개략적으로 나타낸 도면이다.
도 3은 본 발명에 따른 분리 실행 기반 실행형 컨텐츠의 구조를 개략적으로 나타낸 도면이다.
도 4는 본 발명에 따른 분리 실행 기반 실행형 컨텐츠 구성 장치를 보인 블록도이다.
도 5는 본 발명에 따른 분리 실행 기반 실행형 컨텐츠 구성 장치에 있어서, 코드 분석부의 상세 구성을 나타낸 블록도이다.
도 6은 본 발명에 따른 분리 실행 기반 실행형 컨텐츠 구성 장치의 코드 조작부에서 생성된 스터브 코드에 대한 예시도이다.
도 7은 본 발명에 따른 분리 실행 기반 실행형 컨텐츠 구성 장치에 있어서, 코드 변환부의 상세 구성을 보인 블록도이다.
도 8은 본 발명에 따른 분리 실행 기반 실행형 컨텐츠 구성 장치에 있어서, 코드 암호화부의 상세 구성을 보인 블록도이다.
도 9는 본 발명에 따른 분리 실행 기반 실행형 컨텐츠 구성 장치에서 구성된 분리 실행 기반 실행형 컨텐츠의 구조를 보인 예시도이다.
도 10은 본 발명에 따른 분리 실행 기반 실행형 컨텐츠에 있어서, 보조 실행 코드의 구조 및 보조 실행 코드에 의한 분리 실행 과정을 나타낸 블록도이다.
도 11은 본 발명에 따른 분리 실행 기반 실행형 컨텐츠에 있어서, 보조 실행 코드의 코드 복호화 기능부의 상세 동작을 설명하는 블록도이다.
도 12는 본 발명에 따른 분리 실행 기반 실행형 컨텐츠에 의한, 분리 실행 방법을 순차적으로 나타낸 순서도이다.
1 is a diagram showing a schematic structure of a digital rights management system to which the present invention is applied.
2 is a diagram schematically showing the structure of an executive content to which the present invention is applied.
3 is a diagram schematically illustrating the structure of an execution-based execution content according to the present invention.
FIG. 4 is a block diagram illustrating an execution-based content composition apparatus according to the present invention.
5 is a block diagram showing a detailed configuration of a code analysis unit in an execution-based content composition apparatus according to the present invention.
6 is an exemplary diagram illustrating a stub code generated in a code operation unit of an execution-based content composition apparatus according to the present invention.
7 is a block diagram showing a detailed configuration of a code conversion unit in an execution-based content composition apparatus according to the present invention.
FIG. 8 is a block diagram showing a detailed configuration of a code encryption unit in an execution-based content composition apparatus according to the present invention.
FIG. 9 is a diagram illustrating a structure of an execution-based execution content configured in an execution-based content composition apparatus according to the present invention.
FIG. 10 is a block diagram illustrating a structure of an auxiliary execution code and a separation execution process by an auxiliary execution code in the execution-based execution content according to the present invention.
11 is a block diagram for explaining the detailed operation of the code decryption function of the auxiliary execution code in the execution-based execution content according to the present invention.
12 is a flowchart sequentially illustrating a separation execution method by execution-based execution contents according to the present invention.

이하 본 발명의 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 다만, 하기의 설명 및 첨부된 도면에서 본 발명의 요지를 흐릴 수 있는 공지 기능 또는 구성에 대한 상세한 설명은 생략한다. 또한, 도면 전체에 걸쳐 동일한 구성 요소들은 가능한 한 동일한 도면 부호로 나타내고 있음에 유의하여야 한다.Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings. In the following description and the accompanying drawings, detailed description of well-known functions or constructions that may obscure the subject matter of the present invention will be omitted. It should be noted that the same constituent elements are denoted by the same reference numerals as possible throughout the drawings.

도 1은 본 발명이 적용되는 디지털 저작권 관리 시스템(이하, DRM 시스템이라 함)의 전체 구조를 나타낸 블록도이다.1 is a block diagram showing the entire structure of a digital rights management system (hereinafter referred to as DRM system) to which the present invention is applied.

도 1을 참조하면, 본 발명이 적용되는 DRM 시스템(10)은, 네트워크(11)를 매개로 연결된 컨텐츠 제공 서버(12) 및 호스트 단말(13)과, 호스트 단말(13)에 유무선 인터페이스를 매개로 연결된 저장장치(14)를 포함하여 구성된다.1, a DRM system 10 to which the present invention is applied includes a content providing server 12 and a host terminal 13 connected to each other via a network 11, And a storage device 14 connected to the network.

본 발명에 있어서, '분리 실행'은 디지털 컨텐츠, 더 구체적으로는 실행가능한 형태의 디지털 컨텐츠가 두 개의 서로 다른 장치, 더 구체적으로는 호스트 단말(13)과 저장장치(14)의 연동을 통해 실행되는 것을 의미한다. 이러한 분리 실행을 구현하기 위해서, 호스트 단말(13)에는 코드 영역에서 선택된 코드 블록(이하 분리 실행 대상 코드 블록이라 함)이 제거된 분리 실행 기반의 실행형 컨텐츠(15a)가 저장되고, 저장장치(14)에는 분리 실행 기반의 실행형 컨텐츠(15a)에서 제거된 분리 실행 대상 코드 블록이 저장장치(14)에서 실행 가능하도록 변환한 저장장치용 코드 블록(15b)이 저장된다. 분리 실행은, 호스트 단말(13)이 분리 실행 기반의 실행형 컨텐츠(15a)에서 제거된 부분(분리 실행 대상 코드 블록)에 대한 결과값을 저장장치(14)에 요청하여 반환 받는 형태로 이루어진다. In the present invention, " separate execution " means that the digital content, more specifically the executable digital content, is executed through two different devices, more concretely by interlocking the host terminal 13 and the storage device 14 . In order to implement such separation execution, the execution terminal 15 of the host terminal 13 is stored with the execution-based content 15a on which the code block selected in the code area (hereinafter referred to as a separation execution object code block) is removed, 14 stores a code block 15b for a storage device which is converted so as to be executable in the storage device 14 for a code block to be separated for execution removed from the execution-based executable content 15a. The separation execution is performed in such a manner that the host terminal 13 requests the storage device 14 to return the result of the part (separation execution target code block) removed from the execution-based execution content 15a and returns it.

따라서, 본 발명이 적용되는 실행형 컨텐츠는, 실행 가능한 형태의 컨텐츠를 의미하는 것으로서, 게임, 응용 프로그램, 소프트웨어 등을 포함한다.Accordingly, the executable content to which the present invention is applied is meant to be executable type content, including a game, an application program, software, and the like.

도 1에서, 네트워크(11)는 컨텐츠 제공 서버(12)와 호스트 단말(13) 간의 데이터 전송 및 정보 교환을 위한 일련의 데이터 송수신을 수행한다. 이를 위하여, 네트워크(11)는 IP를 통하여 대용량 데이터의 송수신 서비스 및 끊김 없는 데이터 서비스를 제공하는 IP망으로, IP를 기반으로 서로 다른 망을 통합한 IP망 구조인 ALL-IP망일 수 있다. 또한 네트워크(11)는 유선통신망, 이동통신망, WiBro(Wireless Broadband)망, HSDPA(High-Speed Downlink Packet Access)망, 위성통신망 또는 기타 널리 공지되었거나 향후 개발될 유무선 또는 이들의 결합망을 포함한다.1, the network 11 performs a series of data transmission / reception for data transmission and information exchange between the content providing server 12 and the host terminal 13. [ For this purpose, the network 11 may be an IP network providing large capacity data transmission / reception service and seamless data service through IP, and may be an ALL-IP network having an IP network structure in which different networks are integrated based on IP. The network 11 includes a wired communication network, a mobile communication network, a wireless broadband (WiBro) network, a high-speed downlink packet access (HSDPA) network, a satellite communication network or other well-known or future wired or wireless networks or a combination thereof.

컨텐츠 제공 서버(12)는 분리 실행 기반의 실행형 컨텐츠(15a) 및 저장장치용 코드 블록(15b)을 저장하고 있으며, 이를 고객의 요청에 따라서 호스트 단말(13)로 제공한다. 컨텐츠 제공 서버(12)는 후술하는 본 발명에 따른 분리 실행 기반의 실행형 컨텐츠 구성 장치를 통해, 분리 실행 기반의 실행형 컨텐츠(15a)와 저장장치용 코드 블록(15b)을 구성할 수 있다.The content providing server 12 stores the execution-based executable content 15a and the storage device code block 15b and provides it to the host terminal 13 at the request of the customer. The content providing server 12 can constitute an execution-based execution content 15a and a storage device code block 15b through an execution-based content forming apparatus according to the present invention to be described later.

호스트 단말(13)은 실행형 컨텐츠의 실행이 가능한 독립된 CPU를 가진 컴퓨팅 장치, 예컨대 PC, 노트북, 워크스테이션 등을 통칭한다. 호스트 단말(13)은 다수의 사용자에 의해 접근이 자유로운 공용 컴퓨터를 포함한다. 호스트 단말(13)에는 분리 실행 기반 실행형 컨텐츠(15a)가 설치되어 있다. 호스트 단말(13)에 유무선 인터페이스를 통해 저장장치(14)가 연결되면, 호스트 단말(13)은 연결된 저장장치(14)와 연동하여 실행형 컨텐츠(15a)에 대한 분리 실행을 수행한다. 더하여, 호스트 단말(13)은 사용자의 요청에 따라서 컨텐츠 제공 서버(12)로 실행형 컨텐츠의 구매를 요청하고, 컨텐츠 제공 서버(12)로부터 분리 실행 기반의 실행형 컨텐츠(15a)와 저장장치용 코드 블록(15b)를 다운받아, 분리 실행 기반의 실행형 컨텐츠(15a)는 자신의 메모리에 저장하고, 저장장치용 코드 블록(15b)은 저장 장치(14)에 저장시킨다.The host terminal 13 collectively refers to a computing device having an independent CPU capable of executing executable contents, such as a PC, a notebook, and a workstation. The host terminal 13 includes a public computer which is accessible by a plurality of users. The host terminal 13 is provided with an execution-based execution content 15a. When the storage device 14 is connected to the host terminal 13 via the wired / wireless interface, the host terminal 13 performs separation execution for the executable content 15a in conjunction with the connected storage device 14. In addition, the host terminal 13 requests the content providing server 12 to purchase the executable content at the request of the user, and sends the executable content 15a and the storage device The code block 15b is downloaded and the executable content 15a based on the separation execution is stored in its own memory and the storage device code block 15b is stored in the storage device 14. [

여기서 유무선 인터페이스는 USB, USB2, Serial/Parallel Port, Ethernet, TCP/IP, 통신 케이블 등을 이용한 유선 통신 방식과, 근거리 무선통신방식으로 구현될 수 있다. 근거리 무선 통신 방식으로는 블루투스(Bluetooth), 지그비(zigbee), 루비(Rubee), 적외선데이터통신(IrDA; Infrared Data Association), 초광대역방식(UWB; Ultra Wide Broadband) 등이 사용될 수 있다.The wired / wireless interface can be implemented using a wired communication method using a USB, a USB2, a serial / parallel port, an Ethernet, a TCP / IP, a communication cable, and a short-range wireless communication method. Bluetooth, Zigbee, Ruby, Infrared Data Association (IrDA), and Ultra Wide Broadband (UWB) may be used as the short-range wireless communication method.

저장장치(14)는 유무선 인터페이스를 통해 호스트 단말(13)에 연결되며, 호스트 단말(13)을 통해 저장장치용 코드 블록(15b)를 전달받아 저장한다. 저장장치용 코드 블록(15b)을 안전하게 보관하기 위하여, 저장 장치(14)는 보안 기능을 구비하는 것이 바람직하다. 그리고 저장장치(14)는 분리 실행 기반 실행형 컨텐츠(15a)의 실행시 호스트 단말(13)과 연동하여 분리 실행을 수행하여야 한다. 따라서, 저장장치(14)는 분리 실행 대상 코드 블록에 대한 연산 처리가 가능한 프로세서를 구비하는 것이 바람직하다. 이때, 저장장치(14)는 호스트 단말(13)의 요청에 따라 저장장치용 코드 블록(15b)에 대한 연산을 수행하여 결과값을 호스트 단말(13)로 반환한다.The storage device 14 is connected to the host terminal 13 via a wired / wireless interface and receives and stores the storage device code block 15b via the host terminal 13. [ In order to safely store the code block 15b for a storage device, the storage device 14 preferably has a security function. In addition, the storage device 14 must perform separation execution in conjunction with the host terminal 13 when executing the execution-based execution content 15a. Therefore, the storage device 14 preferably includes a processor capable of arithmetic processing on the code block to be separated. At this time, the storage device 14 performs an operation on the storage device code block 15b in response to the request of the host terminal 13, and returns the result value to the host terminal 13.

상술한 DRM 시스템에서, 컨텐츠 제공자는 컨텐츠 제공 서버(12)를 통하여, 적법한 사용자의 호스트 단말(13)에 분리 실행 기반 실행형 컨텐츠(15a)를 제공하고, 저장 장치(14)에 저장장치용 코드 블록(15b)를 저장시킨다. 이후, 적법한 사용자가, 저장 장치용 코드 블록(15b)이 저장된 저장 장치(14)를 호스트 단말(13)에 연결한 상태에서, 호스트 단말(13)에 설치된 분리 실행 기반 실행형 컨텐츠(15a)를 실행시키면, 호스트 단말(13)과 저장장치(14)의 연동을 통해 분리실행 기반의 실행형 컨텐츠가 정상적으로 실행되는데, 이때, 저장장치용 코드 블록(15b)이 없는 경우에 실행형 컨텐츠는 정상적으로 실행될 수 없다.In the DRM system described above, the content provider provides separate execution-based execution content 15a to the host terminal 13 of a legitimate user through the content providing server 12, And stores block 15b. Thereafter, when a legitimate user connects the storage device 14 in which the storage device code block 15b is stored to the host terminal 13, the execution executable content 15a installed in the host terminal 13 Execution-based content is normally executed through the interlocking of the host terminal 13 and the storage device 14. At this time, if there is no storage device code block 15b, the executable content is normally executed I can not.

분리 실행 기반 실행형 컨텐츠에 대한 기본 개념을 도 2 및 도 3을 참조하여 설명한다.The basic concept of execution-based execution content will be described with reference to FIGS. 2 and 3. FIG.

도 2는 본 발명이 적용되는 실행 가능한 디지털 컨텐츠의 데이터 구조를 개략적으로 나타낸 도면으로서, 이를 참조하면, 본 발명이 적용되는 실행형 컨텐츠(20)는, 복수 개의 파일, 예컨대, 실행 파일, 운영체제에서 제공하는 API(application program interface), 개발사에서 제공하는 API 또는 DLL(dynamic linking library)과 같은 파일을 포함한다. 이와 같은 실행형 컨텐츠(20)는, 코드 영역(21)과 데이터 영역(23)을 포함한다. 실제로 코드 영역(21)과 데이터 영역(23)은 실제로 서로 섞여 있다. 코드 영역(21)은 복수의 베이식 블록(25; basic block)으로 이루어진 복수의 베이식 블록 그룹(27)을 포함한다.FIG. 2 is a schematic diagram of a data structure of executable digital content to which the present invention is applied. Referring to FIG. 2, the executable content 20 to which the present invention is applied includes a plurality of files such as an executable file, (API) provided by the developer, a dynamic linking library (DLL) provided by the developer, and the like. Such an executive content 20 includes a code area 21 and a data area 23. Actually, the code area 21 and the data area 23 are actually mixed with each other. The code area 21 includes a plurality of basic block groups 27 made up of a plurality of basic blocks 25.

여기서, 베이식 블록(25)은 단일 입력(single input) 및 단일 출력(single output)의 속성을 갖는 명령어의 열(sequence of instruction)을 의미하는 것으로서, 외부에서 내부로의 진입을 허용하지 않는 속성을 갖는 코드 블록으로 정의할 수 있다. 즉 베이식 블록(35)은 시작부터 끝까지 한번에 실행되는 연속적인 문장(코드의 모임)을 의미하며, 중간에 흐름 제어로 인해 실행이 중지되지 않는 문장 그룹이다.Here, the basic block 25 means a sequence of instructions having attributes of a single input and a single output, and is a property that does not allow entry from the outside to the inside As shown in Fig. That is, the basic block 35 is a continuous sentence (a group of codes) executed at one time from the beginning to the end, and is a group of sentences whose execution is not stopped due to the flow control in the middle.

도 3은 본 발명에 따른 분리 실행 기반 실행형 컨텐츠의 구조를 개략적으로 나타낸 도면이다.3 is a diagram schematically illustrating the structure of an execution-based execution content according to the present invention.

도 3을 참조하면, 본 발명에 따른 분리 실행 기반 실행형 컨텐츠(30)는, 하나 이상의 분리 실행 대상 코드 블록(37)를 대신하여 스터브 코드(39)가 삽입된 코드 영역(31)과, 데이터 영역(33)을 포함한다. 이때 스터브 코드(39)는 분리 실행을 위하여 추출된 분리 실행 대상 코드 블록(37)을 대신하여 삽입된 코드로서, 분리 실행 기반 실행형 컨텐츠(30)와, 분리된 분리 실행 대상 코드 블록(37)을 연결한다. 더 구체적으로, 스터브 코드(39)는 실행형 컨텐츠(30)에 대한 분리 실행을 수행할 때, 분리 실행 대상 코드 블록(37)을 호출하고, 분리 실행 대상 코드 블록(37)의 결과값을 반환 받는다.3, the execution-based execution content 30 according to the present invention includes a code area 31 in which a stub code 39 is inserted in place of one or more separate execution subject code blocks 37, Area 33. [0033] At this time, the stub code 39 is a code inserted in place of the extraction execution object code block 37 extracted for the separation execution, as the separated execution execution based content 30 and the separated execution execution object block 37, Lt; / RTI > More specifically, the stub code 39 calls the detachment object code block 37 and returns the result value of the detachment object code block 37 when performing the detachment execution for the executable content 30 Receive.

분리 실행 대상 코드 블록(37)은, 원래의 실행형 컨텐츠에 대한 동적 프로파일링 및 정적 분석을 통하여 코드 영역(31)의 복수의 베이식 블록 그룹(27) 중의 하나로서, 복수의 베이식 블록(35)을 포함한다. 더 바람직하게, 분리 실행 대상 코드 블록(37)은 시작점(entry point)을 통한 제어 신호의 진입 및 내부에 포함된 베이식 블록(35) 간의 제어 신호의 이동은 허용하지만, 시작점을 제외한 베이식 블록(35)으로의 제어 신호의 진입이 없는 서로 관련된 복수의 베이식 블록(35)을 포함하는 베이식 블록 그룹이다. The separation execution target code block 37 is a module for executing a plurality of basic blocks 35 as one of a plurality of basic block groups 27 of the code area 31 through dynamic profiling and static analysis of the original executable contents, . More preferably, the detachment object code block 37 allows the entry of the control signal through the entry point and the movement of the control signal between the basic blocks 35 included therein, but the blocking of the basic block 35 And a plurality of basic blocks 35 associated with each other without entry of a control signal into the basic block group.

이와 달리 시작점을 제외한 베이식 블록(35)으로의 제어 신호의 진입이 있는 베이식 블록 그룹을 분리 실행 대상 코드 블록(37)으로 선정할 경우, 해당 분리 실행 대상 코드 블록(37)을 추출한 후 삽입되는 스터브 코드(39)에 시작 부분이 아닌 중간으로 제어 신호가 진입할 수 있으며, 이 경우 스터브 코드(39)는 해당 제어 신호에 대한 처리를 수행하지 못하며, 결국, 실행형 컨텐츠(30)의 실행이 중지되거나 에러가 발생할 수 있다. Alternatively, when the basic block group in which the control signal is input to the basic block 35 excluding the starting point is selected as the separation execution object code block 37, the extraction execution object code block 37 is extracted, The control signal may enter the code 39 in the middle rather than the beginning, and in this case, the stub code 39 can not perform processing for the corresponding control signal, and eventually execution of the executive content 30 stops Or an error may occur.

상술한 분리 실행 대상 코드 블록은 다음과 같이 추출될 수 있다.The above-described separation execution object code block can be extracted as follows.

먼저, 분리 실행할 실행형 컨텐츠(20)의 코드 영역(21)에 대한 동적 프로파일링 및 정적 분석을 통하여 복수의 베이식 블록 그룹(27)을 선정한다. 복수의 베이식 블록 그룹(27)의 선정은, 분리 실행할 실행형 컨텐츠(20)의 실행을 시작하여, 런-타임 동안 코드 영역(21)에 대한 기초 정보를 수집하고, 수집한 기초 정보를 이용하여 분석 범위를 확장한 동적 프로파일링을 통해 코드 영역(21)에 대한 정적 분석을 수행함에 의해 이루어진다. 기초 정보는, 브랜치 어드레스, 점프 어드레스, 콜 어드레스 및 RET의 간접 주소 중에 적어도 하나의 간접 주소이다. 이러한 기초 정보 중에서 실행형 컨텐츠(20)의 공개된 API와 관련된 기초 정보를 제거하고, 공개된 API와 관련된 기초 정보가 제거된 기초 정보를 기반으로 실행형 컨텐츠(20)의 코드 영역(21)에 대한 정적 분석을 수행함으로써, 분석 범위를 확장할 수 있다. 수집한 기초 정보 중 간접 주소를 컨트롤 플로우 상에 대입함으로써, 분석 범위를 확장하여 단독으로 동적 프로파일링 또는 정적 분석을 수행하는 것에 비하여 더 많은 베이식 블록 그룹(27)을 선정할 수 있다.First, a plurality of basic block groups 27 are selected through dynamic profiling and static analysis of the code area 21 of the executable content 20 to be separated. The selection of the plurality of basic block groups 27 starts with execution of the executable content 20 to be separated and collects basic information about the code area 21 during run-time, And performing static analysis on the code area 21 through dynamic profiling that extends the scope of analysis. The basic information is at least one indirect address among a branch address, a jump address, a call address, and an indirect address of RET. The basic information related to the published API of the executive content 20 is removed from the basic information and the basic information related to the published API is removed from the code area 21 of the executive content 20 based on the removed basic information By performing a static analysis on the subject, the scope of analysis can be extended. More basic block groups 27 can be selected compared to performing dynamic profiling or static analysis alone by extending the scope of analysis by assigning indirect addresses in the collected basic information to the control flow.

더하여, 선정된 복수의 베이식 블록 그룹(27) 중에서, 베이식 블록 그룹(27)의 내부로 진입하는 제어 신호가 발생하면, 제어 신호의 명령어 주소를 기준으로 해당 베이식 블록 그룹(27)을 분할하여 재정의한다. 이때 재정의 대상이 되는 베이식 블록 그룹(27)은 제어 신호의 명령어 주소를 기준으로 이전의 제1 베이식 블록 그룹과, 제어 신호의 명령어 주소를 포함하는 이후의 제2 베이식 블록 그룹으로 재정의한다.In addition, when a control signal for entering the inside of the basic block group 27 is generated among the selected plurality of basic block groups 27, the corresponding basic block group 27 is divided based on the command address of the control signal, do. At this time, the basic block group 27 to be redefined redefines the previous first basic block group and the subsequent second basic block group including the command address of the control signal based on the command address of the control signal.

이와 같은 재정의 과정을 반복함으로써, 최종적으로 단일 입력 및 단일 출력의 속성과, 외부에서 내부로의 진입을 허용하지 않는 속성을 갖는 복수의 베이식 블록(25)을 포함하는 베이식 블록 그룹(27)을 정의한다.By repeating this redefinition process, a basic block group 27 including a plurality of basic blocks 25 having attributes of a single input and a single output and an attribute not allowing entry from the outside to the inside is finally obtained define.

이어서 복수의 베이식 블록 그룹(27) 중에서 분리 실행 대상 코드 블록(37)을 선정하여, 분리 실행 대상 코드 블록(27)을 코드 영역에서 분리하고, 분리 실행 대상 코드 블록(97) 대신에 스터브 코드(39)를 삽입한다. The separation execution object code block 37 is selected from among the plurality of basic block groups 27 to separate the separation execution object code block 27 from the code area and the stub code 39 are inserted.

이때 분리 실행 대상 코드 블록(37)은 복수의 베이식 블록 그룹(27) 중에서 실행형 컨텐츠(20)의 중요 경로(Critical path) 상에 있는 베이식 블록 그룹을 선택하는 것이 바람직하다. 또한, 복수의 베이식 블록 그룹(27) 중에서 콜 횟수, 크기 및 실행 시간을 함께 고려하여 분리 실행 대상 코드 블록(37)을 선출할 수 있다. 예컨대 콜 횟수가 많고, 크기가 작고, 실행 시간이 짧은 베이식 블록 그룹(27)을 분리 실행 대상 코드 블록(37)으로 선출한다.At this time, it is preferable that the separation execution object code block 37 selects a basic block group on the critical path of the executive contents 20 among the plurality of basic block groups 27. [ In addition, it is possible to select the code block 37 for separation execution in consideration of the number of calls, the size, and the execution time among the plurality of basic block groups 27. [ For example, the basic block group 27 having a large number of calls, a small size, and a short execution time is selected by the separation execution object code block 37.

이에 따르면, 실행 가능한 디지털 컨텐츠에 있어서, 중요 경로 상에 존재하고, 콜 횟수가 많고 크기가 작고, 실행 시간이 짧은 베이식 블록 그룹을 보안을 위한 분리 실행 대상 코드 블록으로 선정하여, 분리 실행 대상 코드 블록이 실행형 컨텐츠에서 분리 실행되도록 함으로써, 실행형 컨텐츠의 복제 방지와 관련된 보안 성능을 향상시킬 수 있다.According to this, in the executable digital content, a basic block group existing on an important path, having a large number of calls, a small size, and a short execution time is selected as a separation execution target code block for security, The execution performance of the executable content can be improved.

또한, 동적 프로파일링(dynamic profiling)을 통하여 수집한 코드 영역의 기초 정보를 이용한 정적 분석(static analysis)을 수행하여 베이식 블록 그룹을 추출함으로써, 실행형 컨텐츠의 코드 영역의 분석 범위를 확장하여 베이식 블록 그룹의 추출율을 향상시킬 수 있다.Further, by performing static analysis using the basic information of the code area collected through dynamic profiling to extract a basic block group, the scope of analysis of the code area of the executable content is extended, The extraction rate of the group can be improved.

또한, 한 번 정의된 베이식 블록 그룹에 대해서 재정의할 수 있는 유연성을 제공함으로써, 분리 실행 대상 코드 블록의 후보가 될 수 있는 단일 입력(single input) 및 단일 출력(single output)을 갖는 베이식 블록 그룹을 생성할 수 있고, 시작점(entry point)을 제외한 내부로의 제어 신호의 진입이 있는 부적합한 베이식 블록 그룹이 분리 실행 대상 코드 블록으로 선출되는 것을 억제할 수 있으며, 그 결과, 분리 실행 대상 코드 블록을 분리하여 실행하는 중의 오류 발생을 억제할 수 있다.In addition, by providing flexibility to redefine a once-defined basic block group, a basic block group having a single input and a single output, which can be candidate candidates for a separate code block, It is possible to inhibit selection of an unsuitable basic block group having an entry of the control signal into the inside thereof excluding the entry point as a code block to be detached. As a result, It is possible to suppress the occurrence of an error during execution.

그리고, 상기 분리 실행 대상 코드 블록은, 저장장치(14)에서 실행되어야 하는데, 저장장치(14)는 호스트 단말(13)과는 다른 프로세서 구조를 갖기 때문에, 이러한 이종 프로세서 환경에서 실행가능하도록 변환되어야 한다.Since the storage device 14 has a processor structure different from that of the host terminal 13, the code block to be separated must be converted to be executable in such heterogeneous processor environment do.

이상에서 설명한 바와 같이, 실행형 컨텐츠에서 분리 실행 대상 코드 블록을 선정하고, 분리 실행 대상 코드블록을 저장장치용 코드 블록으로 변환하여, 분리 실행될 수 있도록 변환하는 기능을 이하에서 설명하는 분리 실행 기반 실행형 컨텐츠 구성 장치가 수행한다.As described above, the function of selecting the detachment object code block from the executable content, converting the detachment object code block into the storage device code block, and converting the detachment object code block to be detachable can be referred to as detachment-based execution Type content composing device.

도 4는 본 발명에 따른 분리 실행 기반 실행형 컨텐츠 구성 장치(100)를 나타낸 블록 구성도이다. 이하에서 설명할 분리 실행 기반 실행형 컨텐츠 구성 장치(100)는, 도 1에 보인 DRM 시스템에 있어서, 호스트 단말(13)과 저장 장치(140)에 각각 저장될 분리 실행 기반 실행형 컨텐츠(15a)와 저장 장치용 코드 블록(15b)를 만들기 위한 것으로서, 서버측, 더 구체적으로는 컨텐츠 제공 서버(12)에 구현될 수 있다.FIG. 4 is a block diagram illustrating an apparatus 100 for executing an execution-based content according to the present invention. The separate execution execution based content composing apparatus 100 to be described below has a separate execution execution based content 15a to be stored respectively in the host terminal 13 and the storage device 140 in the DRM system shown in Fig. And a code block 15b for a storage device, and can be implemented in the server side, more specifically, in the content providing server 12.

도 4를 참조하면, 본 발명에 의한 분리 실행 기반 실행형 컨텐츠 구성 장치(100)는, 제어부(110)와, 코드 분석부(120)와, 코드 조작부(130)와, 코드 변환부(140)를 기본적으로 구비하며, 선택적으로, 코드 암호화부(150)를 더 포함할 수 있다.Referring to FIG. 4, an apparatus 100 for executing an execution-based content according to the present invention includes a control unit 110, a code analysis unit 120, a code operation unit 130, a code conversion unit 140, And may further include a code encrypting unit 150. [0050]

제어부(110)는 분리 실행 기반 실행형 컨텐츠의 생성을 위한 전체적인 과정을 제어한다. 즉, 분리 실행될 실행형 컨텐츠가 입력되어, 분리 실행 대상 코드 블록이 선택되고, 선택한 분리 실행 대상 코드 블록을 실행형 컨텐츠에서 분리하고, 분리 실행 대상 코드 블록의 분리 실행이 가능하도록 실행형 컨텐츠를 변환하고, 분리된 분리 실행 대상 코드 블록을 저장장치(14)에서 처리 가능한 저장장치용 코드 블록으로 변환하도록, 코드 분석부(120)와 코드 조작부(130)와 코드 변환부(140)를 제어한다.The control unit 110 controls the entire process for generating the execution-based execution content. That is, the executable content to be separated is inputted, the detachment object code block is selected, the selected detachment object code block is separated from the executable content, and the executable content is converted And controls the code analysis unit 120, the code manipulation unit 130, and the code conversion unit 140 so as to convert the separated code block to be separated into a storage device code block that can be processed in the storage device 14. [

더하여, 제어부(110)는 실행형 컨텐츠의 코드 영역에서 초기 코드 블록을 추출하고, 초기 코드 블록을 암호화하고, 실행형 컨텐츠의 실행시 암호화된 초기 코드 블록을 복호화하여 실행하도록 코드 암호화부(150)를 제어한다.In addition, the control unit 110 extracts an initial code block from the code area of the executable content, encrypts the initial code block, and decrypts and executes the encrypted initial code block when executing the executable content. .

다음으로, 코드 분석부(120)는, 실행형 컨텐츠의 코드 영역을 분석하여, 코드 영역으로부터 하나 이상의 분리 실행 대상 코드 블록을 선택한다. 더 구체적으로, 코드 분석부(120)는 분리 실행될 실행형 컨텐츠 및 실행형 컨텐츠에 대한 프로파일 데이터(Profile Data) 및 코드 블록 선택 규칙을 입력 받아, 프로파일 데이터 및 코드 블록 선택 규칙을 기반으로 실행형 컨텐츠의 코드 영역에서 분리 실행 대상 코드 블록을 결정한다. 프로파일 데이터는 실행형 컨텐츠에 대한 동적 프로파일링을 통해 수집된 정보로서, 이는 동적 프로파일링 툴(Dynamic Profiling Tool)을 이용하여 수집할 수 있다. 더 구체적으로 설명하면, 동적 프로파일링 툴은 사용자 우선 (User Preference) 정보를 읽어와 어떠한 부분을 중심으로 프로파일링할 지를 결정한 후, 해당하는 PIN 툴을 로드한다. 그 후, 대상 실행형 컨텐츠를 메모리에 로드하고, PIN 툴을 삽입하여 실행시키고, 그 결과(프로파일 데이터)를 저장한다. Next, the code analyzing unit 120 analyzes the code area of the executable content, and selects one or more code blocks to be separated from the code area. More specifically, the code analyzing unit 120 receives profile data and code block selection rules for executable content and executable content to be separated and executes executable content based on profile data and code block selection rules, The code block to be separated is determined. Profile data is information collected through dynamic profiling of executable content, which can be collected using the Dynamic Profiling Tool. More specifically, the dynamic profiling tool reads user preference information and decides which part to focus on, and then loads the corresponding PIN tool. Thereafter, the target executive content is loaded into the memory, the PIN tool is inserted and executed, and the result (profile data) is stored.

그리고, 프로파일 데이터는, 필수적으로, 코드 블록 시작 주소, 코드 블록 종료 주소, 코드 블록 호출 회수(프로파일 중에 호출되는 횟수임), 코드 블록 크기, 및 플로팅 포인트 연산 유무를 포함한다. 이외에, 프로파일 데이터는, 선택적으로, 코드 블록의 호스트 메모리 참조 회수, 코드 블록에서 호스트 단말의 OS API를 호출하는 회수, 코드 블록의 실행 시간, 코드 블록에서 수행되는 전체 명령어(instruction) 개수, 코드 블록의 실행을 위해 전달되는 파라메터 개수 및 타입, 코드 블록의 실행 후에 반환되는 값의 종류가 포함될 수 있다.The profile data essentially includes a code block start address, a code block end address, a code block call count (which is the number of times it is called during the profile), a code block size, and whether or not a floating point calculation is performed. In addition, the profile data may optionally include a host memory reference number of code blocks, a number of calls to the OS API of the host terminal in the code block, an execution time of the code block, a total number of instructions executed in the code block, The type and number of parameters to be passed for execution of the code block, and the type of the value to be returned after execution of the code block.

코드 블록 선택 규칙은, 프로파일 데이터의 각 항목에 대해 부여되는 가중치를 설정하기 위한 것으로서, 가중치를 설정할 수 있는 사용자 우선 정보로는, 프로파일링에 의해 선택될 분리 실행 대상 코드 블록에 대한 호출 빈도, 호출 위치, 호스트 메모리 참조 빈도, 및 OS API 참조 빈도, 그리고, 분리 실행 대상 코드 블록이 저장될 저장 장치의 하드웨어 요소를 포함한다. 호출 빈도는, 실행형 컨텐츠의 실행 중에서 분리 실행 대상 코드 블록으로 선정될 코드 블록의 호출 빈도 정도를 나타내는 것으로서, 보통 호출 빈도가 높을 수록 보안 효과를 높일 수 있는 반면에 저장 장치(14)의 부하가 증가하여 실행형 컨텐츠의 전체 실행 속도를 저하시킬 수 있다. 따라서, 실행형 컨텐츠의 특성에 맞추어 적절한 호출 빈도를 설정하는 것이 바람직하다. 호출 위치는, 분리 실행 대상 코드 블록의 선택에 있어서, 실행 초기에 호출되는 코드 블록을 선택할 것인지, 특정 기능 설정 시에 호출되는 코드 블록을 선택할 것인지를 나타낸다. 호스트 메모리 참조 빈도는, 분리 실행 대상 코드 블록으로 선택될 코드 블록이 호스트 메모리를 참조하는 횟수를 나타낸다. OS API 참조 빈도는, 코드 블록의 OS API 참조 빈도를 나타낸다. 일반적으로, 메모리 참조 빈도 및 OS API 참조 빈도가 높을수록 호스트 단말에 대한 의존성이 높다는 것을 의미하며, 메모리 참조 빈도 및 OS API 참조 빈도가 높은 코드 블록을 분리 실행 대상 코드 블록으로 선정할 경우 보안 효율이 높아지지만, 그 반대로, 실행 속도는 저하되기 때문에, 원하는 보안 레벨에 따라서 메모리 참조 빈도 및 OS API 참조 빈도를 적절하게 설정하여야 한다. 저장 장치의 하드웨어 요소는, 예를 들어, 분리 실행 대상 코드 블록이 저장되고 실행될, 저장 장치의 DRAM 양이나 NAND 플래쉬 크기, CPU 속도 등을 포함한다.The code block selection rule is for setting a weight to be given to each item of the profile data. The user preference information for which the weight can be set includes the call frequency for the code block to be separated to be selected by the profiling, A host memory reference frequency, an OS API reference frequency, and a hardware element of a storage device in which a separate execution target code block is to be stored. The calling frequency indicates the degree of calling frequency of the code block to be selected as the detached execution target code block from the execution of the executive type content. The higher the calling frequency is, the higher the security effect can be. Thereby reducing the overall execution speed of the executable content. Therefore, it is desirable to set an appropriate call frequency in accordance with the characteristics of the executable content. The call position indicates whether a code block to be called at the beginning of execution is selected or a code block to be called at the time of setting a specific function is selected in the selection of a code block to be detached. The host memory reference frequency indicates the number of times that the code block to be selected as the detachment object code block refers to the host memory. The OS API reference frequency indicates the OS API reference frequency of the code block. Generally, the higher the memory reference frequency and the OS API reference frequency, the higher the dependency on the host terminal. If the memory reference frequency and OS API reference frequency are high, However, conversely, the execution speed decreases. Therefore, the memory reference frequency and OS API reference frequency should be appropriately set according to a desired security level. The hardware element of the storage device includes, for example, the DRAM amount of the storage device, the NAND flash size, the CPU speed, etc., in which the detachment object code block is stored and executed.

이상과 같은 코드 블록 선택 규칙에 따라서 프로파일 데이터의 각 항목에 가중치를 달리 부여함으로써, 추출되는 분리 실행 대상 코드 블록이 달라지며, 그에 따라서 보안 레벨이 달라진다.By assigning different weights to each item of profile data according to the code block selection rule, the extracted code block to be extracted is different, and the security level is changed accordingly.

코드 블록 선택 규칙은 실행형 컨텐츠의 성격에 따라서 설정할 수 있다. 예를 들어, 실행형 컨텐츠가 게임 프로그램인 경우 실행 속도가 중요하므로, 호스트 메모리 참조 빈도 및 OS API 참조 빈도를 최소로 낮추는 것이 바람직하며, 이 경우, 호스트 메모리 및 OS API를 최소로 참조하는 베이식 코드 블록을 분리 실행 대상 코드 블록으로 선택함으로써, 실행형 컨텐츠의 실행 속도 저하를 최소화시킬 수 있다. 또한, 분리 실행 기반 실행형 컨텐츠의 판매에 있어서, 저장 장치(14)의 가격을 최대한 낮추고 싶은 경우, 저장 장치의 하드웨어 요소에 대한 가중치를 낮게 지정하면 된다. 이에 의하면, 저장 장치(14)의 가격은 낮출 수 있는 반면, 실행 속도가 다소 낮아질 수 있음을 감안하여야 한다.Code block selection rules can be set according to the nature of executable content. For example, if the executable content is a game program, execution speed is important. Therefore, it is desirable to minimize the host memory reference frequency and OS API reference frequency. In this case, a basic code By selecting a block as a block to be divided to be executed, it is possible to minimize the execution speed degradation of the executable contents. In order to reduce the price of the storage device 14 as much as possible in the sale of execution-based execution content, the weight of the hardware element of the storage device may be set to a low value. It should be noted that while the cost of the storage device 14 may be reduced, the execution speed may be somewhat lowered.

상술한 코드 블록 선택 규칙은, 그 설정 가능한 항목을 더 다양화시킬 수 있다.The above code block selection rules can further diversify the settable items.

도 5는 코드 분석부(120)의 상세 구성을 나타낸 블록도로서, 이를 참조하면, 코드 분석부(120)는, 규칙 업데이터(121)와, 파서(122)와, 프로파일 데이터 로더(123)와, 규칙 로더(124)와, 코드 선택기(125)를 포함하여 이루어진다.5 is a block diagram showing a detailed configuration of the code analyzer 120. The code analyzer 120 includes a rule updater 121, a parser 122, a profile data loader 123, A rule loader 124, and a code selector 125. [

규칙 업데이터(121)는, 분리 실행 대상 코드 블록의 선택시에 기준이 될 코드 블록 선택 규칙을 갱신한다. 코드 블록 선택 규칙은 프로파일 데이터의 정보 중에서 어느 항목에 가장 큰 비중을 두어 분리 실행 대상 코드 블록을 선택할 것인지를 의미하는 것으로서, 앞서 설명한 바와 같이, 프로파일 데이터의 각 항목 별 가중치로 나타낼 수 있다. 그런데, 이러한 코드 블록 선택 규칙은, 실행형 컨텐츠의 종류, 크기 등에 따라서 변경될 가능성이 크다. 이에, 규칙 업데이터(121)는, 선택된 분리 실행 대상 코드 블록에 대한 검증 결과를 피드백 받아 분리 실행 대상 코드 블록의 선택 규칙을 지속적으로 갱신한다. 예를 들어, 선택된 분리 실행 대상 코드 블록에 대한 테스트를 진행하여 실행 속도 등의 이슈가 발생하면, 이를 기준으로 분리 실행 대상 코드 블록의 선택 규칙의 세부적인 가중치를 변경한다.The rule updater 121 updates the code block selection rule to be a criterion at the time of selection of the detachment object code block. The code block selection rule indicates which item in the profile data has the greatest weight and which code block to be separated is to be selected. As described above, the code block selection rule can be expressed by a weight value of each item of profile data. However, such a code block selection rule is likely to change depending on the type, size, and the like of the executable content. Accordingly, the rule updater 121 continuously feeds back the verification result of the selected detachment object code block and continuously updates the selection rule of the detachment object code block. For example, when an issue such as an execution speed occurs as a result of performing a test on a selected detachment execution target code block, the detailed weight of the selection rule of the detachment execution target code block is changed based on the issue.

파서(122)는, 프로파일 데이터 및 분리 실행 대상 코드 블록의 선택 규칙을 내부 데이터 포맷(코드 선택기(125)에서 처리 가능한 데이터 포맷)으로 변환한다. 예를 들어, 프로파일 데이터 및 규칙은 XML 형태로 구현될 수 있는데, 이 경우, 파서(122)는 프로파일 데이터 및 분리 실행 대상 코드 블록의 선택 규칙은 XML 형태에서 내부 데이터 포맷으로 변환하는 것으로서, XML 파서가 된다.The parser 122 converts the selection rules of the profile data and the separation execution object code block into an internal data format (a data format that can be processed by the code selector 125). For example, the profile data and rules may be implemented in XML form. In this case, the parser 122 converts the selection rules of the profile data and the separation execution target code block from the XML format to the internal data format, .

프로파일 데이터 로더(123)는, 파서(122)를 통해 프로파일 데이터를 로드한다.The profile data loader 123 loads the profile data through the parser 122.

규칙 로더(124)는, 파서(122)를 통해 코드 블록 선택 규칙을 로드한다.The rule loader 124 loads the code block selection rules via the parser 122.

코드 선택기(125)는, 로드된 프로파일 데이터 및 코드 블록 선택 규칙에 근거하여, 실행형 컨텐츠의 코드 영역에서 하나 이상의 분리 실행 대상 코드 블록을 선택한다.The code selector 125 selects one or more separate execution object code blocks in the code area of the executable content based on the loaded profile data and code block selection rules.

다시 도 4를 참조하면, 코드 조작부(130)는, 코드 분석부(120)에서 선택된 분리 실행 대상 코드 블록과 분리 실행 대상 코드 블록이 분리된 분리 실행 기반의 실행형 컨텐츠를 연결하도록 실행형 컨텐츠를 변환한다. 더 구체적으로 코드 조작부(130)는, 분리된 분리 실행 대상 코드 블록과의 상호 연동을 위한 보조 실행 코드를 생성하고, 분리 실행 대상 코드 블록이 맨 앞에서 보조 실행 코드로 점프한 후 보조 실행 코드의 실행이 완료되면 분리 실행 대상 코드 블록 다음으로 실행되어야 할 위치로 점프하는 스터브 코드를 생성하여 분리 실행 대상 코드 블록의 위치에 삽입한다. 보조 실행 코드는, 스터브 코드로부터 전달되는 파라메터, 즉, 스택과 레지스터의 정보를 패킹하여 분리 실행 대상 코드 블록을 호출하고, 호출이 종료되면 분리 실행 대상 코드 블록의 결과값으로 스택과 레지스터의 정보를 리스토어한다.Referring again to FIG. 4, the code manipulation unit 130 controls execution of the executable-type content so that the detachment-executing target code block and the detachment-executing target code block selected by the code- Conversion. More specifically, the code manipulation unit 130 generates an auxiliary execution code for mutual interoperation with the detached detachment execution target code block, and jumps to the auxiliary execution code at the beginning of the detachment execution object code block, A stub code which jumps to a position to be executed next to the detachment execution target code block is generated and inserted into the position of the detachment execution target code block. The auxiliary executable code calls for the parse execution object code block by packing the parameters transferred from the stub code, that is, the stack and the register information. When the call is completed, the auxiliary execution code packs the stack and register information Restore.

본 발명의 일 실시 예에 있어서, 저장 장치(14)에 저장되는 저장장치용 코드 블록(15b)은 저장 장치(14)의 플랫폼에 기반한 Java 바이트코드, 더 구체적으로는 Java 애플릿 및 ARM 인스트럭션을 내장한 Java 애플릿으로 구현되는데, 이때 보조 실행 코드는 상술한 Java 애플릿을 실행하는 Native launcher로 구현된다. 더하여, 보조 실행 코드는 필요 시에만 로딩되어 실행될 수 있도록 DLL(Dynamic Link Library) 파일로 구현된다. 이러한 보조 실행 코드에 대해서는 다음에 더 구체적으로 설명하기로 한다.In one embodiment of the invention, the code block 15b for the storage device stored in the storage device 14 includes Java bytecode based on the platform of the storage device 14, more specifically a Java applet and ARM instructions It is implemented as a Java applet, which is implemented as a native launcher that runs the Java applet described above. In addition, the auxiliary executable code is implemented as a DLL (Dynamic Link Library) file so that it can be loaded and executed only when necessary. These auxiliary executable codes will be described in more detail below.

도 6은 실행형 컨텐츠에 삽입될 스터브 코드를 예시한 그림으로서, (a)는 스터브 코드의 삽입 전의 실행형 컨텐츠, 즉, 분리 실행 대상 코드 블록을 나타내며, (b)는 분리 실행 대상 코드 블록 위치에 삽입된 스터브 코드를 나타낸 것이다.FIG. 6 is a diagram illustrating a stub code to be inserted into executable content. FIG. 6 (a) shows executable content before insertion of a stub code, that is, Of the stub code shown in FIG.

도 6의 (a)와 (b)를 비교하면, 스터브 코드는 분리 실행 대상 코드 블록의 맨 앞 위치에서 보조 실행 코드의 특정 함수로 점프하고(jmp NativeLauncher), 보조 실행 코드의 함수 호출 이후에는 함수 값을 반환할 엔드 포인트로 점프하도록 생성되어, 분리 실행 대상 코드 블록의 위치에 삽입된다. 이에 의하면, caller code의 변경없이 코드 변환이 가능하다.6 (a) and 6 (b), the stub code jumps to the specific function of the auxiliary execution code at the beginning of the separation execution target code block (jmp NativeLauncher), and after the function call of the auxiliary execution code, Value to the endpoint to be returned, and inserted at the position of the code block to be separated. According to this, code conversion is possible without changing the caller code.

그리고, 코드 조작부(130)는, 스터브 코드의 삽입과 더불어, 보조 실행 코드의 로딩을 위하여 임포트 영역(idata section)의 임포트 테이블(import table) 내에 보조 실행 코드(Native Launcher DLL)을 삽입한다. 임포트 테이블에 대한 보조 실행 코드의 삽입은, 호스트 단말(13)에서 분리 실행 기반 실행형 컨텐츠(15a)가 구동될 때, OS의 로더(loader)에 의하여 보조 실행 코드가 로딩되도록 하기 위한 것이다.In addition to the insertion of the stub code, the code operating unit 130 inserts a native Launcher DLL into the import table of the import section for loading the auxiliary executable code. The insertion of the auxiliary execution code into the import table is intended to allow the auxiliary execution code to be loaded by the loader of the OS when the execution execution based content 15a is executed in the host terminal 13. [

이러한 방식을 통하여, 분리 실행 기반 실행형 컨텐츠의 소스 코드 수정 없이, 분리된 분리 실행 대상 코드 블록과의 상호 작용이 가능해진다.In this way, it is possible to interact with the separated code block to be separated, without changing the source code of the execution-based execution content.

이어서, 도 4에 보인 코드 변환부(140)는 분리 실행 기반 실행형 컨텐츠에서 분리된 분리 실행 대상 코드 블록을 저장장치(14)에서 실행 가능한 저장장치용 코드블록(15b)으로 변환한다. 이때, 저장장치용 코드 블록(15b)은, 분리 실행 속도의 향상을 위하여, 저장장치(14)에 구비된 프로세서의 명령어로 변환되는 것이 바람직하다. 예를 들면, 저장 장치(14)가 Java 기반 스마트 카드인 경우, 분리 실행 대상 코드 블록은, Java 바이트 코드로 변환되는데, 특히, ARM 명령어를 내장한 Java 바이트 코드로 변환된다. 즉, 호스트 단말(13)이 X86 계열의 프로세서 구조를 가지며, 저장장치(14)가 ARM 구조의 프로세서로 이루어진 경우, 코드 변환부(140)는, 분리 실행 대상 코드 블록의 X86 명령어를 Java 바이트코드 및 ARM 명령어를 내장한 Java 바이트코드로 변환한다.Then, the code conversion unit 140 shown in FIG. 4 converts the detachment object code block separated from the detachment-based execution content into a code block 15b for a storage device executable in the storage device 14. [ At this time, it is preferable that the code block 15b for the storage device is converted into the instruction of the processor included in the storage device 14 in order to improve the separation execution speed. For example, when the storage device 14 is a Java-based smart card, the separation execution target code block is converted into Java bytecode, in particular, into Java bytecode with embedded ARM instructions. That is, when the host terminal 13 has the processor structure of the X86 series and the storage device 14 is the processor of the ARM structure, the code conversion unit 140 converts the X86 instruction of the detachment object code block into the Java bytecode And ARM instruction into embedded Java bytecode.

여기서, 코드 변환부(140)는, 실행형 컨텐츠의 분리 실행을 다양한 프로세서 환경에서 실해할 수 있도록, 분리 실행 대상 코드 블록을 복수의 머신 코드로 변환하는 것이 바람직하다. 이를 위하여, 코드 변환부(140)는 compiler infrastructure, 특히 LLVM(Low Level Virtual Machine)를 이용하여 구현될 수 있다. LLVM을 이용할 경우, 검증된 다양한 오픈 소스 솔루션을 이용할 수 있으며, 타겟, 즉, 저장장치(14)의 프로세서와는 독립적으로 코드 최적화가 가능하고, 코드 재사용성이 높아, 다양한 소스를 다양한 머신 코드로 변환할 수 있다.Here, it is preferable that the code conversion unit 140 converts the separate execution object code block into a plurality of machine codes so that execution execution of execution contents can be performed in various processor environments. For this, the code conversion unit 140 may be implemented using a compiler infrastructure, in particular, a low level virtual machine (LLVM). With LLVM, it is possible to utilize various verified open source solutions and to optimize the code independent of the target, i.e. the processor of the storage device 14, and to have high code reusability, Can be converted.

도 7은 본 발명에 따라서 구현된 코드 변환부(140)의 상세 구성을 보인 블록도이다.7 is a block diagram showing a detailed configuration of the code conversion unit 140 implemented according to the present invention.

도 7을 참조하면, 코드 변환부(140)는 선단 처리기(141)와, 코드 최적화기(142)와, 코드 생성기(143)를 포함하여 이루어진다. 선단 처리기(131)는 소스, 즉, 호스트 단말(13)의 플랫폼에 기반한 언어로 구성된 분리 실행 대상 코드 블록을 중간 단계 언어(LLVM IR: LLVM Intermediate Representation)로 변환하고, 코드 최적화기(142)는 선단 처리기(131)로부터 출력된 중간 단계 언어로 변환된 분리 실행 대상 코드 블록의 최적화하고, 코드 생성기(13)는 최적화된 중간 단계 언어의 분리 실행 대상 코드 블록을 저장 장치(140)의 프로세서에 기반한 복수의 머신 코드, 예를 들어, Java 바이트 코드, ARM 명령어로 변환한다. 상기 코드 생성기(13)에서 출력되는 코드 블록이 저장장치용 코드 블록이 된다.7, the code conversion unit 140 includes a front end processor 141, a code optimizer 142, and a code generator 143. [ The preprocessor 131 converts the source execution code block constituted by the source, that is, the language based on the platform of the host terminal 13, into the LLVM Intermediate Representation (LLVM IR), and the code optimizer 142 The code generator 13 optimizes the isolation execution target code block of the intermediate language that has been optimized and outputs the decompression target code block based on the processor of the storage device 140 Into a plurality of machine codes, for example, Java bytecode, and ARM instructions. The code block output from the code generator 13 becomes a code block for the storage device.

상술한 구조의 코드 변환부(140)는, 호스트 단말(13)의 프로세서 구조에 따라서, 선단 처리기(131)만 변경되면 되므로, 향후 적용될 다양한 프로세서 구조까지 대비할 수 있다.The code conversion unit 140 of the above-described structure can adapt to various processor structures to be applied in the future since only the end processor 131 needs to be changed according to the processor structure of the host terminal 13. [

본 발명에 따른 분리 실행 기반 실행형 컨텐츠 구성 장치는, 이상에서 설명한, 코드 분석부(120)와 코드 조작부(130)와 코드 변환부(140)의 상호 작용을 통하여, 분리 실행 대상 코드 블록이 제거된 분리 실행 기반 실행형 컨텐츠(15a)와, 저장 장치(14)에서 실행되도록 변환된 저장장치용 코드 블록(15b)을 생성한다. 이렇게 생성된 분리 실행 기반의 실행형 컨텐츠(15a)는 저장장치용 코드 블록(15b)과의 상호 작용을 통해서만 정상적으로 실행될 수 있다. 특히, 저장장치용 코드 블록(15b)은 실행형 컨텐츠의 코드 영역에서 추출되기 때문에, 사용자 간에 공유하거나, 프로그램 개발자 이외에, 불법 사용자가 저장장치용 코드블록(15b)을 복제하거나 생성하기는 어렵다. 따라서, 실행형 컨텐츠의 불법 사용 및 복제를 원천적으로 차단할 수 있다.The execution execution based content composing apparatus according to the present invention is capable of executing the code for executing the separation execution target code block through the code analysis unit 120, the code operation unit 130 and the code conversion unit 140, Based execution contents 15a and a code block 15b for a storage device converted to be executed in the storage device 14. [ The generated executable content 15a based on the separation execution can be normally executed only through interaction with the storage device code block 15b. In particular, since the storage device code block 15b is extracted from the code area of the executable content, it is difficult for the illegal user to share or create the storage device code block 15b in addition to the program developer. Therefore, unauthorized use and copying of executable content can be fundamentally blocked.

다시 도 4로 되돌아가면, 본 발명에 따른 분리 실행 기반 실행형 컨텐츠 구성 장치는, 코드 분석부(120)와 코드 조작부(130)와 코드 변환부(140)에 더하여, 코드 암호화부(150)를 더 포함할 수 있다.4, in addition to the code analysis unit 120, the code control unit 130, and the code conversion unit 140, the execution-based content execution apparatus according to the present invention includes a code encryption unit 150 .

코드 암호화부(150)는, 제어부(110)의 제어에 따라서 선정된 초기 코드 블록을 특정 키로 암호화하여, 해당 실행형 컨텐츠의 실행시 특정 키를 통해 초기 코드 블록을 복호화하여 실행하도록 실행형 컨텐츠를 변환한다. 더 구체적으로 코드 암호화부(150)는, 선정된 초기 코드 블록을 지정된 키로 암호화한 후, 암호화된 초기 코드 블록을 실행형 컨텐츠에 추가 생성된 보안 영역에 삽입하고, 초기 코드 블록의 위치에는 키를 획득하여 암호화된 초기 코드 블록의 복호화한 후 실행시키는 보조 실행 코드를 로드하게 하는 시동 스터브 코드를 삽입한다.The code encryption unit 150 encrypts the selected initial code block under the control of the control unit 110 with a specific key to decrypt and execute the initial code block through a specific key at the time of execution of the executable content, Conversion. More specifically, the code encryption unit 150 encrypts the selected initial code block with the designated key, inserts the encrypted initial code block into the generated security area in addition to the executable content, and stores the key at the position of the initial code block And inserts a startup stub code for causing the microcomputer to load an auxiliary execution code for decrypting and executing the acquired and encrypted initial code block.

도 8은 본 발명의 일 실시 예에 따른 코드 암호화부(150)의 상세 구성을 나타낸 블록도로서, 이를 참조하면, 코드 암호화부(150)는, 시동 스터브 생성기(151)와, 섹션 생성기(152)와, 암호화기(153)와, 임포트 테이블 변경기(154)를 포함한다.8 is a block diagram illustrating a detailed configuration of the code encryption unit 150 according to an embodiment of the present invention. The code encryption unit 150 includes a startup stub generator 151, a section generator 152 ), An encryptor 153, and an import table changer 154. The encryptor 153,

시동 스터브 생성기(151)는, 암호화되어 이동될 초기 코드 블록 대신에 암호화된 초기 코드 블록의 복호화한 후 실행시키는 보조 실행 코드의 함수를 호출하는 시동 스터브 코드를 생성하여, 초기 코드 블록의 위치에 삽입한다.The startup stub generator 151 generates a startup stub code for calling a function of an auxiliary execution code for decrypting and executing the encrypted initial code block instead of the encrypted initial code block to be moved, do.

섹션 생성기(152)는, 실행형 컨텐츠에 보안 영역(.secure section)을 새로 생성하고, 생성된 보안 영역에 암호화된 초기 코드 블록을 적재한다.The section generator 152 newly creates a security area (.secure section) in the executable content, and loads the encrypted initial code block in the generated security area.

암호화기(153)는, 선정된 초기 블록 코드를 지정된 키로 암호화하여 섹션 생성기(152)에 제공한다. 이때 암호화에 사용되는 키는 실행형 컨텐츠의 실행시에 복호화를 위하여 필요하므로, 권리 객체(RO: Right Object)의 CEK(Contents Encryption key) 형태로 관리되어, 저장장치(14)에 저장될 수 있다.The encryptor 153 encrypts the selected initial block code with the designated key and provides it to the section generator 152. [ At this time, the key used for encryption is managed in the form of a content encryption key (CEK) of a right object (RO) since it is required for decryption at the time of execution of executable content, and can be stored in the storage device 14 .

임포트 테이블 변경기(154)는, 암호화된 초기 코드 블록의 복호화한 후 실행시키는 보조 실행 코드를 로딩하도록 임포트 영역의 임포트 테이블을 수정한다.The import table changer 154 modifies the import table of the import area so as to load an auxiliary execution code to be executed after decoding the encrypted initial code block.

상기와 같이 코드 암호화부(150)를 통하여 암호화된 초기 코드 블록은 이후, 분리 실행 대상 코드 블록의 경우와 마찬가지로, 보조 실행 코드에 의하여 복호화되고, 온 메모리(On-Memory) 상태에서 구동(Running)된다. 이에 의하면, 실행형 컨텐츠에 대하여, 초기 구동 시 암호화를 이용한 1단계 보안 기술을 적용하고, 분리 실행을 통해 2단계 보안 기술을 적용함으로써, 실행형 컨텐츠의 불법 사용 및 복제를 더 강력하게 차단할 수 있게 된다.As described above, the initial code block encrypted through the code encrypting unit 150 is decoded by the auxiliary execution code, and is then executed in the on-memory state, do. According to this, the first level security technique using encryption at the time of the initial operation is applied to the executable content, and the second level security technology is applied through the detached execution, so that the illegal use and reproduction of the executive content can be more strongly blocked do.

도 9는 본 발명에 따른 분리 실행 기반 실행형 컨텐츠 구성 장치의 코드 조작부(130)에서 변환된 분리 실행 기반 실행형 컨텐츠(15a)의 구조를 예시한 것으로서, (a)는 원래의 실행형 컨텐츠(200)를 나타내고, (b)는 변환된 분리 실행 기반 실행형 컨텐츠(200')를 나타낸다. 도 9에서는 PE(Portable Executable) 포맷의 실행형 컨텐츠를 예로 들어 나타내었다.9 is a diagram illustrating the structure of the separated execution execution type content 15a converted by the code operation unit 130 of the execution execution based content composing apparatus according to the present invention, wherein (a) shows the original execution content 200, and (b) shows the converted execution execution based content 200 '. In FIG. 9, an executable content in a PE (Portable Executable) format is shown as an example.

도 9를 참조하면, 실행형 컨텐츠(200,200')는 DOS 헤더(210)와, PE 헤더(220)와, 코드 영역(220)과, 데이터 영역(240)과, 임포트 영역(import section)(250)과, 익스포트 영역(export section)(260)을 포함한다. 코드 영역(220)에는, 실제 실행되는 프로그램 코드들이 있고, 데이터 영역(240)에는 초기화된 프로그램 데이터들이 존재하고, 임포트 영역(250)에는 PE 파일이 실행될 때 외부에서 가져와 사용하는 함수들의 목록이 들어있고, 익스포트 영역(260)에는 다른 모듈이 사용할 수 있는 함수들이 노출된다.9, the executable contents 200 and 200 'include a DOS header 210, a PE header 220, a code area 220, a data area 240, an import section 250 , And an export section 260. [ In the code area 220, there are actually executed program codes. In the data area 240, initialized program data exists. In the import area 250, a list of functions to be fetched from the outside when a PE file is executed is included And functions to be used by other modules are exposed in the export area 260.

본 발명에 따른 분리 실행 기반 실행형 컨텐츠 구성 장치의 코드 분석부(120)를 통해, 프로파일 데이터 및 기 설정된 규칙 파일을 참조하여, 코드 영역(220)의 베이식 블록 그룹 중에서 분리실행 기반 복제 방지를 위해 사용될 분리 실행 대상 코드 블록(232)을 선정한다. 더하여, 암호화할 코드로서 초기 코드 블록(231)을 선정한다. 초기 코드 블록(231)은 코드 영역(230)에서 초기에 실행되는 코드 블록으로 설정된다.Referring to the profile data and the predetermined rule file through the code analyzing unit 120 of the execution-based content composing apparatus according to the present invention, in the basic block group of the code region 220, A separation execution target code block 232 to be used is selected. In addition, an initial code block 231 is selected as a code to be encrypted. The initial code block 231 is set to a code block that is initially executed in the code area 230.

상기와 같이 초기 코드 블록(231) 및 분리 실행 대상 코드 블록(232)이 선정되면, 코드 조작부(130)에 의하여, 안전 코드 블록(232)를 대신하여 스터브 코드(234)가 삽입되고, 분리 실행기반 실행형 컨텐츠가 구동될 때 안전 코드 블록(232)과 상호 작용하기 위한 보조 실행 코드를 로딩하도록 임포트 영역(250)의 임포트 테이블을 수정한다. 또한, 코드 암호화부(150)에 의하여, 보안 영역(270)이 새로 생성되고, 초기 코드 블록(231)을 특정 키로 암호화한 암호화된 코드 블록(271)가 보안 영역(270)에 삽입되며, 초기 코드 블록(231)을 대신하여 시동 스터브 코드(233)가 삽입된다. 시동 스터브 코드(233)는 암호화된 코드 블록(271)을 복호화하기 위한 함수를 호출하도록 구현된 것으로서, 복호화하는 함수는 보조 실행 코드에 구비될 수 있다.When the initial code block 231 and the separation executing object code block 232 are selected as described above, the code manipulation unit 130 inserts the stub code 234 in place of the safety code block 232, Modify the import table of the import area 250 to load the secondary executable code for interacting with the secure code block 232 when the underlying executable content is running. The encrypted code block 271 encrypted with the specific key is inserted into the secure area 270 and the initial encrypted code block 231 is inserted into the secure area 270. In the secure area 270, The start stub code 233 is inserted instead of the code block 231. [ The startup stub code 233 is implemented to call a function for decoding the encrypted code block 271, and the function for decoding can be provided in the auxiliary execution code.

도 10은 본 발명에 따른 분리 실행 기반 실행형 컨텐츠에서 보조 실행 코드의 구성 및 이를 통한 분리 실행 과정을 나타낸 도면이다.FIG. 10 is a diagram illustrating the construction and execution of separate execution of auxiliary execution code in execution-based execution content according to the present invention.

도 10을 참조하면, 본 발명에 따른 호스트 단말(13)에 저장된 분리 실행 기반 실행형 컨텐츠(200')와, 저장장치(14)에 저장되며 저장장치(14)에서 실행 가능한 형태로 변환된 저장장치용 코드 블록(400) 은, 보조 실행 코드(300)를 통해 상호 연동한다. 특히, 보조 실행 코드(300)는, 이종 프로세서로 구현된 호스트 단말(13)과 저장장치(14)가 연동하여 분리 실행을 구현할 수 있도록 한다.10, there is shown a separate execution execution based content 200 'stored in the host terminal 13 according to the present invention and an execution-based content 200' stored in the storage device 14 and converted into a form executable in the storage device 14 The code block 400 for the device interoperates with each other through the auxiliary execution code 300. In particular, the auxiliary execution code 300 allows the host terminal 13 and the storage device 14 implemented in the heterogeneous processor to interoperate with each other to implement separate execution.

이를 위하여 보호 실행 코드(300)는, 인터페이스 기능부(310)와, 패킹(packing) 기능부(320)와, 언패킹(unpacking) 기능부(330)와, 메모리 매핑 기능부(340)와, OS API 매핑 기능부(350)를 포함하고, 더하여, 코드 복호화 기능부(360)를 더 포함할 수 있다.The protection execution code 300 includes an interface function unit 310, a packing function unit 320, an unpacking function unit 330, a memory mapping function unit 340, OS API mapping function unit 350 and, in addition, may further include a code decoding function unit 360. [

인터페이스 기능부(310)는, 저장장치용 코드 블록(400)과의 통신 채널을 제공하여, 저장 장치(14)에 저장된 저장장치용 코드 블록(400)과 데이터를 교환한다. 예를 들어, 인터페이스 기능부(310)는 ISO-7816에 정의된 APDU(Application Protocol Data Unit)을 통해 저장장치용 코드 블록(400)과의 통신 채널을 제공할 수 있다. 인터페이스 기능부(310)는, 향후 TCP/IP Over USB와 같은 다른 종류의 인터페이스가 적용되더라도, 보조 실행 코드(300)의 다른 기능부가 변경되지 않도록, Network bearer transparent한 인터페이스를 제공하는 것이 바람직하다. 인터페이스 기능부(310)는 일반적인 I/O 함수들과 동일한 형태의 함수를 갖는다.The interface function unit 310 provides a communication channel with the storage device code block 400 and exchanges data with the storage device code block 400 stored in the storage device 14. [ For example, the interface function unit 310 may provide a communication channel with the storage device code block 400 through APDU (Application Protocol Data Unit) defined in ISO-7816. The interface function unit 310 preferably provides a Network bearer transparent interface so that other functional units of the auxiliary executable code 300 are not changed even if other types of interfaces such as TCP / IP Over USB are applied in the future. The interface function unit 310 has functions of the same type as general I / O functions.

패킹 기능부(320)는 스터브 코드(234)로부터 스택과 레지스터의 정보를 전달받아 패킹하여, 인터페이스 기능부(310)를 통해 저장장치용 코드 블록(400)으로 전달한다. 여기서, 스택 정보는, SP 레지스터에 의해 지정된 스택 포지션에서부터 시작하여 파라메터로 이용되는 스택 값들의 모임이고, 레지스터 정보는, 스터브 코드(234)에서 저장장치용 코드 블록(400)를 호출할 때 전달되는 레지스터 정보이다.The packing function unit 320 receives the stack information and the register information from the stub code 234, and transmits the stack information and the register information to the storage device code block 400 through the interface function unit 310. Here, the stack information is a group of stack values used as a parameter starting from the stack position designated by the SP register, and the register information is transmitted when calling the code block 400 for storage device in the stub code 234 Register information.

언패킹 기능부(330)는, 인터페이스 기능부(310)를 통해 저장장치용 코드 블록(400)으로부터 전달된 패킹된 데이터를 언패킹하여, 스터브 코드(234)로 반환한다. 언패킹 기능부(330)는, 저장장치용 코드 블록(400)의 반환 값이 Primitive Data Type인 경우에는 단순히 해당 레지스터의 갑에 반환 값을 설정하고, 반환 값이 메모리 주소인 경우, 해당 주소에 해당하는 값들을 반환 값에 따라서 변경한다.The unpacking function unit 330 unpacks the packed data transferred from the storage device code block 400 via the interface function unit 310 and returns the unpacked data to the stub code 234. [ When the return value of the storage device code block 400 is a primitive data type, the unpacking function unit 330 simply sets a return value in the address of the corresponding register, and if the return value is a memory address, Change the corresponding values according to the return value.

메모리 매핑 기능부(340)는, 인터페이스 기능부(310)를 통해 분리 실행 대상 코드블록(400)에서 전달된 데이터를 호스트 단말(13)의 메모리에 기록하거나, 호스트 단말(13)의 메모리에서 데이터를 디스패치하여 저장장치용 코드 블록(400)으로 전달한다. 메모리 매핑 기능부(340)를 통해 저장장치(14)의 저장장치용 코드 블록(400)이 호스트 단말(13)의 메모리를 참조하여 실행될 수 있다.The memory mapping function unit 340 writes the data transferred from the separation execution object code block 400 to the memory of the host terminal 13 through the interface function unit 310, And passes it to the code block 400 for the storage device. The code block 400 for the storage device of the storage device 14 can be executed with reference to the memory of the host terminal 13 via the memory mapping function unit 340. [

OS API 매핑 기능부(350)는, 인터페이스 기능부(310)를 통해 저장장치용 코드 블록(400)으로부터 API 명 및 파라메터 값을 전달받아, 호스트 단말(13)의 OS API를 호출하고, 그 결과를 반환받아 저장장치용 코드 블록(400)으로 전달한다. 이에 의하여, 저장 장치(14)에 저장된 저장장치용 코드 블록(400)이 호스트 단말(13)의 OS API를 호출하여 그 결과를 반환 받을 수 있다.The OS API mapping function unit 350 receives the API name and the parameter value from the storage device code block 400 via the interface function unit 310 and calls the OS API of the host terminal 13, And transfers it to the code block 400 for the storage device. Thus, the storage device code block 400 stored in the storage device 14 can call the OS API of the host terminal 13 and return the result.

그리고, 코드 복호화 기능부(360)는, 저장장치(400)로부터 특정 키를 획득하여 보안 영역(270)에 적재된 암호화된 초기 코드 블록(271)을 복호화하고, 복호화된 초기 코드 블록을 실행시킨다. The code decryption function unit 360 obtains a specific key from the storage device 400, decrypts the encrypted initial code block 271 loaded in the secure area 270, and executes the decrypted initial code block .

도 11은 코드 복호화 기능부(360)의 동작 흐름도로서, 이를 참조하면, 코드 복호화 기능부(360)는, 암호화된 초기 코드 블록과 암호화에 사용된 키(CEK)를 입력 받아, 키로 초기 코드 블록을 복호화한다(S361). 그리고, 복호화된 초기 코드 블록을 런타임 코드 실행자(Runtime code executioner)가 메모리 상에서 바로 실행시킨다(S362). 더 구체적을, 런타임 코드 실행자가 복호화된 초기 코드 블록으로 인스트럭션 포인터(Instruction Pointer)를 매핑하여 점프시켜, 복호화된 초기 코드 블록을 실행한다. 이에 의하면, 초기 코드 블록의 실행 시에만, 복호화된 초기 코드 블록이 메모리에 존재하고, 실행이 후에는 바로 소멸되며, 이를 통해 보안 효과를 더 높일 수 있다.11 is a flowchart illustrating an operation of the code decryption function unit 360. Referring to FIG. 11, the code decryption function unit 360 receives an encrypted initial code block and a key (CEK) used for encryption, (S361). Then, the decoded initial code block is immediately executed in the memory by the runtime code executioner (S362). More specifically, the run-time code executor maps an instruction pointer to an initial code block decoded and jumps to execute the decoded initial code block. According to this, only when the initial code block is executed, the decoded initial code block exists in the memory, and the execution is immediately terminated, thereby further enhancing the security effect.

상기와 같이 구성된 보조 실행 코드(300)를 이용한 분리 실행 동작은 다음과 같다.The separation executing operation using the auxiliary execution code 300 configured as described above is as follows.

먼저, 분리 실행 기반 실행형 컨텐츠(200)가 구동되기 시작하면, 코드 영역(230)의 초기에 위치한 시동 스터브 코드(233)에 의하여 보조 실행 코드(300)가 로딩되고(①), 코드 복호화 기능부(360)가 호출되어, 보안 영역(270)에 적재된 암호화된 초기 코드 블록(271)을 가져오고(②), 복호화에 필요한 키(CEK)를 획득하여(③), 초기 코드 블록(271)을 복호화한 후 실행한다(④). 이후 이어서 코드 영역의 다음 프로그램 코드가 순서대로 실행되다가, 스터브 코드(234)에 진입하면, 스터브 코드(234)에 의하여 패킹 기능부(320)가 호출되고, 호출된 패킹 기능부(320)가 스터브 코드(234)에서 전달된 스택 및 레지스터 정보를 패킹하여 인터페이스 기능부(310)를 통해 저장장치(14)의 저장장치용 코드 블록(400)으로 전달한다(⑤). 이에 저장장치용 코드 블록(400)이 실행되는데, 이때, 저장장치용 코드 블록(400)은 메모리 매핑 기능부(340) 및 OS API 매핑 기능부(350)를 통해 호스트 단말(13)의 메모리 및 OS API에 접근할 수 있다(⑥). 상기에 의해 저장장치용 코드 블록(400)의 실행이 완료되면, 그 결과값이 인터페이스 기능부(330)를 통해 보조 실행 코드(300)로 전달되고, 언패킹 기능부(330)가 결과값을 다시 언패킹하여 스터브 코드(234)로 반환한다(⑦).First, when the separation execution based executive content 200 starts to be driven, the auxiliary execution code 300 is loaded (①) by the startup stub code 233 located at the beginning of the code area 230 The unit 360 is invoked to obtain the encrypted initial code block 271 loaded in the secure area 270 and obtain the key CEK necessary for decryption ) And decodes it (step 4). Thereafter, the next program code in the code area is executed in order, and when the stub code 234 is entered, the packing function 320 is called by the stub code 234, The stack and register information transferred from the code 234 are packed and transferred to the code block 400 for the storage device of the storage device 14 through the interface function unit 310 (5). The code block 400 for the storage device is executed through the memory mapping function 340 and the OS API mapping function 350 in the memory of the host terminal 13, You can access the OS API (⑥). When the execution of the storage device code block 400 is completed, the result value is transferred to the auxiliary execution code 300 through the interface function unit 330, and the unpacking function unit 330 reads the result value Unpack it again and return it to the stub code 234 (7).

이에 의하면, 분리 실행 기반 실행형 컨텐츠(200') 및 저장장치용 코드 블록(400)이 호스트 단말(13)과 저장 장치(14)의 연동을 통해 정상적으로 동작할 수 있게 된다.Accordingly, the execution-based execution content 200 'and the code block 400 for the storage device can be normally operated through interlocking between the host terminal 13 and the storage device 14.

도 12는 본 발명에 의한 분리 실행 기반 실행형 컨텐츠에 의한 분리 실행 방법을 순차적으로 나타낸 순서도이다. 12 is a flowchart sequentially illustrating a separation execution method using execution-based execution contents according to the present invention.

도 12을 참조하면, 호스트 단말(13)에서 분리 실행 기반 실행형 컨텐츠(200')의 실행이 요청되면, 스터브 코드(234)를 기준으로 전반부에 위치한 프로그램 코드들이 순서대로 실행된다(S110).Referring to FIG. 12, when the execution of the execution-based execution content 200 'is requested in the host terminal 13, the program codes located in the first half are executed in order based on the stub code 234 (S110).

그리고 처리 순서에 따라서, 스터브 코드(234)로 진입하면, 스터브 코드(234)에 의하여 보조 실행 코드(300)로 분기하고(S130), 보조 실행 코드(300)에 의하여 스택 및 레지스터 정보가 패킹된다(S130). 그리고 나서, 저장장치(14)에 저장된 저장장치용 코드 블록(400)를 호출하여, 패킹된 데이터를 전달한다(S140). When entering the stub code 234 according to the processing sequence, the stub code 234 branches to the auxiliary execution code 300 (S130), and the stack and register information are packed by the auxiliary execution code 300 (S130). Then, the code block 400 for the storage device stored in the storage device 14 is called, and the packed data is transmitted (S140).

이에, 저장 장치(14)의 프로세서가 동작하여(S150), 패킹된 데이터를 다시 언패킹하여 스택 및 레지스터 정보를 로딩하고(S160), 이를 이용하여 저장장치용 코드 블록(400)을 실행한다(S170).The processor of the storage device 14 operates (S150), unpacks the packed data again, loads the stack and register information (S160), and executes the code block 400 for the storage device S170).

저장장치용 코드 블록(400)이 실행되면, 스택 및 레지스터의 정보가 변경되며, 저장 장치(14)는 이러한 변경된 스택 및 레지스터 정보를 패킹하여(S180), 호스트 단말(13)의 보조 실행 코드(300)로 전달한다(S190).When the code block 400 for the storage device is executed, information on the stack and registers is changed, and the storage device 14 packs the changed stack and register information (S180) 300 (S190).

이후, 보조 실행 코드(300)는 패킹된 데이터를 다시 언패킹하고, 언패킹된 데이터에 따라서 스택 및 레지스터 정보를 저장장치용 코드 블록(400)의 실행 결과값으로 리스토어한다(S200).Subsequently, the auxiliary execution code 300 unpacks the packed data again, and restores the stack and register information to the execution result value of the storage device code block 400 according to the unpacked data (S200).

이후, 보조 실행 코드(300)에서 다시 후반부의 코드로 분기되어(S210), 후반부의 코드를 실행한다(S220).Thereafter, the auxiliary execution code 300 branches again to the second half code (S210), and the second half code is executed (S220).

이상의 과정에 의하여, 분리 실행 기반 실행형 컨텐츠(200')가 정상적으로 동작하게 된다.By the above process, the execution-based execution content 200 'is normally operated.

본 실시 예에 따른 분리 실행 기반 실행형 컨텐츠 구성 장치, 분리 실행 기반 실행형 컨텐츠 및 실행형 컨텐츠의 분리 실행 방법은 다양한 컴퓨터 수단을 통하여 판독 가능한 소프트웨어 형태로 구현되어 컴퓨터로 판독 가능한 기록매체에 기록될 수 있다. 여기서, 기록매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 기록매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 예컨대 기록매체는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광 기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치를 포함한다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다. 이러한 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The separate execution execution based content composition apparatus, the separation execution execution execution contents and the execution execution method of the execution contents according to the present embodiment are implemented in software form readable by various computer means and recorded in a computer readable recording medium . Here, the recording medium may include program commands, data files, data structures, and the like, alone or in combination. Program instructions to be recorded on a recording medium may be those specially designed and constructed for the present invention or may be available to those skilled in the art of computer software. For example, the recording medium may be a magnetic medium such as a hard disk, a floppy disk and a magnetic tape, an optical medium such as a CD-ROM or a DVD, a magneto-optical medium such as a floppy disk magneto-optical media, and hardware devices that are specially configured to store and execute program instructions such as ROM, RAM, flash memory, and the like. Examples of program instructions may include machine language code such as those generated by a compiler, as well as high-level language code that may be executed by a computer using an interpreter or the like. Such a hardware device may be configured to operate as one or more software modules to perform the operations of the present invention, and vice versa.

이상과 같이, 본 명세서와 도면에는 본 발명의 바람직한 실시 예에 대하여 개시하였으나, 여기에 개시된 실시 예외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다. 또한, 본 명세서와 도면에서 특정 용어들이 사용되었으나, 이는 단지 본 발명의 기술 내용을 쉽게 설명하고 발명의 이해를 돕기 위한 일반적인 의미에서 사용된 것이지, 본 발명의 범위를 한정하고자 하는 것은 아니다.While the present invention has been described in connection with what is presently considered to be practical exemplary embodiments, it is to be understood that the invention is not limited to the disclosed embodiments, but, on the contrary, It will be apparent to those skilled in the art. Furthermore, although specific terms are used in this specification and the drawings, they are used in a generic sense only to facilitate the description of the invention and to facilitate understanding of the invention, and are not intended to limit the scope of the invention.

본 발명은 실행형 컨텐츠의 코드 영역에 존재하는 임의의 코드 블록이 분리 실행되도록 실행형 컨텐츠를 변환함으로써, 분리된 코드 블록이 없는 경우 실행형 컨텐츠가 정상적으로 동작할 수 없게 됨은 물론, 실행형 컨텐츠의 불법 복제 및 사용을 원천적으로 차단할 수 있는 우수한 효과가 있다.The present invention converts executable content such that arbitrary code blocks existing in the code area of the executable content are executed separately so that the executable content can not operate normally if there is no separate code block, There is an excellent effect of blocking illegal copying and use at its source.

더하여, 본 발명은 실행형 컨텐츠에서 분리 실행 대상 코드 블록을 분리하여 저장 장치의 프로세서에서 실행 가능한 저장장치용 코드 블록으로 변환하며, 변환된 저장장치용 코드 블록과 상호 작용하기 위한 보조 실행 코드를 추가로 생성하고, 실행형 컨텐츠의 실행 중에 보조 실행 코드로 분기하여, 저장장치용 코드 블록을 실행시키고 그 결과값을 리턴 받도록 분리 실행 기반 실행형 컨텐츠를 구성함으로써, 실행형 컨텐츠가 이종 프로세서의 연동을 통해 분리 실행될 수 있도록 하며, 그 결과, X86 실행형 컨텐츠가 ARM 프로세서를 갖는 스마트 카드나 USIM 등에서 분리 실행할 수 있다.In addition, the present invention separates the detachment target code block from the executable content and converts it into a code block for a storage device executable on the processor of the storage device, and adds an auxiliary execution code for interacting with the code block for the converted storage device The execution-type content is branched to the auxiliary execution code during the execution of the execution-type content, and the separation-execution-based execution content is configured to execute the storage device code block and receive the resultant value. And as a result, X86 executable content can be executed separately from a smart card or an USIM having an ARM processor.

10: 디지털 저작권 관리(Digital Rights Management) 시스템
11: 네트워크
12: 컨텐츠 제공 서버
13: 호스트 단말
14: 저장 장치
15a: 분리 실행 기반 실행형 컨텐츠
15b: 저장장치용 코드 블록
100: 분리 실행 기반 실행형 컨텐츠 구성 장치
110: 제어부
120: 코드 분석부
130: 코드 조작부
140: 코드 변환부
150: 코드 암호화부
10: Digital Rights Management System
11: Network
12: Content providing server
13: Host terminal
14: Storage device
15a: Separate execution-based executable content
15b: code block for storage device
100: Separate Execution-Based Executable Content Organizer
110:
120: Code analysis section
130:
140: Code conversion section
150: Code encryption unit

Claims (36)

호스트 단말과, 프로세서를 구비한 저장 장치의 연동을 통해 실행되는 분리 실행 기반 실행형 컨텐츠를 구성하는 장치에 있어서,
실행형 컨텐츠의 코드 영역을 분석하여, 상기 코드 영역으로부터 하나 이상의 분리 실행 대상 코드 블록을 선택하는 코드 분석부;
상기 선택된 분리 실행 대상 코드 블록을 분리하여, 상기 저장 장치에서 실행 가능한 형태의 저장장치용 코드 블록으로 변환하는 코드 변환부;
상기 실행형 컨텐츠의 실행시에 상기 저장장치용 코드블록을 호출하여 상기 저장장치용 코드 블록의 결과값을 반환 받도록 상기 실행형 컨텐츠를 변환하는 코드 조작부; 및
상기 코드 분석부와 코드 조작부와 코드 변환부의 동작을 제어하여, 상기 코드 조작부에 의해 변환된 실행형 컨텐츠 및 저장장치용 코드 블록으로 이루어진 분리 실행 기반 디지털 컨턴츠를 출력하는 제어부를 포함하는 것을 특징으로 하는 분리 실행 기반 실행형 컨텐츠 구성 장치.
1. An apparatus for configuring an execution-based execution content executed through an interworking of a host terminal and a storage device having a processor,
A code analyzer for analyzing a code area of the executable content and selecting one or more code blocks to be separated from the code area;
A code conversion unit for separating the selected separation execution object code block into a code block for a storage device executable in the storage device;
A code operation unit for calling the storage device code block at the time of executing the executable content and converting the executable content to receive a result value of the storage device code block; And
And a controller for controlling the operations of the code analysis unit, the code operation unit, and the code conversion unit to output a separation execution-based digital content composed of executable content and code blocks for the storage device converted by the code operation unit A detachment - based execution content composer.
제1항에 있어서, 상기 저장장치용 코드 블록은, 상기 호스트 단말과는 다른 구조의 프로세서를 구비한 저장장치에서 실행되는 것임을 특징으로 하는 분리 실행 기반 실행형 컨텐츠 구성 장치.The apparatus of claim 1, wherein the storage unit code block is executed in a storage device having a processor having a different structure from the host terminal. 제1항에 있어서, 상기 코드 분석부는
실행형 컨텐츠의 프로파일링을 통해 얻어진 프로파일 데이터 및 상기 프로파일 데이터의 정보 중에서 어느 항목에 가장 큰 비중을 두어 분리 실행 대상 코드 블록을 선택할 것인지를 정의하는 코드 블록 선택 규칙을 지정된 내부 데이터 포맷으로 변환하는 파서;
상기 파서를 통해, 상기 프로파일 데이터를 로드하는 프로파일 데이터 로더;
상기 파서를 통해, 상기 코드 블록 선택 규칙을 로드하는 규칙 로더; 및
상기 로드된 프로파일 데이터 및 코드 블록 선택 규칙을 참조하여, 상기 실행형 컨텐츠의 코드 영역에서 상기 하나 이상의 분리 실행 대상 코드 블록을 선택하는 코드 선택기를 포함하여 이루어지는 것을 특징으로 하는 분리 실행 기반 실행형 컨텐츠 구성 장치.
The apparatus of claim 1, wherein the code analyzer
A parser for converting a code block selection rule for defining which item of the profile data obtained through the profiling of the executable content and information of the profile data has the greatest weight and selecting the detachment object code block to be designated into the specified internal data format ;
A profile data loader loading the profile data via the parser;
A rule loader loading the code block selection rule through the parser; And
And a code selector for selecting the at least one piece of code to be separated for execution in the code area of the executable content with reference to the loaded profile data and code block selection rules, Device.
제3항에 있어서, 상기 코드 분석부는
상기 선택된 분리 실행 대상 코드 블록의 검증 결과를 피드백 받아, 상기 코드 블록 선택 규칙을 갱신하는 규칙 업데이터를 더 포함하는 것을 특징으로 하는 분리 실행 기반 실행형 컨텐츠 구성 장치.
The apparatus of claim 3, wherein the code analyzer
Further comprising a rule updater that receives the verification result of the selected detachment execution target code block and updates the code block selection rule.
제2항에 있어서, 상기 프로파일 데이터는
코드 블록 시작 주소, 코드 블록 종료 주소, 코드 블록 호출 회수, 코드 블록 크기, 플로팅 포인트 연산 유무, 코드 블록의 메모리 참조 회수, 코드 블록의 OS API를 호출하는 회수, 코드 블록의 실행 시간, 코드 블록에서 수행되는 전체 명령어(instruction) 개수, 코드 블록의 실행을 위해 전달되는 파라메터 개수 및 타입, 코드 블록의 실행 후에 반환되는 결과값의 종류 중에서 하나 이상을 포함하는 것을 특징으로 하는 분리 실행 기반 실행형 컨텐츠 구성 장치.
3. The method of claim 2,
Code block start address, code block end address, code block call count, code block size, floating point calculation, memory block reference count, code block OS API call count, code block execution time, The number of instructions to be executed, the number and type of parameters to be transmitted for execution of the code block, and the type of the result value to be returned after execution of the code block. Device.
제3항에 있어서, 상기 코드 블록 선택 규칙은
각 코드 블록에 대한 호출 빈도, 호출 위치, 호스트 단말의 메모리 참조 빈도, 호스트 단말의 OS API 참조 빈도, 및 저장장치의 하드웨어 요소 중에 적어도 하나에 가중치를 부여하여 나타내는 것을 특징으로 하는 분리 실행 기반 실행형 컨텐츠 구성 장치.
4. The method of claim 3, wherein the code block selection rule comprises:
Wherein a weight is assigned to at least one of a calling frequency for each code block, a calling position, a memory reference frequency of the host terminal, an OS API reference frequency of the host terminal, and a hardware element of the storage device, Content composition device.
제1항에 있어서, 상기 코드 조작부는
스택과 레지스터의 정보를 패킹하여 상기 저장장치용 코드블록을 호출하고, 상기 호출이 종료되면 상기 저장장치용 코드블록으로부터 반환된 결과값에 의해 상기 스택과 레지스터의 정보를 리스토어하는 보조 실행 코드를 생성하고,
상기 실행형 컨텐츠의 상기 분리 실행 대상 코드 블록이 있던 위치에, 상기 보조 실행 코드로 점프하는 스터브 코드를 삽입하는 것을 특징으로 하는 분리 실행 기반 실행형 컨텐츠 구성 장치.
The apparatus according to claim 1,
Generating an auxiliary executable code for packing the information of the stack and the register to call the code block for the storage device and restoring information of the stack and the register by the result value returned from the code block for the storage device when the call is terminated and,
Wherein the execution executing section inserts a stub code that jumps to the auxiliary execution code at a position where the code block for separation execution of the executable-type content exists.
제7항에 있어서, 상기 보조 실행 코드는
DLL(Dynamic Link Library) 파일로 구현되는 것을 특징으로 하는 분리 실행 기반 실행형 컨텐츠 구성 장치.
8. The method of claim 7, wherein the auxiliary executable code
And is implemented as a DLL (Dynamic Link Library) file.
제7항에 있어서, 상기 보조 실행 코드는
상기 저장장치용 코드블록과의 통신 채널을 제공하는 인터페이스 기능부;
상기 스터브 코드로부터 스택과 레지스터의 정보를 전달받아 패킹하여, 상기 인터페이스 기능부를 통해 상기 저장장치용 코드블록으로 전달하는 패킹 기능부;
상기 인터페이스 기능부를 통해 상기 저장장치용 코드블록으로부터 전달된 결과값을 언패킹하여 상기 스택과 레지스터의 정보를 리스토어하는 언패킹 기능부;
상기 저장장치용 코드블록에서 호스트 단말의 메모리를 호출할 경우, 상기 인터페이스 기능부를 통해, 상기 저장장치용 코드블록에서 전달된 데이터를 상기 메모리에 기록하고, 상기 메모리에서 데이터를 디스패치하여 상기 저장장치용 코드블록으로 전달하는 메모리 매핑 기능부; 및
상기 인터페이스 기능부를 통해, 상기 저장장치용 코드블록으로부터 API 명 및 파라메터 값을 전달받아, 호스트 단말의 OS API를 호출하고, 그 결과를 반환받아 상기 저장장치용 코드블록으로 전달하는 OS API 매핑 기능부를 포함하는 것을 특징으로 하는 분리 실행 기반 실행형 컨텐츠 구성 장치.
8. The method of claim 7, wherein the auxiliary executable code
An interface function unit for providing a communication channel with the code block for the storage device;
A packing function unit for receiving information on the stack and the register from the stub code, packing the same, and transmitting the packing information to the storage device code block through the interface function unit;
An unpacking function unit for unpacking a result value transferred from the code block for the storage device through the interface function unit and restoring information of the stack and the register;
Wherein when the memory of the host terminal is called in the code block for the storage device, the data transferred from the code block for the storage device is written to the memory through the interface function unit, the data is dispatched from the memory, A memory mapping function for transferring the data to a code block; And
An OS API mapping function unit for receiving an API name and a parameter value from the storage device code block through the interface function unit, calling an OS API of the host terminal, and returning the result to the storage device code block, Wherein the execution-based content generating apparatus comprises:
제7항에 있어서, 상기 코드 조작부는
상기 실행형 컨텐츠가 실행될 때 상기 보조 실행 코드가 로딩되도록, 실행형 컨텐츠의 임포트 테이블(Import table)을 더 수정하는 것을 특징으로 하는 분리 실행 기반 실행형 컨텐츠 구성 장치.
8. The apparatus according to claim 7, wherein the code manipulation unit
And further modify an import table of the executable content so that the auxiliary executable code is loaded when the executable content is executed.
제1항에 있어서, 상기 코드 변환부는
LLVM(LLVM Intermediate Representation)을 이용하여 구현되는 것을 특징으로 하는 분리 실행 기반 실행형 컨텐츠 구성 장치.
2. The apparatus of claim 1, wherein the code conversion unit
(LLVM Intermediate Representation). ≪ / RTI >
제11항에 있어서, 상기 코드 변환부는
상기 분리 실행 대상 코드 블록을 중간 단계 언어로 변환하는 선단 처리기;
상기 선단 처리기에서 중간 단계 언어로 변환된 분리 실행 대상 코드 블록을 최적화하는 중간 단계 최적화기; 및
상기 최적화된 중간 단계 언어의 분리 실행 대상 코드 블록을 하나 이상의 저장 장치 프로세서 기반 코드로 변환하여 서로 다른 코드로 이루어진 복수의 저장장치용 코드블록을 출력하는 코드 생성기를 포함하는 것을 특징으로 하는 분리 실행 기반 실행형 컨텐츠 구성 장치.
12. The apparatus of claim 11, wherein the code conversion unit
A preprocessor for converting the code block to be separated into an intermediate language;
An intermediate stage optimizer for optimizing a code block to be separated from the front end processor into an intermediate language; And
And a code generator for converting a code block to be separated for execution of the optimized intermediate language into one or more storage device processor based codes and outputting a plurality of code blocks for storage devices made up of different codes, Executable content composition device.
제1항 또는 제7항에 있어서,
상기 제어부의 제어에 따라서, 상기 코드 영역에서 암호화될 초기 코드 블록이 선정되면, 상기 초기 코드 블록을 특정 키로 암호화하고, 상기 실행형 컨텐츠의 실행시에 상기 특정 키를 획득하여 상기 암호화된 초기 코드 블록을 복호화하여 실행하도록 상기 실행형 컨텐츠를 변환하는 코드 암호화부를 더 포함하는 것을 특징으로 하는 분리 실행 기반 실행형 컨텐츠 구성 장치.
8. The method of claim 1 or 7,
Wherein the control unit is configured to encrypt the initial code block with a specific key when the initial code block to be encrypted is selected in the code area, acquire the specific key at execution of the executable content, Further comprising a code encrypting unit for converting the executable content so as to decrypt and execute the executable content.
제13항에 있어서, 상기 코드 암호화부는
상기 선정된 초기 코드 블록 대신에, 암호화된 초기 코드 블록을 복호화한 후 실행시키는 상기 보조 실행 코드의 함수를 호출하는 시동 스터브 코드를 생성하여, 상기 초기 코드 블록의 위치에 삽입하는 시동 스터브 생성기;
상기 실행형 컨텐츠에 보안 영역을 생성하고, 상기 생성된 보안 영역에 상기 암호화된 초기 코드 블록을 적재하는 섹션 생성기;
상기 선정된 초기 코드 블록을 특정 키로 암호화하여 상기 섹션 생성기로 제공하는 암호화기; 및
상기 실행형 컨텐츠의 실행시에 보조 실행 코드를 로딩하도록 임포트 영역의 임포트 테이블을 수정하는 임포트 테이블 변경기를 포함하는 것을 특징으로 하는 분리 실행 기반 실행형 컨텐츠 구성 장치.
14. The apparatus of claim 13, wherein the code encryption unit
A start stub generator for generating a start stub code for calling a function of the auxiliary execution code that decrypts and executes the encrypted initial code block instead of the selected initial code block and inserts the start stub code at a position of the initial code block;
A section generator for generating a secure area in the executable content and loading the encrypted initial code block in the generated secure area;
An encryptor for encrypting the selected initial code block with a specific key and providing the encrypted initial code block to the section generator; And
And an import table modifier for modifying an import table of the import area so as to load the auxiliary executable code when executing the executable content.
제14항에 있어서, 상기 보조 실행 코드는
상기 시동 스터브 코드의 호출에 따라서, 상기 저장장치로부터 특정 키를 획득하여 상기 보안 영역에 적재된 암호화된 초기 코드 블록을 복호화하고, 상기 복호화된 초기 코드 블록을 실행시키는 코드 복호화 기능부를 더 포함하는 것을 특징으로 하는 분리 실행 기반 실행형 컨텐츠 구성 장치.
15. The method of claim 14, wherein the auxiliary executable code
Further comprising a code decryption function unit for acquiring a specific key from the storage device in response to the call of the start stub code, decrypting the encrypted initial code block stored in the secure area, and executing the decrypted initial code block Wherein the execution-based content creator comprises:
제15항에 있어서, 상기 코드 복호화 기능부는
상기 복호화된 초기 코드 블록으로 인스트럭션 포인터(Instruction Pointer)를 매핑하여 점프시킴으로써, 복호화된 초기 코드 블록을 메모리 상에서 실행시키는 것을 특징으로 하는 분리 실행 기반 실행형 컨텐츠 구성 장치.
16. The apparatus of claim 15, wherein the code decoding function
And an instruction pointer is mapped to the decoded initial code block so as to execute the decoded initial code block on the memory.
제1항에 있어서, 상기 분리 실행 대상 코드 블록은
복수의 베이식 블록으로 이루어진 복수의 베이식 블록 그룹 중에서 실행형 컨텐츠의 중요 경로(critical path) 상에 있는 베이식 블록 그룹인 것을 특징으로 하는 분리 실행 기반 실행형 컨텐츠 구성 장치.
The method according to claim 1,
Wherein the basic block group is a basic block group on a critical path of executive contents among a plurality of basic block groups composed of a plurality of basic blocks.
제17항에 있어서, 상기 베이식 블록 그룹은
시작점(entry point)을 통한 제어 신호의 진입 및 상기 복수의 베이식 블록 간의 제어 신호의 이동은 허용하고, 상기 시작점을 제외한 상기 복수의 베이식 블록 내부로의 제어 신호의 진입이 없는 서로 관련된 상기 복수의 베이식 블록의 모임인 것을 특징으로 하는 분리 실행 기반 실행형 컨텐츠의 구성 장치.
18. The method of claim 17, wherein the basic block group
A plurality of basic blocks which are associated with each other and which do not allow control signals to enter into the plurality of basic blocks except for the start point, Block of the executable content.
제18항에 있어서,
상기 베이식 블록은 단일 입력(single input) 및 단일 출력(single output)의 속성과, 외부에서 내부로의 제어 신호의 진입을 허용하지 않는 속성을 갖는 코드 블록인 것을 특징으로 하는 분리 실행 기반 실행형 컨텐츠 구성 장치.
19. The method of claim 18,
Wherein the basic block is a code block having attributes of a single input and a single output and an attribute of not allowing entry of control signals from the outside to the inside. Constituent device.
호스트 단말과, 프로세서를 구비한 저장 장치를 통해 분리 실행되는 분리 실행 기반 실행형 컨텐츠가 기록된 컴퓨터 판독 가능한 기록 매체에 있어서,
스택과 레지스터의 정보를 패킹하여, 실행 파일의 코드 영역에서 분리된 하나 이상의 분리 실행 대상 코드 블록이 상기 저장장치에서 실행가능하도록 변환된 하나 이상의 저장장치용 코드 블록을 호출하고, 상기 호출이 종료되면 상기 저장장치용 코드 블록으로부터 반환된 스택과 레지스터의 정보를 리스토어하는 보조 실행 코드; 및
상기 하나 이상의 분리 실행 대상 코드 블록을 대신하여 상기 실행 파일의 코드 영역에 삽입되어, 해당 분리 실행 대상 코드 블록의 실행이 요구될 때 상기 보조 실행 코드로 점프하는 하나 이상의 스터브 코드를 포함하는 분리 실행 기반 실행형 컨텐츠가 기록된 기록 매체.
A computer-readable recording medium on which a separate execution execution-based executable content is recorded and executed via a host terminal and a storage device having a processor,
Stack and register information is packed so that one or more separate execution target code blocks separated from the code area of the executable file are invoked for the converted one or more storage device code blocks to be executable on the storage device, A secondary executable code for restoring information of the stack and registers returned from the code block for the storage device; And
And a code execution unit for executing a code to be executed on a separate execution basis including at least one stub code that is inserted into the code area of the executable file instead of the at least one separate execution object code block, A recording medium on which executable content is recorded.
제20항에 있어서,
상기 저장장치용 코드 블록은, 상기 호스트 단말과는 다른 구조의 프로세서를 내장한 저장장치에서 실행되는 것임을 특징으로 하는 분리 실행 기반 실행형 컨텐츠가 기록된 기록 매체.
21. The method of claim 20,
Wherein the code block for a storage device is executed in a storage device having a processor having a structure different from that of the host terminal.
제20항에 있어서,
상기 실행 파일의 초기 실행시에 상기 보조 실행 코드를 로딩하도록 보조 실행 코드 정보가 삽입된 임포트 테이블을 더 포함하는 것을 특징으로 하는 분리 실행 기반 실행형 컨텐츠가 기록된 기록매체.
21. The method of claim 20,
Further comprising an import table into which auxiliary execution code information is inserted so as to load the auxiliary execution code at the time of initial execution of the execution file.
제20항에 있어서, 상기 보조 실행 코드는
DLL(Dynamic Link Library) 파일로 구현되는 것을 특징으로 하는 분리 실행 기반 실행형 컨텐츠가 기록된 기록 매체.
21. The method of claim 20, wherein the auxiliary executable code
And a dynamic link library (DLL) file.
제20항에 있어서, 상기 보조 실행 코드는
상기 저장장치용 코드 블록과의 통신 채널을 제공하는 인터페이스 기능부;
상기 스터브 코드로부터 스택과 레지스터의 정보를 전달받아 언패킹하여, 상기 인터페이스 기능부를 통해 상기 저장장치용 코드 블록으로 전달하는 패킹 기능부;
상기 인터페이스 기능부를 통해 상기 저장장치용 코드 블록으로부터 전달된 스택과 레지스터의 정보를 언패킹하여 상기 스터브 코드로 반환하는 언패킹 기능부;
상기 인터페이스 기능부를 통해 상기 저장장치용 코드블록에서 전달된 데이터를 상기 호스트 단말의 메모리에 기록하거나, 상기 호스트 단말의 메모리에서 데이터를 디스패치하여 상기 저장장치용 코드 블록으로 전달하는 메모리 매핑 기능부; 및
상기 인터페이스 기능부를 통해 상기 저장장치용 코드 블록으로부터 API 명 및 파라메터 값을 전달받아, 호스트 단말의 OS API를 호출하고, 그 결과를 반환받아 상기 저장장치용 코드 블록으로 전달하는 OS API 매핑 기능부를 포함하는 것을 특징으로 하는 분리 실행 기반 실행형 컨텐츠가 기록된 기록매체.
21. The method of claim 20, wherein the auxiliary executable code
An interface function unit for providing a communication channel with the code block for the storage device;
A packing function unit for receiving the stack and register information from the stub code and unpacking the stack and transmitting the unpacked code block to the storage device code block through the interface function unit;
An unpacking function unit for unpacking the stack and the information of the register transferred from the code block for the storage device through the interface function unit and returning the information to the stub code;
A memory mapping function unit for writing the data transferred from the code block for the storage device to the memory of the host terminal via the interface function unit or dispatching the data from the memory of the host terminal to the code block for the storage device; And
An OS API mapping function unit for receiving an API name and a parameter value from the storage device code block through the interface function unit, calling an OS API of the host terminal, and returning the result to the storage device code block Wherein the execution-based content is recorded on the recording medium.
제23항에 있어서, 상기 보조 실행 코드는
상기 저장장치로부터 특정 키를 획득하여 보안 영역에 적재된 암호화된 초기 코드 블록을 복호화하고, 상기 복호화된 초기 코드 블록을 실행시키는 코드 복호화 기능부를 더 포함하는 것을 특징으로 하는 분리 실행 기반 실행형 컨텐츠가 기록된 기록매체.
24. The method of claim 23, wherein the auxiliary executable code
Further comprising a code decryption function for decrypting an encrypted initial code block stored in the secure area by acquiring a specific key from the storage device and executing the decrypted initial code block. Recorded recording medium.
제25항에 있어서,
상기 실행 파일의 코드 영역에서 선정된 초기 코드 블록 대신하여 삽입되어, 상기 초기 코드 블록의 실행이 요구될 때, 상기 보조 실행 코드의 코드 복호화 기능부를 호출하는 시동 스터브 코드; 및
상기 특정 키로 암호화된 초기 코드 블록이 적재된 보안 영역을 더 포함하는 분리 실행 기반 실행형 컨텐츠가 기록된 기록매체.
26. The method of claim 25,
A start-up stub code inserted in place of the initial code block selected in the code area of the execution file and calling the code decoding function of the auxiliary execution code when execution of the initial code block is requested; And
Further comprising a secure area on which an initial code block encrypted with the specific key is loaded.
제26항에 있어서, 상기 코드 복호화 기능부는
상기 복호화된 초기 코드 블록으로 인스트럭션 포인터(Instruction Pointer)를 매핑하여 점프시킴으로써, 복호화된 초기 코드 블록을 메모리 상에서 실행시키는 것을 특징으로 하는 분리 실행 기반 실행형 컨텐츠가 기록된 기록매체.
27. The apparatus of claim 26, wherein the code decoding function
Wherein the decoded initial code block is mapped by mapping an instruction pointer to the decoded initial code block, thereby executing the decoded initial code block on the memory.
제20항에 있어서, 상기 분리 실행 대상 코드 블록은
상기 실행 파일의 코드 영역에 존재하는 복수의 베이식 블록으로 이루어진 복수의 베이식 블록 그룹 중에서 실행형 컨텐츠의 중요 경로(critical path) 상에 있는 베이식 블록 그룹인 것을 특징으로 하는 분리 실행 기반 실행형 컨텐츠가 기록된 기록매체.
21. The information processing apparatus according to claim 20,
Wherein the basic block group is a basic block group on a critical path of executive contents among a plurality of basic block groups composed of a plurality of basic blocks existing in a code region of the executable file. Lt; / RTI >
제28항에 있어서, 상기 베이식 블록 그룹은
시작점(entry point)을 통한 제어 신호의 진입 및 상기 복수의 베이식 블록 간의 제어 신호의 이동은 허용하고, 상기 시작점을 제외한 상기 복수의 베이식 블록 내부로의 제어 신호의 진입이 없는 서로 관련된 상기 복수의 베이식 블록의 모임인 것을 특징으로 하는 분리 실행 기반 실행형 컨텐츠가 기록된 기록매체.
29. The method of claim 28, wherein the basic block group comprises
A plurality of basic blocks which are associated with each other and which do not allow control signals to enter into the plurality of basic blocks except for the start point, Wherein the execution-based content is a collection of blocks.
제29항에 있어서,
상기 베이식 블록은 단일 입력(single input) 및 단일 출력(single output)의 속성과, 외부에서 내부로의 제어 신호의 진입을 허용하지 않는 속성을 갖는 코드 블록인 것을 특징으로 하는 분리 실행 기반 실행형 컨텐츠가 기록된 기록매체.
30. The method of claim 29,
Wherein the basic block is a code block having attributes of a single input and a single output and an attribute of not allowing entry of control signals from the outside to the inside. Is recorded.
실행형 컨텐츠의 코드 영역에서 하나 이상의 분리 실행 대상 코드 블록이 저장장치에서 실행가능한 형태로 변환된 하나 이상의 저장장치용 코드 블록이 저장된 프로세서를 구비한 저장 장치와 연결된 호스트 단말에서의 실행형 컨텐츠의 분리 실행 방법에 있어서,
상기 호스트 단말이 상기 실행형 컨텐츠의 실행 파일을 실행하는 중에, 상기 분리 실행 대상 코드 블록으로의 진입이 요구되면, 스택 및 레지스터 정보를 패킹하는 단계;
상기 저장 장치에 저장된 저장장치용 코드 블록을 호출하여, 상기 패킹된 스택 및 레지스터 정보를 전달하는 단계;
상기 저장 장치로부터 상기 저장장치용 코드 블록의 결과값이 포함된 데이터를 전달받는 단계; 및
상기 저장 장치로부터 전달된 데이터를 언패킹하여 상기 저장장치용 코드 블록의 결과값을 얻고, 상기 결과값에 근거하여 스택 및 레지스터 정보를 리스토어 하는 단계를 포함하는 실행형 컨텐츠의 분리 실행 방법.
Separating executable content from a host terminal connected to a storage device having a processor storing one or more code blocks for a storage device in which at least one or more separate execution object code blocks are converted into executable forms in a code area of the executable contents In an implementation method,
Packing the stack and register information when the host terminal is required to enter the detachment object code block while executing the executable file of the executable content;
Calling a code block for a storage device stored in the storage device to transfer the packed stack and register information;
Receiving data including a result value of the code block for the storage device from the storage device; And
Unpacking the data transferred from the storage device to obtain a result of the code block for the storage device, and restoring stack and register information based on the resultant value.
제31항에 있어서,
상기 저장장치용 코드 블록은 상기 호스트 단말과는 다른 구조의 프로세서를 구비한 저장장치에서 실행되는 것임을 특징으로 하는 실행형 컨텐츠의 분리 실행 방법.
32. The method of claim 31,
Wherein the code block for the storage device is executed in a storage device having a processor different in structure from the host terminal.
제31항에 있어서, 상기 분리 실행 대상 코드 블록은
복수의 베이식 블록으로 이루어진 복수의 베이식 블록 그룹 중에서 실행형 컨텐츠의 중요 경로(critical path) 상에 있는 베이식 블록 그룹인 것을 특징으로 하는 실행형 컨텐츠의 분리 실행 방법.
32. The method according to claim 31,
Wherein the basic block group is a basic block group on a critical path of executive contents among a plurality of basic block groups composed of a plurality of basic blocks.
제33항에 있어서, 상기 베이식 블록 그룹은
시작점(entry point)을 통한 제어 신호의 진입 및 상기 복수의 베이식 블록 간의 제어 신호의 이동은 허용하고, 상기 시작점을 제외한 상기 복수의 베이식 블록 내부로의 제어 신호의 진입이 없는 서로 관련된 상기 복수의 베이식 블록의 모임인 것을 특징으로 하는 실행형 컨텐츠의 분리 실행 방법.
34. The method of claim 33, wherein the basic block group
A plurality of basic blocks which are associated with each other and which do not allow control signals to enter into the plurality of basic blocks except for the start point, And a group of blocks.
제34항에 있어서,
상기 베이식 블록은 단일 입력(single input) 및 단일 출력(single output)의 속성과, 외부에서 내부로의 제어 신호의 진입을 허용하지 않는 속성을 갖는 코드 블록인 것을 특징으로 하는 실행형 컨텐츠의 분리 실행 방법.
35. The method of claim 34,
Wherein the basic block is a code block having attributes of a single input and a single output and an attribute of not allowing an entry of a control signal from the outside to the inside. Way.
제31항 내지 제35항 중 어느 한 항에 기재된 실행형 컨텐츠의 분리 실행 방법을 수행하는 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체.
35. A computer-readable recording medium having recorded thereon a program for executing the method for executing separate execution contents according to any one of claims 31 to 35.
KR1020100030784A 2009-07-30 2010-04-05 Separating execution method of executable contents, device for forming separating execution based executable contents, and storage media recorded separating execution based executable contents KR101525402B1 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR20090070229 2009-07-30
KR20090070231 2009-07-30
KR1020090070231 2009-07-30
KR1020090070229 2009-07-30

Publications (2)

Publication Number Publication Date
KR20110013191A true KR20110013191A (en) 2011-02-09
KR101525402B1 KR101525402B1 (en) 2015-06-08

Family

ID=43772986

Family Applications (8)

Application Number Title Priority Date Filing Date
KR1020100029969A KR101432989B1 (en) 2009-07-30 2010-04-01 System for providing code block for separating execution based contents, method thereof and computer recordable medium storing the method
KR20100029978A KR101487176B1 (en) 2009-07-30 2010-04-01 System for providing code block for separating execution based contents, method thereof and computer recordable medium storing the method
KR1020100030189A KR101504087B1 (en) 2009-07-30 2010-04-02 Web service system and method based on storage device, and storage media recorded program executing web service method
KR1020100030172A KR20110013187A (en) 2009-07-30 2010-04-02 System and method for providing service or contents using storage device, drm-server and storage device, and recording medium thereof
KR20100030188A KR101487175B1 (en) 2009-07-30 2010-04-02 Host device and Storage device for separating management of RO, method for separating management of RO, and storage media recorded program executing separating RO management
KR1020100031065A KR101544731B1 (en) 2009-07-30 2010-04-05 Storage device capable of separating execution of executable content, and device for configuring native execution environment in storage device
KR1020100031120A KR101374159B1 (en) 2009-07-30 2010-04-05 System and method for managing rights object using storage device, DRM-server and terminal, and recording medium thereof
KR1020100030784A KR101525402B1 (en) 2009-07-30 2010-04-05 Separating execution method of executable contents, device for forming separating execution based executable contents, and storage media recorded separating execution based executable contents

Family Applications Before (7)

Application Number Title Priority Date Filing Date
KR1020100029969A KR101432989B1 (en) 2009-07-30 2010-04-01 System for providing code block for separating execution based contents, method thereof and computer recordable medium storing the method
KR20100029978A KR101487176B1 (en) 2009-07-30 2010-04-01 System for providing code block for separating execution based contents, method thereof and computer recordable medium storing the method
KR1020100030189A KR101504087B1 (en) 2009-07-30 2010-04-02 Web service system and method based on storage device, and storage media recorded program executing web service method
KR1020100030172A KR20110013187A (en) 2009-07-30 2010-04-02 System and method for providing service or contents using storage device, drm-server and storage device, and recording medium thereof
KR20100030188A KR101487175B1 (en) 2009-07-30 2010-04-02 Host device and Storage device for separating management of RO, method for separating management of RO, and storage media recorded program executing separating RO management
KR1020100031065A KR101544731B1 (en) 2009-07-30 2010-04-05 Storage device capable of separating execution of executable content, and device for configuring native execution environment in storage device
KR1020100031120A KR101374159B1 (en) 2009-07-30 2010-04-05 System and method for managing rights object using storage device, DRM-server and terminal, and recording medium thereof

Country Status (1)

Country Link
KR (8) KR101432989B1 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150101811A (en) * 2014-02-27 2015-09-04 (주)스마일게이트엔터테인먼트 Method of unpacking protection with code separation and apparatus thereof
US10310866B2 (en) 2015-08-12 2019-06-04 Samsung Electronics Co., Ltd. Device and method for executing application
KR20200068557A (en) * 2018-12-05 2020-06-15 한국전자통신연구원 Apparatus and method for executing function

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101447282B1 (en) * 2012-08-20 2014-10-16 주식회사 네오위즈인터넷 Method, mobile terminal, recording medium, and system for providing mobile payment service
WO2014178618A1 (en) * 2013-04-29 2014-11-06 케이피커뮤니케이션 주식회사 Bidirectional advertisement motion picture matching system and method for operating same
KR102156371B1 (en) 2013-11-27 2020-09-15 한국전자통신연구원 Method for providing embedded software development tools for supporting embedded software development environment based on native building and apparatus thereof
KR102204654B1 (en) * 2014-01-24 2021-01-19 주식회사 넥슨코리아 Method and apparatus for providing content purchased from offline store
CA2993857A1 (en) * 2018-02-02 2019-08-02 Ferguson Technologies Inc. Systems and methods for generating electrical energy

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002215828A (en) * 2000-11-16 2002-08-02 Yoshinobu Inada Management system and management method of digital literary work
KR100407389B1 (en) * 2001-11-19 2003-11-28 에스케이텔레텍주식회사 Method and Device for providing Resource Alone of Contents Application for Mobile Communication terminal
KR101254209B1 (en) * 2004-03-22 2013-04-23 삼성전자주식회사 Apparatus and method for moving and copying right objects between device and portable storage device
KR101043336B1 (en) * 2004-03-29 2011-06-22 삼성전자주식회사 Method and apparatus for acquiring and removing informations of digital right objects
JP4664055B2 (en) 2004-12-10 2011-04-06 株式会社エヌ・ティ・ティ・ドコモ Program dividing device, program executing device, program dividing method, and program executing method
JP2006172351A (en) 2004-12-20 2006-06-29 Hitachi Ltd Method and system for content expiration date management by use of removable medium
KR100738917B1 (en) 2006-02-14 2007-07-12 에스케이 텔레콤주식회사 Server, method and system for providing encryption contents and rights object to electronic communication device by using delegation schemes of rights issuer server
KR101346734B1 (en) * 2006-05-12 2014-01-03 삼성전자주식회사 Multi certificate revocation list support method and apparatus for digital rights management
KR101314271B1 (en) * 2006-07-25 2013-10-02 엘지전자 주식회사 Digital rights management method and system thereof
KR101354759B1 (en) 2007-01-03 2014-01-22 엘지전자 주식회사 Digital rights management method for terminal
KR100783811B1 (en) 2007-08-28 2007-12-10 주식회사 파수닷컴 Method of digital rights management about a compressed file
KR101689351B1 (en) 2007-12-20 2016-12-23 코닌클리케 필립스 엔.브이. Device and method for digital right management

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150101811A (en) * 2014-02-27 2015-09-04 (주)스마일게이트엔터테인먼트 Method of unpacking protection with code separation and apparatus thereof
US10310866B2 (en) 2015-08-12 2019-06-04 Samsung Electronics Co., Ltd. Device and method for executing application
US11614948B2 (en) 2015-08-12 2023-03-28 Samsung Electronics Co., Ltd. Device and method for executing a memo application in response to detachment of a stylus
KR20200068557A (en) * 2018-12-05 2020-06-15 한국전자통신연구원 Apparatus and method for executing function

Also Published As

Publication number Publication date
KR20110013188A (en) 2011-02-09
KR20110013184A (en) 2011-02-09
KR20110013189A (en) 2011-02-09
KR101504087B1 (en) 2015-03-24
KR101432989B1 (en) 2014-08-27
KR20110013192A (en) 2011-02-09
KR101544731B1 (en) 2015-08-17
KR20110013193A (en) 2011-02-09
KR101487175B1 (en) 2015-02-02
KR101374159B1 (en) 2014-03-13
KR20110013187A (en) 2011-02-09
KR101525402B1 (en) 2015-06-08
KR20110013185A (en) 2011-02-09
KR101487176B1 (en) 2015-02-02

Similar Documents

Publication Publication Date Title
KR101525402B1 (en) Separating execution method of executable contents, device for forming separating execution based executable contents, and storage media recorded separating execution based executable contents
US8090959B2 (en) Method and apparatus for protecting .net programs
TW476914B (en) Using a high level programming language with a microcontroller
EP1410150B1 (en) Protecting software applications against software piracy
US20070271446A1 (en) Application Execution Device and Application Execution Device Application Execution Method
US8166471B2 (en) Implementing portable content protection to secure secrets
Rossberg et al. Bringing the web up to speed with WebAssembly
CN105204393B (en) Single-chip microcomputer R&D and production instrument and its implementation based on empty core single-chip microcomputer
US20060130128A1 (en) Process for compiling and executing software applications in a multi-processor environment
US7810086B2 (en) Safe code-motion of dangerous instructions during compiler optimization
CN108681457A (en) The Android application program guard methods explained with residual code based on code sinking
CN106228041B (en) A kind of code protection method for Android precompile
US20090187769A1 (en) System and method for an autonomous software protection device
CN109255235A (en) Mobile application third party library partition method based on User space sandbox
US20150113502A1 (en) Method and system for encapsulation of application
CN110888674B (en) Method and device for executing security calculation in Python virtual machine
KR101366669B1 (en) Method for communicating based on UMS, host terminal, and medium recorded program thereof
CN101593258B (en) System for realizing.Net virtual machine in software protection device and method thereof
KR101436741B1 (en) The method and system for applying security solution program
KR20110013176A (en) Server for registering separating execution based contents, method thereof and computer recordable medium storing program performing the method
US20150052514A1 (en) Method and computer system of distributing a computer program product
KR20190060181A (en) Apparatus and Method of Providing Security, and Apparatus and Method of Executing Security for Protecting Code of Shared Object
Staursky Lambda Calculus for Binary Security and Analysis
Hyppönen et al. Trading-off type-inference memory complexity against communication

Legal Events

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

Payment date: 20180427

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190422

Year of fee payment: 5