KR101478034B1 - Apparatus for analyzing code in contents, method thereof and computer recordable medium storing the method - Google Patents
Apparatus for analyzing code in contents, method thereof and computer recordable medium storing the method Download PDFInfo
- Publication number
- KR101478034B1 KR101478034B1 KR20100027946A KR20100027946A KR101478034B1 KR 101478034 B1 KR101478034 B1 KR 101478034B1 KR 20100027946 A KR20100027946 A KR 20100027946A KR 20100027946 A KR20100027946 A KR 20100027946A KR 101478034 B1 KR101478034 B1 KR 101478034B1
- Authority
- KR
- South Korea
- Prior art keywords
- content
- code
- basic
- basic block
- block group
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 49
- 238000004458 analytical method Methods 0.000 claims abstract description 118
- 230000003068 static effect Effects 0.000 claims abstract description 55
- 238000000605 extraction Methods 0.000 claims abstract description 26
- 238000000926 separation method Methods 0.000 claims description 61
- 239000000284 extract Substances 0.000 claims description 10
- 238000010586 diagram Methods 0.000 description 6
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 230000002265 prevention Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/25—Management 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/258—Client 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/25808—Management of client data
- H04N21/25816—Management of client data involving client authentication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/45—Management 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/462—Content 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/4627—Rights management associated to the content
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/81—Monomedia components thereof
- H04N21/8166—Monomedia components thereof involving executable data, e.g. software
- H04N21/8193—Monomedia components thereof involving executable data, e.g. software dedicated tools, e.g. video decoder software or IPMP tool
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/83—Generation or processing of protective or descriptive data associated with content; Content structuring
- H04N21/835—Generation of protective data, e.g. certificates
- H04N21/8355—Generation of protective data, e.g. certificates involving usage data, e.g. number of copies or viewings allowed
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Multimedia (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Information Transfer Between Computers (AREA)
- Storage Device Security (AREA)
Abstract
본 발명은 컨텐츠의 코드 분석 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록매체에 관한 것으로, 컨텐츠의 코드 영역에 대한 분석 범위를 확장하고, 이를 통하여 컨텐츠의 복제 방지에 필요한 코드 블록의 추출율을 향상시키기 위한 것이다. 본 발명에 따르면, 컨텐츠 호출부는 분석할 컨텐츠를 호출한다. 기초 정보 수집부는 호출한 컨텐츠에 대한 동적 프로파일링(dynamic profiling)을 통하여 기초 정보를 수집한다. 그리고 정적 분석부는 수집한 기초 정보를 기반으로 컨텐츠에 대한 정적 분석(static analysis)을 수행한다. 이때 정적 분석부는 수집한 기초 정보의 간접 주소를 컨트롤 플로우(control flow)에 대입하여 컨텐츠의 코드 영역의 분석 범위를 확장한다. 이와 같은 분석 범위의 확장을 통하여 컨텐츠의 코드 영역으로부터 보다 많은 유효한 분리 실행 대상 코드 블록을 추출할 수 있는 기반을 제공할 수 있다.The present invention relates to an apparatus for analyzing a content code, a method thereof, and a computer-readable recording medium on which the method is recorded. The method includes the steps of: So as to improve the extraction rate. According to the present invention, the content calling unit calls the content to be analyzed. The basic information collection unit collects basic information through dynamic profiling of the called contents. The static analysis unit performs a static analysis on the content based on the collected basic information. At this time, the static analysis unit assigns the indirect address of the collected basic information to the control flow to expand the analysis range of the code area of the contents. By expanding the scope of analysis as described above, it is possible to provide a basis for extracting more effective separating execution target code blocks from the code area of the contents.
Description
본 발명은 컨텐츠의 복제 방지 기술에 관한 것으로, 더욱 상세하게는 컨텐츠의 코드 영역의 분석 범위(analysis coverage)를 확장하여 컨텐츠의 복제 방지에 필요한 코드 블록의 추출율을 향상시킬 수 있는 컨텐츠의 코드 분석 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록매체에 관한 것이다.The present invention relates to a content copy prevention technique, and more particularly, to a content code analysis device for expanding analysis coverage of a code area of a content and improving the extraction rate of a code block necessary for preventing copying of content, , A method thereof, and a computer-readable recording medium on which the method is recorded.
일반적으로 호스트 단말은 운영체제 위에 복수의 컨텐츠가 설치된다. 컨텐츠는 디지털 형태로 저장되고 유통되는 디지털 저작물로서, 소프트웨어, 응용프로그램, 멀티미디어 데이터 등을 포함한다. 예컨대 사용자는 호스트 단말에 설치된 각종 컨텐츠를 이용하여 문서편집, 영상편집, 게임 등을 수행할 수 있다.Generally, a plurality of contents are installed on an operating system of a host terminal. Content is a digital work that is stored and distributed in digital form and includes software, application programs, multimedia data, and the like. For example, the user can perform document editing, image editing, game, and the like using various contents installed in the host terminal.
이와 같은 컨텐츠는, 무료로 사용할 수 있는 컨텐츠도 있지만, 온오프라인에서 유료로 판매되고 있다. 사용자는 필요한 컨텐츠를 구매하고, 구매한 컨텐츠를 호스트 단말에 설치함으로써 사용하게 된다. 컨텐츠는 인증번호를 통한 인증을 통과하게 되면, 호스트 단말에 설치된다. 통상적으로 인증번호는 구매한 컨텐츠와 함께 제공된다.Some of these contents are available for free, but they are sold on-line and off-line for a fee. The user purchases necessary contents and installs the purchased contents in the host terminal. The content is installed in the host terminal when it passes the authentication through the authentication number. The authentication number is usually provided with the purchased content.
이와 같은 인증번호를 이용한 인증 방식의 컨텐츠는 해킹에 쉽게 노출되는 문제점을 안고 있다. 즉 해당 컨텐츠의 인증번호가 해킹되거나, 인증을 우회할 수 있는 코드가 해당 컨텐츠에 추가될 경우, 해당 컨텐츠를 구매하지 않은 사람들도 복제된 컨텐츠를 호스트 단말에 설치하여 무단으로 사용할 수 있다.The contents of the authentication method using the authentication number have a problem that they are easily exposed to hacking. That is, when a code capable of hacking the authentication number of the content or bypassing the authentication is added to the content, persons who have not purchased the content can install the copied content in the host terminal and use the content without permission.
이와 같은 컨텐츠의 무단 사용으로 인한 컨텐츠 제공자(content provider; CP)의 피해가 증가하고 있는 실정이다. 컨텐츠의 무단 사용은 컨텐츠 제공자의 컨텐츠의 개발 의욕을 떨어뜨리는 요인으로 작용하고 있다.The content provider (CP) is increasingly damaged by unauthorized use of such contents. The unauthorized use of the content is a factor that deteriorates the development intention of the contents provider.
또한 컨텐츠 제공자는 개발한 컨텐츠의 무단 복제를 억제하기 위한 보안 방법에도 주의를 기울어야 하기 때문에, 컨텐츠 개발에 많은 비용이 소요되어 컨텐츠 제공자에게 부담으로 작용하고 있는 실정이다.In addition, since the content provider must pay attention to the security method for suppressing the unauthorized copying of the developed content, it takes a lot of cost to develop the content, which is a burden on the content provider.
따라서, 본 발명의 목적은 개발한 컨텐츠의 복제를 억제하기 위한 보안 방법에 소요되는 컨텐츠 제공자의 부담을 최소화할 수 있는 컨텐츠의 코드 분석 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록매체를 제공하는 데 있다.Accordingly, it is an object of the present invention to provide a content code analyzing apparatus capable of minimizing the burden on a content provider for a security method for suppressing copying of developed content, a method thereof, and a computer readable recording medium .
본 발명의 다른 목적은 컨텐츠의 복제를 억제하기 위해서, 컨텐츠의 코드 영역의 분석 범위를 확장하여 컨텐츠의 복제 방지에 필요한 코드 블록의 추출율을 향상시킬 수 있는 컨텐츠의 코드 분석 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록매체를 제공하는 데 있다.It is another object of the present invention to provide a content code analyzing apparatus, a content analyzing method, and a content analyzing method capable of enhancing the extraction rate of a code block necessary for preventing copying of content by expanding a range of analysis of a content code region And to provide a computer-readable recording medium having the program recorded thereon.
상기 목적을 달성하기 위하여, 본 발명은 컨텐츠 호출부, 기초 정보 수집부 및 정적 분석부를 포함하는 컨텐츠의 코드 분석 장치를 제공한다. 상기 컨텐츠 호출부는 분석할 컨텐츠를 호출한다. 상기 기초 정보 수집부는 상기 호출한 컨텐츠에 대한 동적 프로파일링(dynamic profiling)을 통하여 기초 정보를 수집한다. 그리고 상기 정적 분석부는 상기 수집한 기초 정보를 기반으로 상기 컨텐츠에 대한 정적 분석(static analysis)을 수행한다.In order to achieve the above object, the present invention provides a content code analyzing apparatus including a content calling unit, a basic information collecting unit, and a static analyzing unit. The content calling unit calls the content to be analyzed. The basic information collection unit collects basic information through dynamic profiling of the called content. The static analysis unit performs a static analysis on the content based on the collected basic information.
본 발명에 따른 컨텐츠의 코드 분석 장치에 있어서, 상기 기초 정보는 상기 컨텐츠에 대한 런-타임(run-time) 동안 수집한 상기 컨텐츠의 코드 영역에 대한 정보를 포함할 수 있다.In the apparatus for analyzing content codes according to the present invention, the basic information may include information on a code region of the content collected during a run-time of the content.
본 발명에 따른 컨텐츠의 코드 분석 장치에 있어서, 상기 기초 정보는 브랜치 어드레스(branch address), 점프 어드레스(jump address), 콜 어드레스(call address) 및 RET의 간접 주소(indirect address) 중에 적어도 하나의 간접 주소를 포함할 수 있다.The basic information may include at least one of a branch address, a jump address, a call address, and an indirect address of a RET, Address.
본 발명에 따른 컨텐츠의 코드 분석 장치에 있어서, 상기 정적 분석부는 상기 수집한 기초 정보의 간접 주소를 컨트롤 플로우(control flow)에 대입하여 정적 분석을 수행할 수 있다.In the code analyzing apparatus for contents according to the present invention, the static analyzing unit may perform a static analysis by substituting an indirect address of the collected basic information into a control flow.
본 발명에 따른 컨텐츠의 코드 분석 장치에 있어서, 상기 정적 분석부는 상기 컨텐츠의 코드 영역에 대한 정적 분석을 통하여 복수의 베이식 블록 그룹을 선정할 수 있다.In the code analyzing apparatus for contents according to the present invention, the static analyzing unit can select a plurality of basic block groups through static analysis of the code area of the contents.
본 발명에 따른 컨텐츠의 코드 분석 장치에 있어서, 상기 베이식 블록 그룹은 복수의 베이식 블록을 포함하며, 시작점(entry point)을 통한 제어 신호의 진입 및 상기 복수의 베이식 블록 간의 제어 신호의 이동은 허용하고, 상기 시작점을 제외한 상기 복수의 베이식 블록 내부로의 제어 신호의 진입이 없는 서로 관련된 상기 복수의 베이식 블록의 모임이다.The basic block group includes a plurality of basic blocks, and allows entry of a control signal through an entry point and movement of a control signal between the plurality of basic blocks , And a group of the plurality of basic blocks related to each other without entry of a control signal into the plurality of basic blocks except for the starting point.
본 발명에 따른 컨텐츠의 코드 분석 장치에 있어서, 상기 베이식 블록은 단일 입력(single input) 및 단일 출력(single output)의 속성과, 외부에서 내부로의 제어 신호의 진입을 허용하지 않는 속성을 갖는 코드 블록이다.In the code analyzing apparatus for contents according to the present invention, the basic block includes a code having an attribute of a single input and a single output and an attribute of not allowing entry of a control signal from the outside to the inside, Block.
본 발명에 따른 컨텐츠의 코드 분석 장치에 있어서, 상기 기초 정보는 상기 베이식 블록 그룹의 시작 주소, 상기 베이식 블록 그룹의 종료 주소, 상기 베이식 블록 그룹의 호출 횟수, 상기 베이식 블록 그룹의 크기 및 베이식 블록 그룹 내의 실수 연산 유무에 대한 정보를 포함할 수 있다.The basic information may include at least one of a start address of the basic block group, an end address of the basic block group, a number of calls of the basic block group, a size of the basic block group, And may include information on whether or not a real number calculation is performed.
본 발명에 따른 컨텐츠의 코드 분석 장치에 있어서, 상기 기초 정보는 상기 베이식 블록 그룹 내에서 호스트 단말의 메모리를 참조하는 회수, 상기 베이식 블록 그룹 내에서 호스트 단말의 OS API를 호출하는 회수, 상기 베이식 블록 그룹의 실행 시간, 상기 베이식 블록 그룹 내에서 수행되는 전체 명령어 개수, 상기 베이식 블록 그룹의 실행을 위해 전달되는 파라미터 개수 및 타입, 상기 베이식 블록 그룹의 실행 후 반환되는 값의 종류 중에 적어도 하나를 더 포함할 수 있다.In the code analyzing apparatus for contents according to the present invention, the basic information may include at least one of the number of times that the basic terminal block refers to the memory of the host terminal in the basic block group, the number of times that the OS terminal API calls in the basic block group, At least one of the execution time of the group, the total number of instructions executed in the basic block group, the number and type of parameters transmitted for execution of the basic block group, and the types of values to be returned after execution of the basic block group can do.
본 발명에 따른 컨텐츠의 코드 분석 장치에 있어서, 상기 복수의 베이식 블록 그룹 중에서 상기 컨텐츠 실행 시 최소한 한번 이상 반드시 실행되는 중요 경로(critical path) 상에 있는 베이식 블록 그룹을 분리 실행 대상 코드 블록으로 추출하는 추출 및 생성부를 더 포함할 수 있다.In the code analyzing apparatus for contents according to the present invention, a basic block group on a critical path that is necessarily executed at least once at the time of executing the content among the plurality of basic block groups is extracted as a separation execution object code block And an extraction and generation unit.
본 발명에 따른 컨텐츠의 코드 분석 장치에 있어서, 상기 컨텐츠, 상기 컨텐츠의 상기 분리 실행 대상 코드 블록, 상기 컨텐츠에서 상기 분리 실행 대상 코드 블록이 분리된 서비스용 컨텐츠를 저장하는 저장부를 더 포함할 수 있다.The apparatus for code analysis of contents according to the present invention may further include a storage unit for storing the content, the code block to be separated for the content, and the service content in which the code to be separated from the content is separated from the content .
본 발명은 또한, 코드 분석 장치가 분석할 컨텐츠를 호출하는 호출 단계, 상기 코드 분석 장치가 상기 호출한 컨텐츠에 대한 동적 프로파일링(dynamic profiling)을 통하여 기초 정보를 수집하는 수집 단계, 상기 코드 분석 장치가 상기 수집한 기초 정보를 기반으로 상기 컨텐츠의 코드 영역에 대한 정적 분석(static analysis)을 수행하는 분석 단계를 포함하는 컨텐츠의 코드 분석 방법을 제공한다.The present invention also relates to a method of analyzing a content, comprising: a calling step of calling a content to be analyzed by a code analysis device; a collecting step of collecting basic information through dynamic profiling of the called content; And performing an analysis of a content of the content based on the collected basic information.
본 발명에 따른 컨텐츠의 코드 분석 방법에 있어서, 상기 수집 단계에서, 상기 기초 정보는 상기 코드 분석 장치가 상기 컨텐츠에 대한 런-타임(run-time) 동안 수집한 상기 컨텐츠의 코드 영역에 대한 정보를 포함할 수 있다.In the method for analyzing a content code according to the present invention, in the collecting step, the basic information is information about a code region of the content collected during a run-time of the content by the code analyzing apparatus .
본 발명에 따른 컨텐츠의 코드 분석 방법에 있어서, 상기 수집 단계에서, 상기 수집된 기초 정보는 브랜치 어드레스(branch address), 점프 어드레스(jump address), 콜 어드레스(call address) 및 RET의 간접 주소(indirect address) 중에 적어도 하나의 간접 주소를 포함할 수 있다.In the collecting step, the collected basic information includes a branch address, a jump address, a call address, and an indirect address of a RET, address) of the address space.
본 발명에 따른 컨텐츠의 코드 분석 방법에 있어서, 상기 수집된 기초 정보는 상기 베이식 블록 그룹의 시작 주소, 상기 베이식 블록 그룹의 종료 주소, 상기 베이식 블록 그룹의 호출 횟수, 상기 베이식 블록 그룹의 크기 및 베이식 블록 그룹 내의 실수 연산 유무에 대한 정보를 포함할 수 있다.The collected basic information may include at least one of a start address of the basic block group, an end address of the basic block group, a number of calls of the basic block group, a size of the basic block group, And information on the presence or absence of a real number calculation in the block group.
본 발명에 따른 컨텐츠의 코드 분석 방법에 있어서, 상기 수집된 기초 정보는 상기 베이식 블록 그룹 내에서 호스트 단말의 메모리를 참조하는 회수, 상기 베이식 블록 그룹 내에서 호스트 단말의 OS API를 호출하는 회수, 상기 베이식 블록 그룹의 실행 시간, 상기 베이식 블록 그룹 내에서 수행되는 전체 명령어 개수, 상기 베이식 블록 그룹의 실행을 위해 전달되는 파라미터 개수 및 타입, 상기 베이식 블록 그룹의 실행 후 반환되는 값의 종류 중에 적어도 하나를 더 포함할 수 있다.In the code analysis method of contents according to the present invention, the collected basic information may include at least one of the number of times that the basic terminal block refers to the memory of the host terminal in the basic block group, the number of times that the OS API of the host terminal is called in the basic block group, At least one of the execution time of the basic block group, the total number of instructions executed in the basic block group, the number and types of parameters transmitted for execution of the basic block group, and the types of values returned after execution of the basic block group .
본 발명에 따른 컨텐츠의 코드 분석 방법에 있어서, 상기 분석 단계에서, 상기 수집한 기초 정보의 간접 주소를 컨트롤 플로우(control flow)에 대입하여 정적 분석을 수행할 수 있다.In the code analysis method for contents according to the present invention, in the analysis step, static analysis can be performed by substituting the indirect address of the collected basic information into a control flow.
본 발명에 따른 컨텐츠의 코드 분석 방법에 있어서, 상기 분석 단계는, 상기 코드 분석 장치가 상기 컨텐츠의 코드 영역에 대한 정적 분석을 통하여 복수의 베이식 블록 그룹을 선정하는 선정 단계를 더 포함할 수 있다.In the method of analyzing a content code according to the present invention, the analysis step may further include a selection step of selecting a plurality of basic block groups through the static analysis of the code area of the content.
본 발명에 따른 컨텐츠의 코드 분석 방법에 있어서, 상기 분석 단계 이후에 수행되는, 상기 코드 분석 장치가 상기 복수의 베이식 블록 그룹 중에서 상기 컨텐츠 실행 시 최소한 한번 이상 반드시 실행되는 중요 경로(critical path) 상에 있는 베이식 블록 그룹을 분리 실행 대상 코드 블록으로 추출하는 추출 단계를 더 포함할 수 있다.In the code analysis method of contents according to the present invention, it is preferable that the code analyzing device, which is performed after the analyzing step, includes a plurality of basic block groups on a critical path which is always executed at least once in executing the contents And extracting the basic block group as a separate execution object code block.
본 발명에 따른 컨텐츠의 코드 분석 방법에 있어서, 상기 추출 단계 이후에 수행되는, 상기 코드 분석 장치가 상기 추출한 분리 실행 대상 코드 블록의 리스트를 생성하는 단계, 또는 상기 코드 분석 장치가 상기 분리 실행 대상 코드 블록이 추출된 코드 영역에 스터브 코드를 삽입하여 서비스용 컨텐츠를 생성하는 단계를 더 포함할 수 있다.The code analysis method of contents according to the present invention may further comprise: a step of generating a list of code blocks to be separated, which is executed by the code analysis device after the extracting step, And inserting the stub code into the code area from which the block is extracted to generate the service content.
본 발명에 따른 컨텐츠의 코드 분석 방법에 있어서, 상기 호출 단계는 상기 코드 분석 장치가 상기 분석할 컨텐츠에 대한 보안 수준을 설정하는 보안 수준 설정 단계를 더 포함할 수 있다. 이때 상기 분석 단계 이후에 수행되는, 상기 코드 분석 장치가 상기 설정된 보안 수준에 따라 상기 복수의 베이식 블록 그룹 중에서 분리 실행 대상 코드 블록을 추출하는 추출 단계를 더 포함할 수 있다.In the method of analyzing a content code according to the present invention, the calling step may further include a security level setting step in which the code analyzing device sets a security level for the content to be analyzed. The code analyzing apparatus may further include an extracting step of extracting a code block to be separated from the plurality of basic block groups according to the set security level, which is performed after the analyzing step.
본 발명에 따른 컨텐츠의 코드 분석 방법에 있어서, 상기 보안 수준 설정 단계는, 상기 코드 분석 장치가 보안 수준 설정 항목을 표시하는 단계, 상기 코드 분석 장치가 상기 보안 수준 설정 항목 중에서 선택된 보안 수준 설정 항목으로 보안 수준을 설정하는 단계를 포함할 수 있다.In the code analysis method for contents according to the present invention, the security level setting step may include: displaying the security level setting item by the code analyzing device; and the security level setting item selected from the security level setting items And setting a security level.
본 발명에 따른 컨텐츠의 코드 분석 방법에 있어서, 상기 보안 수준 설정 항목은, 베이식 블록 그룹의 호출 빈도, 베이식 블록 그룹의 호출 위치, 호스트 단말의 메모리 참조 빈도, 호스트 단말의 OS API 참조 빈도, 저장장치의 하드웨어 요소 중에 적어도 하나를 포함할 수 있다.In the method of analyzing content codes according to the present invention, the security level setting item may include at least one of a basic block group calling frequency, a basic block group calling position, a memory reference frequency of a host terminal, an OS API reference frequency of a host terminal, Of hardware elements of the < / RTI >
본 발명에 따른 컨텐츠의 코드 분석 방법에 있어서, 상기 선정 단계는, 상기 코드 분석 장치가 상기 컨텐츠의 코드 영역에서 베이식 블록 그룹을 정의하는 단계, 상기 코드 분석 장치가 상기 베이식 블록 그룹의 내부로 진입하는 제어 신호가 있으면, 상기 제어 신호의 명령어 주소(instruction address)를 기준으로 상기 베이식 블록 그룹을 분할하여 재정의 하는 재정의 단계를 포함할 수 있다.In the method of analyzing a content code according to the present invention, the selecting step includes the steps of: the code analyzing device defining a basic block group in a code area of the content; And if there is a control signal, dividing and redefining the basic block group based on an instruction address of the control signal.
본 발명에 따른 컨텐츠의 코드 분석 방법에 있어서, 상기 재정의 단계에서, 최종적으로 재정의된 베이식 블록 그룹은 단일 입력(single input) 및 단일 출력(single output)의 속성과, 외부에서 내부로의 진입을 허용하지 않는 속성을 갖는 복수의 베이식 블록을 포함할 수 있다.In the code analysis method of contents according to the present invention, in the redefining step, the finally redefined basic block group is divided into a property of a single input and a single output, And may include a plurality of basic blocks having attributes that are not allowed.
그리고 본 발명은 또한, 상기한 컨텐츠의 코드 분석 방법이 기록된 컴퓨터로 판독 가능한 기록매체를 제공한다.The present invention also provides a computer-readable recording medium having recorded thereon a code analysis method for the content.
본 발명에 따르면, 컨텐츠에 대한 동적 프로파일링(dynamic profiling)을 통하여 수집한 코드 영역의 기초 정보를 이용하여 해당 컨텐츠에 대한 정적 분석(static analysis)을 수행하기 때문에, 컨텐츠의 코드 영역의 분석 범위를 확장할 수 있고, 이를 통하여 컨텐츠의 복제 방지에 필요한 코드 블록의 추출율을 향상시킬 수 있다.According to the present invention, since static analysis is performed on the content using the basic information of the code area collected through dynamic profiling of the content, It is possible to improve the extraction rate of code blocks necessary for preventing copying of contents.
그리고 본 발명에 따른 컨텐츠의 코드 분석 기술을 활용함으로써, 컨텐츠 제공자는 개발한 컨텐츠의 복제를 억제하기 위한 보안 방법에 소요되는 비용 부담을 최소화할 수 있는 효과도 있다.By utilizing the code analysis technique of the content according to the present invention, the content provider can minimize the cost burden on the security method for suppressing the reproduction of the developed content.
도 1은 본 발명의 실시예에 따른 컨텐츠의 코드 분석 장치의 구성을 보여주는 블록도이다.
도 2는 도 1의 제어부의 구성을 보여주는 블록도이다.
도 3은 컨텐츠의 데이터 구조를 보여주는 블록도이다.
도 4는 컨텐츠에 분리된 분리 실행 대상 코드 블록과, 서비스용 컨텐츠의 구성을 보여주는 블록도이다.
도 5 내지 도 7은 분리 실행 대상 코드 블록의 속성을 설명하기 위한 예시도이다.
도 8은 본 발명의 실시예에 따른 컨텐츠의 코드 분석 방법에 따른 흐름도이다.
도 9 및 도 10은 도 8의 분리 실행 대상 코드 블록으로 추출된 베이식 블록 그룹의 선정 단계를 설명하기 위한 예시도이다.1 is a block diagram showing a configuration of a content analyzing apparatus according to an embodiment of the present invention.
2 is a block diagram showing the configuration of the control unit of FIG.
3 is a block diagram showing a data structure of contents.
4 is a block diagram showing the configuration of the content for service execution and the code block to be separated from the content.
Figs. 5 to 7 are illustrations for explaining the attributes of the code block to be separated. Fig.
8 is a flowchart illustrating a code analysis method of contents according to an embodiment of the present invention.
FIGS. 9 and 10 are exemplary diagrams for explaining a selection step of a basic block group extracted by the separation execution target code block in FIG. 8. FIG.
이하, 첨부 도면을 참조하여 본 발명의 실시예를 보다 상세하게 설명하고자 한다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings.
본 발명의 실시예에 따른 컨텐츠의 코드 분석 장치(10; 이하, '코드 분석 장치'라 한다)는, 도 1 내지 도 7에 도시된 바와 같이, 입력부(11), 저장부(13), 표시부(15) 및 제어부(17)를 포함하여 구성되며, 컨텐츠(30)에 대한 동적 프로파일링 및 정적 분석을 유기적으로 수행한다.1 to 7, an
본 실시예에 따른 코드 분석 장치(10)는 분리 실행 기반의 디지털 저작권 관리(digital rights management; DRM) 시스템에서 컨텐츠(30)를 서비스하기 위해서 해당 컨텐츠(30)를 분석하는 장치이다. 여기서 '분리 실행'은 컨텐츠(30)를 실행하는 데 있어서 호스트 단말과 저장장치가 서로 연동되어 실행하는 것을 의미한다. 특히 분리 실행을 구현하기 위해서, 원본 컨텐츠(30)의 코드 영역(31)에서 분리된 일부 코드 블록(이하 '분리 실행 대상 코드 블록(34)'이라 함)은 저장장치에 설치되고, 분리 실행 대상 코드 블록(34)이 제거된 컨텐츠(이하 '서비스용 컨텐츠(32)'라 함)는 호스트 단말에 설치된다. 따라서 분리 실행 기반의 컨텐츠(30)를 실행하고자 할 경우에, 호스트 단말은 서비스용 컨텐츠(32) 실행 중 분리 실행 대상 코드 블록(34)이 제거된 부분에 대한 출력값을 저장장치에 요청하여 반환받는 형태로 해당 컨텐츠(30)를 실행한다. 이때 분리 실행 대상 코드 블록(34)은 프로세서를 구비하는 저장장치에서 실행할 수 있는 저장장치용 코드 블록으로 변환되어 저장장치에 제공된다. 본 실시예에 따른 코드 분석 장치(10)는 컨텐츠(30)의 분석을 통하여 해당 컨텐츠(30)를 분리 실행 대상 코드 블록(34)과 서비스용 컨텐츠(32)로 분리할 수 있다.The
이때 본 실시예에 따른 코드 분석 장치(10)는 컨텐츠(30)에 대한 동적 프로파일링 및 정적 분석이 가능한 단말 장치로서, 호스트 단말 또는 네트워크 상에 구축된 서버일 수 있다. 호스트 단말은 PC, 노트북, 워크스테이션, 스마트폰 등을 포함한다.At this time, the
입력부(11)는 코드 분석 장치(10)의 조작을 위한 복수의 키를 제공하며, 분석자의 키선택에 따른 선택 신호를 발생하여 제어부(17)로 전달한다. 분석자는 입력부(11)를 통해 분석할 컨텐츠(30)를 호출하고, 호출된 컨텐츠(30)에 대한 코드 분석을 위한 선택 신호를 입력할 수 있다. 이때 입력부(11)로는 키패드, 터치패드와 같은 포인팅 장치, 터치스크린(touch screen) 등의 입력장치가 사용될 수 있다.The
저장부(13)는 코드 분석 장치(10)의 동작 제어시 필요한 프로그램과, 그 프로그램 수행 중에 발생되는 정보를 저장한다. 특히 저장부(13)는 컨텐츠(30)에 대한 동적 프로파일링 및 정적 분석을 수행하기 위한 실행프로그램을 저장한다. 저장부(13)는 분석할 컨텐츠(30)와, 컨텐츠(30)에 대한 코드 분석을 통하여 추출한 분리 실행 대상 코드 블록(34)과, 컨텐츠(30)에서 분리 실행 대상 코드 블록(34)이 분리된 코드 영역에 스터브 코드(36; stub code)가 삽입된 서비스용 컨텐츠(32)를 저장할 수 있다.The
이때 컨텐츠(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)의 모임이다.At this time, the
이때 베이식 블록(35)은 단일 입력(single input) 및 단일 출력(single output)의 속성을 갖는 명령어의 열(sequence of instruction)로서, 외부에서 내부로의 진입을 허용하지 않는 속성을 갖는 코드 블록으로 정의할 수 있다. 즉 베이식 블록(35)은 항상 시작부터 끝까지 한번에 실행되는 연속적인 문장(코드의 모임)을 의미하며, 중간에 흐름 제어로 인해 실행이 중지되지 않는 문장 그룹이다.At this time, the
서비스용 컨텐츠(32)는 분리 실행 대상 코드 블록(34)으로 추출된 베이식 블록 그룹(37)의 코드 영역에 스터브 코드(36)가 삽입된 코드 영역(31a)과, 데이터 영역(33)을 포함한다. 이때 스터브 코드(36)는 호스트 단말과 저장장치 간에 컨텐츠(30)에 대한 분리 실행을 수행할 때, 서비스용 컨텐츠(32)에서 추출된 코드 영역과, 추출된 코드 영역에 해당하는 분리 실행 대상 코드 블록(34)을 연결한다. 즉 스터브 코드(36)는 컨텐츠(30)에 대한 분리 실행을 수행할 때, 추출된 코드 영역에서 저장장치로 제어 신호를 전달한다. 제어 신호를 수신한 저장장치(53)는 제어 신호에 해당하는 분리 실행 대상 코드 블록(34)에 대한 연산을 수행하여 산출한 출력값을 호스트 단말(51)로 반환한다.The
분리 실행 대상 코드 블록(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
분리 실행 대상 코드 블록(34)은 저장장치용 코드 블록으로 변환되어 저장장치에 저장된 형태로 제공되거나 다운로드 형태로 저장장치에 제공될 수 있다. 분리 실행 대상 코드 블록(34)은 전술된 바와 같이 복수의 베이식 블록(35)을 포함하는 베이식 블록 그룹(37)이다. 분리 실행 대상 코드 블록(34)은 분리 실행 대상 코드 블록(34)의 시작점(entry point)을 통한 제어 신호의 진입 및 베이식 블록(35) 간의 제어 신호의 이동은 허용하지만, 분리 실행 대상 코드 블록(34)의 시작점을 제외한 베이식 블록(35)으로의 제어 신호의 진입이 없는 서로 관련된 복수의 베이식 블록(35)을 포함하는 베이식 블록 그룹(37)으로 선택하는 것이 바람직하다.The detachment
이유는 베이식 블록 그룹(37) 중에서 시작점을 제외한 베이식 블록(35)으로의 제어 신호의 진입이 있는 베이식 블록 그룹(37)을 분리 실행 대상 코드 블록(34)으로 추출할 경우, 해당 분리 실행 대상 코드 블록(34)을 추출한 후 삽입되는 스터브 코드(36)에 시작 부분이 아닌 중간으로 제어 신호가 진입할 수 있다. 이 경우 스터브 코드(36)는 해당 제어 신호에 대한 처리를 수행하지 못하여 해당 컨텐츠(30)의 실행이 중지되거나 에러가 발생될 수 있기 때문이다. 즉 스터브 코드(36)은 첫 5Byte를 제외한 나머지 영역에는 NOP(no-operation instruction)와 같은 쓰레기 값이 들어 있기 때문에, 쓰레기 값이 들어 있는 영역으로 제어 신호가 진입할 경우 에러가 발생될 수 있다. 바꾸어 말하면, 시작점을 제외한 베이식 블록(35)으로의 제어 신호의 진입이 있는 베이식 블록 그룹(37)은 분리 실행을 수행할 때, 오류를 발생시킬 수 있는 확률이 높기 때문에, 분리 실행 대상 코드 블록(34)으로는 적합하지 않다.When extracting the
표시부(15)는 코드 분석 장치(10)에서 실행되는 각종 기능 메뉴를 비롯하여 저장부(13)에 저장된 정보를 표시할 수 있다. 표시부(15)는 제어부(17)의 제어에 따라 분석할 컨텐츠(30), 분리 실행 대상 코드 블록(34) 및 서비스용 컨텐츠(32)의 리스트를 표시할 수 있다. 표시부(15)는 코드 분석에 필요한 영상 정보를 표시할 수 있다. 이때 표시부(15)로는 LCD(Liquid Crystal Display)나 터치 스크린이 사용될 수 있다. 터치 스크린은 표시 장치와 입력 장치로서의 역할을 동시에 수행한다.The
그리고 제어부(17)는 코드 분석 장치(10)의 전반적인 제어 동작을 수행하는 마이크로프로세서(microprocessor)이다. 제어부(17)는 컨텐츠(30)에 대한 동적 프로파일링 및 정적 분석 수행을 제어한다. 그리고 제어부(17)는 동적 프로파일링 및 정적 분석을 통하여 분리 실행 대상 코드 블록(34)을 추출하거나, 추출한 분리 실행 대상 코드 블록(34)의 리스트를 생성하거나, 서비스용 컨텐츠(32)를 생성할 수 있다.The
특히 제어부(17)는 컨텐츠 호출부(12), 기초 정보 수집부(14) 및 정적 분석부(16)를 포함하며, 추출 및 생성부(18)를 더 포함할 수 있다. 컨텐츠 호출부(12)는 분석할 컨텐츠(30)를 호출한다. 기초 정보 수집부(14)는 호출한 컨텐츠(30)에 대한 동적 프로파일링을 수행하여 기초 정보를 수집한다. 정적 분석부(16)는 수집한 기초 정보를 기반으로 컨텐츠(30)의 코드 영역(31)에 대한 정적 분석을 수행한다. 그리고 추출 및 생성부(18)는 정적 분석부(16)의 분석 정보를 이용하여 컨텐츠(30)로부터 분리 실행 대상 코드 블록(34)을 추출하거나, 추출한 분리 실행 대상 코드 블록(34)의 리스트를 생성하거나, 서비스용 컨텐츠(32)를 생성한다.In particular, the
컨텐츠 호출부(12)는 입력부(11)를 통하여 분석할 컨텐츠(30)에 대한 선택 신호가 입력되면, 저장부(13)에서 해당 컨텐츠(30)를 호출할 수 있다. 컨텐츠 호출부(12)는 분석할 컨텐츠(30)를 호출할 때, 분석할 컨텐츠(30)에 대한 보안 수준을 입력받아 설정할 수 있다. 즉 컨텐츠 호출부(12)는 분석할 컨텐츠(30)의 리스트를 표시부(15)에 표시할 수 있다. 분석자는 입력부(11)를 통하여 리스트에서 분석할 컨텐츠(30)를 선택하고, 선택된 컨텐츠(30)에 대한 보안 수준을 선택하여 설정한다. 이때 컨텐츠 호출부(12)는 표시부(15)에 분석자가 선택할 수 있는 보안 수준 설정 항목을 표시한다. 분석자는 표시된 보안 수준 설정 항목 중에서 특정 보안 수준 설정 항목을 선택하면, 컨텐츠 호출부(12)는 선택된 보안 수준 설정 항목으로 분석할 컨텐츠(30)의 보안 수준을 설정한다.The
예컨대 보안 수준 설정 항목은 추출할 코드 블록 즉, 베이식 블록 그룹(37)의 호출 빈도, 베이식 블록 그룹(37)의 호출 위치, 호스트 단말의 메모리 참조 빈도, 호스트 단말의 OS API 참조 빈도, 저장장치의 하드웨어 요소 중에 적어도 하나를 포함한다.For example, the security level setting item includes a code block to be extracted, that is, a calling frequency of the
베이식 블록 그룹(37)의 호출 빈도 항목은 프로파일링 및 분석에 의해 자동으로 추출할 분리 실행 대상 코드 블록(34)의 호출 빈도별 우선권(preference)을 분석자가 설정하는 항목으로, 분석자는 전체 컨텐츠(30)의 실행 중 몇 번이나 호출되는 가를 선택할 수 있는 항목이다. 이때 호출 빈도가 높을수록 해당 베이식 블록 그룹(37)이 중요하다는 의미가 되어 보안 효과는 높지만, 이는 저장장치에 무리를 주어 전체 컨텐츠(30)의 실행 속도를 저하시킬 수 있다. 따라서 분석자는 분석할 컨텐츠(30)의 보안 수준에 따라 적절한 호출 빈도를 설정하는 것이 바람직하다.The call frequency item of the
베이식 블록 그룹(37)의 호출 위치 항목은 분리 실행 대상 코드 블록(34)의 선택에 있어 프로그램의 실행 초기에 불리는 베이식 블록 그룹(37)을 선택할 지, 특정 기능 실행 시에 불리는 베이식 블록 그룹(37)을 선택할 지 설정하는 항목이다.The calling position item of the
호스트 단말의 메모리 참조 빈도 항목은 선택될 분리 실행 대상 코드 블록(34)이 얼마나 자주 호스트 단말의 메모리를 참조하는 지를 설정하는 항목이다. 메모리 참조 빈도가 높을수록 호스트 단말에 대한 의존성이 강하다는 의미이며, 이는 해당 분리 실행 대상 코드 블록(34)으로 인한 보안 효율이 높다는 의미가 된다. 다만 호스트 단말의 메모리를 번번히 참조할 경우, 해당 컨텐츠(30)의 실행 속도를 저하시킬 수 있기 때문에, 분석자는 분석할 컨텐츠(30)의 보안 수준에 따라 적절한 메모리 참조 빈도를 설정하는 것이 바람직하다.The memory reference frequency item of the host terminal is an item for setting how often the separation execution
호스트 단말의 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 for setting how often the OS
그리고 저장장치의 하드웨어 요소 항목은 해당 컨텐츠(30)와 함께 사용될 저장장치의 하드웨어적 폼 요소(form factor) 예컨대, 디램(DRAM), 랜드 플래쉬(NAND Flash) 또는 노아 플래쉬(NOR Flash)의 용량, 마이크로프로세서의 속도 등을 선택할 수 있는 항목이다. 저장장치의 하드웨어 요소는 실제 분리 실행 대상 코드 블록(34)을 실행하여 출력값을 산출하는 데 있어 중요한 요소 중에 하나라 할 수 있다.The hardware element of the storage device may be a hardware form factor of a storage device to be used with the
한편 본 실시예에서는 분석자가 보안 수준을 직접 설정하는 예를 개시하였지만, 보안 수준은 디폴트로 설정될 수 있다. 본 실시예에서는 분석할 컨텐츠(30)를 선택한 이후에 보안 수준을 설정하는 예를 개시하였지만, 보안 수준을 설정한 후 분석할 컨텐츠(30)를 선택할 수도 있다.In the present embodiment, the analyst has disclosed an example of directly setting the security level, but the security level can be set to the default. In the present embodiment, an example of setting the security level after selecting the
전술된 바와 같이, 컨텐츠(30)는 복수 개의 파일, 예컨대 운영체제에서 제공하는 API, 개발사에서 제공하는 API 또는 DLL과 같은 파일을 포함한다. 따라서 컨텐츠(30) 중 분석할 부분을 설정해야 하고, 컨텐츠(30) 중 이미 공개되어 있는 API에서 추출되는 베이식 블록 블록을 분리 실행 대상 코드 블록(34)으로 선출하는 것은 바람직하지 않기 때문에, 컨텐츠(30)의 분석할 부분을 코드 영역(31)으로 제한할 필요가 있다.As described above, the
기초 정보는 컨텐츠(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 for the
정적 분석부(16)는 코드 영역(31)에 대해서 수집한 기초 정보를 기반으로 컨텐츠(30)의 코드 영역(31)에 대한 정적 분석을 수행한다. 즉 정적 분석부(16)는 컨텐츠(30) 중 공개된 API와 관련된 부분을 분석 대상으로 선정하는 것이 바람직하지 않기 때문에, 해당 부분을 제외하고 코드 영역(31)에 대한 정적 분석을 수행한다. 이때 정적 분석부(16)는 수집한 기초 정보 중에서 컨텐츠(30) 중 공개된 API와 관련된 기초 정보를 제외한 기초 정보를 기반으로 정적 분석을 수행할 수도 있다.The
일반적인 정적 분석은 컨텐츠(30)의 코드 영역(31)의 시작점을 찾고, 찾은 시작점에서부터 컨트롤 플로우(control flow)를 따라서 분석하는 방법이다. 따라서 정적 분석은 런-타임 상에서 취득할 수 있는 정보가 없기 때문에, 바이너리 코드 중에 확실한 값이 표기된 경로로의 이동만 가능하다. 특히 레지스터의 값을 비롯한 Heap 영역의 데이터, 외부 DLL로의 이동 등에 제한이 있다. 또한 컨트롤 플로우를 따라 가는 것 또한 간접 정보의 부재로 상당한 제한이 있다. 이로 인해 일반적인 정적 분석은 다양한 시작점을 임의대로 파악하여 접근할 수 있지만 큰 의미를 갖기 힘들기 때문에, 분석 범위가 좁을 수밖에 없다.A general static analysis is a method of finding the starting point of the
하지만 정적 분석부(16)는 동적 프로파일링을 통하여 수집한 기초 정보를 기반으로 정적 분석을 수행하기 때문에, 컨텐츠(30)의 코드 영역(31)의 분석 범위를 확장할 수 있다. 즉 정적 분석부(16)는 수집한 기초 정보 중 간접 주소를 컨트롤 플로우 상에 대입함으로써, 컨텐츠(30)의 코드 영역(31)의 분석 범위를 확장하여 단독으로 동적 프로파일링을 수행하거나 정적 분석을 수행하는 것에 비하여 더 많은 유효한 베이식 블록 그룹(37)을 추출할 수 있다.However, since the
이와 같이 간접 주소의 대입을 통하여 컨텐츠(30)에 대한 분석 범위를 확장할 수 있기 때문에, 분석하는 컨텐츠(30)의 특성에 따라 차이는 있겠지만 단독으로 동적 프로파일링 또는 정적 분석을 수행하는 것에 비교하여 분석 범위를 수십배 이상 높일 수 있다. 예컨대 Alzip.exe((주)이스트소프트의 솔루션)와 같은 압축 실행프로그램에 대해서 정적 분석만으로는 1% 미만의 분석 범위를 보이지만, 동적 프로파일링을 통해 수집한 기초 정보를 이용하여 정적 분석을 수행할 경우 27% 이상의 분석 범위를 보이는 것을 확인할 수 있다. 즉 컨텐츠(30)의 코드 영역(31)에 존재하는 간접 주소가 상당히 많고, 간접 주소를 이용하여 분석 범위를 확장할 수 있다는 것은 다양한 출력, 예컨대 베이식 블록 그룹(37)을 이끌어 낼 수 있음을 의미한다.Since the scope of analysis of the
한편 베이식 블록 그룹(37)의 크기는 RET와 같이 1Byte에서 수십 내지 수백Byte가 될 수 있기 때문에, 베이식 블록 그룹(37)의 크기가 크면 클수록 내부 진입의 가능성은 확률적으로 커질 수 밖에 없다. 또한 컨텐츠(30)의 모든 명령어를 실행 이전에 검사하고 분석할 수 있다면 좀 더 정확하고 세밀한 베이식 블록 그룹(37)을 정의할 수 있을 것이다. 하지만 이것도 간접 주소의 존재로 인해 베이식 블록 그룹(37)을 완벽하게 정의할 수는 없다.On the other hand, since the size of the
따라서 시작점을 통한 제어 신호의 진입 및 베이식 블록(35) 간의 제어 신호의 이동은 허용하지만, 시작점을 제외한 베이식 블록(35)으로의 제어 신호의 진입이 없는 베이식 블록 그룹(37)을 컨텐츠(30)에서 추출하기 위해서, 정적 분석부(16)는 다음과 같은 정의(규칙)을 이용하여 컨텐츠(30)의 코드 영역(31)에서 베이식 블록 그룹(37)을 선정할 수 있다.Therefore, the
이때 베이식 블록 그룹(37)에 대한 정의는 다음과 같다. 먼저 한 번 정의한 베이식 블록 그룹(37)을 고정적으로 정의하지 않고, 베이식 블록 그룹(37)의 내부로 진입하는 제어 신호의 유무에 따라 베이식 블록 그룹(37)을 분리하여 재정의 한다.At this time, the definition of the
즉 도 2, 도 3 및 도 9를 참조하면, 정적 분석부(16)는 컨텐츠(30)의 코드 영역(31)에서 서로 연관된 복수의 베이식 블록(35)을 포함하는 베이식 블록 그룹(37)을 정의할 수 있다. 이때 정의된 베이식 블록 그룹(37)은 분석 중 현재까지 시작점을 제외한 베이식 블록(35b)으로의 제어 신호의 진입이 없는 베이식 블록(35)의 모임이라 할 수 있다.2, 3, and 9, the
여기서 베이식 블록 그룹(37)의 시작점에 위치하는 베이식 블록(35a)을 통한 제어 신호가 입력되는 경우, 정적 분석부(16)는 해당 베이식 블록 그룹(37)에 대한 재정의는 수행하지 않는다. 또한 베이식 블록 그룹(37)에 포함된 베이식 블록(35) 간에 제어 신호가 이동하는 경우에도, 정적 분석부(16)는 해당 베이식 블록 그룹(37)에 대한 재정의는 수행하지 않는다. 즉 전술된 두 경우 정적 분석부(16)는 베이식 블록 그룹(37)은 현재의 정의 상태를 유지한다.Here, when the control signal through the
하지만 도 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 inputted to the other
이와 같이 베이식 블록 그룹(37)을 재정의 함으로써, 분할된 베이식 블록 그룹(37a,37b)이 내부 진입이 없는 베이식 블록 그룹으로 성립할 확률을 높일 수 있다.By redefining the
이때 재정의 대상이 되는 베이식 블록 그룹(37)은 제어 신호의 명령어 주소를 기준으로 이전의 제1 베이식 블록 그룹(37a)과, 제어 신호의 명령어 주소를 포함하는 이후의 제2 베이식 블록 그룹(37b)으로 재정의 된다. 제1 베이식 블록 그룹(37a)의 브랜치 주소(branch address)는 제2 베이식 블록 그룹(37b)의 시작점으로의 진입을 위한 다음 명령어 주소(next instruction address)가 된다.At this time, the
그리고 이와 같은 재정의 단계를 반복함으로써, 최종적으로 재정의된 베이식 블록 그룹(37)은 단일 입력 및 단일 출력의 속성과, 외부에서 내부로의 진입을 허용하지 않는 속성을 갖는 복수의 베이식 블록(35)을 포함하는 베이식 블록 그룹(37)으로 정의될 수 있다.By repeating this redefinition step, the finally redefined
그리고 추출 및 생성부(18)는 추출된 복수의 베이식 블록 그룹(37) 중에서 분리 실행 대상 코드 블록(34)을 추출하거나, 추출한 분리 실행 대상 코드 블록(34)의 리스트를 생성하거나, 서비스용 컨텐츠(32)를 생성한다. 특히 추출 및 생성부(18)는 추출된 복수의 베이식 블록 그룹(37) 중에서 컨텐츠(30) 실행 시 최소한 한번 이상 반드시 실행되는 중요 경로 상에 있는 베이식 블록 그룹(37)을 분리 실행 대상 코드 블록(34)으로 추출할 수 있다. 또한 추출 및 생성부(18)는 설정된 보안 수준에 따라 분리 실행 대상 코드 블록(34)을 추출할 수 있다. 예컨대 분석자는 베이식 블록 그룹(37)의 호출 빈도, 베이식 블록 그룹(37)의 호출 위치, 호스트 단말의 메모리 참조 빈도, 호스트 단말의 OS API 참조 빈도, 저장장치의 하드웨어 요소 중에 적어도 하나에 가중치를 부여하여 보안 수준을 설정하면, 추출 및 생성부(18)는 설정된 보안 수준에 따라 분리 실행 대상 코드 블록(34)을 선출할 수 있다. 즉 분석자는 컨텐츠(30)의 종류, 가치 등을 고려하여 분석자 레벨에서 보안 수준을 설정하고, 이를 통하여 컨텐츠(30)의 복제 방지 효과를 획득할 수 있다.The extraction and
추출 및 생성부(18)는 추출한 분리 실행 대상 코드 블록(34)의 리스트를 생성할 수 있다. 분리 실행 대상 코드 블록(34)의 리스트는 해당 컨텐츠(30)와 함께 컨텐츠 등록 서버에 제공되어 해당 컨텐츠(30)의 등록을 수행할 때 사용될 수 있다.The extraction and
추출 및 생성부(18)는 분리 실행 대상 코드 블록(34)이 추출된 코드 영역에 스터브 코드(36)를 삽입하여 서비스용 컨텐츠(32)를 생성할 수 있다. 이때 스터브 코드(36)는 컨텐츠(30)에서 추출된 코드 영역과, 추출된 분리 실행 대상 코드 블록(34)을 연결한다.The extraction and
또한 추출 및 생성부(18)는 컨텐츠(30)에서 추출한 분리 실행 대상 코드 블록(34)과, 분리 실행 대상 코드 블록(34)이 추출된 코드 영역에 스터브 코드(36)가 삽입된 서비스용 컨텐츠(32)로 분할하여 저장부(13)에 저장할 수 있다.The extraction and
이와 같이 추출 및 생성부(18)에서 추출된 분리 실행 대상 코드 블록(34)은 시작점에 위치하는 베이식 블록(35)을 통한 제어 신호가 입력되는 경우, 해당 제어 신호의 입력을 허용한다. 분리 실행 대상 코드 블록(34)은 시작점을 통한 제어 신호의 입력에 따른 베이식 블록(35) 간의 제어 신호의 이동을 허용한다. 또한 분리 실행 대상 코드 블록(34)은 시작점을 제외한 베이식 블록(35)으로의 제어 신호의 진입이 없는 복수의 베이식 블록(35)을 포함한다. 바꾸어 말하면 분리 실행 대상 코드 블록(34)은 시작점을 제외한 베이식 블록(35)으로의 제어 신호의 진입을 허용하는 않는 복수의 베이식 블록(35)을 포함한다.When the control signal through the
이와 같이 추출 및 생성부(18)에서 추출된 분리 실행 대상 코드 블록(34)은, 도 5 내지 도 7은 도시된 바와 같은 속성을 갖는다. 즉 도 5에 도시된 바와 같이, 분리 실행 대상 코드 블록(34)은 시작점에 위치하는 베이식 블록(35a)을 통한 제어 신호가 입력되는 경우, 해당 제어 신호의 입력을 허용한다.The extraction execution
도 6에 도시된 바와 같이, 분리 실행 대상 코드 블록(34)은 시작점을 통한 제어 신호의 입력에 따른 베이식 블록(35a,35b) 간의 제어 신호의 이동을 허용한다.As shown in Fig. 6, the
또한 도 7에 도시된 바와 같이, 분리 실행 대상 코드 블록(34)은 시작점을 제외한 베이식 블록(35b)으로의 제어 신호의 진입이 없는 복수의 베이식 블록(35a,35b)을 포함한다. 바꾸어 말하면 분리 실행 대상 코드 블록(34)은 시작점을 제외한 베이식 블록(35b)으로의 제어 신호의 진입을 허용하는 않는 복수의 베이식 블록(35)을 포함한다.As shown in Fig. 7, the
따라서 본 실시예에 따른 코드 분석 장치(10)는 컨텐츠(30)에 대한 동적 프로파일링을 통하여 수집한 코드 영역(31)의 기초 정보를 이용하여 해당 컨텐츠(30)에 대한 정적 분석을 수행하기 때문에, 컨텐츠(30)의 코드 영역(31)의 분석 범위를 확장할 수 있고, 이를 통하여 컨텐츠(30)의 복제 방지에 필요한 코드 블록의 추출율을 향상시킬 수 있다.Therefore, the
본 실시예에 따른 코드 분석 방법에 대해서 도 1 내지 도 10을 참조하여 설명하면 다음과 같다. 여기서 도 8은 본 발명의 실시예에 따른 컨텐츠의 코드 분석 방법에 따른 흐름도이다. 도 9 및 도 10은 도 8의 분리 실행 대상 코드 블록으로 추출된 베이식 블록 그룹의 선정 단계를 설명하기 위한 예시도이다.A code analysis method according to the present embodiment will be described with reference to FIG. 1 to FIG. 8 is a flowchart illustrating a method of analyzing a content code according to an exemplary embodiment of the present invention. FIGS. 9 and 10 are exemplary diagrams for explaining a selection step of a basic block group extracted by the separation execution target code block in FIG. 8. FIG.
먼저 S61단계에서 코드 분석 장치(10)는 분석할 컨텐츠(30)를 호출한다. 즉 분석자로부터 분석할 컨텐츠(30)를 호출하기 위한 선택 신호가 입력부(11)를 통하여 입력되면, 코드 분석 장치(10)는 저장부(13)에 저장된 분석전 컨텐츠(30)의 리스트를 표시부(15)에 표시한다. 이어서 리스트에서 특정 컨텐츠(30)가 선택되면, 코드 분석 장치(10)는 선택된 컨텐츠(30)를 호출한다.First, in step S61, the
다음으로 S63단계에서 코드 분석 장치(10)는 선택된 컨텐츠(30)에 대한 보안 수준을 설정한다. 즉 코드 분석 장치(10)는 분석자가 선택할 수 있는 보안 수준 설정 항목을 표시부(15)에 표시한다. 분석자가 표시된 보안 수준 설정 항목 중에서 특정 보안 수준 설정 항목을 선택하면, 코드 분석 장치(10)는 선택된 보안 수준 설정 항목으로 등록할 컨텐츠(30)의 보안 수준을 설정한다.Next, in step S63, the
이때 본 실시예에서는 S61단계 및 S63단계 순으로 진행되는 예를 개시하였지만, 반대의 순서로 진행될 수 있다. 또한 보안 수준이 디폴트로 설정되어 있는 경우, 코드 분석 장치(10)는 S63단계를 생략할 수도 있다.At this time, although the example of proceeding in the order of steps S61 and S63 has been described in this embodiment, it may be performed in the reverse order. If the security level is set to the default, the
다음으로 S65단계에서 코드 분석 장치(10)는 호출한 컨텐츠(30)에 대한 실행을 시작한다.Next, in step S65, the
다음으로 S67단계에서 코드 분석 장치(10)는 호출한 컨텐츠(30)에 대한 동적 프로파일링을 수행하여 코드 영역(31)에 대한 기초 정보를 수집한다. 즉 코드 분석 장치(10)는 컨텐츠(30)에 대한 런-타임 동안 코드 영역(31)에 대한 기초 정보를 수집한다. 이때 수집된 기초 정보는 베이식 블록 그룹(37)의 시작 주소, 베이식 블록 그룹(37)의 종료 주소, 베이식 블록 그룹(37)의 호출 횟수, 베이식 블록 그룹(37)의 크기 및 베이식 블록 그룹(37) 내의 실수 연산 유무에 대한 정보를 포함한다. 특히 수집된 기초 정보는 브랜치 어드레스, 점프 어드레스, 콜 어드레스 및 RET의 간접 주소 중에 적어도 하나의 간접 주소를 포함한다. 간접 주소에는 베이식 블록 그룹(37)의 시작 주소, 베이식 블록 그룹(37)의 크기, 브랜치 태이큰 주소에 대한 정보를 포함한다. 또한 수집된 기초 정보는 설정된 보안 수준 설정 항목에 따라서, 베이식 블록 그룹 내에서 호스트 단말의 메모리를 참조하는 회수, 베이식 블록 그룹 내에서 호스트 단말의 OS API를 호출하는 회수, 베이식 블록 그룹의 실행 시간, 베이식 블록 그룹 내에서 수행되는 전체 명령어 개수, 베이식 블록 그룹의 실행을 위해 전달되는 파라미터 개수 및 타입, 베이식 블록 그룹의 실행 후 반환되는 값의 종류 중에 적어도 하나를 더 포함할 수 있다.Next, in step S67, the
그리고 S69단계에서 코드 분석 장치(10)는 수집한 기초 정보를 기반으로 정적 분석을 수행한다. 즉 코드 분석 장치(10)는 수집한 기초 정보 중 간접 주소를 컨트롤 플로우 상에 대입하여 해당 컨텐츠(30)의 코드 영역(31)에 대한 정적 분석을 수행한다.In step S69, the
이와 같이 본 실시예에서는 수집한 기초 정보를 기반으로 정적 분석을 수행하기 때문에, 단독으로 동적 프로파일링 또는 정적 분석을 수행하는 것에 비하여 컨텐츠(30)의 코드 영역(31)에 대한 분석 범위를 확장할 수 있다.As described above, in the present embodiment, since the static analysis is performed based on the collected basic information, the analysis range for the
한편 S69단계에서 코드 분석 장치(10)는 기초 정보를 기반으로 한 정적 분석을 통하여 복수의 베이식 블록 그룹(37)을 선정할 수 있다. 즉 코드 분석 장치(10)는 수집한 기초 정보 중 간접 주소를 컨트롤 플로우 상에 대입하여 컨텐츠의 코드 영역에서 복수의 베이식 블록 그룹(37)을 선정할 수 있다.On the other hand, in step S69, the
S69단계에서 코드 분석 장치(10)는, 도 9 및 도 10에 도시된 바와 같이, 정의(규칙)를 통하여 베이식 블록 그룹(37)을 선정할 수 있다.In step S69, the
먼저 도 9에 도시된 바와 같이, 코드 분석 장치(10)는 컨텐츠(30)의 코드 영역(31)에서 서로 연관된 복수의 베이식 블록(35)을 포함하는 베이식 블록 그룹(37)을 정의할 수 있다.9, the
여기서 베이식 블록 그룹(37)의 시작점에 위치하는 베이식 블록(35a)을 통한 제어 신호가 입력되는 경우, 코드 분석 장치(10)는 해당 베이식 블록 그룹(37)에 대한 재정의는 수행하지 않는다. 또한 베이식 블록 그룹(37)에 포함된 베이식 블록(35) 간에 제어 신호가 이동하는 경우에도, 코드 분석 장치(10)는 해당 베이식 블록 그룹(37)에 대한 재정의는 수행하지 않는다. 즉 전술된 두 경우 코드 분석 장치(10)는 베이식 블록 그룹(37)은 현재의 정의 상태를 유지한다.Here, when the control signal through the
하지만 도 10에 도시된 바와 같이, 베이식 블록 그룹(37)의 시작점에 위치하는 베이식 블록(35a)을 제외한 다른 베이식 블록(35b)으로 제어 신호가 입력될 경우, 코드 분석 장치(10)는 해당 베이식 블록 그룹(37)을 제어 신호가 입력되는 베이식 블록(35b)을 기준으로 분할하여 재정의 한다. 즉 베이식 블록 그룹(37)의 내부로 진입하는 제어 신호가 있으면, 코드 분석 장치(10)는 제어 신호의 명령어 주소를 기준으로 베이식 블록 그룹(37)을 분할하여 재정의 한다.10, when the control signal is inputted to the other
이와 같이 베이식 블록 그룹(37)을 재정의 함으로써, 분할된 베이식 블록 그룹(37a,37b)이 내부 진입이 없는 베이식 블록 그룹(37)으로 성립할 확률을 높일 수 있다.By redefining the
이때 재정의 대상이 되는 베이식 블록 그룹(37)은 제어 신호의 명령어 주소를 기준으로 이전의 제1 베이식 블록 그룹(37a)과, 제어 신호의 명령어 주소를 포함하는 이후의 제2 베이식 블록 그룹(37b)으로 재정의 된다.At this time, the
그리고 이와 같은 재정의 단계를 반복함으로써, 최종적으로 재정의된 베이식 블록 그룹(37)은 단일 입력 및 단일 출력의 속성과, 외부에서 내부로의 진입을 허용하지 않는 속성을 갖는 복수의 베이식 블록(35)을 포함하는 베이식 블록 그룹(37)으로 정의될 수 있다.By repeating this redefinition step, the finally redefined
이어서 S71단계에서 코드 분석 장치(10)는 선정한 복수의 베이식 블록 그룹(37) 중에서 분리 실행 대상 코드 블록(34)을 추출할 수 있다. 즉 S71단계에서 코드 분석 장치(10)는 선정된 복수의 베이식 블록 그룹(37) 중에서 설정된 보안 수준에 따라 베이식 블록 그룹(37)을 분리 실행 대상 코드 블록(34)으로 추출할 수 있다. 예컨대 분석자는 베이식 블록 그룹(37)의 호출 빈도, 베이식 블록 그룹(37)의 호출 위치, 호스트 단말(51)의 메모리 참조 빈도, 호스트 단말(51)의 OS API 참조 빈도, 저장장치(53)의 하드웨어 요소 중에 적어도 하나에 가중치를 부여하여 보안 수준을 설정하면, 코드 분석 장치(10)는 설정된 보안 수준에 따라 분리 실행 대상 코드 블록(34)을 추출할 수 있다.Subsequently, in step S71, the
이때 S71단계 이후에 코드 분석 장치(10)는 추출한 분리 실행 대상 코드 블록(34)에 대한 리스트를 생성할 수도 있다.At this time, the
그리고 S73단계에서 코드 분석 장치(10)는 분리 실행 대상 코드 블록(34)이 추출된 코드 영역에 스터브 코드(36)를 삽입하여 서비스용 컨텐츠(32)를 생성할 수 있다. 이때 스터브 코드(36)는 컨텐츠(30)에서 추출된 코드 영역과, 추출된 분리 실행 대상 코드 블록(34)을 연결한다.In step S73, the
이와 같이 컨텐츠(30)에서 분리 실행 대상 코드 블록(34)을 추출하고, 분리 실행 대상 코드 블록(34)이 추출된 코드 영역에 스터브 코드(36)를 삽입하여 서비스용 컨텐츠(32)를 생성함으로써, 코드 분석 장치(10)는 컨텐츠(30)를 추출된 분리 실행 대상 코드 블록(34)과, 생성된 서비스용 컨텐츠(32)로 분할할 수 있다. 이때 S73단계에서 코드 분석 장치(10)는 분리 실행 대상 코드 블록(34)과 서비스용 컨텐츠(32)를 저장부(13)에 저장할 수 있다.In this way, the separation execution
본 실시예에 따른 컨텐츠의 코드 분석 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터로 판독 가능한 기록매체에 기록될 수 있다. 기록매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 기록매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 예컨대 기록매체는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치를 포함한다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드 뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다. 이러한 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The code analysis method of contents according to the present embodiment may be implemented in the form of a program command which can be executed through various computer means and recorded in a computer-readable recording medium. The recording medium may include program commands, data files, data structures, and the like, alone or in combination. Program instructions to be recorded on a recording medium may be those specially designed and constructed for the present invention or may be available to those skilled in the art of computer software. For example, the recording medium may be a magnetic medium such as a hard disk, a floppy disk and a magnetic tape, an optical medium such as a CD-ROM or a DVD, a magneto-optical medium such as a floppy disk magneto-optical media, and hardware devices that are specially configured to store and execute program instructions such as ROM, RAM, flash memory, and the like. Examples of program instructions may include machine language code such as those generated by a compiler, as well as high-level language code that may be executed by a computer using an interpreter or the like. Such a hardware device may be configured to operate as one or more software modules to perform the operations of the present invention, and vice versa.
한편, 본 명세서와 도면에 개시된 본 발명의 실시예들은 이해를 돕기 위해 특정 예를 제시한 것에 지나지 않으며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시예들 이외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형예들이 실시 가능하다는 것은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 자명한 것이다.It should be noted that the embodiments of the present invention disclosed in the present specification and drawings are only illustrative of specific examples for the purpose of understanding and are not intended to limit the scope of the present invention. It will be apparent to those skilled in the art that other modifications based on the technical idea of the present invention are possible in addition to the embodiments disclosed herein.
본 발명은 컨텐츠의 코드 분석 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록매체에 관한 것으로, 컨텐츠에 대한 동적 프로파일링을 통하여 코드 영역의 기초 정보를 수집하고, 수집한 기초 정보를 이용하여 해당 컨텐츠의 코드 영역에 대한 정적 분석을 수행하기 때문에, 컨텐츠의 코드 영역의 분석 범위를 확장하고, 이를 통하여 컨텐츠의 복제 방지에 필요한 코드 블록의 추출율을 향상시켜 컨텐츠의 복제 방지에 필요한 분리 실행 대상 코드 블록을 효과적으로 추출할 수 있는 분석 기술을 제공할 수 있다.The present invention relates to a device for code analysis of contents, a method thereof, and a computer-readable recording medium on which the method is recorded, wherein basic information of a code area is collected through dynamic profiling of contents, The scope of analysis of the code area of the content is expanded and the extraction rate of the code block necessary for preventing the copying of the content is improved thereby to realize the separation execution object It is possible to provide an analysis technique capable of effectively extracting code blocks.
10 : 코드 분석 장치 11 : 입력부
12 : 컨텐츠 호출부 13 : 저장부
14 : 기초 정보 수집부 15 : 표시부
16 : 정적 분석부 17 : 제어부
18 : 추출 및 생성부 30 : 컨텐츠
31 : 코드 영역 32 : 서비스용 컨텐츠
33 : 데이터 영역 34 : 분리 실행 대상 코드 블록
35 : 베이식 블록 37 : 베이식 블록 그룹10: Code analysis device 11: Input section
12: content calling unit 13:
14: basic information collecting part 15: display part
16: static analysis unit 17: control unit
18: Extraction and Generation Unit 30: Contents
31: code area 32: contents for service
33: data area 34: separation execution target code block
35: Basic Block 37: Basic Block Group
Claims (26)
분석할 컨텐츠를 호출하는 컨텐츠 호출부;
상기 호출한 컨텐츠에 대한 동적 프로파일링(dynamic profiling)을 통하여 기초 정보를 수집하는 기초 정보 수집부;
상기 수집한 기초 정보를 기반으로 상기 컨텐츠의 코드 영역에 대한 정적 분석(static analysis)을 수행하여 상기 컨텐츠의 코드 영역에서 복수의 베이식 블록 그룹을 선정하는 정적 분석부; 및
상기 복수의 베이식 블록 그룹 중에서 상기 컨텐츠 실행 시 최소 한번 이상 실행되는 중요 경로(critical path) 상에 있는 베이식 블록 그룹을 분리 실행 대상 코드 블록으로 추출하는 추출 및 생성부;
를 포함하는 것을 특징으로 하는 컨텐츠의 코드 분석 장치.A code analyzing apparatus for contents,
A content calling unit for calling contents to be analyzed;
A basic information collection unit for collecting basic information through dynamic profiling of the called content;
A static analyzer for performing a static analysis on a code area of the content based on the collected basic information and selecting a plurality of basic block groups in a code region of the content; And
An extraction and generation unit for extracting a basic block group on a critical path that is executed at least one time in executing the content among the plurality of basic block groups into a separation execution object code block;
And a content analyzer for analyzing the contents of the content.
상기 기초 정보는 상기 컨텐츠에 대한 런-타임(run-time) 동안 수집한 상기 컨텐츠의 코드 영역에 대한 정보를 포함하는 것을 특징으로 하는 컨텐츠의 코드 분석 장치.The method according to claim 1,
Wherein the basic information includes information on a code region of the content collected during a run-time of the content.
상기 기초 정보는 브랜치 어드레스(branch address), 점프 어드레스(jump address), 콜 어드레스(call address) 및 RET의 간접 주소(indirect address) 중에 적어도 하나의 간접 주소를 포함하는 것을 특징으로 하는 컨텐츠의 코드 분석 장치.3. The method of claim 2,
Wherein the basic information comprises at least one indirect address of a branch address, a jump address, a call address, and an indirect address of a RET. Device.
상기 수집한 기초 정보의 간접 주소를 컨트롤 플로우(control flow)에 대입하여 정적 분석을 수행하는 것을 특징으로 하는 컨텐츠의 코드 분석 장치.The apparatus according to claim 1,
And a static analysis is performed by substituting the indirect address of the collected basic information into a control flow.
상기 베이식 블록 그룹은 시작점(entry point)을 통한 제어 신호의 진입 및 상기 복수의 베이식 블록 간의 제어 신호의 이동은 허용하고, 상기 시작점을 제외한 상기 복수의 베이식 블록 내부로의 제어 신호의 진입이 없는 복수의 베이식 블록을 포함하는 것을 특징으로 하는 컨텐츠의 코드 분석 장치.The method according to claim 1,
Wherein the basic block group allows entry of a control signal through an entry point and movement of a control signal between the plurality of basic blocks, and a plurality of control signals for the plurality of basic blocks except for the start point And a basic block of the content.
상기 베이식 블록은 단일 입력(single input) 및 단일 출력(single output)의 속성과, 외부에서 내부로의 제어 신호의 진입을 허용하지 않는 속성을 갖는 코드 블록인 것을 특징으로 하는 컨텐츠의 코드 분석 장치.The method according to claim 6,
Wherein the basic block is a code block having a property of a single input and a single output and an attribute of not allowing entry of an external control signal into the internal block.
상기 기초 정보는 상기 베이식 블록 그룹의 시작 주소, 상기 베이식 블록 그룹의 종료 주소, 상기 베이식 블록 그룹의 호출 횟수, 상기 베이식 블록 그룹의 크기 및 상기 베이식 블록 그룹 내의 실수 연산 유무에 대한 정보를 포함하는 것을 특징으로 하는 컨텐츠의 코드 분석 장치.The method according to claim 1,
The 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 whether there is a real number calculation in the basic block group Characterized by a content code analyzing device.
상기 기초 정보는 상기 베이식 블록 그룹 내에서 호스트 단말의 메모리를 참조하는 회수, 상기 베이식 블록 그룹 내에서 호스트 단말의 OS API를 호출하는 회수, 상기 베이식 블록 그룹의 실행 시간, 상기 베이식 블록 그룹 내에서 수행되는 전체 명령어 개수, 상기 베이식 블록 그룹의 실행을 위해 전달되는 파라미터 개수 및 타입, 상기 베이식 블록 그룹의 실행 후 반환되는 값의 종류 중에 적어도 하나를 더 포함하는 것을 특징으로 하는 컨텐츠의 코드 분석 장치.9. The method of claim 8,
Wherein the basic information includes at least one of the number of times that the basic terminal block refers to the memory of the host terminal in the basic block group, the number of times that the host terminal calls the OS API in the basic block group, the execution time of the basic block group, A number and type of parameters transmitted for execution of the basic block group, and types of values returned after execution of the basic block group.
상기 컨텐츠, 상기 컨텐츠의 상기 분리 실행 대상 코드 블록, 상기 컨텐츠에서 상기 분리 실행 대상 코드 블록이 분리된 서비스용 컨텐츠를 저장하는 저장부;
를 더 포함하는 것을 특징으로 하는 컨텐츠의 코드 분석 장치.The method according to claim 1,
A storage unit for storing the content, the code block to be separated for execution of the content, and the service content in which the code block for separation execution is separated from the content;
Wherein the content analyzing apparatus further comprises:
코드 분석 장치가 분석할 컨텐츠를 호출하는 호출 단계;
상기 코드 분석 장치가 상기 호출한 컨텐츠에 대한 동적 프로파일링(dynamic profiling)을 통하여 기초 정보를 수집하는 수집 단계;
상기 코드 분석 장치가 상기 수집한 기초 정보를 기반으로 상기 컨텐츠의 코드 영역에 대한 정적 분석(static analysis)을 수행하여, 복수의 베이식 블록 그룹을 선정하는 분석 단계;
상기 코드 분석 장치가 상기 복수의 베이식 블록 그룹 중에서 상기 컨텐츠 실행 시 최소 한번 이상 반드시 실행되는 중요 경로(critical path) 상에 있는 베이식 블록 그룹을 분리 실행 대상 코드 블록으로 추출하는 추출 단계;
를 포함하는 것을 특징으로 하는 컨텐츠의 코드 분석 방법.In a code analysis method of contents,
A calling step for calling the content to be analyzed by the code analysis device;
A collection step of collecting basic information through dynamic profiling of the called content by the code analysis device;
An analysis step of performing a static analysis on a code area of the content based on the collected basic information and selecting a plurality of basic block groups;
An extraction step of extracting, from the plurality of basic block groups, a basic block group on a critical path that is necessarily executed at least once at the time of executing the content, as a separation execution object code block;
And analyzing the content of the content.
상기 기초 정보는 상기 코드 분석 장치가 상기 컨텐츠에 대한 런-타임(run-time) 동안 수집한 상기 컨텐츠의 코드 영역에 대한 정보를 포함하는 것을 특징으로 하는 컨텐츠의 코드 분석 방법.13. The method according to claim 12, wherein, in the collecting step,
Wherein the basic information includes information on a code region of the content collected during a run-time of the content by the code analysis apparatus.
상기 수집된 기초 정보는 브랜치 어드레스(branch address), 점프 어드레스(jump address), 콜 어드레스(call address) 및 RET의 간접 주소(indirect address) 중에 적어도 하나의 간접 주소를 포함하는 것을 특징으로 하는 컨텐츠의 코드 분석 방법.13. The method according to claim 12, wherein, in the collecting step,
Wherein 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 a RET. Code analysis method.
상기 수집된 기초 정보는 베이식 블록 그룹의 시작 주소, 베이식 블록 그룹의 종료 주소, 베이식 블록 그룹의 호출 횟수, 베이식 블록 그룹의 크기 및 베이식 블록 그룹 내의 실수 연산 유무에 대한 정보를 포함하는 것을 특징으로 하는 컨텐츠의 코드 분석 방법.13. The method according to claim 12, wherein, in the collecting step,
Wherein the collected basic information includes information on a start address of a basic block group, an end address of a basic block group, a number of calls of a basic block group, a size of a basic block group, and whether there is a real number calculation in a basic block group Method of code analysis of content.
상기 수집된 기초 정보는 베이식 블록 그룹 내에서 호스트 단말의 메모리를 참조하는 회수, 베이식 블록 그룹 내에서 호스트 단말의 OS API를 호출하는 회수, 베이식 블록 그룹의 실행 시간, 베이식 블록 그룹 내에서 수행되는 전체 명령어 개수, 베이식 블록 그룹의 실행을 위해 전달되는 파라미터 개수 및 타입 및 베이식 블록 그룹의 실행 후 반환되는 값의 종류 중에 적어도 하나를 더 포함하는 것을 특징으로 하는 컨텐츠의 코드 분석 방법.16. The method of claim 15,
The collected basic information includes the number of times the basic terminal block refers to the memory of the host terminal in the basic block group, the number of calls to the OS API of the host terminal in the basic block group, the execution time of the basic block group, Further comprising at least one of a number of instructions, a number and type of parameters to be transmitted for execution of a basic block group, and a type of a value to be returned after executing a basic block group.
상기 수집한 기초 정보의 간접 주소를 컨트롤 플로우(control flow)에 대입하여 정적 분석을 수행하는 것을 특징으로 하는 컨텐츠의 코드 분석 방법.13. The method of claim 12, wherein in the analyzing step,
And a static analysis is performed by substituting the indirect address of the collected basic information into a control flow.
상기 코드 분석 장치가 상기 추출한 분리 실행 대상 코드 블록의 리스트를 생성하는 단계; 또는
상기 코드 분석 장치가 상기 분리 실행 대상 코드 블록이 추출된 코드 영역에 스터브 코드를 삽입하여 서비스용 컨텐츠를 생성하는 단계;
를 더 포함하는 것을 특징으로 하는 컨텐츠의 코드 분석 방법.13. The method of claim 12, further comprising:
Generating a list of extracted code blocks to be extracted by the code analyzing device; or
Generating a service content by inserting a stub code into a code area from which the code execution unit is extracted;
The method of claim 1, further comprising:
상기 호출 단계는, 상기 코드 분석 장치가 상기 분석할 컨텐츠에 대한 보안 수준을 설정하는 보안 수준 설정 단계;를 포함하고,
상기 추출 단계에서, 상기 코드 분석 장치가 상기 설정된 보안 수준에 따라 상기 복수의 베이식 블록 그룹 중에서 분리 실행 대상 코드 블록을 추출하도록 하는 것을 특징으로 하는 컨텐츠의 코드 분석 방법.13. The method of claim 12,
Wherein the calling step includes a security level setting step in which the code analyzing device sets a security level for the content to be analyzed,
And the code analyzing unit extracts a code block to be separated from among the plurality of basic block groups according to the set security level in the extracting step.
상기 코드 분석 장치가 보안 수준 설정 항목을 표시하는 단계;
상기 코드 분석 장치가 상기 보안 수준 설정 항목 중에서 선택된 보안 수준 설정 항목으로 보안 수준을 설정하는 단계;
를 포함하는 것을 특징으로 하는 컨텐츠의 코드 분석 방법.22. The method of claim 21,
The code analysis device displaying a security level setting item;
Setting the security level to a security level setting item selected from the security level setting items;
And analyzing the content of the content.
베이식 블록 그룹의 호출 빈도, 베이식 블록 그룹의 호출 위치, 호스트 단말의 메모리 참조 빈도, 호스트 단말의 OS API 참조 빈도, 저장장치의 하드웨어 요소 중에 적어도 하나를 포함하는 것을 특징으로 하는 컨텐츠의 코드 분석 방법.23. The method of claim 22,
Wherein at least one of a calling frequency of the basic block group, a calling position of the basic block group, a memory reference frequency of the host terminal, an OS API reference frequency of the host terminal, and a hardware element of the storage device is included.
상기 코드 분석 장치가 상기 컨텐츠의 코드 영역에서 베이식 블록 그룹을 정의하는 단계;
상기 코드 분석 장치가 상기 베이식 블록 그룹의 내부로 진입하는 제어 신호가 있으면, 상기 제어 신호의 명령어 주소(instruction address)를 기준으로 상기 베이식 블록 그룹을 분할하여 재정의 하는 재정의 단계;
를 포함하는 것을 특징으로 하는 컨텐츠의 코드 분석 방법.13. The method of claim 12,
Defining a basic block group in a code region of the content;
A redefining step of redefining the basic block group based on an instruction address of the control signal when the code analyzing apparatus has a control signal for entering the basic block group;
And analyzing the content of the content.
최종적으로 재정의된 베이식 블록 그룹은 단일 입력(single input) 및 단일 출력(single output)의 속성과, 외부에서 내부로의 진입을 허용하지 않는 속성을 갖는 복수의 베이식 블록을 포함하는 것을 특징으로 하는 컨텐츠의 코드 분석 방법.25. The method of claim 24, wherein in the redefining step,
Wherein the finally redefined basic block group comprises a plurality of basic blocks having attributes of a single input and a single output and attributes that do not permit entry from the outside to the inside. The code analysis method of.
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 |
---|---|
KR20110013183A KR20110013183A (en) | 2011-02-09 |
KR101478034B1 true KR101478034B1 (en) | 2015-01-02 |
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 (3)
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 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
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) |
Families Citing this family (4)
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 |
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 |
KR102043038B1 (en) | 2017-12-12 | 2019-11-11 | 슈어소프트테크주식회사 | Static test proceeding method based on voice information and apparatus for the same |
KR102441167B1 (en) * | 2018-12-05 | 2022-09-08 | 한국전자통신연구원 | Apparatus and method for executing function |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20090017598A (en) * | 2006-06-13 | 2009-02-18 | 마이크로소프트 코포레이션 | Iterative static and dynamic software analysis |
Family Cites Families (8)
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 |
WO2006085103A1 (en) * | 2005-02-11 | 2006-08-17 | Simplex Major Sdn, Bhd. | Software protection method |
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 |
-
2010
- 2010-03-18 KR KR1020100024136A patent/KR101412465B1/en active IP Right Grant
- 2010-03-19 KR KR1020100024585A patent/KR101442000B1/en active IP Right Grant
- 2010-03-29 KR KR1020100027937A patent/KR101441999B1/en active IP Right Grant
- 2010-03-29 KR KR20100027946A patent/KR101478034B1/en active IP Right Grant
- 2010-04-02 KR KR1020100030170A patent/KR101455668B1/en active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20090017598A (en) * | 2006-06-13 | 2009-02-18 | 마이크로소프트 코포레이션 | Iterative static and dynamic software analysis |
Also Published As
Publication number | Publication date |
---|---|
KR101412465B1 (en) | 2014-06-30 |
KR20110013183A (en) | 2011-02-09 |
KR20110013175A (en) | 2011-02-09 |
KR20110013186A (en) | 2011-02-09 |
KR101442000B1 (en) | 2014-09-24 |
KR101455668B1 (en) | 2014-11-03 |
KR20110013176A (en) | 2011-02-09 |
KR101441999B1 (en) | 2014-09-24 |
KR20110013182A (en) | 2011-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109885311B (en) | Application program generation method and device | |
CN107291480B (en) | Function calling method and device | |
JP4130713B2 (en) | Program converter | |
CN109918055B (en) | Application program generation method and device | |
US7398474B2 (en) | Method and system for a digital device menu editor | |
US8418169B2 (en) | Management method for managing software module and information processor | |
JP2000066902A (en) | Multi branch correction processing system in dynamic translator | |
US9710355B2 (en) | Selective loading of code elements for code analysis | |
KR101478034B1 (en) | Apparatus for analyzing code in contents, method thereof and computer recordable medium storing the method | |
KR101487176B1 (en) | System for providing code block for separating execution based contents, method thereof and computer recordable medium storing the method | |
CN110737589A (en) | automatic point burying method, device, medium and electronic equipment | |
CN103885814A (en) | Simulator device and method for operating ARM APKs on x86 framework | |
WO2017034953A1 (en) | System and method for object compression and state synchronization | |
US8473936B2 (en) | System and method for runtime class extracting | |
CN105765531A (en) | Generic unpacking of program binaries | |
US7966562B1 (en) | System and method for providing domain-sensitive help | |
JPH08212106A (en) | Device and method for supporting system test | |
WO2020057265A1 (en) | Method and system for chat function development, terminal and computer readable storage medium | |
CN113805861B (en) | Code generation method based on machine learning, code editing system and storage medium | |
CN107609397B (en) | Method and device for detecting malicious behavior of application program in android system | |
US20220308991A1 (en) | Test processing method and information processing apparatus | |
KR101837963B1 (en) | System, method and program for protecting copying webtoon | |
KR101562282B1 (en) | System and Method for Verifying Integrity of an ODEX | |
JP2007179260A (en) | Asset management device and asset management method | |
JP2003015914A (en) | Method for producing test program for evaluating information processing unit, device and program describing processing therefor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
N231 | Notification of change of applicant | ||
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E90F | Notification of reason for final refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20181129 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20191210 Year of fee payment: 6 |