KR20110013182A - Apparatus for separating contents in separating execution based, method thereof and computer recordable medium storing the method - Google Patents

Apparatus for separating contents in separating execution based, method thereof and computer recordable medium storing the method Download PDF

Info

Publication number
KR20110013182A
KR20110013182A KR1020100027937A KR20100027937A KR20110013182A KR 20110013182 A KR20110013182 A KR 20110013182A KR 1020100027937 A KR1020100027937 A KR 1020100027937A KR 20100027937 A KR20100027937 A KR 20100027937A KR 20110013182 A KR20110013182 A KR 20110013182A
Authority
KR
South Korea
Prior art keywords
content
separation
basic block
execution
basic
Prior art date
Application number
KR1020100027937A
Other languages
Korean (ko)
Other versions
KR101441999B1 (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 KR20110013182A publication Critical patent/KR20110013182A/en
Application granted granted Critical
Publication of KR101441999B1 publication Critical patent/KR101441999B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/258Client or end-user data management, e.g. managing client capabilities, user preferences or demographics, processing of multiple end-users preferences to derive collaborative data
    • H04N21/25808Management of client data
    • H04N21/25816Management of client data involving client authentication
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/8166Monomedia components thereof involving executable data, e.g. software
    • H04N21/8193Monomedia components thereof involving executable data, e.g. software dedicated tools, e.g. video decoder software or IPMP tool
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/835Generation of protective data, e.g. certificates
    • H04N21/8355Generation of protective data, e.g. certificates involving usage data, e.g. number of copies or viewings allowed

Abstract

PURPOSE: An isolating execution-based contents isolation device is provided to expand a range of a contents code area by performing static analysis about the contents using a basic information of a collected code region. CONSTITUTION: A contents calling unit(12) calls a contents to be separated. A basic block group selector(19) selects a plurality of basic block groups through a profiling about the code area of the called contents and static analysis. A plurality of basic block groups is selected. An extracting and generating unit(18) select the separation operational objection code block of a plurality of basic block groups. The extracting and generating unit extract the selected separation operational objection code block from the code area of the contents.

Description

분리 실행 기반의 컨텐츠 분리 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록매체{Apparatus for separating contents in separating execution based, method thereof and computer recordable medium storing the method}Apparatus for separating contents in separating execution based, method approximately and computer recordable medium storing the method}

본 발명은 컨텐츠의 복제 방지 기술에 관한 것으로, 더욱 상세하게는 컨텐츠에 대한 호스트 단말(host terminal)과 저장장치 간의 분리 실행에 필요한 분리 실행 대상 코드 블록과 서비스용 컨텐츠를 해당 컨텐츠에 대한 프로파일링 및 분석을 통하여 분리하는 분리 실행 기반의 컨텐츠 분리 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록매체에 관한 것이다.The present invention relates to a technology for preventing copying of content, and more particularly to profiling the content for service and the execution code block and the execution target code that are required for separation between the host terminal and the storage device for the content. Disclosed is a separation execution-based content separation apparatus for separating through analysis, a method, and a computer-readable recording medium on which the method is recorded.

일반적으로 호스트 단말은 운영체제 위에 복수의 컨텐츠가 설치된다. 컨텐츠는 디지털 형태로 저장되고 유통되는 디지털 저작물로서, 소프트웨어, 응용프로그램, 멀티미디어 데이터 등을 포함한다. 예컨대 사용자는 호스트 단말에 설치된 각종 컨텐츠를 이용하여 문서편집, 영상편집, 게임 등을 수행할 수 있다.In general, a plurality of contents are installed in a host terminal on an operating system. Content is a digital work that is stored and distributed in digital form and includes software, applications, multimedia data, and the like. For example, the user may perform document editing, image editing, games, etc. using various contents installed in the host terminal.

이와 같은 컨텐츠는, 무료로 사용할 수 있는 컨텐츠도 있지만, 온오프라인에서 유료로 판매되고 있다. 사용자는 필요한 컨텐츠를 구매하고, 구매한 컨텐츠를 호스트 단말에 설치함으로써 사용하게 된다. 컨텐츠는 인증번호를 통한 인증을 통과하게 되면, 호스트 단말에 설치된다. 통상적으로 인증번호는 구매한 컨텐츠와 함께 제공된다.Although such content can be used free of charge, it is sold for a fee online or offline. The user purchases the necessary content and installs the purchased content in the host terminal. When the content passes the authentication through the authentication number, it is installed in the host terminal. Typically, the authentication number is provided with the purchased content.

이와 같은 인증번호를 이용한 인증 방식의 컨텐츠는 해킹에 쉽게 노출되는 문제점을 안고 있다. 즉 해당 프로그램의 인증번호가 해킹되거나, 인증을 우회할 수 있는 코드가 해당 컨텐츠에 추가될 경우, 해당 컨텐츠를 구매하지 않은 사람들도 복제된 컨텐츠를 호스트 단말에 설치하여 무단으로 사용할 수 있다.Content of the authentication method using the authentication number has a problem that is easily exposed to hacking. That is, if the authentication number of the program is hacked or a code that bypasses authentication is added to the content, those who have not purchased the content can install the duplicated content on the host terminal and use it without permission.

이와 같은 컨텐츠의 무단 사용으로 인한 컨텐츠 제공자(content provider; CP)의 피해가 증가하고 있는 실정이다. 컨텐츠의 무단 사용은 컨텐츠 제공자의 컨텐츠의 개발 의욕을 떨어뜨리는 요인으로 작용하고 있다.The damage of the content provider (CP) due to the unauthorized use of such content is increasing. Unauthorized use of the content acts as a factor that lowers the motivation of the content provider to develop the content.

또한 컨텐츠 제공자는 개발한 컨텐츠의 무단 복제를 억제하기 위한 보안 방법에도 주의를 기울어야 하기 때문에, 컨텐츠 개발에 많은 비용이 소요되어 컨텐츠 제공자에게 부담으로 작용하고 있는 실정이다.In addition, the content provider has to pay attention to a security method for suppressing unauthorized copying of the developed content, which is a burden on the content provider due to the high cost of developing the content.

따라서, 본 발명의 목적은 개발한 컨텐츠의 복제를 억제하기 위한 보안 방법에 소요되는 컨텐츠 제공자의 부담을 최소화할 수 있는 분리 실행 기반의 컨텐츠 분리 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록매체를 제공하는 데 있다.Accordingly, an object of the present invention is to provide a content separation apparatus based on a separation execution that can minimize the burden on a content provider in a security method for suppressing duplication of developed content, a method thereof, and a computer-readable recording method. To provide a recording medium.

본 발명의 다른 목적은 컨텐츠의 코드 영역의 일부 블록을 호스트 단말과 저장장치 간의 분리 실행을 가능하게 하는 분리 실행 대상 코드 블록으로 추출하는 분리 실행 기반의 컨텐츠 분리 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록매체를 제공하기 위한 것이다.Another object of the present invention is a content separation apparatus based on a separation execution method for extracting a partial block of a code area of a content into a separation execution target code block that enables a separation execution between a host terminal and a storage device, and a method and a method thereof. To provide a computer-readable recording medium.

본 발명의 또 다른 목적은 컨텐츠를 분리 실행 대상 코드 블록과 서비스용 컨텐츠로 분리하는 분리 실행 기반의 컨텐츠 분리 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록매체를 제공하기 위한 것이다.It is still another object of the present invention to provide a separation execution based content separation device for separating content into a code block for execution and content for service, a method thereof, and a computer-readable recording medium on which the method is recorded.

본 발명의 또 다른 목적은 컨텐츠에 대한 호스트 단말과 저장장치 간의 분리 실행 시 안정적인 실행 환경을 제공할 수 있는 분리 실행 대상 코드 블록을 추출하는 분리 실행 기반의 컨텐츠 분리 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록매체를 제공하기 위한 것이다.It is still another object of the present invention to provide a separation execution based content separation device for extracting a separation execution target code block that can provide a stable execution environment when a separation between a host terminal and a storage device for a content, a method, and a method thereof are recorded. To provide a computer-readable recording medium.

본 발명의 또 다른 목적은 시작점(entry point)을 제외한 내부로의 제어 신호의 진입이 있는 부적합한 베이식 블록 그룹이 분리 실행 대상 코드 블록으로 컨텐츠에서 선출되는 것을 억제할 수 있는 분리 실행 기반의 컨텐츠 분리 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록매체를 제공하기 위한 것이다.It is still another object of the present invention to provide a separation execution based content separation device capable of suppressing an inappropriate basic block group having entry of a control signal into an interior except an entry point from being selected as content in a separation execution target code block. And a method and a computer readable recording medium on which the method is recorded.

본 발명의 또 다른 목적은 컨텐츠의 복제를 억제하기 위해서, 컨텐츠의 코드 영역의 분석 범위를 확장하여 컨텐츠의 복제 방지에 필요한 코드 블록의 추출율을 향상시킬 수 있는 분리 실행 기반의 컨텐츠 분리 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록매체를 제공하는 데 있다.Another object of the present invention is to separate content execution apparatus based on separation execution that can extend the analysis range of the code area of the content to improve the extraction rate of the code block required for copy protection of the content, in order to suppress the duplication of the content, the method And a method for providing a computer readable recording medium having recorded thereon.

상기 목적을 달성하기 위하여, 본 발명은 컨텐츠 호출부, 베이식 블록 그룹 선정부, 추출 및 생성부를 포함하는 분리 실행 기반의 컨텐츠 분리 장치를 제공한다. 컨텐츠 호출부는 분리할 컨텐츠를 호출한다. 베이식 블록 그룹 선정부는 호출한 컨텐츠의 코드 영역에 대한 동적 프로파일링(dynamic profiling) 및 정적 분석(static analysis)을 통하여 복수의 베이식 블록 그룹을 선정한다. 그리고 추출 및 생성부는 복수의 베이식 블록 그룹 중에서 분리 실행 대상 코드 블록을 선택하여 컨텐츠의 코드 영역에서 추출한다.In order to achieve the above object, the present invention provides a separation execution-based content separation device including a content caller, a basic block group selection unit, extraction and generation unit. The content caller calls the content to be separated. The basic block group selector selects a plurality of basic block groups through dynamic profiling and static analysis on the code region of the called content. The extraction and generation unit selects a code block to be separated from among a plurality of basic block groups and extracts the code block from the content area.

본 발명에 분리 실행 기반의 컨텐츠 분리 장치에 있어서, 추출 및 생성부는 분리 실행 대상 코드 블록이 추출된 코드 영역에 스터브 코드를 삽입하여 서비스용 컨텐츠를 생성할 수 있다.In the separation execution-based content separation apparatus according to the present invention, the extraction and generation unit may insert the stub code into the code region from which the separation execution code block is extracted to generate content for a service.

본 발명에 분리 실행 기반의 컨텐츠 분리 장치에 있어서, 베이식 블록 그룹 선정부는 호출한 컨텐츠에 대한 동적 프로파일링을 통하여 기초 정보를 수집하는 기초 정보 수집부와, 수집한 기초 정보를 기반으로 컨텐츠의 코드 영역에 대한 정적 분석을 수행하여 복수의 베이식 블록 그룹을 선정하는 정적 분석부를 포함할 수 있다.In the separation execution based content separation apparatus according to the present invention, the basic block group selecting unit collects basic information through dynamic profiling of the called content, and a code region of the content based on the collected basic information. It may include a static analysis unit for selecting a plurality of basic block groups by performing a static analysis for.

본 발명에 분리 실행 기반의 컨텐츠 분리 장치에 있어서, 기초 정보는 컨텐츠에 대한 런-타임(run-time) 동안 수집한 컨텐츠의 코드 영역에 대한 정보를 포함할 수 있다.In the content separation apparatus based on the separation execution according to the present invention, the basic information may include information about a code region of the content collected during the run-time of the content.

본 발명에 분리 실행 기반의 컨텐츠 분리 장치에 있어서, 정적 분석부는 수집한 기초 정보의 간접 주소를 컨트롤 플로우(control flow)에 대입하여 정적 분석을 수행할 수 있다.In the content separation apparatus based on the separation execution according to the present invention, the static analysis unit may perform static analysis by substituting the indirect address of the collected basic information into the control flow.

본 발명에 분리 실행 기반의 컨텐츠 분리 장치에 있어서, 추출 및 생성부는 복수의 베이식 블록 그룹 중에서 컨텐츠 실행 시 최소한 한번 이상 반드시 실행되는 중요 경로(critical path) 상에 있는 베이식 블록 그룹을 분리 실행 대상 코드 블록으로 추출할 수 있다.In the content execution apparatus based on the separation execution according to the present invention, the extraction and generation unit separates the basic block group on the critical path that is necessarily executed at least once when executing the content among the plurality of basic block groups. Can be extracted with

본 발명에 분리 실행 기반의 컨텐츠 분리 장치는, 컨텐츠, 컨텐츠의 분리 실행 대상 코드 블록, 컨텐츠에서 분리 실행 대상 코드 블록이 분리된 서비스용 컨텐츠를 저장하는 저장부를 더 포함할 수 있다.The separation execution-based content separation apparatus according to the present invention may further include a storage unit for storing content, a content execution target code block of the content, and a content for service in which the content execution separation code block is separated from the content.

본 발명은 또한, 컨텐츠 분리 장치가 분리할 컨텐츠를 호출하는 호출 단계, 컨텐츠 분리 장치가 호출한 컨텐츠의 코드 영역에 대한 동적 프로파일링(dynamic profiling) 및 정적 분석(static analysis)을 통하여 복수의 베이식 블록 그룹을 선정하는 선정 단계, 컨텐츠 분리 장치가 복수의 베이식 블록 그룹 중에서 분리 실행 대상 코드 블록을 선택하여 컨텐츠의 코드 영역에서 추출하는 추출 단계를 포함하는 분리 실행 기반의 컨텐츠 분리 방법을 제공한다.The present invention also provides a plurality of basic blocks through a call step of calling content to be separated by a content separating device, dynamic profiling and static analysis of a code region of content called by the content separating device. A content separation method based on a separation execution method includes a selection step of selecting a group and an extraction step of a content separation device selecting a separation target code block from a plurality of basic block groups and extracting the same from a code area of the content.

본 발명에 분리 실행 기반의 컨텐츠 분리 방법에 있어서, 추출 단계 이후에 수행되는, 컨텐츠 분리 장치가 분리 실행 대상 코드 블록이 추출된 코드 영역에 스터브 코드를 삽입하여 서비스용 컨텐츠를 생성하는 생성 단계를 더 포함할 수 있다.In the separation execution-based content separation method according to the present invention, the content separation device, which is performed after the extraction step, further includes a generation step of inserting stub codes into a code region from which the separation execution target code block is extracted to generate content for a service. It may include.

본 발명에 분리 실행 기반의 컨텐츠 분리 방법에 있어서, 선정 단계는 컨텐츠 분리 장치가 호출한 컨텐츠에 대한 동적 프로파일링을 통하여 기초 정보를 수집하는 수집 단계, 컨텐츠 분리 장치가 수집한 기초 정보를 기반으로 컨텐츠의 코드 영역에 대한 정적 분석을 수행하여 복수의 베이식 블록 그룹을 선정하는 베이식 블록 그룹 선정 단계를 포함할 수 있다.In the separation execution-based content separation method according to the present invention, the selection step is a collection step of collecting basic information through dynamic profiling of the content called by the content separation device, the content based on the basic information collected by the content separation device The method may include a basic block group selection step of selecting a plurality of basic block groups by performing a static analysis on a code region of.

본 발명에 분리 실행 기반의 컨텐츠 분리 방법에 있어서, 수집 단계에서, 기초 정보는 컨텐츠 분리 장치가 컨텐츠에 대한 런-타임(run-time) 동안 수집한 컨텐츠의 코드 영역에 대한 정보를 포함할 수 있다.In the separation execution-based content separation method according to the present invention, in the collecting step, the basic information may include information about a code region of the content collected by the content separation device during run-time of the content. .

본 발명에 분리 실행 기반의 컨텐츠 분리 방법에 있어서, 수집 단계에서, 수집된 기초 정보는 브랜치 어드레스(branch address), 점프 어드레스(jump address), 콜 어드레스(call address) 및 RET의 간접 주소(indirect address) 중에 적어도 하나의 간접 주소를 포함할 수 있다.In the separation execution based content separation method according to the present invention, in the collecting step, the collected basic information is a branch address, a jump address, a call address, and an indirect address of the RET. ) May include at least one indirect address.

본 발명에 분리 실행 기반의 컨텐츠 분리 방법에 있어서, 수집 단계에서, 수집된 기초 정보는 베이식 블록 그룹의 시작 주소, 베이식 블록 그룹의 종료 주소, 베이식 블록 그룹의 호출 횟수, 베이식 블록 그룹의 크기 및 베이식 블록 그룹 내의 실수 연산 유무에 대한 정보를 포함할 수 있다.In the separation execution-based content separation method according to the present invention, in the collecting step, the collected basic information includes the start address of the basic block group, the end address of the basic block group, the number of calls of the basic block group, the size of the basic block group, and the basic. It may include information about the presence or absence of a real operation in the block group.

본 발명에 분리 실행 기반의 컨텐츠 분리 방법에 있어서, 수집된 기초 정보는 베이식 블록 그룹 내에서 호스트 단말의 메모리를 참조하는 회수, 베이식 블록 그룹 내에서 호스트 단말의 OS API를 호출하는 회수, 베이식 블록 그룹의 실행 시간, 베이식 블록 그룹 내에서 수행되는 전체 명령어 개수, 베이식 블록 그룹의 실행을 위해 전달되는 파라미터 개수 및 타입 및 베이식 블록 그룹의 실행 후 반환되는 값의 종류 중에 적어도 하나를 더 포함할 수 있다.In the separation execution-based content separation method according to the present invention, the collected basic information includes the number of times of referring to the memory of the host terminal in the basic block group, the number of times of calling the OS API of the host terminal in the basic block group, and the basic block group. It may further include at least one of the execution time of the, the total number of instructions to be performed in the basic block group, the number and type of parameters passed for execution of the basic block group and the type of the value returned after the execution of the basic block group.

본 발명에 분리 실행 기반의 컨텐츠 분리 방법에 있어서, 베이식 블록 그룹 선정 단계에서, 수집한 기초 정보의 간접 주소를 컨트롤 플로우(control flow)에 대입하여 정적 분석을 수행할 수 있다.In the separation execution-based content separation method according to the present invention, in the basic block group selection step, static analysis may be performed by substituting the indirect address of the collected basic information into a control flow.

본 발명에 분리 실행 기반의 컨텐츠 분리 방법에 있어서, 추출 단계는 컨텐츠 분리 장치가 복수의 베이식 블록 그룹 중에서 컨텐츠 실행 시 최소한 한번 이상 반드시 실행되는 중요 경로(critical path) 상에 있는 베이식 블록 그룹을 분리 실행 대상 코드 블록으로 추출할 수 있다.In the separation execution-based content separation method according to the present invention, the extracting step separates and executes a basic block group on a critical path that is necessarily executed at least once when the content separation device executes content among a plurality of basic block groups. Can be extracted into the target code block.

본 발명에 분리 실행 기반의 컨텐츠 분리 방법에 있어서, 추출 단계 이후에 수행되는, 컨텐츠 분리 장치가 추출한 분리 실행 대상 코드 블록의 리스트를 생성하는 단계를 더 포함할 수 있다.In the separation execution based content separation method according to the present invention, the method may further include generating a list of separation execution target code blocks extracted by the content separation device, which is performed after the extraction step.

본 발명에 분리 실행 기반의 컨텐츠 분리 방법에 있어서, 호출 단계는 컨텐츠 분리 장치가 분리할 컨텐츠에 대한 보안 수준을 설정하는 보안 수준 설정 단계를 더 포함할 수 있다. 이때 추출 단계에서 컨텐츠 분리 장치가 설정된 보안 수준에 따라 복수의 베이식 블록 그룹 중에서 분리 실행 대상 코드 블록을 추출할 수 있다.In the separation execution-based content separation method according to the present invention, the calling step may further include a security level setting step of setting a security level for content to be separated by the content separation device. At this time, in the extracting step, the content separation apparatus may extract the separation execution target code block from the plurality of basic block groups according to the set security level.

본 발명에 분리 실행 기반의 컨텐츠 분리 방법에 있어서, 보안 수준 설정 단계는 컨텐츠 분리 장치가 보안 수준 설정 항목을 표시하는 단계와, 컨텐츠 분리 장치가 보안 수준 설정 항목 중에서 선택된 보안 수준 설정 항목으로 보안 수준을 설정하는 단계를 포함할 수 있다.In the separation execution-based content separation method according to the present invention, the security level setting step includes the step of displaying the security level setting item by the content separation device and the security level setting item selected by the content separation device from the security level setting item. It may comprise the step of setting.

본 발명에 분리 실행 기반의 컨텐츠 분리 방법에 있어서, 보안 수준 설정 항목은 베이식 블록 그룹의 호출 빈도, 베이식 블록 그룹의 호출 위치, 호스트 단말의 메모리 참조 빈도, 호스트 단말의 OS API 참조 빈도, 저장장치의 하드웨어 요소 중에 적어도 하나를 포함할 수 있다.In the separation execution based content separation method according to the present invention, the security level setting item includes a basic call frequency of a basic block group, a location of a basic block group call, a memory reference frequency of a host terminal, an OS API reference frequency of a host terminal, and a storage device. It may include at least one of the hardware elements.

본 발명에 분리 실행 기반의 컨텐츠 분리 방법에 있어서, 선정 단계는 컨텐츠 분리 장치가 컨텐츠의 코드 영역에서 베이식 블록 그룹을 정의하는 단계와, 컨텐츠 분리 장치가 베이식 블록 그룹의 내부로 진입하는 제어 신호가 있으면, 제어 신호의 명령어 주소(instruction address)를 기준으로 베이식 블록 그룹을 분할하여 재정의 하는 재정의 단계를 포함할 수 있다.In the separation execution-based content separation method of the present invention, the selecting step includes a step of defining a basic block group in a code area of the content by the content separation device, and a control signal for entering the interior of the basic block group by the content separation device. It may include a redefinition step of dividing and redefining a basic block group based on an instruction address of a control signal.

본 발명에 분리 실행 기반의 컨텐츠 분리 방법에 있어서, 재정의 단계에서, 최종적으로 재정의된 베이식 블록 그룹은 단일 입력(single input) 및 단일 출력(single output)의 속성과, 외부에서 내부로의 진입을 허용하지 않는 속성을 갖는 복수의 베이식 블록을 포함할 수 있다.In the separation execution-based content separation method according to the present invention, in the redefining step, the finally redefined basic block group includes attributes of single input and single output and entry from outside to inside. It may include a plurality of basic blocks with disallowed attributes.

본 발명은 또한, 상기한 분리 실행 기반의 컨텐츠 분리 방법이 기록된 컴퓨터로 판독 가능한 기록매체를 제공한다.The present invention also provides a computer-readable recording medium on which the above-described separation execution based content separation method is recorded.

본 발명에 따르면, 분리 실행 기반의 컨텐츠 분리 장치는 호스트 단말과 저장장치 간의 분리 실행을 가능하게 하는 분리 실행 대상 코드 블록을 컨텐츠의 코드 영역의 일부 블록에서 추출하여 사용함으로써, 컨텐츠의 복제 방지와 관련된 보안 성능을 향상시킬 수 있다.According to the present invention, a content execution apparatus based on a separation execution extracts and uses a separation execution target code block that enables a separation execution between a host terminal and a storage device from a partial block of a code area of a content, thereby preventing content copying. It can improve security performance.

컨텐츠에 대한 동적 프로파일링(dynamic profiling)을 통하여 수집한 코드 영역의 기초 정보를 이용하여 해당 컨텐츠에 대한 정적 분석(static analysis)을 수행하기 때문에, 컨텐츠의 코드 영역의 분석 범위를 확장할 수 있고, 이를 통하여 컨텐츠의 복제 방지에 필요한 베이식 블록 그룹의 추출율을 향상시킬 수 있다.Since the static analysis of the corresponding content is performed using the basic information of the code area collected through the dynamic profiling of the content, the scope of analysis of the code area of the content can be extended. Through this, it is possible to improve the extraction rate of the basic block group required for copy protection of the content.

동적 프로파일링을 이용한 정적 분석을 수행할 때, 한 번 정의된 베이식 블록 그룹에 대해서 재정의를 할 수 있는 유연성을 제공함으로써, 안전 코드 블록의 후보가 될 수 있는 단일 입력(single input) 및 단일 출력(single output)을 갖는 베이식 블록 그룹을 생성할 수 있다. 이로 인해 시작점(entry point)을 제외한 내부로의 제어 신호의 진입이 있는 부적합한 베이식 블록 그룹이 분리 실행 대상 코드 블록으로 컨텐츠에서 추출되는 것을 억제할 수 있다. 또한 분리 실행 대상 코드 블록으로 선출될 베이식 블록 그룹의 제어 신호의 내부 진입으로 인한 호스트 단말과 저장장치 간의 분리 실행 중 오류가 발생되는 것을 억제할 수 있다.When performing static analysis using dynamic profiling, you have the flexibility to redefine once defined groups of basic blocks, so that single inputs and single outputs can be candidates for safety code blocks. You can create a basic block group with a single output. As a result, it is possible to prevent an inappropriate basic block group having entry of a control signal into an interior except for an entry point from being extracted from content as a separate execution target code block. In addition, it is possible to prevent an error from occurring during the separation execution between the host terminal and the storage device due to the internal entry of the control signal of the basic block group to be selected as the separation execution target code block.

그리고 본 발명에 따른 컨텐츠의 코드 블록의 추출 기술을 활용함으로써, 컨텐츠 제공자는 개발한 컨텐츠의 복제를 억제하기 위한 보안 방법에 소요되는 비용 부담을 최소화할 수 있는 효과도 있다.In addition, by utilizing the extraction technique of the code block of the content according to the present invention, the content provider can also minimize the cost burden on the security method for suppressing the copy of the developed content.

도 1은 본 발명의 실시예에 따른 분리 실행 기반의 컨텐츠 분리 장치의 구성을 보여주는 블록도이다.
도 2는 도 1의 제어부의 구성을 보여주는 블록도이다.
도 3은 컨텐츠의 데이터 구조를 보여주는 블록도이다.
도 4는 컨텐츠에 분리된 분리 실행 대상 코드 블록과, 서비스용 컨텐츠의 구성을 보여주는 블록도이다.
도 5 내지 도 7은 분리 실행 대상 코드 블록의 속성을 설명하기 위한 예시도이다.
도 8은 본 발명의 실시예에 따른 분리 실행 기반의 컨텐츠 분리 방법에 따른 흐름도이다.
도 9 및 도 10은 도 8의 분리 실행 대상 코드 블록으로 추출된 베이식 블록 그룹의 선정 단계를 설명하기 위한 예시도이다.
1 is a block diagram illustrating a configuration of a content separation apparatus based on a separation execution according to an embodiment of the present invention.
2 is a block diagram illustrating a configuration of the controller of FIG. 1.
3 is a block diagram showing a data structure of content.
4 is a block diagram showing a configuration of a separate execution target code block separated into contents and content for a service.
5 to 7 are exemplary diagrams for describing an attribute of a split execution target code block.
8 is a flowchart illustrating a content separation method based on separation execution according to an embodiment of the present invention.
9 and 10 are exemplary diagrams for describing a selection step of a basic block group extracted as a separate execution target code block of FIG. 8.

이하, 첨부 도면을 참조하여 본 발명의 실시예를 보다 상세하게 설명하고자 한다.Hereinafter, with reference to the accompanying drawings will be described in detail an embodiment of the present invention.

본 발명의 실시예에 따른 분리 실행 기반의 컨텐츠 분리 장치(10; 이하 '컨텐츠 분리 장치'라 함)는, 도 1 내지 도 7에 도시된 바와 같이, 입력부(11), 저장부(13), 표시부(15) 및 제어부(17)를 포함하여 구성되며, 컨텐츠(30)에 대한 동적 프로파일링 및 정적 분석을 유기적으로 수행하여 해당 컨텐츠(30)을 분리 실행 대상 코드 블록(34)과 서비스용 컨텐츠(32)로 분리한다. 이때 분리 실행 대상 코드 블록(34)은 컨텐츠(30)의 코드 영역에서 추출된 일부 코드 블록을 의미한다. 서비스용 컨텐츠(32)는 분리 실행 대상 코드 블록(34)에서 컨텐츠 부분을 의미한다.According to an embodiment of the present invention, the separation execution based content separation device 10 (hereinafter, referred to as a content separation device) may include an input unit 11, a storage unit 13, Including the display unit 15 and the control unit 17, and performs the dynamic profiling and static analysis of the content 30 to separate the content 30 to the execution target code block 34 and the content for the service Separate with (32). In this case, the separation execution target code block 34 means some code blocks extracted from the code area of the content 30. The service content 32 refers to the content portion in the separate execution target code block 34.

본 실시예에 따른 컨텐츠 분리 장치(10)는 분리 실행 기반의 디지털 저작권 관리(digital rights management; DRM) 시스템에서 컨텐츠(30)를 서비스하기 위해서 해당 컨텐츠(30)를 분리 실행 대상 코드 블록(34)와 서비스용 컨텐츠로 분리하는 장치이다. 여기서 '분리 실행'은 컨텐츠(30)를 실행하는 데 있어서 호스트 단말과 저장장치가 서로 연동되어 실행하는 것을 의미한다. 특히 분리 실행을 구현하기 위해서, 원본 컨텐츠(30)의 코드 영역(31)에서 분리된 분리 실행 대상 코드 블록(34)은 저장장치에 설치되고, 분리 실행 대상 코드 블록(34)이 제거된 서비스용 컨텐츠(32)는 호스트 단말에 설치된다. 따라서 분리 실행 기반의 컨텐츠(30)를 실행하고자 할 경우에, 호스트 단말은 서비스용 컨텐츠(32) 실행 중 분리 실행 대상 코드 블록(34)이 제거된 부분에 대한 출력값을 저장장치에 요청하여 반환받는 형태로 해당 컨텐츠(30)를 실행한다. 이때 분리 실행 대상 코드 블록(34)은 프로세서를 구비하는 저장장치에서 실행할 수 있는 저장장치용 코드 블록으로 변환되어 저장장치에 제공된다.The content separation device 10 according to the present exemplary embodiment may separate the execution target code block 34 from the corresponding content 30 in order to service the content 30 in a digital rights management (DRM) system based on the separation execution. It is a device that separates the content for service. Here, 'separate execution' means that the host terminal and the storage device interwork with each other to execute the content 30. In particular, in order to implement separation execution, the separation execution target code block 34 separated in the code area 31 of the original content 30 is installed in a storage device, and the service for which the separation execution target code block 34 has been removed is removed. The content 32 is installed in the host terminal. Therefore, in the case where the separated execution based content 30 is to be executed, the host terminal receives an output value for the portion of the separated execution target code block 34 that is removed during execution of the content for service 32 from the storage device and receives the returned value. The content 30 is executed in the form. At this time, the separate execution target code block 34 is converted into a storage code block for execution in a storage device having a processor and is provided to the storage device.

이때 본 실시예에 따른 컨텐츠 분리 장치(10)는 컨텐츠(30)에 대한 동적 프로파일링 및 정적 분석이 가능한 단말 장치로서, 호스트 단말 또는 네트워크 상에 구축된 서버일 수 있다. 호스트 단말은 PC, 노트북, 워크스테이션, 스마트폰 등을 포함한다.In this case, the content separation device 10 according to the present embodiment may be a terminal device capable of dynamic profiling and static analysis of the content 30, and may be a host terminal or a server built on a network. Host terminals include PCs, laptops, workstations, smartphones, and the like.

입력부(11)는 컨텐츠 분리 장치(10)의 조작을 위한 복수의 키를 제공하며, 사용자의 키선택에 따른 선택 신호를 발생하여 제어부(17)로 전달한다. 사용자는 입력부(11)를 통해 분리할 컨텐츠(30)를 호출하고, 호출된 컨텐츠(30)를 분리 실행 대상 코드 블록(34)과 서비스용 컨텐츠(32)로 분리하기 위한 선택 신호를 입력할 수 있다. 이때 입력부(11)로는 키패드, 터치패드와 같은 포인팅 장치, 터치스크린(touch screen) 등의 입력장치가 사용될 수 있다.The input unit 11 provides a plurality of keys for manipulating the content separating apparatus 10, and generates and transmits a selection signal according to a user's key selection to the controller 17. The user may call the content 30 to be separated through the input unit 11 and input a selection signal for separating the called content 30 into the separation execution target code block 34 and the service content 32. have. In this case, the input unit 11 may be a keypad, a pointing device such as a touch pad, or an input device such as a touch screen.

저장부(13)는 컨텐츠 분리 장치(10)의 동작 제어시 필요한 프로그램과, 그 프로그램 수행 중에 발생되는 정보를 저장한다. 특히 저장부(13)는 컨텐츠(30)에 대한 동적 프로파일링 및 정적 분석을 수행하기 위한 실행프로그램을 저장한다. 저장부(13)는 분리할 컨텐츠(30)와, 컨텐츠(30)에 대한 코드 분석을 통하여 추출한 분리 실행 대상 코드 블록(34)과, 컨텐츠(30)에서 분리 실행 대상 코드 블록(34)이 분리된 코드 영역에 스터브 코드(36; stub code)가 삽입된 서비스용 컨텐츠(32)를 저장할 수 있다.The storage unit 13 stores a program necessary for controlling the operation of the content separating apparatus 10 and information generated while executing the program. In particular, the storage unit 13 stores an execution program for performing dynamic profiling and static analysis on the content 30. The storage unit 13 separates the content 30 to be separated, the separation execution target code block 34 extracted through the code analysis of the content 30, and the separation execution target code block 34 from the content 30. The service content 32 into which the stub code 36 is inserted may be stored in the code area.

이때 컨텐츠(30)는 복수 개의 파일, 예컨대 운영체제에서 제공하는 API(application program interface), 개발사에서 제공하는 API 또는 DLL(dynamic linking library)과 같은 파일을 포함할 수 있다. 이와 같은 복수의 파일을 포함하는 컨텐츠(30)는 코드 영역(31)과 데이터 영역(33)으로 나눌 수 있으며, 실제 컨텐츠(30)는 코드 영역(31)과 데이터 영역(33)이 서로 섞여 있다. 코드 영역(31)은 복수의 코드 블록을 포함하며, 분리 실행 대상 코드 블록(34)은 코드 영역(31)에서 추출된 복수의 코드 블록을 포함한다. 예컨대 분리 실행 대상 코드 블록(34)은 복수의 베이식 블록 그룹(37; basic block group)을 포함하며, 베이식 블록 그룹(37)은 복수의 베이식 블록(35; basic block)의 모임이다.In this case, the content 30 may include a plurality of files, for example, an application program interface (API) provided by an operating system, an API provided by a developer, or a file such as a dynamic linking library (DLL). The content 30 including the plurality of files may be divided into a code area 31 and a data area 33, and the actual content 30 is a mixture of the code area 31 and the data area 33. . The code region 31 includes a plurality of code blocks, and the separation target code block 34 includes a plurality of code blocks extracted from the code region 31. For example, the separated execution target code block 34 includes a plurality of basic block groups 37, and the basic block groups 37 are a collection of a plurality of basic blocks 35.

이때 베이식 블록(35)은 단일 입력(single input) 및 단일 출력(single output)의 속성을 갖는 명령어의 열(sequence of instruction)로서, 외부에서 내부로의 진입을 허용하지 않는 속성을 갖는 코드 블록으로 정의할 수 있다. 즉 베이식 블록(35)은 항상 시작부터 끝까지 한번에 실행되는 연속적인 문장(코드의 모임)을 의미하며, 중간에 흐름 제어로 인해 실행이 중지되지 않는 문장 그룹이다.In this case, the basic block 35 is a sequence of instructions having attributes of a single input and a single output, and is a code block having an attribute that does not allow entry from the outside to the inside. Can be defined That is, the basic block 35 means a series of sentences (groups of codes) that are always executed once from the beginning to the end, and is a group of statements in which execution is not stopped due to flow control in the middle.

서비스용 컨텐츠(32)는 분리 실행 대상 코드 블록(34)으로 추출된 베이식 블록 그룹(37)의 코드 영역에 스터브 코드(36)가 삽입된 코드 영역(31a)과, 데이터 영역(33)을 포함한다. 이때 스터브 코드(36)는 호스트 단말과 저장장치 간에 컨텐츠(30)에 대한 분리 실행을 수행할 때, 서비스용 컨텐츠(32)에서 추출된 코드 영역과, 추출된 코드 영역에 해당하는 분리 실행 대상 코드 블록(34)을 연결한다. 즉 스터브 코드(36)는 컨텐츠(30)에 대한 분리 실행을 수행할 때, 추출된 코드 영역에서 저장장치로 제어 신호를 전달한다. 제어 신호를 수신한 저장장치(53)는 제어 신호에 해당하는 분리 실행 대상 코드 블록(34)에 대한 연산을 수행하여 산출한 출력값을 호스트 단말(51)로 반환한다.The service content 32 includes a code area 31a in which a stub code 36 is inserted into a code area of a basic block group 37 extracted as a separate execution target code block 34, and a data area 33. do. In this case, when the stub code 36 separates the content 30 between the host terminal and the storage device, the code region extracted from the service content 32 and the separated execution target code corresponding to the extracted code region are included. Connect block 34. That is, the stub code 36 transmits a control signal to the storage device in the extracted code area when performing the separation on the content 30. The storage device 53 receiving the control signal returns an output value calculated by performing an operation on the separate execution target code block 34 corresponding to the control signal to the host terminal 51.

분리 실행 대상 코드 블록(34)은 컨텐츠(30)에 대한 프로파일링 및 분석을 통하여 컨텐츠(30)의 코드 영역(31)에서 추출된 복수의 베이식 블록 그룹(37)을 포함한다. 즉 분리 실행 대상 코드 블록(34)은 컨텐츠(30)에 대한 프로파일링 및 분석을 통하여 컨텐츠(30)의 코드 영역(31)에서 선정된 베이식 블록 그룹(37)으로, 선정된 베이식 블록 그룹(37)들 중에서 적어도 하나가 분리 실행 대상 코드 블록(34)으로 추출될 수 있다. 분리 실행 대상 코드 블록(34)이 추출된 부분에는 스터브 코드(36)가 삽입된다. 후술되겠지만 컨텐츠(30)에 대한 프로파일링 및 분석을 통하여, 컨텐츠(30)는 분리 실행 대상 코드 블록(34)과, 분리 실행 대상 코드 블록(34)이 추출된 서비스용 컨텐츠(32)로 분할된다. 예컨대 분리 실행 대상 코드 블록(34)은 컨텐츠(30)의 중요 경로(critical path) 상에 존재하는 코드 블록, 즉 베이식 블록 그룹(37)을 포함할 수 있다. 여기서 중요 경로는 컨텐츠(30) 실행 시 최소한 한번 이상 반드시 실행되는 경로를 의미한다.The separation execution target code block 34 includes a plurality of basic block groups 37 extracted from the code area 31 of the content 30 through profiling and analysis of the content 30. That is, the separated execution target code block 34 is a basic block group 37 selected in the code area 31 of the content 30 through profiling and analysis of the content 30, and the selected basic block group 37 is selected. At least one of the plurality of components) may be extracted to the separate execution target code block 34. The stub code 36 is inserted into the part where the separation execution target code block 34 is extracted. As will be described later, through the profiling and analysis of the content 30, the content 30 is divided into a separate execution target code block 34 and a content for service 32 from which the separation execution target code block 34 is extracted. . For example, the separated execution target code block 34 may include a code block existing on a critical path of the content 30, that is, a basic block group 37. Here, the critical path means a path that is necessarily executed at least once when the content 30 is executed.

분리 실행 대상 코드 블록(34)은 저장장치용 코드 블록으로 변환되어 저장장치에 저장된 형태로 제공되거나 다운로드 형태로 저장장치에 제공될 수 있다. 분리 실행 대상 코드 블록(34)은 전술된 바와 같이 복수의 베이식 블록(35)을 포함하는 베이식 블록 그룹(37)이다. 분리 실행 대상 코드 블록(34)은 분리 실행 대상 코드 블록(34)의 시작점(entry point)을 통한 제어 신호의 진입 및 베이식 블록(35) 간의 제어 신호의 이동은 허용하지만, 분리 실행 대상 코드 블록(34)의 시작점을 제외한 베이식 블록(35)으로의 제어 신호의 진입이 없는 서로 관련된 복수의 베이식 블록(35)을 포함하는 베이식 블록 그룹(37)으로 선택하는 것이 바람직하다.The separate execution target code block 34 may be converted into a code block for a storage device and provided in a form stored in the storage device or provided to the storage device in a download form. The separate execution target code block 34 is a basic block group 37 including a plurality of basic blocks 35 as described above. The split execution target code block 34 allows the entry of the control signal through the entry point of the split execution target code block 34 and the movement of the control signal between the basic block 35, but the split execution target code block ( It is preferable to select a basic block group 37 including a plurality of basic blocks 35 which are related to each other without entry of a control signal to the basic block 35 except for the start point of 34.

이유는 베이식 블록 그룹(37) 중에서 시작점을 제외한 베이식 블록(35)으로의 제어 신호의 진입이 있는 베이식 블록 그룹(37)을 분리 실행 대상 코드 블록(34)으로 추출할 경우, 해당 분리 실행 대상 코드 블록(34)을 추출한 후 삽입되는 스터브 코드(36)에 시작 부분이 아닌 중간으로 제어 신호가 진입할 수 있다. 이 경우 스터브 코드(36)는 해당 제어 신호에 대한 처리를 수행하지 못하여 해당 컨텐츠(30)의 실행이 중지되거나 에러가 발생될 수 있기 때문이다. 즉 스터브 코드(36)은 첫 5Byte를 제외한 나머지 영역에는 NOP(no-operation instruction)와 같은 쓰레기 값이 들어 있기 때문에, 쓰레기 값이 들어 있는 영역으로 제어 신호가 진입할 경우 에러가 발생될 수 있다. 바꾸어 말하면, 시작점을 제외한 베이식 블록(35)으로의 제어 신호의 진입이 있는 베이식 블록 그룹(37)은 분리 실행을 수행할 때, 오류를 발생시킬 수 있는 확률이 높기 때문에, 분리 실행 대상 코드 블록(34)으로는 적합하지 않다.The reason is that when the basic block group 37 having the entry of the control signal to the basic block 35 except for the starting point from the basic block group 37 is extracted as the separate execution target code block 34, the corresponding execution target code After the block 34 is extracted, a control signal may enter the middle of the stub code 36 to be inserted and not to the beginning. In this case, the stub code 36 may not process the control signal, and thus the execution of the corresponding content 30 may be stopped or an error may be generated. That is, since the stub code 36 has a garbage value such as a no-operation instruction (NOP) in the remaining areas except for the first 5 bytes, an error may occur when the control signal enters the garbage containing area. In other words, since the basic block group 37 having the entry of the control signal to the basic block 35 except for the starting point has a high probability of generating an error when performing the separate execution, the separated execution target code block ( 34) is not suitable.

표시부(15)는 컨텐츠 분리 장치(10)에서 실행되는 각종 기능 메뉴를 비롯하여 저장부(13)에 저장된 정보를 표시할 수 있다. 표시부(15)는 제어부(17)의 제어에 따라 분리할 컨텐츠(30), 분리 실행 대상 코드 블록(34) 및 서비스용 컨텐츠(32)의 리스트를 표시할 수 있다. 표시부(15)는 컨텐츠(30)의 분리에 필요한 영상 정보를 표시할 수 있다. 이때 표시부(15)로는 LCD(Liquid Crystal Display)나 터치 스크린이 사용될 수 있다. 터치 스크린은 표시 장치와 입력 장치로서의 역할을 동시에 수행한다.The display unit 15 may display information stored in the storage unit 13, including various function menus executed in the content separating apparatus 10. The display unit 15 may display a list of the content 30 to be separated, the target code block 34 to be separated, and the service content 32 under the control of the controller 17. The display unit 15 may display image information necessary for separating the content 30. In this case, an LCD (Liquid Crystal Display) or a touch screen may be used as the display unit 15. The touch screen simultaneously serves as a display device and an input device.

그리고 제어부(17)는 컨텐츠 분리 장치(10)의 전반적인 제어 동작을 수행하는 마이크로프로세서(microprocessor)이다. 제어부(17)는 컨텐츠(30)에 대한 동적 프로파일링 및 정적 분석 수행을 제어한다. 그리고 제어부(17)는 동적 프로파일링 및 정적 분석을 통하여 분리 실행 대상 코드 블록(34)을 추출하거나, 추출한 분리 실행 대상 코드 블록(34)의 리스트를 생성하거나, 서비스용 컨텐츠(32)를 생성할 수 있다.The controller 17 is a microprocessor that performs overall control operations of the content separating apparatus 10. The controller 17 controls dynamic profiling and static analysis on the content 30. The controller 17 may extract the separated execution target code block 34 through dynamic profiling and static analysis, generate a list of the extracted separation execution target code block 34, or generate the content 32 for a service. Can be.

특히 제어부(17)는 컨텐츠 호출부(12), 베이식 블록 그룹 선정부(19) 및 추출 및 생성부(18)를 포함하여 구성된다. 컨텐츠 호출부(12)는 분리할 컨텐츠(30)를 호출한다. 베이식 블록 그룹 선정부(19)는 호출한 컨텐츠(30)의 코드 영역(31)에 대한 프로파일링 및 분석을 통하여 복수의 베이식 블록 그룹(37)을 선정한다. 그리고 추출 및 생성부(18)는 복수의 베이식 블록 그룹(37) 중에서 분리 실행 대상 코드 블록(34)을 추출하여 컨텐츠(30)의 코드 영역(31)에서 분리하고, 분리 실행 대상 코드 블록(34)이 추출된 코드 영역에 스터브 코드(36)를 삽입하여 서비스용 컨텐츠(32)를 생성한다.In particular, the controller 17 includes a content caller 12, a basic block group selector 19, and an extractor and generator 18. The content caller 12 calls the content 30 to be separated. The basic block group selector 19 selects a plurality of basic block groups 37 through profiling and analysis of the code area 31 of the called content 30. The extraction and generation unit 18 extracts the separation execution target code block 34 from the plurality of basic block groups 37, separates the separation target code block 34 from the code area 31 of the content 30, and the separation execution target code block 34. ) Inserts the stub code 36 into the extracted code area to generate the service content 32.

컨텐츠 호출부(12)는 입력부(11)를 통하여 분리할 컨텐츠(30)에 대한 선택 신호가 입력되면, 저장부(13)에서 해당 컨텐츠(30)를 호출할 수 있다. 컨텐츠 호출부(12)는 분리할 컨텐츠(30)를 호출할 때, 분리할 컨텐츠(30)에 대한 보안 수준을 입력받아 설정할 수 있다. 즉 컨텐츠 호출부(12)는 분리할 컨텐츠(30)의 리스트를 표시부(15)에 표시할 수 있다. 사용자는 입력부(11)를 통하여 리스트에서 분리할 컨텐츠(30)를 선택하고, 선택된 컨텐츠(30)에 대한 보안 수준을 선택하여 설정한다. 이때 컨텐츠 호출부(12)는 표시부(15)에 사용자가 선택할 수 있는 보안 수준 설정 항목을 표시한다. 사용자는 표시된 보안 수준 설정 항목 중에서 특정 보안 수준 설정 항목을 선택하면, 컨텐츠 호출부(12)는 선택된 보안 수준 설정 항목으로 분리할 컨텐츠(30)의 보안 수준을 설정한다.When the selection signal for the content 30 to be separated is input through the input unit 11, the content caller 12 may call the corresponding content 30 from the storage unit 13. When the content caller 12 calls the content 30 to be separated, the content caller 12 may receive and set a security level for the content 30 to be separated. That is, the content caller 12 may display the list of the content 30 to be separated on the display unit 15. The user selects the content 30 to be separated from the list through the input unit 11 and selects and sets a security level for the selected content 30. In this case, the content caller 12 displays a security level setting item that the user can select on the display unit 15. When the user selects a specific security level setting item from the displayed security level setting items, the content caller 12 sets the security level of the content 30 to be divided into the selected security level setting item.

예컨대 보안 수준 설정 항목은 추출할 코드 블록 즉, 베이식 블록 그룹(37)의 호출 빈도, 베이식 블록 그룹(37)의 호출 위치, 호스트 단말의 메모리 참조 빈도, 호스트 단말의 OS API 참조 빈도, 저장장치의 하드웨어 요소 중에 적어도 하나를 포함한다.For example, the security level setting item may be a code block to be extracted, that is, the frequency of calls of the basic block group 37, the location of calls of the basic block group 37, the memory reference frequency of the host terminal, the OS API reference frequency of the host terminal, At least one of the hardware elements.

베이식 블록 그룹(37)의 호출 빈도 항목은 프로파일링 및 분석에 의해 자동으로 추출할 분리 실행 대상 코드 블록(34)의 호출 빈도별 우선권(preference)을 사용자가 설정하는 항목으로, 사용자는 전체 컨텐츠(30)의 실행 중 몇 번이나 호출되는 가를 선택할 수 있는 항목이다. 이때 호출 빈도가 높을수록 해당 베이식 블록 그룹(37)이 중요하다는 의미가 되어 보안 효과는 높지만, 이는 저장장치에 무리를 주어 전체 컨텐츠(30)의 실행 속도를 저하시킬 수 있다. 따라서 사용자는 분리할 컨텐츠(30)의 보안 수준에 따라 적절한 호출 빈도를 설정하는 것이 바람직하다.The call frequency item of the basic block group 37 is an item that sets a preference for each call frequency of the separated execution target code block 34 to be automatically extracted by profiling and analysis. This is the item to select how many times it is called during the execution of 30). In this case, the higher the frequency of the call, the more important the basic block group 37 is, and the higher the security effect. Therefore, it is preferable that the user sets an appropriate call frequency according to the security level of the content 30 to be separated.

베이식 블록 그룹(37)의 호출 위치 항목은 분리 실행 대상 코드 블록(34)의 선택에 있어 프로그램의 실행 초기에 불리는 베이식 블록 그룹(37)을 선택할 지, 특정 기능 실행 시에 불리는 베이식 블록 그룹(37)을 선택할 지 설정하는 항목이다.The call position item of the basic block group 37 selects the basic block group 37 called at the beginning of program execution in the selection of the separate execution target code block 34, or the basic block group 37 called at the time of executing a specific function. Select whether to select).

호스트 단말의 메모리 참조 빈도 항목은 선택될 분리 실행 대상 코드 블록(34)이 얼마나 자주 호스트 단말의 메모리를 참조하는 지를 설정하는 항목이다. 메모리 참조 빈도가 높을수록 호스트 단말에 대한 의존성이 강하다는 의미이며, 이는 해당 분리 실행 대상 코드 블록(34)으로 인한 보안 효율이 높다는 의미가 된다. 다만 호스트 단말의 메모리를 번번히 참조할 경우, 해당 컨텐츠(30)의 실행 속도를 저하시킬 수 있기 때문에, 사용자는 분리할 컨텐츠(30)의 보안 수준에 따라 적절한 메모리 참조 빈도를 설정하는 것이 바람직하다.The memory reference frequency item of the host terminal is an item that sets how often the separation execution target code block 34 to be selected refers to the memory of the host terminal. The higher the memory reference frequency, the stronger the dependency on the host terminal, which means a higher security efficiency due to the separate execution target code block 34. However, when the memory of the host terminal is referred to repeatedly, since the execution speed of the corresponding content 30 may be reduced, the user may set an appropriate memory reference frequency according to the security level of the content 30 to be separated.

호스트 단말의 OS API 참조 빈도 항목은 선택될 분리 실행 대상 코드 블록(34)이 얼마나 자주 OS API를 참조하는 지를 설정하는 항목이다. OS API 참조 빈도가 높을수록 호스트 단말에 대한 의존성이 강하다는 의미이며, 이는 해당 분리 실행 대상 코드 블록(34)으로 인한 보안 효율이 높다는 의미가 된다. 다만 호스트 단말의 OS API를 번번히 참조할 경우, 해당 컨텐츠(30)의 실행 속도를 저하시킬 수 있기 때문에, 사용자는 분리할 컨텐츠(30)의 보안 수준에 따라 적절한 OS API의 참조 빈도를 설정하는 것이 바람직하다.The OS API reference frequency item of the host terminal is an item that sets how often the separate execution target code block 34 to be selected refers to the OS API. The higher the OS API reference frequency, the stronger the dependency on the host terminal, which means a higher security efficiency due to the separate execution target code block 34. However, if the OS API of the host terminal is referred to repeatedly, since the execution speed of the corresponding content 30 may be reduced, the user may set the reference frequency of the appropriate OS API according to the security level of the content 30 to be separated. desirable.

그리고 저장장치의 하드웨어 요소 항목은 해당 컨텐츠(30)와 함께 사용될 저장장치의 하드웨어적 폼 요소(form factor) 예컨대, 디램(DRAM), 랜드 플래쉬(NAND Flash) 또는 노아 플래쉬(NOR Flash)의 용량, 마이크로프로세서의 속도 등을 선택할 수 있는 항목이다. 저장장치의 하드웨어 요소는 실제 분리 실행 대상 코드 블록(34)을 실행하여 출력값을 산출하는 데 있어 중요한 요소 중에 하나라 할 수 있다.The hardware element item of the storage device may be a hardware form factor of the storage device to be used with the corresponding content 30, such as the capacity of DRAM, NAND Flash, or NOR Flash, You can select the speed of the microprocessor. The hardware element of the storage device may be one of important factors in executing the actual separate execution target code block 34 to calculate the output value.

한편 본 실시예에서는 사용자가 보안 수준을 직접 설정하는 예를 개시하였지만, 보안 수준은 디폴트로 설정될 수 있다. 본 실시예에서는 분리할 컨텐츠(30)를 선택한 이후에 보안 수준을 설정하는 예를 개시하였지만, 보안 수준을 설정한 후 분리할 컨텐츠(30)를 선택할 수도 있다.Meanwhile, in the present embodiment, an example in which the user directly sets the security level is disclosed, but the security level may be set as a default. In the present embodiment, the example of setting the security level after selecting the content 30 to be separated has been disclosed. However, the content 30 to be separated may be selected after the security level is set.

베이식 블록 그룹 선정부(19)는 기초 정보 수집부(14) 및 정적 분석부(16)를 포함한다. 기초 정보 수집부(14)는 호출한 컨텐츠(30)에 대한 동적 프로파일링을 통하여 기초 정보를 수집한다. 정적 분석부(16)는 수집한 기초 정보를 기반으로 컨텐츠(30)에 대한 정적 분석을 수행하여 컨텐츠(30)의 코드 영역(31)의 분석 범위를 확장하고, 이를 통하여 복수의 베이식 블록 그룹(37)을 선정한다.The basic block group selecting unit 19 includes a basic information collecting unit 14 and a static analyzing unit 16. The basic information collecting unit 14 collects basic information through dynamic profiling of the called content 30. The static analysis unit 16 performs a static analysis on the content 30 based on the collected basic information to expand the analysis range of the code area 31 of the content 30, and through this, a plurality of basic block groups ( 37).

전술된 바와 같이, 컨텐츠(30)는 복수 개의 파일, 예컨대 운영체제에서 제공하는 API, 개발사에서 제공하는 API 또는 DLL과 같은 파일을 포함한다. 따라서 컨텐츠(30) 중 분석할 부분을 설정해야 하고, 컨텐츠(30) 중 이미 공개되어 있는 API에서 추출되는 베이식 블록 블록을 분리 실행 대상 코드 블록(34)으로 선출하는 것은 바람직하지 않기 때문에, 컨텐츠(30)의 분석할 부분을 코드 영역(31)으로 제한할 필요가 있다.As described above, the content 30 includes a plurality of files, for example, a file such as an API provided by an operating system, an API provided by a developer, or a DLL. Therefore, since the part to be analyzed in the content 30 must be set, and it is not preferable to select the basic block block extracted from the API which is already published among the content 30 as the separate execution target code block 34, the content ( It is necessary to limit the portion to be analyzed in 30 to the code region 31.

기초 정보는 컨텐츠(30)에 대한 런-타임(run-time) 동안 동적 프로파일링을 통하여 코드 영역(31)에 대해서 수집한 정보이다. 즉 동적 프로파일링은 입력, 출력 및 레지스터(register)에 할당된 값들, 그리고 컨텐츠(30)의 흐름을 코드로 추적할 수 있기 때문에, 동적 프로파일링은 분석 범위를 확장하는데 유효하면서 정확한 기초 정보를 수집할 수 있다. 이때 수집된 기초 정보는 베이식 블록 그룹(37)의 시작 주소, 베이식 블록 그룹(37)의 종료 주소, 베이식 블록 그룹(37)의 호출 횟수, 베이식 블록 그룹(37)의 크기 및 베이식 블록 그룹(37) 내의 실수 연산 유무에 대한 정보를 포함한다. 특히 수집된 기초 정보는 브랜치 어드레스(branch address), 점프 어드레스(jump address), 콜 어드레스(call address) 및 RET의 간접 주소(indirect address) 중에 적어도 하나의 간접 주소를 포함한다. 간접 주소에는 베이식 블록 그룹(37)의 시작 주소, 베이식 블록 그룹(37)의 크기, 브랜치 태이큰(branch taken) 주소에 대한 정보를 포함한다. 또한 수집된 기초 정보는 설정된 보안 수준 설정 항목에 따라서, 베이식 블록 그룹(37) 내에서 호스트 단말의 메모리를 참조하는 회수, 베이식 블록 그룹(37) 내에서 호스트 단말의 OS API를 호출하는 회수, 베이식 블록 그룹(37)의 실행 시간, 베이식 블록 그룹(37) 내에서 수행되는 전체 명령어 개수, 베이식 블록 그룹(37)의 실행을 위해 전달되는 파라미터 개수 및 타입, 베이식 블록 그룹(37)의 실행 후 반환되는 값의 종류 중에 적어도 하나를 더 포함할 수 있다.The basic information is information collected about the code region 31 through dynamic profiling during run-time for the content 30. In other words, dynamic profiling can track the values assigned to inputs, outputs and registers, and the flow of content 30 in code, so that dynamic profiling can be used to expand the scope of analysis while collecting accurate and accurate basic information. can do. The collected basic information includes the start address of the basic block group 37, the end address of the basic block group 37, the number of calls of the basic block group 37, the size of the basic block group 37, and the basic block group 37. It contains information about the presence or absence of a real operation in). In particular, the collected basic information includes at least one indirect address among a branch address, a jump address, a call address, and an indirect address of the RET. The indirect address includes information about the start address of the basic block group 37, the size of the basic block group 37, and the branch taken address. In addition, the collected basic information is based on the set security level setting item, the number of times of referring to the memory of the host terminal in the basic block group 37, the number of times of calling the OS API of the host terminal in the basic block group 37, basic The execution time of the block group 37, the total number of instructions executed in the basic block group 37, the number and type of parameters passed for execution of the basic block group 37, the return after the execution of the basic block group 37 It may further include at least one of the kind of the value.

정적 분석부(16)는 코드 영역(31)에 대해서 수집한 기초 정보를 기반으로 컨텐츠(30)의 코드 영역(31)에 대한 정적 분석을 수행한다. 즉 정적 분석부(16)는 컨텐츠(30) 중 공개된 API와 관련된 부분을 분석 대상으로 선정하는 것이 바람직하지 않기 때문에, 해당 부분을 제외하고 코드 영역(31)에 대한 정적 분석을 수행한다. 이때 정적 분석부(16)는 수집한 기초 정보 중에서 컨텐츠(30) 중 공개된 API와 관련된 기초 정보를 제외한 기초 정보를 기반으로 정적 분석을 수행할 수도 있다.The static analyzer 16 performs a static analysis on the code region 31 of the content 30 based on the basic information collected about the code region 31. That is, since the static analysis unit 16 does not desirably select a part related to the published API of the content 30 as an analysis target, the static analysis unit 16 performs the static analysis of the code region 31 except for the corresponding part. In this case, the static analyzer 16 may perform static analysis based on the basic information except the basic information related to the published API among the content 30 among the collected basic information.

일반적인 정적 분석은 컨텐츠(30)의 코드 영역(31)의 시작점을 찾고, 찾은 시작점에서부터 컨트롤 플로우(control flow)를 따라서 분석하는 방법이다. 따라서 정적 분석은 런-타임 상에서 취득할 수 있는 정보가 없기 때문에, 바이너리 코드 중에 확실한 값이 표기된 경로로의 이동만 가능하다. 특히 레지스터의 값을 비롯한 Heap 영역의 데이터, 외부 DLL로의 이동 등에 제한이 있다. 또한 컨트롤 플로우를 따라 가는 것 또한 간접 정보의 부재로 상당한 제한이 있다. 이로 인해 일반적인 정적 분석은 다양한 시작점을 임의대로 파악하여 접근할 수 있지만 큰 의미를 갖기 힘들기 때문에, 분석 범위가 좁을 수밖에 없다.A general static analysis is a method of finding the starting point of the code region 31 of the content 30 and analyzing the control flow from the found starting point. Therefore, static analysis does not have information that can be obtained at run-time, so it is only possible to move to a path marked with a certain value in binary code. In particular, there are restrictions such as register data, heap area data, and movement to external DLL. Also following the control flow is a significant limitation due to the lack of indirect information. Because of this, general static analysis can be approached by grasping various starting points arbitrarily, but it is hard to have big meaning, so the scope of analysis is narrow.

하지만 정적 분석부(16)는 동적 프로파일링을 통하여 수집한 기초 정보를 기반으로 정적 분석을 수행하기 때문에, 컨텐츠(30)의 코드 영역(31)의 분석 범위를 확장할 수 있다. 즉 정적 분석부(16)는 수집한 기초 정보 중 간접 주소를 컨트롤 플로우 상에 대입함으로써, 컨텐츠(30)의 코드 영역(31)의 분석 범위를 확장하여 단독으로 동적 프로파일링을 수행하거나 정적 분석을 수행하는 것에 비하여 더 많은 유효한 베이식 블록 그룹(37)을 추출할 수 있다.However, since the static analysis unit 16 performs static analysis based on the basic information collected through dynamic profiling, the analysis range of the code region 31 of the content 30 may be extended. That is, the static analysis unit 16 substitutes an indirect address among the collected basic information on the control flow to expand the analysis range of the code area 31 of the content 30 to perform dynamic profiling alone or to perform static analysis. More valid basic block groups 37 can be extracted compared to performing.

이와 같이 간접 주소의 대입을 통하여 컨텐츠(30)에 대한 분석 범위를 확장할 수 있기 때문에, 분석하는 컨텐츠(30)의 특성에 따라 차이는 있겠지만 단독으로 동적 프로파일링 또는 정적 분석을 수행하는 것에 비교하여 분석 범위를 수십배 이상 높일 수 있다. 예컨대 Alzip.exe((주)이스트소프트의 솔루션)와 같은 압축 실행프로그램에 대해서 정적 분석만으로는 1% 미만의 분석 범위를 보이지만, 동적 프로파일링을 통해 수집한 기초 정보를 이용하여 정적 분석을 수행할 경우 27% 이상의 분석 범위를 보이는 것을 확인할 수 있다. 즉 컨텐츠(30)의 코드 영역(31)에 존재하는 간접 주소가 상당히 많고, 간접 주소를 이용하여 분석 범위를 확장할 수 있다는 것은 다양한 출력, 예컨대 베이식 블록 그룹(37)을 이끌어 낼 수 있음을 의미한다.Since the scope of analysis of the content 30 can be extended by assigning an indirect address as described above, although there may be differences depending on the characteristics of the content 30 to be analyzed, compared to performing dynamic profiling or static analysis alone. The range of analysis can be increased by several orders of magnitude. For example, if the static analysis alone shows a compression range of less than 1% for compressed executable programs such as Alzip.exe (Eastsoft's solution), but static analysis is performed using the basic information collected through dynamic profiling. It can be seen that the analysis range is more than 27%. That is, a large number of indirect addresses present in the code area 31 of the content 30, and the possibility of extending the analysis range using the indirect addresses means that various outputs, for example, the basic block group 37, can be derived. do.

한편 베이식 블록 그룹(37)의 크기는 RET와 같이 1Byte에서 수십 내지 수백Byte가 될 수 있기 때문에, 베이식 블록 그룹(37)의 크기가 크면 클수록 내부 진입의 가능성은 확률적으로 커질 수 밖에 없다. 또한 컨텐츠(30)의 모든 명령어를 실행 이전에 검사하고 분석할 수 있다면 좀 더 정확하고 세밀한 베이식 블록 그룹(37)을 정의할 수 있을 것이다. 하지만 이것도 간접 주소의 존재로 인해 베이식 블록 그룹(37)을 완벽하게 정의할 수는 없다.On the other hand, since the size of the basic block group 37 may be tens to hundreds of bytes in 1 byte, such as RET, the larger the size of the basic block group 37 is, the greater the probability of internal entry is. In addition, if all instructions of the content 30 can be inspected and analyzed before execution, a more accurate and detailed basic block group 37 can be defined. However, this also cannot completely define the basic block group 37 due to the existence of indirect addresses.

따라서 시작점을 통한 제어 신호의 진입 및 베이식 블록(35) 간의 제어 신호의 이동은 허용하지만, 시작점을 제외한 베이식 블록(35)으로의 제어 신호의 진입이 없는 베이식 블록 그룹(37)을 컨텐츠(30)에서 추출하기 위해서, 정적 분석부(16)는 다음과 같은 정의(규칙)을 이용하여 컨텐츠(30)의 코드 영역(31)에서 베이식 블록 그룹(37)을 선정할 수 있다.Therefore, the basic block group 37 which allows the entry of the control signal through the starting point and the movement of the control signal between the basic block 35 but does not enter the control signal to the basic block 35 except for the starting point is included in the content 30. In order to extract from, the static analyzer 16 may select the basic block group 37 in the code area 31 of the content 30 by using the following definition (rule).

이때 베이식 블록 그룹(37)에 대한 정의는 다음과 같다. 먼저 한 번 정의한 베이식 블록 그룹(37)을 고정적으로 정의하지 않고, 베이식 블록 그룹(37)의 내부로 진입하는 제어 신호의 유무에 따라 베이식 블록 그룹(37)을 분리하여 재정의 한다.In this case, the definition of the basic block group 37 is as follows. First, the basic block group 37 defined once is not fixedly defined, and the basic block group 37 is separated and redefined according to the presence or absence of a control signal entering into the basic block group 37.

즉 도 2, 도 3 및 도 9를 참조하면, 정적 분석부(16)는 컨텐츠(30)의 코드 영역(31)에서 서로 연관된 복수의 베이식 블록(35)을 포함하는 베이식 블록 그룹(37)을 정의할 수 있다. 이때 정의된 베이식 블록 그룹(37)은 분석 중 현재까지 시작점을 제외한 베이식 블록(35b)으로의 제어 신호의 진입이 없는 베이식 블록(35)의 모임이라 할 수 있다.2, 3, and 9, the static analyzer 16 includes a basic block group 37 including a plurality of basic blocks 35 associated with each other in the code area 31 of the content 30. Can be defined In this case, the defined basic block group 37 may be referred to as a collection of basic blocks 35 without entering a control signal to the basic block 35b excluding the starting point.

여기서 베이식 블록 그룹(37)의 시작점에 위치하는 베이식 블록(35a)을 통한 제어 신호가 입력되는 경우, 정적 분석부(16)는 해당 베이식 블록 그룹(37)에 대한 재정의는 수행하지 않는다. 또한 베이식 블록 그룹(37)에 포함된 베이식 블록(35) 간에 제어 신호가 이동하는 경우에도, 정적 분석부(16)는 해당 베이식 블록 그룹(37)에 대한 재정의는 수행하지 않는다. 즉 전술된 두 경우 정적 분석부(16)는 베이식 블록 그룹(37)은 현재의 정의 상태를 유지한다.In this case, when a control signal through the basic block 35a positioned at the start point of the basic block group 37 is input, the static analyzer 16 does not redefine the basic block group 37. In addition, even when the control signal is moved between the basic blocks 35 included in the basic block group 37, the static analyzer 16 does not redefine the basic block group 37. That is, in the above two cases, the static analyzer 16 maintains the basic block group 37 in the current defined state.

하지만 도 2, 도 3 및 도 10에 도시된 바와 같이, 베이식 블록 그룹(37)의 시작점에 위치하는 베이식 블록(35a)을 제외한 다른 베이식 블록(35b)으로 제어 신호가 입력될 경우, 정적 분석부(16)는 해당 베이식 블록 그룹(37)을 제어 신호가 입력되는 베이식 블록(35b)을 기준으로 분할하여 재정의 한다. 즉 베이식 블록 그룹(37)의 내부로 진입하는 제어 신호가 있으면, 정적 분석부(16)는 제어 신호의 명령어 주소(instruction address)를 기준으로 베이식 블록 그룹(37)을 분할하여 재정의 한다.However, as shown in FIGS. 2, 3, and 10, when the control signal is input to the other basic block 35b except for the basic block 35a positioned at the start of the basic block group 37, the static analyzer Reference numeral 16 divides the basic block group 37 based on the basic block 35b to which the control signal is input and redefines it. That is, if there is a control signal entering the basic block group 37, the static analyzer 16 divides and redefines the basic block group 37 based on an instruction address of the control signal.

이와 같이 베이식 블록 그룹(37)을 재정의 함으로써, 분할된 베이식 블록 그룹(37a,37b)이 내부 진입이 없는 베이식 블록 그룹으로 성립할 확률을 높일 수 있다.By redefining the basic block group 37 in this manner, it is possible to increase the probability that the divided basic block groups 37a and 37b are established as basic block groups without internal entry.

이때 재정의 대상이 되는 베이식 블록 그룹(37)은 제어 신호의 명령어 주소를 기준으로 이전의 제1 베이식 블록 그룹(37a)과, 제어 신호의 명령어 주소를 포함하는 이후의 제2 베이식 블록 그룹(37b)으로 재정의 된다. 제1 베이식 블록 그룹(37a)의 브랜치 주소(branch address)는 제2 베이식 블록 그룹(37b)의 시작점으로의 진입을 위한 다음 명령어 주소(next instruction address)가 된다.In this case, the basic block group 37 to be redefined has a first basic block group 37a based on the command address of the control signal and a second basic block group 37b including the command address of the control signal. Is redefined to). The branch address of the first basic block group 37a becomes the next instruction address for entry to the start point of the second basic block group 37b.

그리고 이와 같은 재정의 단계를 반복함으로써, 최종적으로 재정의된 베이식 블록 그룹(37)은 단일 입력 및 단일 출력의 속성과, 외부에서 내부로의 진입을 허용하지 않는 속성을 갖는 복수의 베이식 블록(35)을 포함하는 베이식 블록 그룹(37)으로 정의될 수 있다.And by repeating this redefinition step, the finally redefined basic block group 37 is a plurality of basic blocks 35 having the properties of a single input and a single output and the property of not allowing entry from outside to inside. It may be defined as a basic block group 37 including a.

그리고 추출 및 생성부(18)는 추출된 복수의 베이식 블록 그룹(37) 중에서 분리 실행 대상 코드 블록(34)을 추출하거나, 추출한 분리 실행 대상 코드 블록(34)의 리스트를 생성하거나, 서비스용 컨텐츠(32)를 생성한다. 특히 추출 및 생성부(18)는 추출된 복수의 베이식 블록 그룹(37) 중에서 컨텐츠(30) 실행 시 최소한 한번 이상 반드시 실행되는 중요 경로 상에 있는 베이식 블록 그룹(37)을 분리 실행 대상 코드 블록(34)으로 추출할 수 있다. 또한 추출 및 생성부(18)는 설정된 보안 수준에 따라 분리 실행 대상 코드 블록(34)을 추출할 수 있다. 예컨대 사용자는 베이식 블록 그룹(37)의 호출 빈도, 베이식 블록 그룹(37)의 호출 위치, 호스트 단말의 메모리 참조 빈도, 호스트 단말의 OS API 참조 빈도, 저장장치의 하드웨어 요소 중에 적어도 하나에 가중치를 부여하여 보안 수준을 설정하면, 추출 및 생성부(18)는 설정된 보안 수준에 따라 분리 실행 대상 코드 블록(34)을 선출할 수 있다. 즉 사용자는 컨텐츠(30)의 종류, 가치 등을 고려하여 사용자 레벨에서 보안 수준을 설정하고, 이를 통하여 컨텐츠(30)의 복제 방지 효과를 획득할 수 있다.The extraction and generation unit 18 extracts the separate execution target code block 34 from the extracted basic block groups 37, generates a list of the extracted execution target code blocks 34, or generates a service content. Generate (32). In particular, the extraction and generation unit 18 separates the basic block group 37 on the important path that is necessarily executed at least once when executing the content 30 among the plurality of extracted basic block groups 37. 34). In addition, the extraction and generation unit 18 may extract the separation execution target code block 34 according to the set security level. For example, the user weights at least one of the call frequency of the basic block group 37, the call position of the basic block group 37, the memory reference frequency of the host terminal, the OS API reference frequency of the host terminal, and the hardware elements of the storage device. By setting the security level, the extraction and generation unit 18 may select the separate execution target code block 34 according to the set security level. That is, the user may set a security level at the user level in consideration of the type, value, and the like of the content 30, and thereby obtain a copy protection effect of the content 30.

추출 및 생성부(18)는 추출한 분리 실행 대상 코드 블록(34)의 리스트를 생성할 수 있다. 분리 실행 대상 코드 블록(34)의 리스트는 해당 컨텐츠(30)와 함께 컨텐츠 등록 서버에 제공되어 해당 컨텐츠(30)의 등록을 수행할 때 사용될 수 있다.The extraction and generation unit 18 may generate a list of the extracted execution target code blocks 34. The list of separation execution target code blocks 34 may be provided to the content registration server together with the corresponding content 30 to be used when registering the corresponding content 30.

추출 및 생성부(18)는 분리 실행 대상 코드 블록(34)이 추출된 코드 영역에 스터브 코드(36)를 삽입하여 서비스용 컨텐츠(32)를 생성할 수 있다. 이때 스터브 코드(36)는 컨텐츠(30)에서 추출된 코드 영역과, 추출된 분리 실행 대상 코드 블록(34)을 연결한다.The extraction and generation unit 18 may generate the service content 32 by inserting the stub code 36 into the code area from which the separation execution code block 34 is extracted. At this time, the stub code 36 connects the code region extracted from the content 30 with the extracted separation target code block 34.

또한 추출 및 생성부(18)는 컨텐츠(30)에서 추출한 분리 실행 대상 코드 블록(34)과, 분리 실행 대상 코드 블록(34)이 추출된 코드 영역에 스터브 코드(36)가 삽입된 서비스용 컨텐츠(32)로 분리하여 저장부(13)에 저장할 수 있다.In addition, the extraction and generation unit 18 is a content for service in which the stub code 36 is inserted into the separated execution target code block 34 extracted from the content 30 and the code region from which the separate execution target code block 34 is extracted. It can be divided into 32 and stored in the storage unit (13).

이와 같이 추출 및 생성부(18)에서 추출된 분리 실행 대상 코드 블록(34)은 시작점에 위치하는 베이식 블록(35)을 통한 제어 신호가 입력되는 경우, 해당 제어 신호의 입력을 허용한다. 분리 실행 대상 코드 블록(34)은 시작점을 통한 제어 신호의 입력에 따른 베이식 블록(35) 간의 제어 신호의 이동을 허용한다. 또한 분리 실행 대상 코드 블록(34)은 시작점을 제외한 베이식 블록(35)으로의 제어 신호의 진입이 없는 복수의 베이식 블록(35)을 포함한다. 바꾸어 말하면 분리 실행 대상 코드 블록(34)은 시작점을 제외한 베이식 블록(35)으로의 제어 신호의 진입을 허용하는 않는 복수의 베이식 블록(35)을 포함한다.As described above, the separation execution target code block 34 extracted by the extraction and generation unit 18 allows input of the control signal when a control signal is input through the basic block 35 positioned at the start point. The separate execution target code block 34 allows the movement of the control signal between the basic blocks 35 according to the input of the control signal through the start point. The separate execution target code block 34 also includes a plurality of basic blocks 35 without entry of control signals to the basic block 35 except for the start point. In other words, the separated execution code block 34 includes a plurality of basic blocks 35 which do not allow entry of the control signal to the basic block 35 except for the start point.

이와 같이 추출 및 생성부(18)에서 추출된 분리 실행 대상 코드 블록(34)은, 도 5 내지 도 7은 도시된 바와 같은 속성을 갖는다. 즉 도 5에 도시된 바와 같이, 분리 실행 대상 코드 블록(34)은 시작점에 위치하는 베이식 블록(35a)을 통한 제어 신호가 입력되는 경우, 해당 제어 신호의 입력을 허용한다.The separation execution target code block 34 extracted by the extraction and generation unit 18 as described above has attributes as shown in FIGS. 5 to 7. That is, as shown in FIG. 5, when the control signal through the basic block 35a positioned at the starting point is input, the separation execution target code block 34 allows the input of the control signal.

도 6에 도시된 바와 같이, 분리 실행 대상 코드 블록(34)은 시작점을 통한 제어 신호의 입력에 따른 베이식 블록(35a,35b) 간의 제어 신호의 이동을 허용한다.As shown in Fig. 6, the separate execution target code block 34 allows the movement of the control signal between the basic blocks 35a and 35b according to the input of the control signal through the start point.

또한 도 7에 도시된 바와 같이, 분리 실행 대상 코드 블록(34)은 시작점을 제외한 베이식 블록(35b)으로의 제어 신호의 진입이 없는 복수의 베이식 블록(35a,35b)을 포함한다. 바꾸어 말하면 분리 실행 대상 코드 블록(34)은 시작점을 제외한 베이식 블록(35b)으로의 제어 신호의 진입을 허용하는 않는 복수의 베이식 블록(35)을 포함한다.In addition, as illustrated in FIG. 7, the separated execution target code block 34 includes a plurality of basic blocks 35a and 35b without entering a control signal to the basic block 35b except for the starting point. In other words, the separated execution code block 34 includes a plurality of basic blocks 35 which do not allow entry of the control signal to the basic block 35b except for the start point.

따라서 본 실시예에 따른 컨텐츠 분리 장치(10)는 컨텐츠(30)에 대한 동적 프로파일링 및 정적 분석을 통하여 해당 컨텐츠(30)를 분리 실행 대상 코드 블록(34)과 서비스용 컨텐츠(32)로 분리할 수 있다. 또한 컨텐츠(30)에 대한 동적 프로파일링을 통하여 수집한 코드 영역(31)의 기초 정보를 이용하여 해당 컨텐츠(30)에 대한 정적 분석을 수행하기 때문에, 컨텐츠(30)의 코드 영역(31)의 분석 범위를 확장할 수 있고, 이를 통하여 컨텐츠(30)의 복제 방지에 필요한 코드 블록의 추출율을 향상시킬 수 있다.Therefore, the content separation device 10 according to the present embodiment divides the corresponding content 30 into a separate execution target code block 34 and a service content 32 through dynamic profiling and static analysis of the content 30. can do. In addition, since static analysis of the corresponding content 30 is performed using the basic information of the code area 31 collected through the dynamic profiling of the content 30, the code area 31 of the content 30 The scope of analysis can be extended, and through this, the extraction rate of code blocks required for copy protection of the content 30 can be improved.

본 실시예에 따른 분리 실행 기반의 컨텐츠 분리 방법에 대해서 도 1 내지 도 10을 참조하여 설명하면 다음과 같다. 여기서 도 8은 본 발명의 실시예에 따른 분리 실행 기반의 컨텐츠 분리 방법에 따른 흐름도이다. 도 9 및 도 10은 도 8의 분리 실행 대상 코드 블록으로 추출된 베이식 블록 그룹의 선정 단계를 설명하기 위한 예시도이다.A method of separating content based on the separation execution according to the present embodiment will be described with reference to FIGS. 1 to 10. 8 is a flowchart illustrating a content separation method based on separation execution according to an embodiment of the present invention. 9 and 10 are exemplary diagrams for describing a selection step of a basic block group extracted as a separate execution target code block of FIG. 8.

먼저 S61단계에서 컨텐츠 분리 장치(10)는 분리할 컨텐츠(30)를 호출한다. 즉 사용자로부터 분리할 컨텐츠(30)를 호출하기 위한 선택 신호가 입력부(11)를 통하여 입력되면, 컨텐츠 분리 장치(10)는 저장부(13)에 저장된 분리전 컨텐츠(30)의 리스트를 표시부(15)에 표시한다. 이어서 리스트에서 특정 컨텐츠(30)가 선택되면, 컨텐츠 분리 장치(10)는 선택된 컨텐츠(30)를 호출한다.First, in step S61, the content separation device 10 calls the content 30 to be separated. That is, when a selection signal for calling the content 30 to be separated from the user is input through the input unit 11, the content separating apparatus 10 displays a list of the content before separation 30 stored in the storage unit 13. 15). Subsequently, when the specific content 30 is selected from the list, the content separating apparatus 10 calls the selected content 30.

다음으로 S63단계에서 컨텐츠 분리 장치(10)는 선택된 컨텐츠(30)에 대한 보안 수준을 설정한다. 즉 컨텐츠 분리 장치(10)는 사용자가 선택할 수 있는 보안 수준 설정 항목을 표시부(15)에 표시한다. 사용자가 표시된 보안 수준 설정 항목 중에서 특정 보안 수준 설정 항목을 선택하면, 컨텐츠 분리 장치(10)는 선택된 보안 수준 설정 항목으로 등록할 컨텐츠(30)의 보안 수준을 설정한다.Next, in step S63, the content separation device 10 sets the security level for the selected content (30). That is, the content separation device 10 displays the security level setting item that can be selected by the user on the display unit 15. When the user selects a specific security level setting item from the displayed security level setting items, the content separation device 10 sets the security level of the content 30 to be registered as the selected security level setting item.

이때 본 실시예에서는 S61단계 및 S63단계 순으로 진행되는 예를 개시하였지만, 반대의 순서로 진행될 수 있다. 또한 보안 수준이 디폴트로 설정되어 있는 경우, 컨텐츠 분리 장치(10)는 S63단계를 생략할 수도 있다.In this embodiment, the example proceeds in the steps S61 and S63, but may be performed in the reverse order. In addition, when the security level is set as a default, the content separation device 10 may skip step S63.

다음으로 S65단계에서 컨텐츠 분리 장치(10)는 호출한 컨텐츠(30)에 대한 실행을 시작한다.Next, in step S65, the content separating apparatus 10 starts execution of the called content 30.

다음으로 S67단계에서 컨텐츠 분리 장치(10)는 호출한 컨텐츠(30)에 대한 동적 프로파일링을 수행하여 코드 영역(31)에 대한 기초 정보를 수집한다. 즉 컨텐츠 분리 장치(10)는 컨텐츠(30)에 대한 런-타임 동안 코드 영역(31)에 대한 기초 정보를 수집한다. 이때 수집된 기초 정보는 베이식 블록 그룹(37)의 시작 주소, 베이식 블록 그룹(37)의 종료 주소, 베이식 블록 그룹(37)의 호출 횟수, 베이식 블록 그룹(37)의 크기 및 베이식 블록 그룹(37) 내의 실수 연산 유무에 대한 정보를 포함한다. 특히 수집된 기초 정보는 브랜치 어드레스, 점프 어드레스, 콜 어드레스 및 RET의 간접 주소 중에 적어도 하나의 간접 주소를 포함한다. 간접 주소에는 베이식 블록 그룹(37)의 시작 주소, 베이식 블록 그룹(37)의 크기, 브랜치 태이큰 주소에 대한 정보를 포함한다. 또한 수집된 기초 정보는 설정된 보안 수준 설정 항목에 따라서, 베이식 블록 그룹 내에서 호스트 단말의 메모리를 참조하는 회수, 베이식 블록 그룹 내에서 호스트 단말의 OS API를 호출하는 회수, 베이식 블록 그룹의 실행 시간, 베이식 블록 그룹 내에서 수행되는 전체 명령어 개수, 베이식 블록 그룹의 실행을 위해 전달되는 파라미터 개수 및 타입, 베이식 블록 그룹의 실행 후 반환되는 값의 종류 중에 적어도 하나를 더 포함할 수 있다.Next, in step S67, the content separation device 10 collects basic information about the code area 31 by performing dynamic profiling on the called content 30. That is, the content separation device 10 collects basic information about the code area 31 during the run-time for the content 30. The collected basic information includes the start address of the basic block group 37, the end address of the basic block group 37, the number of calls of the basic block group 37, the size of the basic block group 37, and the basic block group 37. It contains information about the presence or absence of a real operation in). In particular, the collected basic information includes at least one indirect address of a branch address, a jump address, a call address, and an indirect address of the RET. The indirect address includes information about the start address of the basic block group 37, the size of the basic block group 37, and the branch tagged address. Also, the collected basic information may include the number of times of referring to the memory of the host terminal in the basic block group, the number of times of calling the OS API of the host terminal in the basic block group, the execution time of the basic block group, and the like. The method may further include at least one of the total number of instructions executed in the basic block group, the number and type of parameters transferred for the execution of the basic block group, and the type of values returned after the execution of the basic block group.

다음으로 S69단계에서 컨텐츠 분리 장치(10)는 수집한 기초 정보를 기반으로 정적 분석을 수행한다. 즉 컨텐츠 분리 장치(10)는 수집한 기초 정보 중 간접 주소를 컨트롤 플로우 상에 대입하여 해당 컨텐츠(30)의 코드 영역(31)에 대한 정적 분석을 수행한다.Next, in step S69, the content separation device 10 performs a static analysis based on the collected basic information. That is, the content separating apparatus 10 substitutes an indirect address among the collected basic information on the control flow and performs a static analysis on the code area 31 of the corresponding content 30.

이와 같이 본 실시예에서는 수집한 기초 정보를 기반으로 정적 분석을 수행하기 때문에, 단독으로 동적 프로파일링 또는 정적 분석을 수행하는 것에 비하여 컨텐츠(30)의 코드 영역(31)에 대한 분석 범위를 확장할 수 있다.As described above, since the static analysis is performed based on the collected basic information, the scope of analysis for the code area 31 of the content 30 may be extended as compared with performing dynamic profiling or static analysis alone. Can be.

한편 S69단계에서 컨텐츠 분리 장치(10)는 기초 정보를 기반으로 한 정적 분석을 통하여 복수의 베이식 블록 그룹(37)을 선정할 수 있다. 즉 컨텐츠 분리 장치(10)는 수집한 기초 정보 중 간접 주소를 컨트롤 플로우 상에 대입하여 컨텐츠의 코드 영역에서 복수의 베이식 블록 그룹(37)을 선정할 수 있다.In operation S69, the content separation device 10 may select a plurality of basic block groups 37 through static analysis based on basic information. That is, the content separation device 10 may select a plurality of basic block groups 37 in the code area of the content by substituting an indirect address among the collected basic information on the control flow.

S69단계에서 컨텐츠 분리 장치(10)는, 도 9 및 도 10에 도시된 바와 같이, 정의(규칙)를 통하여 베이식 블록 그룹(37)을 선정할 수 있다.In operation S69, the content separation device 10 may select the basic block group 37 through definitions (rules) as illustrated in FIGS. 9 and 10.

먼저 도 9에 도시된 바와 같이, 컨텐츠 분리 장치(10)는 컨텐츠(30)의 코드 영역(31)에서 서로 연관된 복수의 베이식 블록(35)을 포함하는 베이식 블록 그룹(37)을 정의할 수 있다.First, as illustrated in FIG. 9, the content separation device 10 may define a basic block group 37 including a plurality of basic blocks 35 associated with each other in the code area 31 of the content 30. .

여기서 베이식 블록 그룹(37)의 시작점에 위치하는 베이식 블록(35a)을 통한 제어 신호가 입력되는 경우, 컨텐츠 분리 장치(10)는 해당 베이식 블록 그룹(37)에 대한 재정의는 수행하지 않는다. 또한 베이식 블록 그룹(37)에 포함된 베이식 블록(35) 간에 제어 신호가 이동하는 경우에도, 컨텐츠 분리 장치(10)는 해당 베이식 블록 그룹(37)에 대한 재정의는 수행하지 않는다. 즉 전술된 두 경우 컨텐츠 분리 장치(10)는 베이식 블록 그룹(37)은 현재의 정의 상태를 유지한다.When the control signal through the basic block 35a positioned at the start of the basic block group 37 is input, the content separation device 10 does not redefine the basic block group 37. In addition, even when the control signal is moved between the basic blocks 35 included in the basic block group 37, the content separation device 10 does not redefine the basic block group 37. That is, in the above two cases, the content separation device 10 maintains the basic block group 37 in the current defined state.

하지만 도 10에 도시된 바와 같이, 베이식 블록 그룹(37)의 시작점에 위치하는 베이식 블록(35a)을 제외한 다른 베이식 블록(35b)으로 제어 신호가 입력될 경우, 컨텐츠 분리 장치(10)는 해당 베이식 블록 그룹(37)을 제어 신호가 입력되는 베이식 블록(35b)을 기준으로 분할하여 재정의 한다. 즉 베이식 블록 그룹(37)의 내부로 진입하는 제어 신호가 있으면, 컨텐츠 분리 장치(10)는 제어 신호의 명령어 주소를 기준으로 베이식 블록 그룹(37)을 분할하여 재정의 한다.However, as shown in FIG. 10, when the control signal is input to the other basic block 35b except for the basic block 35a positioned at the start point of the basic block group 37, the content separation device 10 may use the corresponding basic type. The block group 37 is divided and redefined based on the basic block 35b to which the control signal is input. That is, if there is a control signal entering the basic block group 37, the content separation device 10 divides and redefines the basic block group 37 based on the command address of the control signal.

이와 같이 베이식 블록 그룹(37)을 재정의 함으로써, 분할된 베이식 블록 그룹(37a,37b)이 내부 진입이 없는 베이식 블록 그룹(37)으로 성립할 확률을 높일 수 있다.By redefining the basic block group 37 in this manner, it is possible to increase the probability that the divided basic block groups 37a and 37b are established as the basic block group 37 without internal entry.

이때 재정의 대상이 되는 베이식 블록 그룹(37)은 제어 신호의 명령어 주소를 기준으로 이전의 제1 베이식 블록 그룹(37a)과, 제어 신호의 명령어 주소를 포함하는 이후의 제2 베이식 블록 그룹(37b)으로 재정의 된다.In this case, the basic block group 37 to be redefined has a first basic block group 37a based on the command address of the control signal and a second basic block group 37b including the command address of the control signal. Is redefined to).

그리고 이와 같은 재정의 단계를 반복함으로써, 최종적으로 재정의된 베이식 블록 그룹(37)은 단일 입력 및 단일 출력의 속성과, 외부에서 내부로의 진입을 허용하지 않는 속성을 갖는 복수의 베이식 블록(35)을 포함하는 베이식 블록 그룹(37)으로 정의될 수 있다.And by repeating this redefinition step, the finally redefined basic block group 37 is a plurality of basic blocks 35 having the properties of a single input and a single output and the property of not allowing entry from outside to inside. It may be defined as a basic block group 37 including a.

이어서 S71단계에서 컨텐츠 분리 장치(10)는 선정한 복수의 베이식 블록 그룹(37) 중에서 분리 실행 대상 코드 블록(34)을 추출할 수 있다. 즉 S71단계에서 컨텐츠 분리 장치(10)는 선정된 복수의 베이식 블록 그룹(37) 중에서 설정된 보안 수준에 따라 베이식 블록 그룹(37)을 분리 실행 대상 코드 블록(34)으로 추출할 수 있다. 예컨대 사용자는 베이식 블록 그룹(37)의 호출 빈도, 베이식 블록 그룹(37)의 호출 위치, 호스트 단말(51)의 메모리 참조 빈도, 호스트 단말(51)의 OS API 참조 빈도, 저장장치(53)의 하드웨어 요소 중에 적어도 하나에 가중치를 부여하여 보안 수준을 설정하면, 컨텐츠 분리 장치(10)는 설정된 보안 수준에 따라 분리 실행 대상 코드 블록(34)을 추출할 수 있다.In operation S71, the content separation device 10 may extract the separation execution code block 34 from the selected basic block groups 37. That is, in operation S71, the content separation device 10 may extract the basic block group 37 as the separation execution target code block 34 according to a security level set among the plurality of selected basic block groups 37. For example, the user may call the basic block group 37, the calling position of the basic block group 37, the memory reference frequency of the host terminal 51, the OS API reference frequency of the host terminal 51, and the storage 53. When the security level is set by weighting at least one of the hardware elements, the content separation device 10 may extract the separation target code block 34 according to the set security level.

이때 S71단계 이후에 컨텐츠 분리 장치(10)는 추출한 분리 실행 대상 코드 블록(34)에 대한 리스트를 생성할 수도 있다.In this case, after operation S71, the content separation device 10 may generate a list for the extracted separation execution target code block 34.

그리고 S73단계에서 컨텐츠 분리 장치(10)는 분리 실행 대상 코드 블록(34)이 추출된 코드 영역에 스터브 코드(36)를 삽입하여 서비스용 컨텐츠(32)를 생성할 수 있다. 이때 스터브 코드(36)는 컨텐츠(30)에서 추출된 코드 영역과, 추출된 분리 실행 대상 코드 블록(34)을 연결한다.In operation S73, the content separation device 10 may generate the service content 32 by inserting the stub code 36 into the code region from which the separation execution code block 34 is extracted. At this time, the stub code 36 connects the code region extracted from the content 30 with the extracted separation target code block 34.

이와 같이 컨텐츠(30)에서 분리 실행 대상 코드 블록(34)을 추출하고, 분리 실행 대상 코드 블록(34)이 추출된 코드 영역에 스터브 코드(36)를 삽입하여 서비스용 컨텐츠(32)를 생성함으로써, 컨텐츠 분리 장치(10)는 컨텐츠(30)를 추출된 분리 실행 대상 코드 블록(34)과, 생성된 서비스용 컨텐츠(32)로 분할할 수 있다. 이때 S73단계에서 컨텐츠 분리 장치(10)는 분리 실행 대상 코드 블록(34)과 서비스용 컨텐츠(32)를 저장부(13)에 저장할 수 있다.
In this way, the separation execution target code block 34 is extracted from the content 30, and the stub code 36 is inserted into the code region from which the separation execution target code block 34 is extracted to generate the service content 32. The content separating apparatus 10 may divide the content 30 into the extracted execution target code block 34 and the generated service content 32. In this case, in operation S73, the content separation device 10 may store the separation execution target code block 34 and the service content 32 in the storage unit 13.

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

한편, 본 명세서와 도면에 개시된 본 발명의 실시예들은 이해를 돕기 위해 특정 예를 제시한 것에 지나지 않으며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시예들 이외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형예들이 실시 가능하다는 것은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 자명한 것이다.On the other hand, the embodiments of the present invention disclosed in the specification and drawings are merely presented specific examples to aid understanding, and are not intended to limit the scope of the present invention. In addition to the embodiments disclosed herein, it is apparent to those skilled in the art that other modifications based on the technical idea of the present invention may be implemented.

본 발명은 분리 실행 기반의 컨텐츠 분리 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록매체에 관한 것으로, 컨텐츠에 대한 동적 프로파일링을 통하여 코드 영역의 기초 정보를 수집하고, 수집한 기초 정보를 이용하여 해당 컨텐츠의 코드 영역에 대한 정적 분석을 수행하여 획득한 정보를 이용하여 해당 컨텐츠를 분리 실행 대상 코드 블록과 서비스용 컨텐츠로 분리할 수 있다. 또한 컨텐츠에 대한 동적 프로파일링을 통하여 수집한 코드 영역의 기초 정보를 이용하여 해당 컨텐츠의 코드 영역에 대한 정적 분석을 수행하기 때문에, 컨텐츠의 코드 영역의 분석 범위를 확장하고, 이를 통하여 컨텐츠의 복제 방지에 필요한 코드 블록의 추출율을 향상시켜 컨텐츠의 복제 방지에 필요한 분리 실행 대상 코드 블록을 효과적으로 추출할 수 있다.The present invention relates to an apparatus for separating content based on separation execution, a method thereof, and a computer-readable recording medium on which the method is recorded. The present invention collects basic information of a code area through dynamic profiling of content, and collects basic information. Using the information obtained by performing a static analysis of the code area of the content using the can be separated into the content to be separated and executed code block and service content. In addition, since static analysis of the code area of the corresponding content is performed using the basic information of the code area collected through dynamic profiling of the content, the scope of analysis of the code area of the content is extended, thereby preventing duplication of content. By improving the extraction rate of the required code block, it is possible to effectively extract the separated execution target code block required for copy protection of the content.

10 : 컨텐츠 분리 장치 11 : 입력부
12 : 컨텐츠 호출부 13 : 저장부
14 : 기초 정보 수집부 15 : 표시부
16 : 정적 분석부 17 : 제어부
18 : 추출 및 생성부 30 : 컨텐츠
31 : 코드 영역 32 : 서비스용 컨텐츠
33 : 데이터 영역 34 : 분리 실행 대상 코드 블록
35 : 베이식 블록 37 : 베이식 블록 그룹
10: content separation device 11: input unit
12: content call unit 13: storage unit
14: basic information collecting unit 15: display unit
16: static analysis unit 17: control unit
18: extraction and generation unit 30: content
31: Code area 32: Content for service
33: data area 34: code block to be separated
35: basic block 37: basic block group

Claims (23)

분리 실행 기반의 컨텐츠 분리 장치에 있어서,
분리할 컨텐츠를 호출하는 컨텐츠 호출부;
상기 호출한 컨텐츠의 코드 영역에 대한 동적 프로파일링(dynamic profiling) 및 정적 분석(static analysis)을 통하여 복수의 베이식 블록 그룹을 선정하는 베이식 블록 그룹 선정부;
상기 복수의 베이식 블록 그룹 중에서 분리 실행 대상 코드 블록을 선택하여 상기 컨텐츠의 코드 영역에서 추출하는 추출 및 생성부;
를 포함하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠 분리 장치.
In the content separation device based on the separation execution,
A content caller for calling content to be separated;
A basic block group selector configured to select a plurality of basic block groups through dynamic profiling and static analysis on a code region of the called content;
An extraction and generation unit for selecting a separation execution target code block from the plurality of basic block groups and extracting the extracted code block from a code area of the content;
Separation execution-based content separation device comprising a.
제1항에 있어서, 상기 추출 및 생성부는,
상기 분리 실행 대상 코드 블록이 추출된 상기 코드 영역에 스터브 코드를 삽입하여 서비스용 컨텐츠를 생성하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠 분리 장치.
The method of claim 1, wherein the extraction and generation unit,
Separating execution-based content separation device, characterized in that for generating the content for the service by inserting a stub code in the code region from which the separation execution target code block is extracted.
제1항 또는 제2항에 있어서, 상기 베이식 블록 그룹 선정부는,
상기 호출한 컨텐츠에 대한 동적 프로파일링을 통하여 기초 정보를 수집하는 기초 정보 수집부;
상기 수집한 기초 정보를 기반으로 상기 컨텐츠의 코드 영역에 대한 정적 분석을 수행하여 상기 복수의 베이식 블록 그룹을 선정하는 정적 분석부;
를 포함하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠 분리 장치.
The method of claim 1 or 2, wherein the basic block group selection unit,
A basic information collecting unit which collects basic information through dynamic profiling of the called content;
A static analyzer configured to select the plurality of basic block groups by performing static analysis on the code area of the content based on the collected basic information;
Separation execution-based content separation device comprising a.
제3항에 있어서,
상기 기초 정보는 상기 컨텐츠에 대한 런-타임(run-time) 동안 수집한 상기 컨텐츠의 코드 영역에 대한 정보를 포함하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠 분리 장치.
The method of claim 3,
And the basic information includes information on a code region of the content collected during a run-time of the content.
제3항에 있어서, 상기 정적 분석부는,
상기 수집한 기초 정보의 간접 주소를 컨트롤 플로우(control flow)에 대입하여 정적 분석을 수행하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠 분리 장치.
The method of claim 3, wherein the static analysis unit,
Separation execution-based content separation device, characterized in that for performing static analysis by substituting the indirect address of the collected basic information into a control flow (control flow).
제3항에 있어서, 상기 추출 및 생성부는,
상기 복수의 베이식 블록 그룹 중에서 상기 컨텐츠 실행 시 최소한 한번 이상 반드시 실행되는 중요 경로(critical path) 상에 있는 베이식 블록 그룹을 분리 실행 대상 코드 블록으로 추출하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠 분리 장치.
The method of claim 3, wherein the extraction and generation unit,
Separating execution-based content separation device, characterized in that for extracting the basic block group on the critical path (critical path) that is necessarily executed at least once in the execution of the content of the plurality of basic block groups as a separate execution target code block.
제6항에 있어서,
상기 컨텐츠, 상기 컨텐츠의 상기 분리 실행 대상 코드 블록, 상기 컨텐츠에서 상기 분리 실행 대상 코드 블록이 분리된 서비스용 컨텐츠를 저장하는 저장부;
를 더 포함하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠 분리 장치.
The method of claim 6,
A storage unit for storing the content, the content execution target code block of the content, and content for a service in which the content execution separation code block is separated from the content;
Separation execution-based content separation device further comprising a.
분리 실행 기반의 컨텐츠 분리 방법에 있어서,
컨텐츠 분리 장치가 분리할 컨텐츠를 호출하는 호출 단계;
상기 컨텐츠 분리 장치가 상기 호출한 컨텐츠의 코드 영역에 대한 동적 프로파일링(dynamic profiling) 및 정적 분석(static analysis)을 통하여 복수의 베이식 블록 그룹을 선정하는 선정 단계;
상기 컨텐츠 분리 장치가 상기 복수의 베이식 블록 그룹 중에서 분리 실행 대상 코드 블록을 선택하여 상기 컨텐츠의 코드 영역에서 추출하는 추출 단계;
를 포함하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠 분리 방법.
In the separation execution based content separation method,
A call step of calling the content to be separated by the content separating apparatus;
A selection step of selecting, by the content separation device, a plurality of basic block groups through dynamic profiling and static analysis of a code region of the called content;
An extraction step of the content separation device selecting a code block to be separated from the basic block group and extracting the code block from the code area of the content;
Separation execution-based content separation method comprising a.
제8항에 있어서, 상기 추출 단계 이후에 수행되는,
상기 컨텐츠 분리 장치가 상기 분리 실행 대상 코드 블록이 추출된 상기 코드 영역에 스터브 코드를 삽입하여 서비스용 컨텐츠를 생성하는 생성 단계;
를 더 포함하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠 분리 방법.
The method according to claim 8, which is carried out after the extraction step,
Generating, by the content separation device, content for a service by inserting stub codes into the code region from which the separation execution target code block is extracted;
Separation execution based content separation method characterized in that it further comprises.
제8항에 있어서, 상기 선정 단계는,
상기 컨텐츠 분리 장치가 상기 호출한 컨텐츠에 대한 동적 프로파일링을 통하여 기초 정보를 수집하는 수집 단계;
상기 컨텐츠 분리 장치가 상기 수집한 기초 정보를 기반으로 상기 컨텐츠의 코드 영역에 대한 정적 분석을 수행하여 복수의 베이식 블록 그룹을 선정하는 베이식 블록 그룹 선정 단계;
를 포함하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠 분리 방법.
The method of claim 8, wherein the selecting step,
A collection step of collecting, by the content separation device, basic information through dynamic profiling of the called content;
A basic block group selecting step of selecting a plurality of basic block groups by performing a static analysis on a code region of the content based on the collected basic information by the content separating apparatus;
Separation execution-based content separation method comprising a.
제10항에 있어서, 상기 수집 단계에서,
상기 기초 정보는 상기 컨텐츠 분리 장치가 상기 컨텐츠에 대한 런-타임(run-time) 동안 수집한 상기 컨텐츠의 코드 영역에 대한 정보를 포함하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠 분리 방법.
The method of claim 10, wherein in the collecting step,
And wherein the basic information includes information on a code region of the content collected by the content separation apparatus during run-time of the content.
제10항에 있어서, 상기 수집 단계에서,
상기 수집된 기초 정보는 브랜치 어드레스(branch address), 점프 어드레스(jump address), 콜 어드레스(call address) 및 RET의 간접 주소(indirect address) 중에 적어도 하나의 간접 주소를 포함하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠 분리 방법.
The method of claim 10, wherein in the collecting step,
The collected basic information may include at least one indirect address among a branch address, a jump address, a call address, and an indirect address of the RET. Based content separation method.
제10항에 있어서, 상기 수집 단계에서,
상기 수집된 기초 정보는 베이식 블록 그룹의 시작 주소, 베이식 블록 그룹의 종료 주소, 베이식 블록 그룹의 호출 횟수, 베이식 블록 그룹의 크기 및 베이식 블록 그룹 내의 실수 연산 유무에 대한 정보를 포함하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠 분리 방법.
The method of claim 10, wherein in the collecting step,
The collected basic information includes information on the start address of the basic block group, the end address of the basic block group, the number of calls of the basic block group, the size of the basic block group, and the presence or absence of a real operation in the basic block group. Separation execution based content separation method.
제13항에 있어서,
상기 수집된 기초 정보는 베이식 블록 그룹 내에서 호스트 단말의 메모리를 참조하는 회수, 베이식 블록 그룹 내에서 호스트 단말의 OS API를 호출하는 회수, 베이식 블록 그룹의 실행 시간, 베이식 블록 그룹 내에서 수행되는 전체 명령어 개수, 베이식 블록 그룹의 실행을 위해 전달되는 파라미터 개수 및 타입 및 베이식 블록 그룹의 실행 후 반환되는 값의 종류 중에 적어도 하나를 더 포함하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠 분리 방법.
The method of claim 13,
The collected basic information includes the number of times of referring to the memory of the host terminal in the basic block group, the number of times of calling the OS API of the host terminal in the basic block group, the execution time of the basic block group, and the total performed in the basic block group. Separating execution-based content separation method characterized in that it further comprises at least one of the number of instructions, the number and type of parameters passed for execution of the basic block group, and the type of the value returned after the execution of the basic block group.
제10항에 있어서, 상기 베이식 블록 그룹 선정 단계에서,
상기 수집한 기초 정보의 간접 주소를 컨트롤 플로우(control flow)에 대입하여 정적 분석을 수행하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠 분리 방법.
The method of claim 10, wherein in the basic block group selection step,
Separation execution-based content separation method, characterized in that for performing static analysis by substituting the indirect address of the collected basic information into a control flow (control flow).
제8항에 있어서, 상기 추출 단계는
상기 컨텐츠 분리 장치가 상기 복수의 베이식 블록 그룹 중에서 상기 컨텐츠 실행 시 최소한 한번 이상 반드시 실행되는 중요 경로(critical path) 상에 있는 베이식 블록 그룹을 분리 실행 대상 코드 블록으로 추출하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠 분리 방법.
The method of claim 8, wherein the extracting step
The content separation apparatus extracts a basic block group on a critical path that is necessarily executed at least once when executing the content among the plurality of basic block groups as a separate execution target code block. How to separate content from.
제16항에 있어서, 상기 추출 단계 이후에 수행되는,
상기 컨텐츠 분리 장치가 상기 추출한 분리 실행 대상 코드 블록의 리스트를 생성하는 단계;
를 더 포함하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠 분리 방법.
The method of claim 16, wherein after the extraction step,
Generating, by the content separation device, a list of the extracted separation execution code blocks;
Separation execution based content separation method characterized in that it further comprises.
제8항에 있어서,
상기 호출 단계는 상기 컨텐츠 분리 장치가 상기 분리할 컨텐츠에 대한 보안 수준을 설정하는 보안 수준 설정 단계;를 더 포함하고,
상기 추출 단계에서,
상기 컨텐츠 분리 장치가 상기 설정된 보안 수준에 따라 상기 복수의 베이식 블록 그룹 중에서 분리 실행 대상 코드 블록을 추출하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠 분리 방법.
The method of claim 8,
The calling step may further include a security level setting step of setting a security level for the content to be separated by the content separation device.
In the extraction step,
Separating execution-based content separation method, characterized in that the content separation device extracts the separation execution target code block from the plurality of basic block groups according to the set security level.
제18항에 있어서, 상기 보안 수준 설정 단계는,
상기 컨텐츠 분리 장치가 보안 수준 설정 항목을 표시하는 단계;
상기 컨텐츠 분리 장치가 상기 보안 수준 설정 항목 중에서 선택된 보안 수준 설정 항목으로 보안 수준을 설정하는 단계;
를 포함하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠 분리 방법.
The method of claim 18, wherein the setting of the security level,
Displaying, by the content separation device, a security level setting item;
Setting, by the content separation device, a security level to a security level setting item selected from the security level setting items;
Separation execution-based content separation method comprising a.
제19항에 있어서, 상기 보안 수준 설정 항목은,
베이식 블록 그룹의 호출 빈도, 베이식 블록 그룹의 호출 위치, 호스트 단말의 메모리 참조 빈도, 호스트 단말의 OS API 참조 빈도, 저장장치의 하드웨어 요소 중에 적어도 하나를 포함하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠 분리 방법.
The method of claim 19, wherein the security level setting item,
Separation execution-based content separation comprising at least one of the call frequency of the basic block group, the call location of the basic block group, the memory reference frequency of the host terminal, the OS API reference frequency of the host terminal, the hardware elements of the storage device. Way.
제8항에 있어서, 상기 선정 단계는,
상기 컨텐츠 분리 장치가 상기 컨텐츠의 코드 영역에서 베이식 블록 그룹을 정의하는 단계;
상기 컨텐츠 분리 장치가 상기 베이식 블록 그룹의 내부로 진입하는 제어 신호가 있으면, 상기 제어 신호의 명령어 주소(instruction address)를 기준으로 상기 베이식 블록 그룹을 분할하여 재정의 하는 재정의 단계;
를 포함하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠 분리 방법.
The method of claim 8, wherein the selecting step,
Defining a basic block group in a code area of the content by the content separation device;
Redefining by dividing the basic block group based on an instruction address of the control signal when the content separation device has a control signal entering the basic block group;
Separation execution-based content separation method comprising a.
제21항에 있어서, 상기 재정의 단계에서,
최종적으로 재정의된 베이식 블록 그룹은 단일 입력(single input) 및 단일 출력(single output)의 속성과, 외부에서 내부로의 진입을 허용하지 않는 속성을 갖는 복수의 베이식 블록을 포함하는 것을 특징으로 하는 분리 실행 기반의 컨텐츠 분리 방법.
The method of claim 21, wherein in the redefining step,
The finally redefined basic block group is divided into a plurality of basic blocks having attributes of a single input and a single output and a property which does not allow entry from outside to inside. Execution based content separation method.
제8항 내지 제22항 중 어느 한 항에 따른 방법이 기록된 컴퓨터로 판독 가능한 기록매체.A computer-readable recording medium having recorded thereon a method according to any one of claims 8 to 22.
KR1020100027937A 2009-07-30 2010-03-29 Apparatus for separating contents in separating execution based, method thereof and computer recordable medium storing the method KR101441999B1 (en)

Applications Claiming Priority (2)

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

Publications (2)

Publication Number Publication Date
KR20110013182A true KR20110013182A (en) 2011-02-09
KR101441999B1 KR101441999B1 (en) 2014-09-24

Family

ID=43772985

Family Applications (5)

Application Number Title Priority Date Filing Date
KR1020100024136A KR101412465B1 (en) 2009-07-30 2010-03-18 Verification system and verification method of code block for separating execution based contents
KR1020100024585A KR101442000B1 (en) 2009-07-30 2010-03-19 Server for registering separating execution based contents, method thereof and computer recordable medium storing program performing the method
KR1020100027937A KR101441999B1 (en) 2009-07-30 2010-03-29 Apparatus for separating contents in separating execution based, method thereof and computer recordable medium storing the method
KR20100027946A KR101478034B1 (en) 2009-07-30 2010-03-29 Apparatus for analyzing code in contents, method thereof and computer recordable medium storing the method
KR1020100030170A KR101455668B1 (en) 2009-07-30 2010-04-02 Definition apparatus of basic block group separating execution based contents, method thereof and computer recordable medium storing the basic block group and the method

Family Applications Before (2)

Application Number Title Priority Date Filing Date
KR1020100024136A KR101412465B1 (en) 2009-07-30 2010-03-18 Verification system and verification method of code block for separating execution based contents
KR1020100024585A KR101442000B1 (en) 2009-07-30 2010-03-19 Server for registering separating execution based contents, method thereof and computer recordable medium storing program performing the method

Family Applications After (2)

Application Number Title Priority Date Filing Date
KR20100027946A KR101478034B1 (en) 2009-07-30 2010-03-29 Apparatus for analyzing code in contents, method thereof and computer recordable medium storing the method
KR1020100030170A KR101455668B1 (en) 2009-07-30 2010-04-02 Definition apparatus of basic block group separating execution based contents, method thereof and computer recordable medium storing the basic block group and the method

Country Status (1)

Country Link
KR (5) KR101412465B1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013101079A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Profiling asynchronous events resulting from the execution of software at code region granularity
KR20190070160A (en) * 2017-12-12 2019-06-20 슈어소프트테크주식회사 Static test proceeding method based on voice information and apparatus for the same

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130063332A (en) * 2011-12-06 2013-06-14 주식회사 케이티 Method for reprsenting stored content information on user device
KR102441167B1 (en) * 2018-12-05 2022-09-08 한국전자통신연구원 Apparatus and method for executing function

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020044301A (en) * 2000-12-05 2002-06-15 구자홍 Document Conversion System For Mobile Internet Contents And Vioce Internet Contents Service Method Using The System
JP2004164554A (en) 2002-09-24 2004-06-10 Hitachi Ltd Device and method for executing and monitoring program
KR100491541B1 (en) 2003-08-01 2005-05-25 니트젠테크놀러지스 주식회사 A contents synchronization system in network environment and a method therefor
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
JP4922951B2 (en) * 2005-02-11 2012-04-25 シンプレックス メジャー センドリアン ベルハッド Software protection methods
KR100709751B1 (en) * 2005-02-22 2007-04-19 일공오이닷컴 주식회사 Method and system for digital rights management
KR100734628B1 (en) * 2005-09-29 2007-07-03 한국전자통신연구원 Distributed Software Streaming Service Method and System
US7975257B2 (en) * 2006-06-13 2011-07-05 Microsoft Corporation Iterative static and dynamic software analysis

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013101079A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Profiling asynchronous events resulting from the execution of software at code region granularity
US10013326B2 (en) 2011-12-29 2018-07-03 Intel Corporation Propagating a prefetching profile bit from a prefetch queue to a data cache to indicate that a line was prefetched in response to an instruction within a code region
KR20190070160A (en) * 2017-12-12 2019-06-20 슈어소프트테크주식회사 Static test proceeding method based on voice information and apparatus for the same
US10978065B2 (en) 2017-12-12 2021-04-13 Suresoft Technologies Inc. Static analysis performing method based on voice information and device for the same

Also Published As

Publication number Publication date
KR101455668B1 (en) 2014-11-03
KR20110013183A (en) 2011-02-09
KR20110013175A (en) 2011-02-09
KR20110013186A (en) 2011-02-09
KR101478034B1 (en) 2015-01-02
KR101441999B1 (en) 2014-09-24
KR101442000B1 (en) 2014-09-24
KR20110013176A (en) 2011-02-09
KR101412465B1 (en) 2014-06-30

Similar Documents

Publication Publication Date Title
CN109885311B (en) Application program generation method and device
CN109918055B (en) Application program generation method and device
Octeau et al. Retargeting Android applications to Java bytecode
CN1838088B (en) Method of instrumenting code having restrictive calling conventions
CN105740144B (en) A kind of automated testing method and system of Android mobile terminal
JP6936016B2 (en) Extension method and system for package files
US6931521B2 (en) Data processing apparatus generates initialization schedule by sorting module order according to number of its dependencies for initializing data affecting execution of operational instructions
CN103631573A (en) Method and system for obtaining execution time of transferable functions
CN108536451A (en) Application program buries a method for implanting and device
KR20110013182A (en) Apparatus for separating contents in separating execution based, method thereof and computer recordable medium storing the method
US8838996B2 (en) Non-transitory computer readable medium, program protection apparatus, and program protection method
US7966562B1 (en) System and method for providing domain-sensitive help
CN109284222B (en) Software unit, project testing method, device and equipment in data processing system
JPH08212106A (en) Device and method for supporting system test
CN113805861B (en) Code generation method based on machine learning, code editing system and storage medium
KR101436741B1 (en) The method and system for applying security solution program
CN111385661A (en) Method and terminal for controlling full-screen playing through voice
CN106295327A (en) The reinforcement means of executable file and device
CN101840337B (en) Method for customizing reducing system applied to packet capture application
Na et al. Comparative Analysis of Mobile App Reverse Engineering Methods on Dalvik and ART.
CN102446113B (en) Method and device for simulating bottom-layer message interface
CN112541188B (en) Method and device for preventing application program code from being statically analyzed
Revelle et al. Blaze: A Framework for Interprocedural Binary Analysis
JP6639238B2 (en) Programs and computers
CN112307380A (en) Content display control method and device

Legal Events

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

Payment date: 20170830

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180830

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190819

Year of fee payment: 6