KR101541603B1 - 콘트롤 플로우 그래프들을 이용하는 프로그램의 표절 판단 방법 및 장치 - Google Patents

콘트롤 플로우 그래프들을 이용하는 프로그램의 표절 판단 방법 및 장치 Download PDF

Info

Publication number
KR101541603B1
KR101541603B1 KR1020130127064A KR20130127064A KR101541603B1 KR 101541603 B1 KR101541603 B1 KR 101541603B1 KR 1020130127064 A KR1020130127064 A KR 1020130127064A KR 20130127064 A KR20130127064 A KR 20130127064A KR 101541603 B1 KR101541603 B1 KR 101541603B1
Authority
KR
South Korea
Prior art keywords
program
nodes
vector
similarity
apis
Prior art date
Application number
KR1020130127064A
Other languages
English (en)
Other versions
KR20150047241A (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 KR1020130127064A priority Critical patent/KR101541603B1/ko
Publication of KR20150047241A publication Critical patent/KR20150047241A/ko
Application granted granted Critical
Publication of KR101541603B1 publication Critical patent/KR101541603B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/16Program or content traceability, e.g. by watermarking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Stored Programmes (AREA)

Abstract

프로그램이 다른 프로그램을 표절하였는지 여부를 판단하기 위한 방법 및 장치가 제공된다. 프로그램의 콘트롤 플로우 그래프들이 생성될 수 있다. 생성된 콘트롤 플로우 그래프들에 기반하여 프로그램의 특징을 나타내는 버스마크가 생성될 수 있다. 버스마크에 기반하여 프로그램의 유사도가 측정될 수 있다. 또한, 프로그램이 다른 프로그램을 표절하였는지 여부를 판단하기 위한 방법은 프로그램이 악성 프로그램인지 여부를 판단하기 위한 방법으로도 이용될 수 있다.

Description

콘트롤 플로우 그래프들을 이용하는 프로그램의 표절 판단 방법 및 장치{METHOD AND APPARATUS FOR DETERMING PLAGIARISM OF PROGRAM USING CONTROL FLOW GRAPH}
기술 분야는 프로그램의 표절 여부를 판단하는 기술에 관한 것으로, 특히 프로그램의 특징 정보를 이용하여 프로그램 및 다른 프로그램의 유사도를 측정하는 방법 및 장치에 관한 것이다.
지적재산권의 보호와 관련하여 소프트웨어의 저작권 문제가 증가하고 있다. 소프트웨어의 저작권의 문제는 소프트웨어는 불법 복제에 의한 배포의 문제 및 소프트웨어 제작에 있어서 프로그램의 표절(plagiarism of program)에 의한 저작권 침해 문제가 있을 수 있다. 불법 소프트웨어를 사용하는 문제는 적발이 용이하나, 프로그램의 표절문제는 프로그램의 표절여부를 탐지하는 것 자체가 용이하지 않다.
프로그램의 표절 탐지 기술은 두 프로그램의 소스 코드들을 비교함으로써 두 프로그램의 소스 코드들 간의 유사성을 계산할 수 있다. 특히, 소스 코드들 간의 유사성을 계산하는 방법은 학생들의 과제물 중에서 표절된 프로그램을 밝혀내는 방법에 많이 이용되고 있을 수 있다.
한국공개특허 제10-2004-0064681호(공개일 2004년 07월 19일)에는 통계적 분석에 의해 프로그램의 표절 여부를 판단하는 발명이 공개되어 있다. 공개 발명은 비교할 프로그램들의 소스를 파싱하여 각 함수별로 수행순서에 따라 키워드를 추출할 수 있다. 공개 발명은 함수들이 순서대로 각함수의 키워드를 하나의 선형순서로 나열하여 선형순서를 생성할 수 있다. 공개 발명은 두개의 프로그램에서 추출된 선형순서를 키워드 유사성 행렬에 따라 국부정렬할 수 있다. 공개 발명은 국부정렬 후 가장 유사한 지역을 중심으로 그 전과 그 후의 선형순서를 각각 재귀적으로 국부정렬할 수 있다. 공개 발명은 국부정렬이 완료된 후 프로그램간의 유사도를 계산할 수 있다. 공개 발명은 통계적 분석에 의해 표절 여부를 판단할 수 있다.
일 실시예는 프로그램의 표절 여부를 판단하는 장치 및 방법을 제공할 수 있다.
일 실시예는 프로그램이 악성 프로그램인지 여부를 판단하는 장치 및 방법을 제공할 수 있다.
일 측면에 있어서, 프로그램의 표절 여부를 판단하는 방법에 있어서, 제1 프로그램 내의 제1 함수들의 호출 관계에 따라 연결된 제1 콘트롤 플로우 그래프들 및 제2 프로그램 내의 제2 함수들의 호출 관계에 따라 연결된 제2 콘트롤 플로우 그래프들을 생성하는 단계, 상기 제1 콘트롤 플로우 그래프들에 기반하여 상기 제1 함수들에서 호출되는 복수의 제1 어플리케이션 프로그램 인터페이스(Application Program Interface; API)들의 호출 순서를 나타내는 제1 버스마크(birthmark) 및 상기 제2 콘트롤 플로우 그래프들에 기반하여 상기 제2 함수들에서 호출되는 복수의 제2 API들의 호출 순서를 나타내는 제2 버스마크를 생성하는 단계, 상기 제1 버스마크 및 제2 버스마크에 기반하여 상기 제1 프로그램 및 상기 제2 프로그램의 유사도를 측정하는 단계 및 상기 측정된 유사도에 기반하여 상기 제2 프로그램이 상기 제1 프로그램을 표절하였는지 여부를 판단하는 단계를 포함하는, 프로그램의 표절 판단 방법이 제공된다.
상기 제1 콘트롤 플로우 그래프들은 상기 제1 프로그램에 대한 정적 분석에 의해 생성될 수 있다.
상기 제1 버스마크는 상기 복수의 제1 API들의 모든 호출 순서를 나타낼 수 있다.
상기 1 버스마크 및 상기 제2 버스마크를 생성하는 단계는 상기 제1 콘트롤 플로우 그래프들의 제1 노드가 복수의 제3 API들을 호출하는 경우, 상기 제1 버스마크를 나타내는 제1 그래프에서 상기 복수의 제3 API들의 각각을 별개의 노드들로 분리할 수 있다.
상기 제1 버스마크 및 상기 제2 버스마크를 생성하는 단계는 상기 복수의 제1 API들을 상기 제1 버스마크를 나타내는 제1 그래프의 복수의 제1 노드들에 각각 설정하고, 상기 복수의 제2 API들을 상기 제2 버스마크를 나타내는 제2 그래프의 복수의 제2 노드들에 각각 설정할 수 있다.
상기 프로그램의 표절 판단 방법은 상기 복수의 제1 노드들 및 상기 복수의 제2 노드들 각각에 노드의 중요도를 나타내는 점수를 부여하는 단계를 더 포함할 수 있다.
상기 유사도를 측정하는 단계는 상기 점수가 부여된 상기 복수의 제1 노드들 및 상기 복수의 제2 노드들에 기반하여 상기 제1 프로그램 및 상기 제2 프로그램의 유사도를 측정할 수 있다.
상기 복수의 제1 노드들 각각에 부여되는 상기 점수는 상기 복수의 제1 노드들 각각에 설정된 API의 호출 빈도를 나타낼 수 있다.
상기 복수의 제1 노드들 각각에 부여되는 상기 점수는 하기 [수학식 1]을 이용하여 계산되고,
Figure 112013096305090-pat00001
t는 임의적 보행자(random walker)가 상기 복수의 제1 노드들 중 시작 노드에서 출발하여 임의적으로 이동한 단계의 개수를 나타내고, A는 상기 복수의 제1 노드들 간의 연결 관계를 나타내는 행렬이고, R(t)는 t 단계에서 상기 임의적 보행자가 상기 복수의 제1 노드들 각각에 도달할 확률을 나타내는 벡터이고, W는 각각의 단계에서 상기 임의적 보행자가 상기 제1 그래프의 에지(edge)를 통해서가 아닌 이동을 함으로써 임의의 노드로 이동할 확률을 나타내는 벡터이고, a는 상기 임의적 보행자가 각각의 단계에서 상기 에지를 통해 이동을 할 확률 및 상기 에지를 통해서가 아닌 이동을 함으로써 임의의 노드로 이동할 확률의 비중을 조절하는 가중치이고, 상기 [수학식 1]은 상기 R(t)가 수렴할 때까지 반복적으로 계산되고, 상기 R(t)가 수렴한 경우, 상기 점수는 상기R(t)의 값일 수 있다.
상기 프로그램의 표절 판단 방법은 상기 점수가 부여된 상기 복수의 제1 노드들에 기반하여 상기 제1 프로그램의 제1 벡터 및 상기 복수의 제2 노드들에 기반하여 상기 제2 프로그램의 제2 벡터를 각각 생성하는 단계를 더 포함할 수 있다.
상기 유사도를 측정하는 단계는 상기 제1 벡터 및 상기 제2 벡터에 기반하여 상기 제1 프로그램 및 상기 제2 프로그램의 유사도를 측정할 수 있다.
상기 유사도는 상기 제1 벡터의 크기, 상기 제2 벡터의 크기 및 상기 제1 벡터 및 상기 제2 벡터 간의 각도의 차이 중 적어도 하나에 기반하여 측정될 수 있다.
상기 유사도는 하기 [수학식 2]에 의해 측정되고,
Figure 112013096305090-pat00002
n은 1 이상의 정수이고, p는 상기 제1 벡터를 나타내고, q는 상기 제2 벡터를 나타내고, pi는 상기 제1 벡터의 i번째의 벡터 성분의 값이고, SIM(p, q)는 상기 측정된 유사도일 수 있다.
상기 판단하는 단계는 상기 측정된 유사도가 소정의 임계값에 비해 더 큰 경우 상기 제2 프로그램이 상기 제1 프로그램을 표절한 것으로 판단할 수 있다.
다른 일 측면에 있어서, 프로그램의 표절 여부를 판단하는 장치에 있어서, 제1 프로그램 내의 제1 함수들의 호출 관계에 따라 연결된 제1 콘트롤 플로우 그래프들 및 제2 프로그램 내의 제2 함수들의 호출 관계에 따라 연결된 제2 콘트롤 플로우 그래프들을 생성하고, 상기 제1 콘트롤 플로우 그래프들에 기반하여 상기 제1 함수들에서 호출되는 복수의 제1 어플리케이션 프로그램 인터페이스(Application Program Interface; API)들의 호출 순서를 나타내는 제1 버스마크(birthmark) 및 상기 제2 콘트롤 플로우 그래프들에 기반하여 상기 제2 함수들에서 호출되는 제2 복수의 API들의 호출 순서를 나타내는 제2 버스마크를 생성하고, 상기 제1 버스마크 및 제2 버스마크에 기반하여 상기 제1 프로그램 및 상기 제2 프로그램의 유사도를 측정하고, 상기 측정된 유사도에 기반하여 상기 제2 프로그램이 상기 제1 프로그램을 표절하였는지 여부를 판단하는 처리부를 포함하는, 프로그램의 표절 판단 장치가 제공된다.
상기 처리부는 상기 제1 콘트롤 플로우 그래프들의 제1 노드가 복수의 제3 API들을 호출하는 경우, 상기 제1 버스마크를 나타내는 제1 그래프에서 상기 복수의 제3 API들의 각각을 별개의 노드들로 분리할 수 있다.
상기 처리부는 상기 복수의 제1 API들을 상기 제1 버스마크를 나타내는 제1 그래프의 복수의 제1 노드들에 각각 설정하고, 상기 제2 복수의 API들을 상기 제2 버스마크를 나타내는 제2 그래프의 복수의 제2 노드들에 각각 설정할 수 있다.
상기 처리부는 상기 복수의 제1 노드들 및 상기 복수의 제2 노드들 각각에 노드의 중요도를 나타내는 점수를 부여할 수 있다.
상기 처리부는 상기 점수가 부여된 상기 복수의 제1 노드들 및 상기 복수의 제2 노드들에 기반하여 상기 제1 프로그램 및 상기 제2 프로그램의 유사도를 측정할 수 있다.
상기 처리부는 상기 점수가 부여된 상기 복수의 제1 노드들에 기반하여 상기 제1 프로그램의 제1 벡터 및 상기 복수의 제2 노드들에 기반하여 상기 제2 프로그램의 제2 벡터를 각각 생성할 수 있다.
상기 처리부는 상기 제1 벡터 및 상기 제2 벡터에 기반하여 상기 제1 프로그램 및 상기 제2 프로그램의 유사도를 측정할 수 있다.
상기 처리부는 소정의 임계값에 비해 상기 측정된 유사도가 더 큰 경우 상기 제2 프로그램이 상기 제1 프로그램을 표절한 것으로 판단할 수 있다.
또 다른 일 측면에 있어서, 프로그램이 악성 프로그램인지 여부를 판단하는 장치에 의해 수행되는, 상기 프로그램 내의 함수들의 호출 관계에 따라 연결된 콘트롤 플로우 그래프들을 생성하는 단계, 상기 콘트롤 플로우 그래프들에 기반하여 상기 함수들에서 호출되는 복수의 어플리케이션 프로그램 인터페이스(Application Program Interface; API)들의 호출 순서를 나타내는 버스마크(birthmark)를 생성하는 단계, 상기 버스마크를 나타내는 그래프의 복수의 노드들 각각에 노드의 중요도를 나타내는 점수를 부여하는 단계 - 상기 복수의 API들은 상기 복수의 노드들에 각각 설정됨 -, 상기 점수가 부여된 상기 복수의 노드들에 기반하여 상기 프로그램의 제1 벡터를 생성하는 단계, 상기 장치에 저장된 하나 이상의 악성 프로그램들의 벡터들 각각과 상기 제1 벡터의 유사도를 측정하는 단계 및 상기 측정된 유사도에 기반하여 상기 프로그램이 악성 프로그램인지 여부를 판단하는 단계를 포함하는 악성 프로그램 판단 방법이 제공된다.
프로그램이 다른 프로그램을 표절했는지 여부를 판단하는 장치 및 방법이 제공된다.
프로그램들의 벡터들을 이용하여 프로그램의 표절 여부를 판단하는 장치 및 방법이 제공된다.
프로그램이 악성 프로그램인지 여부를 판단하는 장치 및 방법이 제공된다.
도 1은 일 예에 따른 프로그램의 표절의 판단 방법의 개념도를 도시한다.
도 2는 일 예에 따른 프로그램의 벡터를 생성하는 개념도를 도시한다.
도 3은 일 실시예에 따른 프로그램의 표절 판단 장치의 구성도를 도시한다.
도 3는 일 실시예에 따른 프로그램의 표절 판단 방법의 흐름도를 도시한다.
도 5는 일 예에 따른 콘트롤 플로우 그래프들을 도시한다.
도 6은 일 예에 따른 버스마크를 도시한다.
도 7은 일 실시예에 따른 프로그램이 악성 프로그램인지 여부를 판단하는 방법을 도시한다.
이하에서, 첨부된 도면을 참조하여 실시예들을 상세하게 설명한다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
실시예에는 다양한 변경이 가해질 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 실시예를 실시 형태에 대해 한정하려는 것이 아니며, 실시예는 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
실시예에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 실시예를 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 실시예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 실시예의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
도 1은 일 예에 따른 프로그램의 표절 여부를 판단하는 방법의 개념도를 도시한다.
제2 프로그램이 제1 프로그램을 표절하였는지 여부는 제1 프로그램 및 제2 프로그램의 유사도를 측정함으로써 판단될 수도 있다.
제1 프로그램 및 제2 프로그램의 유사도는 제1 프로그램의 특징 및 제2 프로그램의 특징을 서로 비교함으로써 측정될 수 있다. 프로그램의 특징은 프로그램의 실행 프로그램으로부터 생성될 수 있다. 프로그램의 특징 정보는 버스마크(birthmark)로 정의될 수 있다.
제1 프로그램의 제1 버스마크 및 제2 프로그램의 제2 버스마크를 기반으로 제1 프로그램 및 제2 프로그램의 유사도가 측정될 수 있다. 측정된 유사도에 따라, 제2 프로그램이 제1 프로그램을 표절하였는지 여부가 판단될 수 있다.
하기의 도 2에서는 유사도를 측정하기 위해 이용되는 벡터들을 생성하는 개념도가 도시된다.
도 2는 일 예에 따른 프로그램의 벡터를 생성하는 개념도를 도시한다.
프로그램의 버스마크로부터 복수의 노드들의 연결 관계가 얻어질 수 있다.
복수의 노드들 각각은 노드의 중요성을 나타내는 점수를 부여받을 수 있다.
노드의 점수는 복수의 노드들의 연결 관계에 기반하여 계산될 수 있다.
점수가 부여된 복수의 노드들에 기반하여 프로그램의 벡터가 생성될 수 있다. 제1 프로그램 및 제2 프로그램의 유사도가 측정되는 경우 제1 프로그램의 제1 벡터 및 제2 프로그램의 제2 벡터가 생성될 수 있다.
유사도는 제1 벡터 및 제2 벡터에 기반하여 측정될 수 있다.
하기에서, 도 3 내지 도 6를 참조하여 프로그램의 표절 여부를 판단하는 방법에 대해 상세히 설명된다.
도 3는 일 실시예에 따른 프로그램의 표절 판단 장치의 구성도를 도시한다.
표절 판단 장치(300)(이하, 표절 판단 장치(300)는 장치(300)로 약술된다)는 처리부(310), 저장부(320) 및 입출력부(330)를 포함할 수 있다.
처리부(310)는 장치(300)의 동작을 전반적으로 제어할 수 있다.
저장부(320)는 프로그램의 표절 여부를 판단하기 위한 데이터를 저장할 수 있다. 예를 들어, 저장부(320)는 복수의 프로그램을 저장할 수 있다. 표절의 대상이 되는 제1 프로그램 및 표절인지 여부가 판단되는 제2 프로그램은 저장된 복수의 프로그램 중 하나 일 수 있다.
저장부(320)는 처리부(310)가 생성한 프로그램의 표절 여부를 판단하기 위한 중간 처리의 결과 및 처리부(310)가 판단한 프로그램의 표절 여부 중 적어도 하나를 저장할 수 있다.
입출력부(330)는 인터페이스를 통해 다른 장치와 연결되어, 다른 장치의 입력을 수신할 수 있다.
입출력부(330)는 처리부(310)가 처리한 결과를 출력할 수 있다.
처리부(310), 저장부(320) 및 입출력부(330)에 대해, 하기에서 도 4 내지 도 6을 참조하여 상세히 설명된다.
도 4는 일 실시예에 따른 프로그램의 표절 여부를 판단하는 방법의 흐름도를 도시한다.
단계(410)에서, 처리부(310)는 프로그램을 분석함으로써 프로그램에 포함된 함수의 콘트롤 플로우 그래프를 생성할 수 있다. 콘트롤 플로우 그래프는 프로그램의 가능한 모든 수행 흐름을 나타낸 그래프일 수 있다.
프로그램에 포함된 함수가 복수인 경우, 생성되는 콘트롤 플로우 그래프는 복수일 수 있다.
프로그램의 분석은 정적 분석(static analysis)일 수 있다. 정적 분석은 프로그램을 실행하지 않고 프로그램을 분석하는 방법일 수 있다. 또한, 정적 분석은 프로그램의 통사 구조(syntactic structure) 를 필요로 할 수 있다.
예를 들어, 프로그램을 정적 프로그램 분석하기 위해 아이디에이프로 디스에이셈블러(IDApro disassembler)가 이용될 수 있다.
콘트롤 플로우 그래프들은 프로그램 내의 함수들의 호출 관계에 따라 연결될 수 있다.
처리부(310)는 표절의 대상이 되는 제1 프로그램 및 표절인지 여부가 판단되는 제2 프로그램의 콘트롤 플로우 그래프들을 각각 생성할 수 있다.
예를 들어, 처리부(310)는 제1 프로그램 내의 제1 함수들의 호출 관계에 따라 연결된 제1 콘트롤 플로우 그래프들 및 제2 프로그램 내의 제2 함수들의 호출 관계에 따라 연결된 제2 콘트롤 플로우 그래프들을 생성할 수 있다.
콘트롤 플로우 그래프들에 대해, 하기에서 도 4를 참조하여 상세히 설명된다.
단계(420)에서, 처리부(310)는 생성된 콘트롤 플로우 그래프들에 기반하여 프로그램 내의 함수들에서 호출되는 복수의 어플리케이션 프로그램 인터페이스(Application Program Interface; API)들의 호출 순서를 나타내는 버스마크를 생성할 수 있다.
버스마크는 프로그램의 특징 정보로 이용될 수 있다. 프로그램의 복수의 API들에 대한 호출 순서는 버스마크를 통해 나타날 수 있다.
예를 들어, 처리부(310)는 단계(410)에서 생성된 제1 콘트롤 플로우 그래프들에 기반하여 제1 함수들에서 호출되는 복수의 제1 API들의 호출 순서를 나타내는 제1 버스마크를 생성할 수 있다. 또한, 처리부(310)는 단계(410)에서 생성된 제2 콘트롤 플로우 그래프들에 기반하여 제2 함수들에서 호출되는 복수의 제2 API들의 호출 순서를 나타내는 제2 버스마크를 생성할 수 있다.
처리부(310)는 복수의 API들을 버스마크를 나타내는 그래프의 복수의 노드들에 각각 설정할 수 있다. 다시 말하자면, 처리부(310)는 그래프의 하나의 노드에 하나의 API가 서로 대응하도록 설정할 수 있다. 노드는 설정된 API로 라벨링(labeling)될 수 있다.
예를 들어, 처리부(310)는 복수의 제1 API들을 제1 버스마크를 나타내는 제1 그래프의 복수의 제1 노드들에 각각 설정할 수 있다. 또한, 처리부(310)는 복수의 제2 API들을 제2 버스마크를 나타내는 제2 그래프의 복수의 제2 노드들에 각각 설정할 수 있다.
버스마크에 대해, 하기에서 도 5를 참조하여 상세히 설명된다.
단계(430)에서, 처리부(310)는 복수의 노드들 각각에 노드의 중요도를 나타내는 점수를 계산할 수 있다. 처리부(310)는 계산된 점수를 해당 노드에 부여할 수 있다.
복수의 노드들 각각에 부여되는 점수는 복수의 노드들 각각에 설정된 API의 호출 빈도를 나타낼 수 있다. 즉, 노드의 점수가 높을수록 노드에 설정된 API의 호출 빈도가 높음을 의미할 수 있다.
일 실시예에 따르면, 프로그램의 표절 여부를 판단하는 방법은 복수의 API들 간의 호출 순서 및 복수의 API들의 호출 빈도에 기반하여 프로그램의 표정 여부를 판단할 수 있다. 예를 들어, 복수의 API들 간의 호출 순서는 콘트롤 플로우 그래프들을 통해 나타날 수 있다. 복수의 API들의 호출 빈도는 복수의 노드들에 부여된 점수들을 통해 나타날 수 있다.
처리부(310)는 알더블유알(Random walker with Restart; RWR)의 알고리즘을 이용하여 점수를 계산할 수 있다.
복수의 노드들 각각에 부여되는 점수는 하기의 [수학식 3]을 이용하여 계산될 수 있다.
Figure 112013096305090-pat00003
t는 임의적 보행자(random walker)가 복수의 노드들 중 시작 노드에서 출발하여 임의적으로 이동한 단계의 개수를 나타낼 수 있다. A는 복수의 노드들 간의 연결 관계를 나타내는 행렬일 수 있다. R(t)는 t 단계에서 임의적 보행자가 복수의 노드들 각각에 도달할 확률을 나타내는 벡터일 수 있다. W는 각각의 단계에서 임의적 보행자가 제1 그래프의 에지(edge)를 통해서가 아닌 이동을 함으로써 임의의 노드로 이동할 확률을 나타내는 벡터일 수 있다. a는 임의적 보행자가 각각의 단계에서 에지를 통해 이동할 확률 및 상기 에지를 통해서가 아닌 이동을 함으로써 임의의 노드로 이동할 확률의 비중을 조절하는 가중치일 수 있다.
[수학식 3]은 R(t)가 수렴할 때까지 반복적으로 계산될 수 있다. R(t)가 수렴한 경우, 점수는 R(t)의 값일 수 있다.
n이 복수의 노드들의 개수를 나타내는 경우, R(0)의 각 노드의 점수는 1/n으로 초기 설정될 수 있다.
임의적 보행자가 제1 그래프의 에지를 통해서가 아닌 이동을 함으로써 임의의 노드로 이동하는 경우는, 임의적 보행자가 노드들 간에 점프(jump)를 한 것으로 이해될 수 있다.
[수학식 3]에서 재시작 벡터(restart vector)인, W는 수정될 수 있다.
예를 들어, W는 티에프-아이디에프(Term Frequency-Inverse Document Frequency; TF-IDF)의 개념에 따라 수정될 수 있다.
처리부(310)는 표절의 판단 대상이 되는 프로그램이 속한 카테고리 내의 프로그램들에서의 각각의 API가 호출되는 프로그램의 빈도(Program Frequency; PF)를 나타내는 PF(API) 값을 계산할 수 있다.
처리부(310)는 프로그램 내에서 호출되는 각각의 API의 호출 빈도(Call Frequency; CF)를 나타내는 CF(API) 값을 계산할 수 있다.
w(API)가 W의 하나의 성분 값인 경우, w(API)는 하기의 [수학식 4]에 의해 계산될 수 있다.
Figure 112013096305090-pat00004
[수학식 4]을 이용하여 계산된 점수는 프로그램의 유일한 특징을 나타낼 수 있다. 예를 들어, 다른 API들의 노드들에 비해 높은 점수가 계산된 노드의 API는 다른 프로그램들과는 다른 특별한 특징을 가지는 API일 수 있다.
W의 모든 성분의 값이, [수학식 4]에 의해 계산될 수 있다.
단계(440)에서, 처리부(310)는 점수가 부여된 복수의 노드들에 기반하여 프로그램의 벡터를 생성할 수 있다.
예를 들어, 처리부(310)는 점수가 부여된 복수의 제1 노드들에 기반하여 제1 프로그램의 제1 벡터를 생성할 수 있다. 또한, 처리부(310)는 복수의 제2 노드들에 기반하여 제2 프로그램의 제2 벡터를 생성할 수 있다.
일 실시예에 따르면, 복수의 노드들의 개수가 5개인 경우, 생성되는 벡터는 (a, b, c, d, e)의 형태일 수 있다. 즉, 생성되는 벡터는 5차원일 수 있다.
생성되는 벡터의 각 성분의 값은 해당 성분에 대응하는 노드에 부여된 점수일 수 있다.
일 실시예에 따르면, 제1 프로그램 및 제2 프로그램의 유사도를 측정하기 위해 생성되는 제1 프로그램의 제1 벡터 및 제2 프로그램의 제2 벡터는 각각의 그래프의 복수의 노드들의 개수와 차원이 상이할 수 있다.
예를 들어, 제1 프로그램의 제1 그래프의 복수의 제1 노드들이 "a", "b" 및 "c"이고, 제2 프로그램의 제2 그래프의 복수의 제2 노드들이 "a", "b" 및 "d"인 경우, 생성되는 제1 벡터 및 제2 벡터는 (a, b, c, d)의 4차원 벡터일 수 있다. 즉, 복수의 제1 노드들 및 복수의 제2 노드들 간의 공통의 노드들의 개수 및 공통되지 않는 노드들의 개수의 합이 생성되는 제1 벡터 및 제2 벡터의 차원일 수 있다.
벡터의 성분에 대한 점수가 존재하지 않는 경우에는, 벡터의 해당 성분의 값은 0일 수 있다.
단계(450)에서, 처리부(310)는 제1 프로그램의 제1 버스마크 및 제2 프로그램의 제2 버스마크에 기반하여 제1 프로그램 및 제2 프로그램의 유사도를 측정할 수 있다.
처리부(310)는 점수가 부여된 복수의 제1 노드들 및 복수의 제2 노드들에 기반하여 제1 프로그램 및 제2 프로그램의 유사도를 측정할 수 있다.
처리부(310)는 단계(350)에서 생성된 제1 벡터 및 제2 벡터에 기반하여 제1 프로그램 및 제2 프로그램의 유사도를 측정할 수 있다.
유사도는 제1 벡터의 크기, 제2 벡터의 크기 및 제1 벡터 및 제2 벡터 간의 각도의 차이 중 적어도 하나에 기반하여 측정될 수 있다.
유사도는 하기의 [수학식 5]에 의해 측정될 수 있다.
Figure 112013096305090-pat00005
n은 1 이상의 정수일 수 있다. n은 제1 벡터 및 제2 벡터의 차원을 나타낼 수 있다. p는 제1 벡터를 나타낼 수 있다. q는 제2 벡터를 나타낼 수 있다. pi는 제1 벡터의 i번째의 벡터 성분의 값일 수 있다. qi는 제2 벡터의 i번째의 벡터 성분의 값일 수 있다 SIM(p, q)는 측정된 유사도일 수 있다.
단계(460)에서, 처리부(310)는 측정된 유사도에 기반하여 제2 프로그램이 제1 프로그램을 표절하였는지 여부를 판단할 수 있다.
처리부(310)는 측정된 유사도가 소정의 임계값에 비해 더 큰 경우 제2 프로그램이 제1 프로그램을 표절한 것으로 판단할 수 있다. 예를 들어, 임계 값이 E인 경우, 측정된 유사도가 0이상이고, E미만인 경우, 처리부(310)는 제2 프로그램이 제1 프로그램을 표절하지 않은 것으로 판단할 수 있다.
도 5는 일 예에 따른 콘트롤 플로우 그래프들을 도시한다.
도 4에서 전술된 콘트롤 플로우 그래프들이 도 5를 참조하여 설명된다.
처리부(310)는 프로그램이 복수의 함수들을 포함하는 경우 복수의 콘트롤 플로우 그래프들(510 내지 530)을 생성할 수 있다.
메인 함수에 대한 콘트롤 플로우 그래프(510)는 함수 f 및 함수 g를 호출할 수 있다. 메인 함수의 콘트롤 플로우 그래프(510)의 제1 노드(512)는 복수의 API들을 포함할 수 있다.
앞서 도 1 내지 도 4을 참조하여 설명된 기술적 내용들이 그대로 적용될 수 있으므로, 보다 상세한 설명은 이하 생략하기로 한다.
도 6은 일 예에 따른 버스마크를 도시한다.
도 4에서 전술된 버스마크가 도 5를 참조하여 설명된다.
예를 들어, 처리부(310)는 도 4에서 생성된 콘트롤 플로우 그래프들(510 내지 530)을 이용하여 프로그램의 버스마크(600)를 나타내는 그래프를 생성할 수 있다.
버스마크(600) 및 버스마크(600)를 나타내는 그래프는 동일할 수 있다.
버스마크(600)를 나타내는 그래프의 노드들(610)은 함수 f의 콘트롤 플로우 그래프(520)에 기반하여 생성될 수 있다. 또한, 버스마크(600)를 나타내는 그래프의 노드들(620)은 함수 g의 콘트롤 플로우 그래프(630)에 기반하여 생성될 수 있다.
처리부(310)는 콘트롤 플로우 그래프들(510 내지 530)의 제1 노드(512)가 복수의 API들을 호출하는 경우, 버스마크(600)를 나타내는 그래프에서 복수의 API들의 각각을 별개의 노드들로 분리할 수 있다.
예를 들어, 제1 노드(512)가 "call(f)", "ArcTo" 및 "GetDC"의 세개의 API들을 호출하는 경우, 버스마크(600)를 나타내는 그래프에서 세개의 API들은 노드들(620, 622 및 624)로 각각 분리될 수 있다.
버스마크(600)는 프로그램의 함수들에서 호출되는 복수의 API들의 모든 호출 순서를 나타낼 수 있다. 따라서, 버스마크(600)를 나타내는 그래프의 복수의 노드들은 복수의 API들에 전부 대응할 수 있다.
앞서 도 1 내지 도 6을 참조하여 설명된 기술적 내용들이 그대로 적용될 수 있으므로, 보다 상세한 설명은 이하 생략하기로 한다.
도 7은 일 실시예에 따른 프로그램이 악성 프로그램인지 여부를 판단하는 방법을 도시한다.
일 실시예에 따르면, 프로그램의 표절 여부를 판단하는 방법은 프로그램이 악성 프로그램인지 여부를 판단하는 방법으로 이용될 수 있다. 악성 프로그램의 특징과 악성 프로그램인지 여부를 판단하려는 프로그램의 특징이 유사한 경우, 프로그램은 악성 프로그램으로 판단될 수 있다.
프로그램이 악성 프로그램인지 여부를 판단하는 방법은 하기의 단계들(710 내지 760)을 포함할 수 있다.
단계(710)에서, 처리부(310)는 프로그램 내의 함수들의 호출 관계에 따라 연결된 콘트롤 플로우 그래프들(500)을 생성할 수 있다.
단계(720)에서, 처리부(310)는 생성된 콘트롤 플로우 그래프들(500)에 기반하여 함수들에서 호출되는 복수의 API들의 호출 순서를 나타내는 버스마크(600)를 생성할 수 있다.
단계(730)에서, 처리부(310)는 버스마크(600)를 나타내는 그래프의 복수의 노드들 각각에 노드의 중요도를 나타내는 점수를 부여할 수 있다.
복수의 API들은 복수의 노드들에 각각 설정될 수 있다.
단계(740)에서, 처리부(310)는 점수가 부여된 복수의 노드들에 기반하여 프로그램의 제1 벡터를 생성할 수 있다.
단계(750)에서, 처리부(310)는 전술된 저장부(320)에 저장된 하나 이상의 악성 프로그램들의 벡터들 각각과 제1 벡터의 유사도를 측정할 수 있다.
저장부(320)는 하나 이상의 알려진 악성 프로그램들에 대한 벡터들을 저장할 수 있다.
단계(760)에서, 처리부(310)는 측정된 유사도에 기반하여 프로그램이 악성 프로그램인지 여부를 판단할 수 있다.
앞서 도 1 내지 도 6을 참조하여 설명된 기술적 내용들이 그대로 적용될 수 있으므로, 보다 상세한 설명은 이하 생략하기로 한다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
300: 표절 판단 장치
310: 처리부
320: 저장부
330: 입출력부

Claims (15)

  1. 프로그램의 표절 여부를 판단하는 장치에 의해 수행되는 프로그램의 표절 여부를 판단하는 방법에 있어서,
    제1 프로그램 내의 제1 함수들의 호출 관계에 따라 연결된 제1 콘트롤 플로우 그래프들 및 제2 프로그램 내의 제2 함수들의 호출 관계에 따라 연결된 제2 콘트롤 플로우 그래프들을 생성하는 단계;
    상기 제1 콘트롤 플로우 그래프들에 기반하여 상기 제1 함수들에서 호출되는 복수의 제1 어플리케이션 프로그램 인터페이스(Application Program Interface; API)들의 호출 순서를 나타내는 제1 버스마크(birthmark) 및 상기 제2 콘트롤 플로우 그래프들에 기반하여 상기 제2 함수들에서 호출되는 복수의 제2 API들의 호출 순서를 나타내는 제2 버스마크를 생성하는 단계;
    상기 제1 버스마크 및 제2 버스마크에 기반하여 상기 제1 프로그램 및 상기 제2 프로그램의 유사도를 측정하는 단계; 및
    상기 측정된 유사도에 기반하여 상기 제2 프로그램이 상기 제1 프로그램을 표절하였는지 여부를 판단하는 단계
    를 포함하고,
    상기 1 버스마크 및 상기 제2 버스마크를 생성하는 단계는 상기 제1 콘트롤 플로우 그래프들의 제1 노드가 복수의 제3 API들을 호출하는 경우, 상기 제1 버스마크를 나타내는 제1 그래프에서 상기 복수의 제3 API들의 각각을 별개의 노드들로 분리하는, 프로그램의 표절 판단 방법.
  2. 제1 항에 있어서,
    상기 제1 콘트롤 플로우 그래프들은 상기 제1 프로그램에 대한 정적 분석에 의해 생성되는, 프로그램의 표절 판단 방법.
  3. 제1항에 있어서,
    상기 제1 버스마크는 상기 복수의 제1 API들의 모든 호출 순서를 나타내는, 프로그램의 표절 판단 방법.
  4. 삭제
  5. 제1항에 있어서,
    상기 제1 버스마크 및 상기 제2 버스마크를 생성하는 단계는 상기 복수의 제1 API들을 상기 제1 버스마크를 나타내는 제1 그래프의 복수의 제1 노드들에 각각 설정하고, 상기 복수의 제2 API들을 상기 제2 버스마크를 나타내는 제2 그래프의 복수의 제2 노드들에 각각 설정하는, 프로그램의 표절 판단 방법.
  6. 제5항에 있어서,
    상기 복수의 제1 노드들 및 상기 복수의 제2 노드들 각각에 노드의 중요도를 나타내는 점수를 부여하는 단계
    를 더 포함하고,
    상기 유사도를 측정하는 단계는 상기 점수가 부여된 상기 복수의 제1 노드들 및 상기 복수의 제2 노드들에 기반하여 상기 제1 프로그램 및 상기 제2 프로그램의 유사도를 측정하는, 프로그램의 표절 판단 방법.
  7. 제6항에 있어서,
    상기 복수의 제1 노드들 각각에 부여되는 상기 점수는 상기 복수의 제1 노드들 각각에 설정된 API의 호출 빈도를 나타내는, 프로그램의 표절 판단 방법.
  8. 제6항에 있어서,
    상기 복수의 제1 노드들 각각에 부여되는 상기 점수는 하기 [수학식 1]을 이용하여 계산되고,
    [수학식 1]
    Figure 112013096305090-pat00006

    t는 임의적 보행자(random walker)가 상기 복수의 제1 노드들 중 시작 노드에서 출발하여 임의적으로 이동한 단계의 개수를 나타내고, A는 상기 복수의 제1 노드들 간의 연결 관계를 나타내는 행렬이고, R(t)는 t 단계에서 상기 임의적 보행자가 상기 복수의 제1 노드들 각각에 도달할 확률을 나타내는 벡터이고, W는 각각의 단계에서 상기 임의적 보행자가 상기 제1 그래프의 에지(edge)를 통해서가 아닌 이동을 함으로써 임의의 노드로 이동할 확률을 나타내는 벡터이고, a는 상기 임의적 보행자가 각각의 단계에서 상기 에지를 통해 이동을 할 확률 및 상기 에지를 통해서가 아닌 이동을 함으로써 임의의 노드로 이동할 확률의 비중을 조절하는 가중치이고,
    상기 [수학식 1]은 상기 R(t)가 수렴할 때까지 반복적으로 계산되고,
    상기 R(t)가 수렴한 경우, 상기 점수는 상기 R(t)의 값인, 프로그램의 표절 판단 방법.
  9. 제6항에 있어서,
    상기 점수가 부여된 상기 복수의 제1 노드들에 기반하여 상기 제1 프로그램의 제1 벡터 및 상기 복수의 제2 노드들에 기반하여 상기 제2 프로그램의 제2 벡터를 각각 생성하는 단계
    를 더 포함하고,
    상기 유사도를 측정하는 단계는 상기 제1 벡터 및 상기 제2 벡터에 기반하여 상기 제1 프로그램 및 상기 제2 프로그램의 유사도를 측정하는, 프로그램의 표절 판단 방법.
  10. 제9항에 있어서,
    상기 유사도는 상기 제1 벡터의 크기, 상기 제2 벡터의 크기 및 상기 제1 벡터 및 상기 제2 벡터 간의 각도의 차이 중 적어도 하나에 기반하여 측정되는, 프로그램의 표절 판단 방법.
  11. 제9항에 있어서,
    상기 유사도는 하기 [수학식 2]에 의해 측정되고,
    [수학식 2]
    Figure 112015020360438-pat00007

    n은 1 이상의 정수이고, p는 상기 제1 벡터를 나타내고, q는 상기 제2 벡터를 나타내고, pi는 상기 제1 벡터의 i번째의 벡터 성분의 값이고, qi는 상기 제2 벡터의 i번째의 벡터 성분의 값이고, SIM(p, q)는 상기 측정된 유사도인, 프로그램의 표절 판단 방법.
  12. 제1항에 있어서,
    상기 판단하는 단계는 상기 측정된 유사도가 소정의 임계값에 비해 더 큰 경우 상기 제2 프로그램이 상기 제1 프로그램을 표절한 것으로 판단하는, 프로그램의 표절 판단 방법.
  13. 제1항 내지 제3항 및 제5항 내지 제12항 중 어느 한 항의 방법을 수행하는 프로그램을 수록한 컴퓨터 판독 가능 기록 매체.
  14. 프로그램의 표절 여부를 판단하는 장치에 있어서,
    제1 프로그램 내의 제1 함수들의 호출 관계에 따라 연결된 제1 콘트롤 플로우 그래프들 및 제2 프로그램 내의 제2 함수들의 호출 관계에 따라 연결된 제2 콘트롤 플로우 그래프들을 생성하고, 상기 제1 콘트롤 플로우 그래프들에 기반하여 상기 제1 함수들에서 호출되는 복수의 제1 어플리케이션 프로그램 인터페이스(Application Program Interface; API)들의 호출 순서를 나타내는 제1 버스마크(birthmark) 및 상기 제2 콘트롤 플로우 그래프들에 기반하여 상기 제2 함수들에서 호출되는 제2 복수의 API들의 호출 순서를 나타내는 제2 버스마크를 생성하고, 상기 제1 버스마크 및 제2 버스마크에 기반하여 상기 제1 프로그램 및 상기 제2 프로그램의 유사도를 측정하고, 상기 측정된 유사도에 기반하여 상기 제2 프로그램이 상기 제1 프로그램을 표절하였는지 여부를 판단하는 처리부
    를 포함하고,
    상기 처리부는 상기 제1 콘트롤 플로우 그래프들의 제1 노드가 복수의 제3 API들을 호출하는 경우, 상기 제1 버스마크를 나타내는 제1 그래프에서 상기 복수의 제3 API들의 각각을 별개의 노드들로 분리하는, 프로그램의 표절 판단 장치.
  15. 프로그램이 악성 프로그램인지 여부를 판단하는 장치에 의해 수행되는,
    상기 프로그램 내의 함수들의 호출 관계에 따라 연결된 콘트롤 플로우 그래프들을 생성하는 단계;
    상기 콘트롤 플로우 그래프들에 기반하여 상기 함수들에서 호출되는 복수의 어플리케이션 프로그램 인터페이스(Application Program Interface; API)들의 호출 순서를 나타내는 버스마크(birthmark)를 생성하는 단계;
    상기 버스마크를 나타내는 그래프의 복수의 노드들 각각에 노드의 중요도를 나타내는 점수를 부여하는 단계 - 상기 복수의 API들은 상기 복수의 노드들에 각각 설정됨 -;
    상기 점수가 부여된 상기 복수의 노드들에 기반하여 상기 프로그램의 제1 벡터를 생성하는 단계;
    상기 장치에 저장된 하나 이상의 악성 프로그램들의 벡터들 각각과 상기 제1 벡터의 유사도를 측정하는 단계; 및
    상기 측정된 유사도에 기반하여 상기 프로그램이 악성 프로그램인지 여부를 판단하는 단계
    를 포함하는 악성 프로그램 판단 방법.
KR1020130127064A 2013-10-24 2013-10-24 콘트롤 플로우 그래프들을 이용하는 프로그램의 표절 판단 방법 및 장치 KR101541603B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020130127064A KR101541603B1 (ko) 2013-10-24 2013-10-24 콘트롤 플로우 그래프들을 이용하는 프로그램의 표절 판단 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130127064A KR101541603B1 (ko) 2013-10-24 2013-10-24 콘트롤 플로우 그래프들을 이용하는 프로그램의 표절 판단 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20150047241A KR20150047241A (ko) 2015-05-04
KR101541603B1 true KR101541603B1 (ko) 2015-08-03

Family

ID=53386328

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130127064A KR101541603B1 (ko) 2013-10-24 2013-10-24 콘트롤 플로우 그래프들을 이용하는 프로그램의 표절 판단 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101541603B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190052447A (ko) 2017-11-08 2019-05-16 한국전력공사 Cfg를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 장치 및 그 방법

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107229563B (zh) * 2016-03-25 2020-07-10 中国科学院信息工程研究所 一种跨架构的二进制程序漏洞函数关联方法
KR101869026B1 (ko) * 2016-08-16 2018-06-20 단국대학교 산학협력단 소프트웨어 클러스터링 방법 및 장치
CN110598408B (zh) * 2019-08-23 2021-03-26 华中科技大学 一种基于函数层编码的App克隆检测方法及系统
US20230306112A1 (en) * 2020-11-19 2023-09-28 Foundation Of Soongsil University-Industry Cooperation Apparatus and method for detection and classification of malicious codes based on adjacency matrix

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
박희완 외 , 정보과학회논문지 , 컴퓨팅의 실제 및 레터 / V.14 NO.9, 2008년*

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190052447A (ko) 2017-11-08 2019-05-16 한국전력공사 Cfg를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 장치 및 그 방법

Also Published As

Publication number Publication date
KR20150047241A (ko) 2015-05-04

Similar Documents

Publication Publication Date Title
TWI515598B (zh) 產生純化惡意程式的方法、偵測惡意程式之方法及其系統
US9621571B2 (en) Apparatus and method for searching for similar malicious code based on malicious code feature information
KR101541603B1 (ko) 콘트롤 플로우 그래프들을 이용하는 프로그램의 표절 판단 방법 및 장치
US8533831B2 (en) Systems and methods for alternating malware classifiers in an attempt to frustrate brute-force malware testing
KR101631242B1 (ko) 잠재 디리클레 할당을 이용한 악성 트래픽의 시그니처의 자동화된 식별 방법 및 장치
US20160065613A1 (en) System and method for detecting malicious code based on web
US20160063244A1 (en) Method and system for recognizing advertisement plug-ins
US20180060580A1 (en) Training a machine learning model for container file analysis
US10380154B2 (en) Information retrieval using structured resources for paraphrase resolution
US9471790B2 (en) Remediation of security vulnerabilities in computer software
KR102006242B1 (ko) 바이너리 파일에 기초하여 오픈소스 소프트웨어 패키지를 식별하는 방법 및 시스템
US10614312B2 (en) Method and apparatus for determining signature actor and identifying video based on probability of appearance of signature actor
Nagano et al. Static analysis with paragraph vector for malware detection
KR102151318B1 (ko) 이종 정보 네트워크 기반 악성 코드 탐지 방법 및 장치
US20180203983A1 (en) Code Identification
CN110162729B (zh) 建立浏览器指纹以及识别浏览器类型的方法、装置
KR101628602B1 (ko) 프로그램의 유사도를 판단하기 위한 유사도 판단 방법 및 유사도 판단 장치
KR101706827B1 (ko) 개체 간 사회 관계 추출 장치 및 방법
Fukuda et al. A dynamic birthmark from analyzing operand stack runtime behavior to detect copied software
CN107704732B (zh) 一种用于生成作品指纹的方法与设备
KR102434899B1 (ko) 악성코드 탐지모델 학습방법 및 악성코드 탐지방법
US10373060B2 (en) Answer scoring by using structured resources to generate paraphrases
Kim et al. A static birthmark of windows binary executables based on strings
KR102046249B1 (ko) 머신러닝 기반 악성코드 탐지를 위한 특성선정 방법 및 이를 수행하기 위한 기록매체 및 장치
CN112883372A (zh) 跨站脚本攻击检测方法和装置

Legal Events

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

Payment date: 20180702

Year of fee payment: 4