WO2010077000A2 - 소프트웨어 분리 실행 방법, 장치 및 컴퓨터로 읽을 수 있는 기록매체 - Google Patents

소프트웨어 분리 실행 방법, 장치 및 컴퓨터로 읽을 수 있는 기록매체 Download PDF

Info

Publication number
WO2010077000A2
WO2010077000A2 PCT/KR2009/007648 KR2009007648W WO2010077000A2 WO 2010077000 A2 WO2010077000 A2 WO 2010077000A2 KR 2009007648 W KR2009007648 W KR 2009007648W WO 2010077000 A2 WO2010077000 A2 WO 2010077000A2
Authority
WO
WIPO (PCT)
Prior art keywords
software
attribute information
module
execution
present
Prior art date
Application number
PCT/KR2009/007648
Other languages
English (en)
French (fr)
Other versions
WO2010077000A3 (ko
Inventor
권오인
남기선
김민석
김성
Original Assignee
에스케이텔레콤 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이텔레콤 주식회사 filed Critical 에스케이텔레콤 주식회사
Priority to EP09836321A priority Critical patent/EP2383653A2/en
Priority to CN2009801533458A priority patent/CN102272738B/zh
Priority to JP2011544360A priority patent/JP5346386B2/ja
Priority to US13/142,601 priority patent/US9454456B2/en
Publication of WO2010077000A2 publication Critical patent/WO2010077000A2/ko
Publication of WO2010077000A3 publication Critical patent/WO2010077000A3/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • G06F11/3096Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents wherein the means or processing minimize the use of computing system or of computing system component resources, e.g. non-intrusive monitoring which minimizes the probe effect: sniffing, intercepting, indirectly deriving the monitored data from other directly available data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3495Performance evaluation by tracing or monitoring for systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • 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
    • 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/123Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices

Definitions

  • the present invention relates to a method for executing software separation, an apparatus and a computer readable recording medium. More specifically, it analyzes control flows, data flows, and module structures for specific software through static binary analysis or runtime profiling (ie dynamic analysis) for specific software.
  • the module is identified and separated from the main body and stored in a smart card with a secure execution environment.
  • the user terminal stores a modified main body with the module removed and replaced with an interface code.
  • smart card co-processing Co-Processing
  • the present invention relates to a software separation execution method, a device and a computer-readable recording medium that can be implemented only when the smart card is fastened to the user terminal.
  • the CD-Key for activation is exposed to the user for input in plain text format, the CD-Key and the CD-ROM are copied as they are, and the third party illegally uses them. have. Moreover, even if they do not have a CD-Key, they use the illegally created CD-Key Generation Program or crack the CD-Key Authentication Program to hack the software activation method. Sharing is a major threat to software copyright protection.
  • the present invention provides a method for separating and executing a software, and a computer-readable recording medium, which can be implemented only when a smart card is fastened to a user terminal. There is a purpose.
  • an analysis unit for finding any one of the control flow, data flow and module structure of the software;
  • a profiling unit for tagging execution state and attribute information for each module of the software;
  • An evaluation unit for assigning scores based on attribute information and user feedback to the profiled function module;
  • An extraction unit for separating the modules having the highest score in the evaluation unit from the body of the software;
  • an interfacing unit for inserting an input / output interfacing code for connecting the module separated from the main body and the binary code for the user terminal.
  • the step of finding any one of the control flow, data flow and module structure of the software Tagging execution state and attribute information for each module of the software; Assigning scores based on attribute information and user feedback to the profiled functional module; Separating the modules having the highest score from the evaluation unit from a body of software; And inserting an input / output interfacing code for connecting the module separated from the main body and the binary code for the user terminal.
  • Another object of the present invention is to provide a computer-readable recording medium having recorded thereon a program for executing each step of the above-described software separation execution method.
  • the present invention compared to existing software copy protection technologies, by protecting the code in a physically secure execution environment called a smart card, it is possible to prevent cracks through reverse engineering. have.
  • a copy protection effect is generated in a client-server type Co-Processing Scheme between a smart card and a user terminal, anti-debugging dependent on the system architecture. There is no need to rely on techniques or methods of obfuscating and complex code decryption, thereby reducing the effort of consuming security patches with crack techniques.
  • by installing additional functions in the user terminal environment for data communication protection with a special track of a dongle or optical media, reverse engineering tool detection, and the like the possibility of an error occurring can be reduced. It can be effective.
  • FIG. 1 is a block diagram schematically showing a software separation execution apparatus according to the present embodiment
  • FIG. 2 is a flowchart illustrating a method of executing software separation according to the present embodiment.
  • FIG. 1 is a block diagram schematically showing a software separation execution apparatus according to the present embodiment.
  • the software separation execution apparatus 100 may include an analysis unit 110, a profiling unit 120, an evaluation unit 130, an extraction unit 140, An interfacing unit 150, a transformation unit 160, and a verification unit 170 are included.
  • the software separation execution apparatus 100 includes the analysis unit 110, the profiling unit 120, the evaluation unit 130, the extraction unit 140, the interface unit 150, the conversion unit 160, and the verification unit. It is described as being configured to include only 170, but this is only illustrative of the technical idea of the present embodiment, those skilled in the art to which this embodiment belongs does not depart from the essential characteristics of this embodiment Various modifications and variations to the components included in the software separation execution apparatus 100 may be applied.
  • the analysis unit 110 is a semantic analysis or interpreter in a state in which a binary file built with an object code is disassembled or a source file. Try running a summary (interpreter the input data and control flow) using Interpreter (anomalous semantic analysis), or run the software under analysis in source state or binary code. Insert the tracking code for tracing the function module and accumulate the logs while performing the actual execution (abnormal dynamic analysis) to execute the control, data flow, and module structure. Perform the task of figuring out the structure.
  • the analysis unit 110 includes a summary execution interpreter for instrumentation, runtime debugger, virtual machine, and execution state prediction through dynamic code injection or source modification. Monitor or predict the operating status of the software using at least one of the techniques.
  • the analysis unit 110 of the present invention may be implemented as an instrumentation (Instrumentation) in a range not departing from the essential characteristics of the present invention.
  • the measurement unit may be implemented by reading a binary code of software and inserting a tracking code for tracing a function module.
  • the profiling unit 120 performs a function of generating an execution state and an attribute information tag for each module. Meanwhile, the profiling unit 120 generates tracing log information by executing software within a range not departing from the essential characteristics of the present invention, and generates a tag in each log for each software progress. It can be implemented by performing.
  • the evaluation unit 130 performs a function of assigning a score to the profiled function module based on specific attribute information and user feedback.
  • the evaluation unit 130 includes input / output dynamicity attribute information, essential element presence / absence attribute information for reaching a specific progress state, stack usage, memory reference count attribute information, and architecture specific instructions. Instruction) According to one or more of attribute information, usage frequency attribute information, usage time attribute information, execution load attribute information, control flow attribute information, independent variable number attribute information in module, and execution delay time attribute information at separation execution Perform the function of calculating the score. Meanwhile, the evaluation unit 130 may be implemented to perform a function of assigning a score calculated based on specific attribute information to the profiled function module without departing from the essential characteristics of the present invention.
  • evaluation unit 130 input / output dynamicity attribute information, code runtime load attribute information, essential element presence information for reaching a specific progress state, memory reference count attribute information, architecture special instruction use attribute or not
  • the score may be calculated according to at least one of attribute information and frequency of use attribute information.
  • the extraction unit 140 separates the modules having the highest score from the evaluation unit from the body of the software.
  • the extraction unit 140 does not separate the components for the architecture-specific instruction usage information and the system call in the process of separating the modules having the highest score from the main body of the software.
  • the extraction unit 140 may be implemented to perform the function of separating the body of the function module obtained the highest score in the evaluation unit 130 in a range not departing from the essential characteristics of the present invention, separating the body
  • the components for memory reference, architecture-specific instruction usage information, and system call may be implemented by not separating them.
  • the interfacing unit 150 replaces input / output between code modules such as a stack push / pop and a register variable by a remote procedure call with a smart card.
  • the user terminal refers to a terminal having a memory for calculating, controlling and storing software, a microprocessor for executing and controlling a program, and the like.
  • a personal computer (PC) a notebook computer, a portable personal computer
  • the terminal may be one of a personal digital assistant (PDA) and a mobile communication terminal.
  • the interfacing unit 150 implements a function of inserting an input / output interfacing code for connecting a function module whose body is separated from a binary code for a user terminal without departing from the essential characteristics of the present invention. Can be.
  • the interfacing unit 150 may be implemented to replace the input / output through the stack push / pop with the USB input / output.
  • the conversion unit 160 converts the function module into which the interfacing code is inserted, according to the architecture of the smart card.
  • the smart card refers to a plastic type card having an integrated microchip (IC chip) capable of processing a specific task by having a microprocessor, a card operating system, a security module, a memory, and the like.
  • the verification unit 170 performs a function of verifying whether or not the normal operation by executing the code converted by the conversion unit.
  • the software separation execution apparatus 100 may further include an emulation unit that virtually drives the heterogeneous architecture.
  • FIG. 2 is a flowchart illustrating a method of executing software separation according to the present embodiment.
  • the analysis unit 110 analyzes the control flow, data flow, and module structure of the software (S210). On the other hand, if the analysis unit 110 is implemented as a measurement unit within the scope not departing from the essential characteristics of the present invention, the measurement unit after tracing the Function Module (Function Module) after reading the binary code of the software (Binary Code) You can insert the tracking code for
  • the profiling unit 120 generates an execution state and an attribute information tag for each module of the software (S220). Meanwhile, the profiling unit 120 may generate tracing log information by executing software in a range not departing from the essential characteristics of the present invention, and may generate a tag in each log for each software progress state. .
  • the evaluation unit 130 may include input / output dynamicity attribute information, essential element presence / absence attribute information for reaching a specific progress state, stack usage, memory reference count attribute information, and architecture special instruction ( Architecture Specific Instruction)
  • a score can be calculated according to one or more of the property information, whether or not the property information is used, the number of independent variables used in the module, the execution time, the amount of calculation, and the frequency of use property information.
  • the evaluation unit 130 input and output dynamicity attribute information, code runtime load attribute information, essential element presence or absence attribute information for reaching a specific progress state, memory reference without departing from the essential characteristics of the present invention
  • the score may be calculated according to one or more pieces of attribute information among the count attribute information, architecture special instruction use attribute information, and use frequency attribute information.
  • the extraction unit 140 separates the module having the highest score in the evaluation unit from the main body of the software (S240). On the other hand, the extraction unit 140 does not separate the components for the memory reference, architecture specific instruction usage information and system call in the process of separating the module having the highest score from the body of the software.
  • the interfacing unit 150 inserts an input / output interfacing code for connecting the functional module separated from the main body and the binary code for the user terminal (S250). For example, the interface unit 150 replaces input / output between modules such as a stack push / pop and a register variable in the form of a remote procedure call.
  • the interfacing unit 150 may be implemented by inserting an input / output interfacing code for connecting a function module having a separate body and binary codes for a user terminal without departing from the essential characteristics of the present invention. In other words, the interface 150 may replace the input / output through the stack push / pop with the USB input / output.
  • the conversion unit 160 converts the function module into which the interfacing code is inserted, according to the architecture of the smart card (S260).
  • the verification unit 170 executes the converted code and the original code at the same time to compare the execution result of the original code to verify whether or not the normal operation of the converted code (S270).
  • the verification unit 170 may be implemented by verifying whether or not the normal operation by executing the code converted in the conversion unit 160 without departing from the essential characteristics of the present invention.
  • the software separation execution method is described as sequentially executing steps S210 to S270.
  • this is merely illustrative of the technical idea of the present embodiment, and has a general knowledge in the technical field to which the present embodiment belongs.
  • FIG. 2 is not limited to time-series order.
  • the method for executing software separation according to the present embodiment described in FIG. 2 may be implemented in a program and recorded in a computer-readable recording medium.
  • the computer-readable recording medium having recorded thereon a program for implementing the software separation execution method according to the present embodiment includes all kinds of recording devices for storing data that can be read by a computer system.
  • Examples of such computer-readable recording media include ROM, RAM, CD-ROM, magnetic tape, floppy disk, optical data storage, and the like, and are implemented in the form of a carrier wave (for example, transmission over the Internet). It includes being.
  • the computer readable recording medium can also be distributed over network coupled computer systems so that the computer readable code is stored and executed in a distributed fashion.
  • the present invention is applicable to various fields that can be executed only when a smart card is fastened to a user terminal, so that software can be separated into an open computing environment such as a PC and a protected computing environment such as a smart card. It is a useful invention that produces the effect.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Remote Sensing (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명은 소프트웨어 분리 실행 방법, 장치 및 컴퓨터로 읽을 수 있는 기록매체에 관한 것이다. 본 발명은 특정 소프트웨어에 대하여 정적 바이너리(Static Binary) 분석(Static Analysis) 또는 런타임 프로파일링(Runtime Profiling)(즉, Dynamic Analysis)을 통해 제어 흐름, 데이터 흐름, 모듈 구조를 분석하여 중요 모듈을 식별해 내고 해당 모듈을 본체에서 분리하여 안전(Secure)한 실행 환경을 가진 스마트카드에 저장하고, 사용자 단말기에는 해당 모듈이 제거되고 인터페이스 코드로 대체된 수정된 본체를 저장하여, 소프트웨어 사용시 사용자 단말과 스마트카드가 코프로세싱(Co-Processing)함으로써, 스마트카드가 사용자 단말기에 체결되는 경우에만 실행가능하게 구현하는 소프트웨어 분리 실행 방법, 장치 및 컴퓨터로 읽을 수 있는 기록매체를 제공한다. 본 발명에 의하면, 복제방지 도구의 도입에 따른 소프트웨어 개발사의 개발 부담과 복제방지 도구의 자체적인 필요에 의한 부가적인 사용자 환경의 변경으로 인한 오류 가능성을 현저하게 줄이고, 클라이언트-서버 방식의 코프로세싱이라는 단순 명료한 방식으로 원천적으로 소프트웨어의 저작권을 보호할 수 있는 효과 가 있다.

Description

소프트웨어 분리 실행 방법, 장치 및 컴퓨터로 읽을 수 있는 기록매체
본 발명은 소프트웨어 분리 실행 방법, 장치 및 컴퓨터로 읽을 수 있는 기록매체에 관한 것이다. 더욱 상세하게는, 특정 소프트웨어에 대하여 정적 바이너리(Static Binary) 분석(Static Analysis) 또는 런타임 프로파일링(Runtime Profiling)(즉, 다이나믹 분석)을 통해 제어 흐름, 데이터 흐름, 모듈 구조를 분석하여 중요 모듈을 식별해 내고 해당 모듈을 본체에서 분리하여 안전(Secure)한 실행 환경을 가진 스마트카드에 저장하고, 사용자 단말기에는 해당 모듈이 제거되고 인터페이스 코드로 대체된 수정된 본체를 저장하여, 소프트웨어 사용시 사용자 단말과 스마트카드가 코프로세싱(Co-Processing)함으로써, 스마트카드가 사용자 단말기에 체결되는 경우에만 실행가능하게 구현하는 소프트웨어 분리 실행 방법, 장치 및 컴퓨터로 읽을 수 있는 기록매체에 관한 것이다.
일반적으로 소프트웨어는 시디-롬(CD-ROM), 디브이디-롬(DVD-ROM) 등의 매체를 통해 오프라인(Off-line) 상에서 직접 판매되거나, 해당 소프트웨어 회사의 인터넷 사이트를 이용해 소비자가 다운로드를 하는 방식으로 판매가 이루어 진다. 소프트웨어(S/W) 제품을 구입한 사용자가 제품을 설치하고 사용하기 위해서는 소프트웨어 제조 회사에서 시디-롬 등과 함께 제공하는 정품 인증용 시디-키(CD-Key)의 입력을 필요로 한다.
하지만, 정품 인증용 시디-키는 일반 텍스트 형식으로 사용자가 입력을 하도록 노출이 되어 있기 때문에 시디-키와 시디-롬을 그대로 복사하여 제 3 자가 불법적으로 사용하는 사례가 빈번하게 발생하는 문제를 안고 있다. 더욱 이러한 사용자들은 시디-키가 없는 경우라도 불법으로 만들어진 시디-키 생성프로그램을 이용하거나 시디-키 인증프로그램을 크랙킹하는 방법 등을 동원해 소프트웨어의 정품 인증방법을 해킹하고 있으므로, P2P 사이트 등을 통해 불법적인 공유가 이루어져 소프트웨어 저작권보호에 큰 피해를 주고 있다.
시디-롬, 디브이디-롬의 특별한 트랙에 인증 정보를 저장하고 소프트웨어 구동시 해당 인증정보가 없이는 구동되지 않도록 하는, 즉 정품 시디-롬, 디브이디-롬이 사용자 단말기에 삽입되어 있어야만 실행되도록 하는 방법도 사용되고 있으나 본체 소프트웨에서 해당 인증부분을 삭제하는 크랙방법을 통해 쉽게 무력화 되고 있다.
이에 프린트 포트(Printer Port) 나 USB 포트에 별도의 하드웨어 장치를 연결하고 소프트웨어에서 해당 장치의 존재 유무를 확인하거나 해당 장치에 암호화, 복호화용 키값과 알고리즘을 내장하여 실행시점에서 암호된 코드를 해제하는 방식의 소프트웨어 복제 방지 장치도 사용되고 있다. 그러나 실행 시점에 소프트웨어가 결국은 복호화되어 메모리에 로드될 수 밖에 없는 구조적인 문제로 인해 해당 장치 없이 소프트웨어를 사용할 수 있게 하는 해킹사례가 흔히 발생하며 심지어 유명한 소프트웨어 복제방지 기술의 경우 전문기술이 없는 일반인도 해킹을 할 수 있는 자동화된 해킹 도구가 배포되는 사례도 있다. 그 밖에도 가상의 실행환경(Virtual Machine)을 통해 리버스 엔지니어링(Reverse Engineering)을 어렵게하여 소프트웨어의 인증 키 확인 로직을 보호하는 방법이 시도 되었으나 이 또한 해킹 사례 및 자동화된 해킹 도구 배포 사례가 존재한다.
전술한 문제점을 해결하기 위해 본 발명은, 스마트 카드가 사용자 단말기에 체결되는 경우에만 실행가능하게 구현하는 소프트웨어 분리 실행 방법, 장치 및 컴퓨터로 읽을 수 있는 기록매체를 제공하여 불법 복제를 방지하는 데 주된 목적이 있다.
전술한 목적을 달성하기 위해 본 발명은, 소프트웨어의 제어 흐름, 데이터 흐름 및 모듈 구조 중 어느 하나를 알아내는 분석 (Analysis)부; 상기 소프트웨어의 각 모듈 별로 실행 상태 및 속성 정보를 태깅(Tagging)하는 프로파일링(Profiling)부; 프로파일링 된 기능 모듈(Function Module)에 속성 정보와 사용자 피드백에 의한 점수를 부여하는 평가(Assessment)부; 상기 평가부에서 가장 높은 점수를 획득한 모듈들을 소프트웨어의 본체 바디(Body)로부터 분리하는 추출(Exrtaction)부; 및 상기 본체 바디로부터 분리된 모듈과 사용자 단말기용 바이너리 코드를 연결하기 위한 입출력 인터페이싱 코드를 삽입하는 인터페이싱(Interfacing)부를 포함하는 것을 특징으로 하는 소프트웨어 분리 실행 장치를 제공한다.
또한, 본 발명의 다른 목적에 의하면, 소프트웨어의 제어 흐름, 데이터 흐름 및 모듈 구조 중 어느 하나를 알아내는 단계; 상기 소프트웨어의 각 모듈 별로 실행 상태 및 속성 정보를 태깅(Tagging)하는 단계; 프로파일링 된 기능 모듈에 속성 정보와 사용자 피드백에 의한 점수를 부여하는 단계; 상기 평가부에서 가장 높은 점수를 획득한 모듈들을 소프트웨어의 본체 바디(Body)로부터 분리하는 단계; 및 상기 본체 바디로부터 분리된 모듈과 사용자 단말기용 바이너리 코드를 연결하기 위한 입출력 인터페이싱 코드를 삽입하는 단계를 포함하는 것을 특징으로 하는 소프트웨어 분리 실행 방법을 제공한다.
또한, 본 발명의 다른 목적에 의하면, 전술한 소프트웨어 분리 실행 방법의 각 단계를 실행하기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공한다.
이상에서 설명한 바와 같이 본 발명에 의하면, 기존의 소프트웨어 복제 방지 기술들에 비해, 스마트카드라는 물리적으로 안전한 실행환경에서 코드를 보호함으로서 리버스 엔지니어링을 통한 크랙(Crack)을 원천적으로 방지할 수 있는 효과가 있다. 또한, 본 발명에 의하면, 스마트카드와 사용자 단말 간의 클라이언트(Client-Server) 방식의 코프로세싱 기법(Co-Processing Scheme)에서 복제방지 효과가 생기기 때문에, 시스템 아키텍쳐에 종속적인 안티 디버깅(Anti-Debugging) 기법이나, 효과가 불분명하고 복잡한 코드 암복호화 방법에 의존할 필요가 없어지고, 이에 따라 크랙기법과의 소모적인 보안 패치 작업의 수고를 덜 수 있는 효과가 있다. 또한, 본 발명에 의하면, 동글 또는 광미디어의 특수 트랙과의 데이터 통신 보호, 리버스 엔지니어링 툴(Reverse Engineering Tool) 탐지 등을 위해 사용자 단말환경에 부가적인 기능을 설치함으로써, 발생하던 오류의 가능성을 줄일 수 있는 효과가 있다.
도 1은 본 실시예에 따른 소프트웨어 분리 실행 장치를 개략적으로 나타낸 블럭 구성도,
도 2는 본 실시예에 따른 소프트웨어 분리 실행 방법을 설명하기 위한 순서도이다.
이하, 본 발명의 일부 실시예들을 예시적인 도면을 통해 상세하게 설명한다. 각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
또한, 본 발명의 구성 요소를 설명하는 데 있어서, 제 1, 제 2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 어떤 구성 요소가 다른 구성요소에 "연결", "결합" 또는 "접속"된다고 기재된 경우, 그 구성 요소는 그 다른 구성요소에 직접적으로 연결되거나 또는 접속될 수 있지만, 각 구성 요소 사이에 또 다른 구성 요소가 "연결", "결합" 또는 "접속"될 수도 있다고 이해되어야 할 것이다.
도 1은 본 실시예에 따른 소프트웨어 분리 실행 장치를 개략적으로 나타낸 블럭 구성도이다.
본 실시예에 따른 소프트웨어 분리 실행 장치(100)는 분석(Analysis)부(110), 프로파일링(Profiling)부(120), 평가(Assessment)부(130), 추출(Exrtaction)부(140), 인터페이싱(Interfacing)부(150), 변환(Transformation)부(160) 및 검증(Veification)부(170)를 포함한다.
본 실시예에서는 소프트웨어 분리 실행 장치(100)가 분석부(110), 프로파일링부(120), 평가부(130), 추출부(140), 인터페이싱부(150), 변환부(160) 및 검증부(170) 만을 포함하여 구성되는 것으로 기재하고 있으나, 이는 본 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 실시예의 본질적인 특성에서 벗어나지 않는 범위에서 소프트웨어 분리 실행 장치(100)에 포함되는 구성 요소에 대하여 다양하게 수정 및 변형하여 적용 가능할 것이다.
분석부(110)는 오브젝트 코드(Object Code)로 빌드(Build)된 바이너리 파일(Binary File)을 역어셈블(Disassemble)한 상태 또는 소스 파일(Source File) 상태에서, 세만틱(Semantic) 분석 또는 인터프리터(Interpreter)을 통한 요약 실행(인풋 데이터(Input Data)와 제어 흐름(Control Flow)을 어림잡아 실행)을 해보거나(이상 세만틱 분석), 분석 대상 소프트웨어를 소스 상태 또는 바이너리 코드(Binary Code)에서 기능 모듈(Function Module)을 추적(Tracing)하기 위한 추적 코드를 삽입하고 실제 실행해 보면서 로그(Log)를 쌓아서(이상 다이나믹 분석) 실행 흐름(Control), 데이터 흐름(Data Flow), 모듈 구조(Module Structure)를 알아내는 작업을 수행한다. 분석부(110)는 다이나믹 코드 인젝션(Dynamic Code Injection) 또는 source 수정을 통한 인스트루먼테이션(instrumentation), 런타임(runtime) 디버거(Debugger), 가상 머신(Virtual Machine), 실행 상태 예측을 위한 요약 실행 인터프리터 중 적어도 하나 이상의 기술을 활용하여 소프트웨어의 동작 상태를 모니터링 또는 예측하여 분석 한다. 한편, 본 발명의 분석부(110)는 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 계측부(Instrumentation)로 구현될 수 있다. 계측부는 소프트웨어의 바이너리 코드(Binary Code)를 읽어들인 후 펑션 모듈(Function Module)을 추적(Tracing)하기 위한 추적 코드를 삽입하는 기능을 수행하는 것으로 구현될 수 있다.
프로파일링부(120)는 각 모듈 별로 실행 상태 및 속성 정보 태그(Tag)를 생성하는 기능을 수행한다. 한편, 프로파일링부(120)는 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 소프트웨어를 실행하여 추적 로그(Tracing Log) 정보를 생성하며, 소프트웨어의 진행 상태별로 각 로그에 태그(Tag)를 생성하는 기능을 수행하는 것으로 구현될 수 있다.
평가부(130)는 프로파일링 된 기능 모듈에 특정 속성 정보와 사용자 피드백에 근거하여 점수를 부여하는 기능을 수행한다. 평가부(130)는 입출력 다이나믹시티(In/Output Dynamicity) 속성 정보, 특정 진행 상태에 도달하기 위한 필수 요소 유무 속성 정보, 스택 사용량, 메모리 레퍼런스(Memory Reference) 횟수 속성 정보, 아키텍처 특수 명령어(Architecture Specific Instruction) 사용 유무 속성 정보, 사용 빈도 속성 정보, 사용 시점 속성 정보, 실행 부하 속성 정보, 제어 흐름 속성 정보, 모듈내 독립변수 개수 속성 정보 및 분리실행시 실행 지연 시간 속성 정보 중 하나 이상의 속성 정보에 따라 점수를 산출하는 기능을 수행한다. 한편, 평가부(130)는 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 프로파일링 된 펑션 모듈에 특정 속성 정보에 근거하여 산출한 점수를 부여하는 기능을 수행하는 것으로 구현될 수 있다. 또한, 평가부(130)는 입출력 다이나믹시티 속성 정보, 코드 런타임 로드(Code Runtime Load) 속성 정보, 특정 진행 상태에 도달하기 위한 필수 요소 유무 속성 정보, 메모리 레퍼런스 횟수 속성 정보, 아키텍처 특수 명령어 사용 유무 속성 정보 및 사용 빈도 속성 정보 중 하나 이상의 속성 정보에 따라 점수를 산출하는 것으로 구현될 수 있다.
추출부(140)는 평가부에서 가장 높은 점수를 획득한 모듈들을 소프트웨어의 본체 바디(Body)로부터 분리하는 기능을 수행한다. 추출부(140)는 가장 높은 점수를 획득한 모듈들을 소프트웨어의 본체 바디로부터 분리하는 과정에서 아키텍처 특수 명령어 사용 정보 및 시스템 콜(System Call)에 대한 구성요소는 분리하지 않는다. 한편, 추출부(140)는 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 평가부(130)에서 가장 높은 점수를 획득한 펑션 모듈의 바디를 분리하는 기능을 수행하는 것으로 구현될 수 있으며, 바디를 분리하는 과정에서 메모리 레퍼런스, 아키텍처 특수 명령어 사용 정보 및 시스템 콜(System Call)에 대한 구성요소는 분리하지 않는 것으로 구현될 수 있다.
인터페이싱부(150)는 스택 푸쉬/팝(Stack Push/Pop), 레지스터(Register) 변수등 코드 모듈간 입출력을 스마트카드와의 원격 절차 콜(Remote Procedure Call)로 대체한다. 여기서, 사용자 단말기는 소프트웨어를 연산, 제어 및 저장하기 위한 메모리, 프로그램을 실행하여 연산 및 제어하기 위한 마이크로프로세서 등을 구비하고 있는 단말기를 말하는 것이며, 개인용 컴퓨터(PC: Personal Computer), 노트북, 개인휴대용 정보단말기(PDA: Personal Digital Assistant) 및 이동통신 단말기(Mobile Communication Terminal) 등 중 어느 하나일 수 있다. 한편, 본 발명에서의 인터페이싱부(150)는 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 바디가 분리된 펑션 모듈과 사용자 단말기용 바이너리 코드를 연결하기 위한 입출력 인터페이싱 코드를 삽입하는 기능을 수행하는 것으로 구현될 수 있다. 또한, 인터페이싱부(150)는 스택 푸쉬/팝(Stack Push/Pop)을 통한 입출력을 USB 입출력으로 대체하도록 구현될 수 있다.
변환부(160)는 인터페이싱 코드가 삽입된 기능 모듈을 스마트 카드(Smart Card)의 아키텍처에 따라 명령어 설정(Instruction Set)을 변환하는 기능을 수행한다. 여기서, 스마트 카드란 마이크로프로세서, 카드운영체제, 보안 모듈, 메모리 등을 구비함으로써, 특정 업무를 처리할 수 있는 집적회로 칩(IC Chip)을 내장한 플라스틱 형식을 카드를 말한다. 검증부(170)는 변환부에서 변환된 코드를 실행하여 정상 동작 여부를 검증하는 기능을 수행한다.
한편, 소프트웨어 분리 실행 장치(100)는 이종 아키텍처를 가상으로 구동해주는 에뮬레이션부를 추가로 포함할 수 있다.
도 2는 본 실시예에 따른 소프트웨어 분리 실행 방법을 설명하기 위한 순서도이다.
분석부(110)는 소프트웨어의 제어 흐름, 데이터 흐름, 모듈 구조를 분석한다(S210). 한편, 분석부(110)가 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 계측부로 구현되는 경우, 계측부는 소프트웨어의 바이너리 코드(Binary Code)를 읽어들인 후 펑션 모듈(Function Module)을 추적(Tracing)하기 위한 추적 코드를 삽입할 수 있다.
프로파일링부(120)는 소프트웨어의 각 모듈 마다 실행 상태 및 속성 정보 태그(Tag)를 생성한다(S220). 한편, 프로파일링부(120)는 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 소프트웨어를 실행하여 추적 로그(Tracing Log) 정보를 생성하며, 소프트웨어의 진행 상태별로 각 로그에 태그(Tag)를 생성할 수 있다. 여기서, 평가부(130)는 입출력 다이나믹시티(In/Output Dynamicity) 속성 정보, 특정 진행 상태에 도달하기 위한 필수 요소 유무 속성 정보, 스택 사용량, 메모리 레퍼런스(Memory Reference) 횟수 속성 정보, 아키텍처 특수 명령어(Architecture Specific Instruction) 사용 유무 속성 정보, 모듈에서 사용되는 독립변수의 수, 실행 시간, 연산 량 및 사용 빈도 속성 정보 중 하나 이상의 속성 정보에 따라 점수를 산출할 수 있다. 한편, 평가부(130)는 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 입출력 다이나믹시티 속성 정보, 코드 런타임 로드(Code Runtime Load) 속성 정보, 특정 진행 상태에 도달하기 위한 필수 요소 유무 속성 정보, 메모리 레퍼런스 횟수 속성 정보, 아키텍처 특수 명령어 사용 유무 속성 정보 및 사용 빈도 속성 정보 중 하나 이상의 속성 정보에 따라 점수를 산출할 수 있는 것으로 구현될 수 있다.
추출부(140)는 평가부에서 가장 높은 점수를 획득한 모듈을 소프트웨어의 본체 바디로부터 분리한다(S240). 한편, 추출부(140)는 가장 높은 점수를 획득한 모듈을 소프트웨어의 본체 바디로부터 분리하는 과정에서 메모리 레퍼런스, 아키텍처 특수 명령어 사용 정보 및 시스템 콜(System Call)에 대한 구성요소는 분리하지 않는다.
인터페이싱부(150)는 본체 바디로부터 분리된 기능 모듈과 사용자 단말기용 바이너리 코드를 연결하기 위한 입출력 인터페이싱 코드를 삽입한다(S250). 예를 들어서, 인터페이싱부(150)는 스택 푸쉬/팝(Stack Push/Pop), 레지스터 변수등 모듈간 입출력을 원격 절차 콜 형태로 대체한다. 한편, 인터페이싱부(150)는 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 바디가 분리된 펑션 모듈과 사용자 단말기용 바이너리 코드를 연결하기 위한 입출력 인터페이싱 코드를 삽입하는 것으로 구현될 수 있다. 즉, 인터페이싱부(150)는 스택 푸쉬/팝(Stack Push/Pop)을 통한 입출력을 USB 입출력으로 대체할 수 있다.
변환부(160)는 인터페이싱 코드가 삽입된 기능 모듈을 스마트 카드(Smart Card)의 아키텍처에 따라 명령어 설정(Instruction Set)을 변환한다(S260). 검증부(170)는 변환부에서 변환된 코드와 원본 코드를 동시에 실행하여 원본코드의 실행 결과와 비교해 변환된 코드의 정상 동작 여부를 검증하는 한다(S270). 한편, 검증부(170)는 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변환부(160)에서 변환된 코드를 실행하여 정상 동작 여부를 검증하는 것으로 구현될 수 있다.
도 2에서는 소프트웨어 분리 실행 방법이 단계 S210 내지 단계 S270을 순차적으로 실행하는 것으로 기재하고 있으나, 이는 본 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 실시예의 본질적인 특성에서 벗어나지 않는 범위에서 소프트웨어 분리 실행 방법이 도 2에 기재된 순서를 변경하여 실행하거나 단계 S210 내지 단계 S270 중 하나 이상의 단계를 병렬적으로 실행하는 것으로 다양하게 수정 및 변형하여 적용 가능할 것이므로, 도 2는 시계열적인 순서로 한정되는 것은 아니다.
전술한 바와 같이 도 2에 기재된 본 실시예에 따른 소프트웨어 분리 실행 방법은 프로그램으로 구현되고 컴퓨터로 읽을 수 있는 기록매체에 기록될 수 있다.
본 실시예에 따른 소프트웨어 분리 실행 방법을 구현하기 위한 프로그램이 기록되고 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다.
이러한 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어, 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수도 있다.
또한, 본 실시예를 구현하기 위한 기능적인(Functional) 프로그램, 코드 및 코드 세그먼트들은 본 실시예가 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있을 것이다.
이상에서, 본 발명의 실시예를 구성하는 모든 구성 요소들이 하나로 결합되거나 결합되어 동작하는 것으로 설명되었다고 해서, 본 발명이 반드시 이러한 실시예에 한정되는 것은 아니다. 즉, 본 발명의 목적 범위 안에서라면, 그 모든 구성 요소들이 하나 이상으로 선택적으로 결합하여 동작할 수도 있다. 또한, 그 모든 구성 요소들이 각각 하나의 독립적인 하드웨어로 구현될 수 있지만, 각 구성 요소들의 그 일부 또는 전부가 선택적으로 조합되어 하나 또는 복수 개의 하드웨어에서 조합된 일부 또는 전부의 기능을 수행하는 프로그램 모듈을 갖는 컴퓨터 프로그램으로서 구현될 수도 있다. 그 컴퓨터 프로그램을 구성하는 코드들 및 코드 세그먼트들은 본 발명의 기술 분야의 당업자에 의해 용이하게 추론될 수 있을 것이다. 이러한 컴퓨터 프로그램은 컴퓨터가 읽을 수 있는 저장매체(Computer Readable Media)에 저장되어 컴퓨터에 의하여 읽혀지고 실행됨으로써, 본 발명의 실시예를 구현할 수 있다. 컴퓨터 프로그램의 저장매체로서는 자기 기록매체, 광 기록매체, 캐리어 웨이브 매체 등이 포함될 수 있다.
또한, 이상에서 기재된 "포함하다", "구성하다" 또는 "가지다" 등의 용어는, 특별히 반대되는 기재가 없는 한, 해당 구성 요소가 내재될 수 있음을 의미하는 것이므로, 다른 구성 요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있는 것으로 해석되어야 한다. 기술적이거나 과학적인 용어를 포함한 모든 용어들은, 다르게 정의되지 않는 한, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 사전에 정의된 용어와 같이 일반적으로 사용되는 용어들은 관련 기술의 문맥 상의 의미와 일치하는 것으로 해석되어야 하며, 본 발명에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
이상에서 설명한 바와 같이 본 발명은 스마트카드가 사용자 단말기에 체결되는 경우에만 실행가능하도록 하는 다양한 분야에 적용되어, 소프트웨어를 PC와 같은 개방형 컴퓨팅 환경과 스마트 카드와 같은 보호된 컴퓨팅 환경으로 분리 실행할 수 있는 효과를 발생하는 유용한 발명이다.
CROSS-REFERENCE TO RELATED APPLICATION
본 특허출원은 2008년 12월 29일 한국에 출원한 특허출원번호 제 10-2008-0135308 호에 대해 미국 특허법 119(a)조(35 U.S.C § 119(a))에 따라 우선권을 주장하면, 그 모든 내용은 참고문헌으로 본 특허출원에 병합된다. 아울러, 본 특허출원은 미국 이외에 국가에 대해서도 위와 동일한 동일한 이유로 우선권을 주장하면 그 모든 내용은 참고문헌으로 본 특허출원에 병합된다.

Claims (7)

  1. 소프트웨어의 제어 흐름, 데이터 흐름 및 모듈 구조 중 어느 하나를 알아내는 분석 (Analysis)부;
    상기 소프트웨어의 각 모듈 별로 실행 상태 및 속성 정보를 태깅(Tagging)하는 프로파일링(Profiling)부;
    프로파일링 된 기능 모듈(Function Module)에 속성 정보와 사용자 피드백에 의한 점수를 부여하는 평가(Assessment)부;
    상기 평가부에서 가장 높은 점수를 획득한 모듈들을 소프트웨어의 본체 바디(Body)로부터 분리하는 추출(Exrtaction)부; 및
    상기 본체 바디로부터 분리된 모듈과 사용자 단말기용 바이너리 코드를 연결하기 위한 입출력 인터페이싱 코드를 삽입하는 인터페이싱(Interfacing)부
    를 포함하는 것을 특징으로 하는 소프트웨어 분리 실행 장치.
  2. 제 1 항에 있어서,
    상기 인터페이싱 코드가 삽입된 기능 모듈을 스마트 카드(Smart Card)의 아키텍처에 따라 명령어 설정(Instruction Set)을 변환하는 변환(Transformation)부; 및
    이종 아키텍처를 가상으로 구동해주는 에뮬레이션부
    를 추가로 포함하는 것을 특징으로 하는 소프트웨어 분리 실행 장치
  3. 제 1 항에 있어서,
    상기 평가부는,
    입출력 다이나믹시티(In/Output Dynamicity) 속성 정보, 특정 진행 상태에 도달하기 위한 필수 요소 유무 속성 정보, 스택 사용량, 메모리 레퍼런스(Memory Reference) 횟수 속성 정보, 아키텍처 특수 명령어(Architecture Specific Instruction) 사용 유무 속성 정보, 사용 빈도 속성 정보, 사용 시점 속성 정보, 실행 부하 속성 정보, 제어 흐름 속성 정보, 모듈내 독립변수 개수 속성 정보 및 분리실행시 실행 지연 시간 속성 정보 중 하나 이상의 속성 정보에 따라 상기 점수를 산출하는 것을 특징으로 하는 소프트웨어 분리 실행 장치.
  4. 제 1 항에 있어서,
    상기 추출부는,
    상기 본체 바디로부터 상기 가장 높은 점수를 획득한 모듈들을 분리하는 과정에서 아키텍처 특수 명령어 사용 정보 및 시스템 콜(System Call)에 대한 구성요소는 분리하지 않는 것을 특징으로 하는 소프트웨어 분리 실행 장치.
  5. 제 1 항에 있어서,
    상기 소프트웨어는,
    다이나믹 코드 인젝션(Dynamic Code Injection)을 통한 인스트루먼테이션(Instrumentation), 런타임(Runtime) 디버거(Debugger), 가상 머신(Virtual Machine) 및 실행 상태 예측을 위한 요약 실행 인터프리터(Interpreter) 중 적어도 하나 이상의 소프트웨어를 포함하는 것을 특징으로 하는 소프트웨어 분리 실행 장치.
  6. 소프트웨어의 제어 흐름, 데이터 흐름 및 모듈 구조 중 어느 하나를 알아내는 단계;
    상기 소프트웨어의 각 모듈 별로 실행 상태 및 속성 정보를 태깅(Tagging)하는 단계;
    프로파일링 된 기능 모듈에 속성 정보와 사용자 피드백에 의한 점수를 부여하는 단계;
    상기 평가부에서 가장 높은 점수를 획득한 모듈들을 소프트웨어의 본체 바디(Body)로부터 분리하는 단계; 및
    상기 본체 바디로부터 분리된 모듈과 사용자 단말기용 바이너리 코드를 연결하기 위한 입출력 인터페이싱 코드를 삽입하는 단계
    를 포함하는 것을 특징으로 하는 소프트웨어 분리 실행 방법.
  7. 제 6 항에 의한 소프트웨어 분리 실행 방법의 각 단계를 실행하기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
PCT/KR2009/007648 2008-12-29 2009-12-21 소프트웨어 분리 실행 방법, 장치 및 컴퓨터로 읽을 수 있는 기록매체 WO2010077000A2 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
EP09836321A EP2383653A2 (en) 2008-12-29 2009-12-21 Method for separately executing software, apparatus, and computer-readable recording medium
CN2009801533458A CN102272738B (zh) 2008-12-29 2009-12-21 分离地执行软件的方法、装置和计算机可读记录介质
JP2011544360A JP5346386B2 (ja) 2008-12-29 2009-12-21 ソフトウェア分離実行方法、装置、及びコンピュータで読み取り可能な記録媒体
US13/142,601 US9454456B2 (en) 2008-12-29 2009-12-21 Method for separately executing software, apparatus, and computer-readable recording medium

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2008-0135308 2008-12-29
KR1020080135308A KR101049718B1 (ko) 2008-12-29 2008-12-29 소프트웨어 분리 실행 방법, 장치 및 컴퓨터로 읽을 수 있는 기록매체

Publications (2)

Publication Number Publication Date
WO2010077000A2 true WO2010077000A2 (ko) 2010-07-08
WO2010077000A3 WO2010077000A3 (ko) 2010-09-16

Family

ID=42310327

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2009/007648 WO2010077000A2 (ko) 2008-12-29 2009-12-21 소프트웨어 분리 실행 방법, 장치 및 컴퓨터로 읽을 수 있는 기록매체

Country Status (6)

Country Link
US (1) US9454456B2 (ko)
EP (1) EP2383653A2 (ko)
JP (1) JP5346386B2 (ko)
KR (1) KR101049718B1 (ko)
CN (1) CN102272738B (ko)
WO (1) WO2010077000A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014524088A (ja) * 2011-06-30 2014-09-18 オラクル・インターナショナル・コーポレイション セキュアホスト実行アーキテクチャ

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2405958A (en) * 2003-08-20 2005-03-16 Macrovision Europ Ltd Code obfuscation and controlling a processor by emulation
US8752035B2 (en) 2011-05-31 2014-06-10 Microsoft Corporation Transforming dynamic source code based on semantic analysis
US8555250B2 (en) * 2011-05-31 2013-10-08 Microsoft Corporation Static semantic analysis of dynamic languages
US9256401B2 (en) 2011-05-31 2016-02-09 Microsoft Technology Licensing, Llc Editor visualization of symbolic relationships
US8789018B2 (en) 2011-05-31 2014-07-22 Microsoft Corporation Statically derived symbolic references for dynamic languages
US9081588B2 (en) * 2012-01-31 2015-07-14 Mentor Graphics Corporation Execution time profiling for interpreted programming languages
US9542176B2 (en) * 2012-08-20 2017-01-10 Microsoft Technology Licensing, Llc Predicting software build errors
US8954939B2 (en) 2012-12-31 2015-02-10 Microsoft Corporation Extending a development environment
US9239710B2 (en) * 2013-03-15 2016-01-19 ArtinSoft Corporation Programming language transformations with abstract syntax tree extensions
WO2016122336A1 (en) * 2015-01-26 2016-08-04 Nord-Systems Sp. Z O.O. Method of storing and processing data with the use of artificial neural networks
CN106203002B (zh) * 2015-05-06 2019-09-03 朗新科技股份有限公司 软件产品保护方法
US11516234B1 (en) * 2019-07-08 2022-11-29 Cisco Technology, Inc. In-process correlation through class field injection
CN111163066A (zh) * 2019-12-16 2020-05-15 苏州哈度软件有限公司 一种基于云计算的网络安全软件系统
CN114858206A (zh) * 2022-03-01 2022-08-05 中国商用飞机有限责任公司北京民用飞机技术研究中心 航空电机检测方法、装置、计算机设备及存储介质
CN116320720B (zh) * 2023-05-08 2023-09-29 南京芯驰半导体科技有限公司 一种图像处理方法、装置、设备及存储介质

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NO302388B1 (no) * 1995-07-13 1998-02-23 Sigurd Sigbjoernsen Fremgangsmåte og anordning for å beskytte programvare mot bruk uten tillatelse
CA2245822A1 (en) * 1996-02-09 1997-08-14 Integrated Technologies Of America, Inc. Access control/crypto system
US6308270B1 (en) * 1998-02-13 2001-10-23 Schlumberger Technologies, Inc. Validating and certifying execution of a software program with a smart card
JP3449256B2 (ja) 1998-10-29 2003-09-22 日本電気株式会社 クライアント/サーバアプリケーション作成方法及びその装置並びに情報記録媒体
US6823520B1 (en) * 1999-01-22 2004-11-23 Sun Microsystems, Inc. Techniques for implementing security on a small footprint device using a context barrier
US7200842B1 (en) 1999-02-02 2007-04-03 Sun Microsystems, Inc. Object-oriented instruction set for resource-constrained devices
US6892307B1 (en) * 1999-08-05 2005-05-10 Sun Microsystems, Inc. Single sign-on framework with trust-level mapping to authentication requirements
US6609198B1 (en) 1999-08-05 2003-08-19 Sun Microsystems, Inc. Log-on service providing credential level change without loss of session continuity
US6813693B2 (en) * 2000-12-11 2004-11-02 Microsoft Corporation System and method for the discovery and use of repetitively accessed data
US7313814B2 (en) * 2003-04-01 2007-12-25 Microsoft Corporation Scalable, error resilient DRM for scalable media
US7369982B2 (en) * 2003-06-04 2008-05-06 Stmicroelectronics, Inc. Multi-mode smart card emulator and related methods
WO2005076576A2 (en) * 2004-02-03 2005-08-18 Sandisk Secure Content Solutions, Inc. Protection of digital data content
JP4664055B2 (ja) * 2004-12-10 2011-04-06 株式会社エヌ・ティ・ティ・ドコモ プログラム分割装置、プログラム実行装置、プログラム分割方法及びプログラム実行方法
JP4572121B2 (ja) 2005-01-31 2010-10-27 株式会社シーイーシー ソフトウェア開発支援装置およびソフトウェア開発支援用プログラム
CN100461132C (zh) * 2007-03-02 2009-02-11 北京邮电大学 基于源代码静态分析的软件安全代码分析器及其检测方法
US7942325B2 (en) * 2008-01-29 2011-05-17 Research In Motion Limited Optimized smart card driver performance

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014524088A (ja) * 2011-06-30 2014-09-18 オラクル・インターナショナル・コーポレイション セキュアホスト実行アーキテクチャ

Also Published As

Publication number Publication date
CN102272738A (zh) 2011-12-07
CN102272738B (zh) 2013-11-13
EP2383653A2 (en) 2011-11-02
KR101049718B1 (ko) 2011-07-19
JP5346386B2 (ja) 2013-11-20
JP2012514267A (ja) 2012-06-21
US9454456B2 (en) 2016-09-27
WO2010077000A3 (ko) 2010-09-16
US20110271260A1 (en) 2011-11-03
KR20100077385A (ko) 2010-07-08

Similar Documents

Publication Publication Date Title
WO2010077000A2 (ko) 소프트웨어 분리 실행 방법, 장치 및 컴퓨터로 읽을 수 있는 기록매체
EP3807797B1 (en) Pointer authentication and dynamic switching between pointer authentication regimes
US20060253687A1 (en) Overlapped code obfuscation
CN103150507B (zh) 用于检测未知打包器和加密器的系统和方法
CN101477610B (zh) 源码和目标码联合嵌入的软件水印方法
CN105683990A (zh) 用于保护动态库的方法和装置
CN105787305A (zh) 一种抵抗符号执行和污点分析的软件保护方法
US9721120B2 (en) Preventing unauthorized calls to a protected function
WO2006069335A2 (en) Information flow enforcement for risc-style assembly code
CN103065072A (zh) 提高Java软件破解难度的方法及装置、版权验证方法
CN109271789B (zh) 恶意进程检测方法、装置、电子设备及存储介质
US8775826B2 (en) Counteracting memory tracing on computing systems by code obfuscation
WO2016024838A1 (ko) 클라우드 기반의 애플리케이션 보안 서비스 제공 방법 및 시스템
Zhang et al. Rapid Android parser for investigating DEX files (RAPID)
CN107577925A (zh) 基于双重ARM指令虚拟的Android应用程序保护方法
US8176560B2 (en) Evaluation of tamper resistant software system implementations
KR100961146B1 (ko) 악성 스크립트 코드 복호화 방법 및 시스템
Razafindralambo et al. A friendly framework for hidding fault enabled virus for Java based smartcard
Li et al. Chosen-instruction attack against commercial code virtualization obfuscators
Iyer et al. Toward application-aware security and reliability
US20100095376A1 (en) Software watermarking
CN109344577A (zh) 一种art下使用自修改技术进行软件保护的方法
Lackner et al. Countering type confusion and buffer overflow attacks on Java smart cards by data type sensitive obfuscation
CN104680043A (zh) 一种可执行文件的保护方法及装置
JP2009104589A (ja) 情報処理装置及びその方法、プログラム、記録媒体

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 200980153345.8

Country of ref document: CN

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 09836321

Country of ref document: EP

Kind code of ref document: A2

ENP Entry into the national phase

Ref document number: 2011544360

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 13142601

Country of ref document: US

Ref document number: 2009836321

Country of ref document: EP