KR101628602B1 - 프로그램의 유사도를 판단하기 위한 유사도 판단 방법 및 유사도 판단 장치 - Google Patents

프로그램의 유사도를 판단하기 위한 유사도 판단 방법 및 유사도 판단 장치 Download PDF

Info

Publication number
KR101628602B1
KR101628602B1 KR1020150006985A KR20150006985A KR101628602B1 KR 101628602 B1 KR101628602 B1 KR 101628602B1 KR 1020150006985 A KR1020150006985 A KR 1020150006985A KR 20150006985 A KR20150006985 A KR 20150006985A KR 101628602 B1 KR101628602 B1 KR 101628602B1
Authority
KR
South Korea
Prior art keywords
node
function
similarity
call
determining
Prior art date
Application number
KR1020150006985A
Other languages
English (en)
Inventor
김상욱
채동규
조성제
Original Assignee
한양대학교 산학협력단
단국대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한양대학교 산학협력단, 단국대학교 산학협력단 filed Critical 한양대학교 산학협력단
Priority to KR1020150006985A priority Critical patent/KR101628602B1/ko
Application granted granted Critical
Publication of KR101628602B1 publication Critical patent/KR101628602B1/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/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)

Abstract

유사도 판단 방법 및 유사도 판단 장치에 관한 것이다.
유사도 판단 방법은 대상 프로그램의 호출 관계에 따른 호출 그래프를 생성하고, 생성된 호출 그래프를 통해 각 노드의 권위점수를 결정한 후, 대상 프로그램의 권위점수와 비교 프로그램의 권위점수를 비교하여 프로그램 간의 유사도를 판단하는 방법 및 장치를 제공할 수 있다.

Description

프로그램의 유사도를 판단하기 위한 유사도 판단 방법 및 유사도 판단 장치{SIMILARITY JUDGE METHOD AND APPRATUS FOR JUDGING SIMILARITY OF PROGRAM}
아래의 설명은 프로그램의 유사도를 판단하기 위한 유사도 판단 방법 및 유사도 판단 장치에 관한 것으로 구체적으로는 프로그램을 구성하는 API 함수와 관련된 호출 그래프 및 API 함수에 대한 권위 점수를 이용하여 프로그램의 유사도를 분석하기 위한 방법에 관한 것이다.
종래의 프로그램 표절 탐지 기술은 서로 다른 프로그램 간의 소스 코드를 비교하여 소스 코드에 따른 서로 다른 프로그램 간의 유사성을 계산한다. 이후, 프로그램 표절 탐지 기술은 계산된 서로 다른 프로그램 간의 유사성을 기반으로 프로그램의 표절 여부를 판단하였다. 프로그램 표절 탐지 기술은 프로그램의 소스 코드를 이용함에 따라 프로그램의 흐름에 따른 보다 정확한 표절 여부를 판단한다.
그러나, 프로그램 표절 탐지 기술은 프로그램에 대한 소스 코드가 확보가 반드시 이루어져야 한다. 다시 말해, 프로그램 표절 탐지 기술은 유사성을 비교하고자 하는 대상 프로그램 및 비교 프로그램에 대한 각각의 소스 코드가 확보되지 않으며, 이에 따른 표절 여부를 확인할 수가 없다.
최근에는 소스 코드에 대한 확보와 관련된 문제점을 해결하기 위해 소스 코드를 대신하여, 실행 프로그램에 대한 버스마크를 통해 프로그램의 유사성을 비교하는 유사성 분석 기술이 개발되었다. 구체적으로, 프로그램은 개발자 또는 프로그램의 성향에 따라 다른 프로그램과는 구별되는 고유한 특징 정보를 포함하고 있다. 그리고, 유사성 분석 기술은 프로그램 도용 분석을 위해 프로그램에 포함된 고유한 특징 정보를 추출하는 버스마크를 이용하여 프로그램의 특징 정보를 추출한다. 이 후, 유사성 분석 기술은 추출된 프로그램의 버스마크를 이용하여 프로그램 간의 유사도를 비교함으로써, 프로그램 사이의 도용 관계를 판단한다.
여기서, 유사성 분석 기술은 프로그램 내에 포함된 함수들 주로 API 함수를 버스마크로 사용한다. API 함수는 운영체제가 제공하는 리소스들을 프로그램이 사용할 수 있게 해주는 수단으로서 프로그램의 본래 기능을 유지할 수 있기 때문이다. 또한, API 함수는 현재 사용 중인 API 함수 이외에 다른 함수로 대체하기가 매우 어려우므로 버스마크로 쓰기에 적합하기 때문이다.
그러나, 유사성 분석 기술은 버스마크를 추출하기 위한 기준에 따라 서로 다른 버스마크를 추출하기 때문에 API 함수에 대한 종합적인 정보를 버스마크에 반영하지 못했다. 다시 말해, 유사성 분석 기술 A는 API 함수의 호출 빈도를 버스마크로 삼았고, 유사성 분석 기술 B는 API 함수의 호출 순서를 버스마크로 삼았다. 결국, 서로 다른 기준을 통해 추출된 버스마크는 프로그램 간의 유사성을 판단하기 위한 조건으로써, 정확도가 떨어지는 문제가 발생한다.
따라서, API 함수와 관련된 호출 순서와 호출 빈도가 모두 고려된 버스마크를 생성하고, 이를 통해 프로그램의 유사성을 분석할 수 있는 방법이 필요하다.
본 발명은 실행 중인 대상 프로그램에 포함된 함수의 호출 관계를 추출하여 호출 관계를 기반으로 프로그램의 호출 그래프를 생성하는 방법을 제공할 수 있다.
또한, 본 발명은 상기 생성된 호출 그래프를 구성하는 각 노드에 대한 권위 점수를 결정하고, 결정된 권위 점수를 이용하여 대상 프로그램과 비교 프로그램 간의 유사도를 분석하는 방법을 제공할 수 있다.
또한, 본 발명은 각 노드에 대한 권위 점수를 결정함에 있어, 호출 순서 및 호출 빈도를 고려하여 권위 점수를 생성하는 방법을 제공할 수 있다.
일실시예에 따른 유사도 판단 방법은 대상 프로그램을 구성하는 함수에 대한 호출 관계를 추출하는 단계; 상기 추출된 호출 관계를 기반으로 호출 그래프를 생성하는 단계; 상기 생성된 호출 그래프를 구성하는 각 노드의 권위 점수를 결정하는 단계; 및 상기 생성된 권위 점수를 이용하여 비교 프로그램과의 유사도를 판단하는 단계를 포함할 수 있다.
일실시예에 따른 호출 관계를 추출하는 단계는 상기 대상 프로그램이 실행됨에 따라 호출되는 함수에 포함된 서브 루틴 함수 및 사용자 정의 함수 간의 호출 관계를 추출할 수 있다.
일실시예에 따른 호출 관계는 상기 함수에 포함된 서브 루틴 함수 및 사용자 정의 함수 간의 호출에 따른 방향성을 갖는 엣지로 표현되며, 상기 엣지가 나타내는 방향에 따라 호출 또는 피호출 관계를 나타낼 수 있다.
일실시예에 따른 호출 관계를 추출하는 단계는 상기 호출 관계에 따라 함수에 포함된 서브 루틴 함수 및 사용자 정의 함수의 속성을 구분하기 위한 식별 정보를 추출할 수 있다.
일실시예에 따른 호출 그래프를 생성하는 단계는 상기 호출 관계에 따라 추출된 식별 정보를 이용하여 상기 서브 루틴 함수의 속성으로 라벨링된 호출 그래프를 생성할 수 있다.
일실시예에 따른 호출 그래프는 상기 함수에 포함된 서브 루틴 함수 및 사용자 정의 함수를 노드로 표현하고, 상기 호출 관계에 따라 노드에 형성된 엣지가 나타내는 방향을 통해 각각의 노드에 대한 호출 횟수 및 호출 순서를 나타낼 수 있다.
일실시예에 따른 권위 점수를 결정하는 단계는 상기 호출 그래프를 통해 라벨링된 서브 루틴 함수의 개수에 대응하여 호출 그래프를 구성하는 각 노드에 대한 권위 점수를 결정할 수 있다.
일실시예에 따른 권위 점수를 결정하는 단계는 상기 호출 그래프를 구성하는 하나의 노드를 선택하고, 상기 선택된 노드에 형성된 엣지에 따라 피호출 대상의 노드가 존재하는지에 대한 확률을 기반으로 상기 선택된 노드에 대한 권위 점수를 결정할 수 있다.
일실시예에 따른 권위 점수를 결정하는 단계는 상기 선택된 노드에 형성된 엣지 이외에 상기 호출 그래프를 구성하는 임의의 노드를 통해 피호출 대상의 노드로 이동하는지에 대한 확률을 기반으로 상기 선택된 노드에 대한 권위 점수를 결정할 수 있다.
일실시예에 따른 권위 점수를 결정하는 단계는 상기 호출 그래프를 구성하는 각 노드에 형성된 엣지의 개수에 따라 상기 노드에 대한 가중치를 증가하여 권위 점수를 결정할 수 있다.
일실시예에 따른 권위 점수를 결정하는 단계는 상기 호출 그래프를 구성하는 노드와 엣지로 연결된 다른 노드가 서브 루틴 함수에 해당하는 경우, 상기 노드에 대한 가중치를 증가하여 권리 점수를 결정할 수 있다.
일실시예에 따른 유사도를 판단하는 단계는 상기 생성된 대상 프로그램의 권위 점수에 대한 벡터 및 비교 프로그램의 권위 점수에 대한 벡터를 비교하여 프로그램 도용과 관련된 유사도를 판단할 수 있다.
본 발명의 일실시예에 의하면 유사도 판단 방법은 프로그램에 포함된 함수의 호출 순서 및 호출 빈도를 고려한 권위 점수를 생성함으로써, 프로그램을 구성하는 함수의 권위 점수에 대한 탄력성과 신뢰성을 동시에 만족할 수 있다.
본 발명의 일실시예에 의하면 유사도 판단 방법은 동적으로 함수의 권위 점수를 생성하고, 이에 따른 벡터로 표현함으로써, 대상 프로그램과 비교 프로그램 간의 유사도를 판단하기 위한 판단 시간을 단축시킬 수 있다.
도 1은 일실시예에 따른 대상 프로그램과 비교 프로그램 간의 유사도를 판단하기 위한 전체 구성도를 도시한 도면이다.
도 2는 일실시예에 따른 대상 프로그램을 구성하는 함수에 대한 호출 관계를 설명하기 위한 도면이다.
도 3은 일실시예에 따른 호출 관계를 기반으로 생성된 호출 그래프를 설명하기 위한 도면이다.
도 4는 일실시예에 따른 호출 그래프를 구성하는 각 노드의 권위 점수를 결정하는 과정을 설명하기 위한 도면이다.
도 5는 일실시예에 따른 대상 프로그램과 비교 프로그램 간의 권위 점수를 통해 유사도를 판단하는 과정을 설명하기 위한 도면이다.
도 6은 일실시예에 따른 유사도 판단 방법을 설명하기 위한 순서도이다.
이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 일실시예에 따른 대상 프로그램과 비교 프로그램 간의 유사도를 판단하기 위한 전체 구성도를 도시한 도면이다.
도 1을 참고하면, 유사도 판단 방법은 대상 프로그램(101)과 비교 프로그램(103) 간의 표절 여부를 판단하기 위하여 유사도를 판단하기 위한 방법일 수 있다. 이를 위해 유사도 판단 방법은 대상 프로그램(101)과 비교 프로그램(103) 간에 유사도를 판단할 수 있는 유사도 판단 장치(105)를 통해 수행될 수 있다. 일례로, 유사도 판단 장치(105)는 대상 프로그램과 비교 프로그램 간의 유사도에 대한 판단 기능, 연산 기능을 수행할 수 있는 컴퓨터, 서버 등으로 구현될 수 있으며 프로세서를 통해 수행될 수 있다.
구체적으로, 유사도 판단 장치(105)는 대상 프로그램(101)에 대한 유사도를 판단하기 위해, 대상 프로그램(101)에 대한 버스마크(102)를 추출할 수 있다. 여기서, 버스마크(102)는 대상 프로그램(101)을 구성하는 함수들을 기반으로 대상 프로그램(101)을 구분하기 위한 특징적인 정보를 의미할 수 있다. 일례로, 버스마크(102)는 프로그램 분석을 통해 다른 프로그램과 구별될 수 있는 고유한 특성을 나타낼 수 있으며, 사람으로 표현하자면 사람의 손가락에 있는 지문 또는 사람의 눈과 관련된 홍체 등으로 비유될 수 있다.
다시 말해, 유사도 판단 장치(105)는 대상 프로그램(101)에 대한 표절 여부를 판단하기 위해 대상 프로그램(101)에 대한 고유한 특성을 나타내는 버스마크(102)를 추출할 수 있다. 이 때, 유사도 판단 장치(105)는 대상 프로그램(101)의 실행 파일을 기반으로 버스마크(102)를 추출할 수 있다. 유사도 판단 장치(105)는 대상 프로그램(101)의 실행 파일을 통해 직접적으로 대상 프로그램(101)을 실행함으로써, 실행 중에 나타나는 정보에 따라 대상 프로그램(101)의 고유한 특성을 나타내는 버스마크(102)를 추출할 수 있다. 결국, 유사도 판단 장치(105)는 동적으로 대상 프로그램(101)에 대한 버스마크(102)를 추출할 수 있다.
유사도 판단 장치(105)는 버스마크(102)를 추출하기 위해 대상 프로그램(101)의 수행 흐름을 따른 함수를 이용할 수 있다. 유사도 판단 장치(105)는 대상 프로그램(101) 내에서 동작하기 위해 수행 흐름에 따른 연결 동작을 제공하는 함수를 이용할 수 있다. 여기서, 함수는 대상 프로그램(101)을 구성하는 서브 루틴 함수(API: Application Programming Interface) 또는 사용자 정의 함수를 포함할 수 있다.
그리고, 유사도 판단 장치(105)는 대상 프로그램(101)의 수행 흐름에 따른 함수에 대한 호출 관계를 추출할 수 있다. 즉, 유사도 판단 장치(105)는 대상 프로그램(101)이 실행되는 동안 수행 흐름에 따라 호출되는 서브 루틴 함수 또는 사용자 정의 함수들의 호출 관계를 추출할 수 있다. 일례로, 유사도 판단 장치(105)는 windows PE(portable executable) 포맷 형태의 대상 프로그램(101)이 실행됨에 따라 대상 프로그램(101)을 구성하는 함수간의 호출 관계를 추출할 수 있다.
호출 관계는 함수에 포함된 서브 루틴 함수 및 사용자 정의 함수 간의 호출에 따른 방향성을 갖는 엣지(간선)으로 표현되며, 엣지가 나타내는 방향에 따라 호출 또는 피호출 관계를 나타낼 수 있다. 그리고, 유사도 판단 장치(105)는 호출 관계를 기반으로 함수에 대한 호출 그래프를 생성할 수 있다.
호출 그래프는 서브 루틴 함수 또는 사용자 정의 함수를 각각의 노드로 표현하며, 각각의 노드를 엣지로 연결할 수 있다. 이 때, 호출 그래프는 호출 관계를 기반으로 엣지를 통해 호출 함수 또는 피호출 함수로 호출 방향을 나타낼 수 있다. 그리고, 엣지는 함수에 대한 호출 횟수에 따라 가중치를 포함할 수 있으며, 호출 횟수가 많을수록 높은 가중치를 나타낼 수 있다.
이후, 유사도 판단 장치(105)는 호출 그래프를 기반으로 각각의 노드에 대한 권위 점수를 결정할 수 있다. 여기서, 권위 점수는 호출 그래프를 구성하는 노드 즉, 해당 함수에 대하여 대상 프로그램(101)에서 차지하는 중요도를 나타낼 수 있다. 또한, 권위 점수는 호출 그래프의 구조적인 특징을 정확하게 표현할 수 있는 하나의 n차원 벡터로 생성될 수 있다. 일례로, 유사도 판단 장치(105)는 호출 그래프를 구성하는 각 노드의 권위 점수를 결정할 수 있는 RWR(Random Walk With Restart) 알고리즘을 이용하여 권위 점수와 관련된 하나의 n차원 벡터를 생성할 수 있다.
그리고, 권위 점수는 최종적으로 대상 프로그램(101)에 대한 표절 여부를 판단할 수 있는 버스마크(102)로 활용될 수 있다. 즉, 유사도 판단 장치(105)는 대상 프로그램(101)에 대한 권위 점수를 통해 버스마크(102)를 생성할 수 있다. 그리고, 유사도 판단 장치(105)는 생성된 대상 프로그램(101)의 버스마크(102)와 유사도를 비교하고자 하는 비교 프로그램(103)의 버스마크(104) 간의 유사도를 비교함으로써, 프로그램 간의 유사도를 판단할 수 있다. 버스마크(102), (104) 간의 유사도는 대상 프로그램(101)과 비교 프로그램(103) 사이의 도용 관계를 판단할 수 있는 근거로 활용될 수 있다.
결국, 유사도 판단 장치(105)는 대상 프로그램(101)을 구성하는 함수에 대한 호출 횟수 및 호출 빈도를 고려하며 버스마크(102)에 대한 탄력성과 신뢰성을 만족할 수 있는 유사도 판단 방법을 수행할 수 있다. 또한, 유사도 판단 장치(105)는 이를 위해 동적 권위 점수 벡터와 관련된 버스마크(DAAV: Dynamic API Authority Score Vector)를 추출함에 따라 보다 신속하게 프로그램에 대한 유사도 판단을 수행할 수 있다.
도 2는 일실시예에 따른 대상 프로그램을 구성하는 함수에 대한 호출 관계를 설명하기 위한 도면이다.
도 2를 참고하면, 유사도 판단 장치는 대상 프로그램의 실행 파일을 통해 실행됨에 따른 함수에 대한 호출 관계를 추출할 수 있다. 구체적으로, 유사도 판단 장치는 대상 프로그램에 대한 호출 횟수와 호출 빈도를 고려하기 위하여 함수들 간의 호출 및 피호출 관계를 나타내는 호출 관계를 추출할 수 있다.
이 때, 유사도 판단 장치는 대상 프로그램의 실행 파일을 이용하여 대상 프로그램을 실행 시키면서 실행 중에 나타나는 서브 루틴 함수와 사용자 정의 함수 간의 호출 및 피호출 관계를 추출할 수 있다. 상세하게, 유사도 판단 장치는 대상 프로그램이 실행되고, 실행 중 서브 루틴 함수 또는 사용자 정의 함수가 호출되는 시점을 추출할 수 있다. 그리고, 유사도 판단 장치는 함수가 호출되는 시점에 따른 함수를 호출하는 호출 함수와 호출 함수가 내부적으로 호출하는 피호출 함수에 대한 호출 관계를 추출할 수 있다. 이 때, 피호출 함수는 호출 함수의 동작에 따라 상이하게 추출될 수 있다. 또한, 피호출 함수는 대상 프로그램의 수행 흐름에 따라 파생되는 함수가 존재할 수 있다.
일례로, 대상 프로그램을 구성하는 서브 루틴 함수 A는 대상 프로그램의 수행 흐름에 대응하여 서브 루틴 함수 B와 서브 루틴 함수 C를 호출 할 수 있다. 여기서, 서브 루틴 함수 A는 호출 함수이고, 서브 루틴 함수 B와 C는 피호출 함수로써, 호출 관계를 형성할 수 있다. 그리고, 서브 루틴 함수 B는 대상 프로그램의 수행 흐름에 따라 사용자 정의 함수 A와 서브 루틴 함수 C를 호출함에 따라 또 다른 호출 관계가 형성될 수 있다.
그리고, 유사도 판단 장치는 호출 관계에 따른 각각의 함수에 대한 정보를 추출할 수 있다. 여기서, 함수에 대한 정보는 각 함수의 명칭, 서브 루틴 함수 또는 사용자 정의 함수에 따른 함수 형태 등을 포함할 수 있다. 추후, 유사도 판단 장치는 호출 그래프 생성시, 호출 관계를 통해 추출된 정보를 이용하여 서브 루틴 함수에 대한 라벨링을 수행할 수 있다.
결국, 유사도 판단 장치는 대상 프로그램에 대한 수행 흐름에 따라 default 값을 나타내는 함수를 확인할 때까지 함수 간의 호출 또는 피호출을 나타내는 호출 관계를 추출할 수 있다.
일례로, 유사도 판단 장치는 대상 프로그램의 수행 흐름에 따라 string 함수(201)가 호출 동작을 수행하는 시점을 기준으로 string 함수(201)와 이로부터 호출되는 user func 함수(203)에 대한 방향성(202)과 RET 함수(204)에 대한 방향성(202)을 엣지로 나타내는 호출 관계를 추출할 수 있다.
또한, 유사도 판단 장치는 서브 루틴 함수와 서브 루틴 함수 간의 호출 관계, 서브 루틴 함수와 사용자 정의 함수 간의 호출 관계 또는 사용자 정의 함수와 사용자 정의 함수 간의 호출 관계를 추출할 수 있다.
도 3은 일실시예에 따른 호출 관계를 기반으로 생성된 호출 그래프를 설명하기 위한 도면이다.
도 3을 참고하면, 유사도 판단 장치는 함수 간의 호출 관계를 기반으로 대상 프로그램에 대한 구조적인 특징을 효과적으로 표현할 수 있는 호출 그래프(300)를 생성할 수 있다. 구체적으로, 호출 그래프(300)는 대상 프로그램을 구성하는 모든 서브 루틴 함수, 사용자 정의 함수 간의 호출 관계를 나타낼 수 있으며, (N, E)에 대한 조건을 만족할 수 있다.
여기서, N은 노드의 집합하며, 각각의 노드 n ∈ N은 대상 프로그램을 구성하는 서브 루틴 함수와 사용자 정의 함수에 대응될 수 있다. 또한, E ∈ N * N은 엣지의 집합이며, 각각의 엣지 n1 -> n2 ∈ E는 n1과 n2의 호출 관계에 대응하며, n2는 n1에 호출되는 함수일 수 있다. 그리고, 엣지에 부여되는 가중치는 함수 호출의 반복 횟수를 의미할 수 있다.
그리고, 유사도 판단 장치는 각각의 함수를 노드로 표현하며, 노드 간의 엣지를 통해 호출 그래프의 엣지를 형성할 수 있다. 즉, 유사도 판단 장치는 호출한 함수에서 호출된 함수의 형태로 호출 그래프를 생성할 수 있다. 그리고, 유사도 판단 장치는 특정 노드에 대하여 여러 개의 엣지가 형성되면 이를 엣지의 가중치로 표현할 수 있다.
결국, 유사도 판단 장치는 대상 프로그램이 실행됨에 따른 함수 간의 호출 관계를 추출하고, 호출 관계에 따라 호출 그래프를 생성함으로써, 버스마크 생성시, 서브 루틴 함수에 대한 호출 횟수와 호출 빈도를 반영할 수 있다. 다시 말해, 유사도 판단 장치는 대상 프로그램을 구성하는 함수에 대응하여 호출 그래프(300)의 각 노드로 형성하며, 노드 간의 엣지를 통해 함수에 대한 호출 횟수 및 호출 순서를 표현할 수 있다. 그리고, 유사도 판단 장치는 호출 그래프(300)를 통해 엣지를 많이 받은 노드에 대하여 복수의 함수로부터 호출된 경우로 호출 빈도가 높은 것으로 판단할 수 있으며, 엣지의 방향성에 따라 노드 간의 호출 순서로 판단할 수 있다. 따라서, 호출 그래프(300)는 서브 루틴 함수에 대한 frequency information 및 sequence information을 모두 포함할 수 있다.
일례로, 호출 그래프(300)를 구성하는 임의의 노드(301)는 서브 루틴 함수를 나타내는 노드(302, 303, 305, 306) 및 사용자 정의 함수를 나타내는 노드(304, 307)간의 호출 관계를 형성할 수 있다. 이 때, 서브 루틴 함수를 나타내는 노드(302, 303, 305, 306)는 호출 관계에 따라 추출된 정보를 기반으로 라벨링될 수 있다. 여기서, 라벨링은 서브 루틴 함수에 대한 이름을 의미할 수 있다. 반면, 사용자 정의 함수를 나타내는 노드(304, 307)는 별도의 라벨링을 수행하지 않는다. 또한, 사용자 정의 함수를 나타내는 노드(307)는 6개의 엣지가 형성되어 있음에 따라 호출 빈도가 높은 노드로 해석되며, 이에 따라 권위점수가 높게 결정될 수 있다. 반면, 서브 루틴 함수를 나타내는 노드(303)은 1개의 엣지가 형성되어 있음에 따라 호출 빈도가 낮은 노드로 해석되며, 이에 따라 권위점수가 낮게 결정될 수 있다. 결국, 유사도 판단 장치는 노드에 대한 호출 빈도를 고려하여 권위점수를 결정할 수 있다.
그리고, 호출 그래프(300)는 사용자 정의 함수를 나타내는 노드(301)를 기점으로 엣지의 방향성에 따라 서브 루틴 함수를 나타내는 노드(303), 사용자 정의 함수를 나타내는 노드(307) 순으로 호출 순서가 형성되었음 확인할 수 있으며, 노드가 호출되는 순서에 따라 권위점수가 상이하게 결정될 수 있다.
이후, 유사도 판단 장치는 호출 그래프(300)를 통해 노드 간에 형성된 호출 빈도 및 호출 순서를 기반으로 대상 프로그램에 대한 고유한 식별 정보로써, 버스마크를 생성할 수 있다. 여기서, 버스마크는 아래의 조건을 만족하는 n차원의 벡터를 의미할 수 있다.
여기서 n은 대상 프로그램이 실행되면서 호출한 서브 루틴 함수의 종류에 따른 개수를 의미하며, n차원에 따른 각 차원의 값은 서브 루틴 함수가 대상 프로그램에서 차지하는 중요도에 따른 권위 점수를 나타내며, 본 발명에서 제안하는 버스마크를 의미할 수 있다. 각 노드에 대한 권위 점수를 결정하는 자세한 구성은 도 4 를 통해 자세히 설명하도록 한다.
도 4는 일실시예에 따른 호출 그래프를 구성하는 각 노드의 권위 점수를 결정하는 과정을 설명하기 위한 도면이다.
도 4를 참고하면, 유사도 판단 장치는 호출 그래프를 구성하는 임의의 노드를 기점으로 엣지를 통해 다른 노드로 호출 관계가 형성되는지 여부에 대한 확률을 이용하여 각 노드의 권위 점수를 결정할 수 있다. 다시 말해, 유사도 판단 장치는 호출 관계에 따른 엣지를 통해 노드와 노드 간의 단계적으로 연결 관계가 형성되었는지를 확률로 나타낼 수 있다.
일례로, 유사도 판단 장치는 사용자 정의 함수를 나타내는 노드(401)을 기점으로 엣지를 통해 연결된 서브 루틴 함수를 나타내는 노드(402, 403, 404)와 연결 관계가 형성될 수 있다. 여기서, 유사도 판단 장치는 노드(401)에서 노드(402, 403, 404)로 이동하는 것에 대한 제1 단계로 표현될 수 있다. 이후, 유사도 판단 장치는 노드(404)에서 노드(405)로 이동하는 것에 대하여 제2 단계로 표현될 수 있으며, 단계적으로 연결관계가 형성될수록 권위점수가 높게 결정될 수 있다.
유사도 판단 장치는 RWR 알고리즘을 통해 호출 그래프를 구성하는 임의의 노드를 기점으로 random walk가 각 단계에 따라 엣지를 통해 다른 노드와의 호출 관계가 형성되었는지를 확률에 따른 권위 점수를 결정할 수 있다. 또한, 각 노드가 차지하는 확률은 호출 그래프의 구조적인 특징에 따라 결정됨으로써, 구조적으로 중요한 위치에 있는 노드일수록 권위 점수가 높을 수 있다.
여기서, RWR 알고리즘은 수학식 1과 같이 표현될 수 있다.
Figure 112015003991619-pat00001
A는 호출 그래프를 구성하는 각 노드의 호출 관계를 나타낸 행렬로, 행렬의 원소 Ai,j는 노드 i에서 노드 j로의 연결이 존재하지 않을 경우, ‘0’, 존재하는 경우, ‘1/노드 i의 out link의 수’로 정의될 수 있다. 그리고, ∂는 random walk가 다음 단계에서 엣지를 따라 이동하 확률과 임의의 서브 루틴 함수로 이동할 확률의 비중을 조절하는 가중치일 수 있다.
w는 random walk가 엣지와 관계없이 임의의 서브 루틴 함수를 나타내는 노드로 이동할 때, 각 서브 루틴 함수를 나타내는 노드로 할 확률을 나타낸 restart 벡터를 의미할 수 있다. 일례로, 유사도 판단 장치는 서브 루틴 함수를 나타내는 노드(406)와 엣지를 통해 연결 관계를 나타내는 노드(407)로 이동함에 있어, 노드(406)뿐만 아니라, 노드(407)와 연결된 노드(408), (409)를 통해서도 이동될 수 있는 확률을 나타낼 수 있다. 그리고, 유사도 판단 장치는 임의의 서브 루틴 함수를 나타내는 노드에 대한 이동 확률에 대한 권위점수를 결정할 수 있다.
마지막으로 R(t)는 t단계에서 random walk가 각 노드에 도달할 확률을 나타내는 벡터를 의미할 수 있다. 여기서, 단계는 임의의 노드에서 엣지로 연결된 다음 노드로 이동하는 것에 대하여 단계로 표현될 수 있으며, t 단계는 엣지로 연결된 노드와 노드 간의 이동에 따른 t횟수에 따른 단계가 표현될 수 있다. 그리고, RWR 알고리즘은 R(t)가 수렴될 때까지 반복하여 수행될 수 있다. 결국, R(t)는 호출 그래프의 노드의 수만큼의 차원을 갖는 벡터로 표현되며, 각 차원의 값은 해당 노드가 갖는 도달 확률이며, 이 확률에는 호출 그래프 내에서 각 노드가 갖는 중요성을 나타낼 수 있다.
유사도 판단 장치는 호출 그래프의 노드의 수를 n, 엣지의 수를 e라 할 때 O(n+e) 의 시간 복잡도를 가지므로 수백만 개의 노드와 엣지들을 가진 호출 그래프에서도 비교적 빠른 시간 안에 수행이 가능할 수 있다.
도 5는 일실시예에 따른 대상 프로그램과 비교 프로그램 간의 권위 점수를 통해 유사도를 판단하는 과정을 설명하기 위한 도면이다.
도 5를 참고하면, 유사도 판단 장치는 대상 프로그램(501)의 권위점수와 비교 프로그램(502)의 권위점수를 비교하여 프로그램 간의 유사도를 평가할 수 있다. 여기서, 대상 프로그램(501)과 비교 프로그램(502)는 상술된 유사도 판단 방법에 따라 각각의 호출 그래프가 생성되며, 이에 따른 각각의 권위 점수가 생성될 수 있다. 여기서, 대상 프로그램(501)과 비교 프로그램(502)은 프로그램의 유사도와 별개로 서브 루틴 함수를 사용할 수 있다. 여기서, 서브 루틴 함수는 프로그램 또는 애플리케이션이 운영체제에 특정 처리를 수행하기 위해 호출할 수 있는 함수의 집합을 의미할 수 있다.
다시 말해, 서브 루틴 함수는 내부에서 동작하는 특정 처리의 종류에 따라 호출 빈도가 상이할 수 있다. 결국, 서브 루틴 함수는 내부에서 동작하는 특정 처리의 종류에 따라 권위점수가 높게 측정될 수 있기 때문에 상황에 맞추어 중요도가 변경될 수 있다.
다시 말해, 임의의 서브 루틴 함수는 대상 프로그램(501)에 대한 고유한 특징을 나타내는 중요한 함수를 의미할 수 있는 반면, 비교 프로그램(502)에서는 고유한 특징을 나타내는 중요한 함수가 아닐 수 있다. 또한, 서브 루틴 함수의 종류에 따라 서브 루틴 함수 A는 대상 프로그램(501) 및 비교 프로그램(502)에서 고유한 특징을 나타내는 중요한 함수이지만, 서브 루틴 함수 B는 대상 프로그램(501) 및 비교 프로그램(502)에서 중요도가 높은 함수가 아닐 수 있다.
결국, 모든 서브 루틴 함수에 있어서 동일한 restart 확률을 갖는 것은 적합하지 않으며, 서브 루틴 함수의 상대적인 중요도를 고려하여 restart 확률을 조정할 필요성이 있다. 즉, 메모리 관리나 에러 처리, 스레드 생성 및 종료 등 Windows 프로그램의 기본적인 동작을 위해 사용되는 서브 루틴 함수들은 대부분의 프로그램들에서 일반적으로 포함됨에 따라 이러한 서브 루틴 함수들이 받는 영향력을 조절하지 않으면 프로그램 간의 유사도의 신뢰성이 떨어지는 문제가 발생할 수 있다.
따라서, 유사도 판단 장치는 일반적으로 사용하는 서브 루틴 함수에 대하여 여러 번 호출되더라도 그에 따른 권위점수에 대한 영향력을 감소시킴으로써, 보다 명확한 권위 점수를 결정할 수 있다.
유사도 판단 장치는 수학식 2를 통해 일반적으로 사용하는 서브 루틴 함수에 대한 권위점수에 대한 영향력을 감소시킬 수 있다.
Figure 112015003991619-pat00002
수학식 2에서 w(API)는 w벡터에서 해당 서브 루틴 함수에 대응되는 요소를 의미하고, PF(API)는 해당 서브 루틴 함수를 호출하는 프로그램의 수를 의미하며, CF(API)는 해당 서브 루틴 함수를 나타내는 노드가 호출 그래프에 존재하는 수를 의미할 수 있다. 유사도 판단 장치는 수학식 2를 기반으로 대상 프로그램의 고유한 특성을 잘 나타낼 수 있는 중요도 높은 서브 루틴 함수들이 상대적으로 높은 도달 확률을 얻도록 유도할 수 있다.
이후, 유사도 판단 장치는 cosine similarity를 이용하여 대상 프로그램(501)과 비교 프로그램(502) 간의 권위 점수를 비교할 수 있다. 여기서, cosine similarity는 대상 프로그램(501)의 권위점수와 비교 프로그램(502)의 권위점수에 따른 유사도를 도출하기 위한 유사도 지표를 의미할 수 있다.
즉, 유사도 판단 장치는 대상 프로그램(501)과 비교 프로그램(502)을 각각 p와 q라고 정의하고, p와 q 각각의 권위점수를 Vp, Vq라 할 때, 두 벡터간의 유사도 SIM(Vp,Vq)는 수학식 3과 같이 표현될 수 있다.
Figure 112015003991619-pat00003
수학식 3의 Vi,p와 Vi,q는 각각 벡터 Vp과 Vq의 i번째 성분을 의미하며, 수학식 3을 통해 나온 유사도 값은 0과 1 사이의 실수로 표현될 수 있다. 여기서, 유사도는 1에 가까울수록 대상 프로그램(501)과 비교 프로그램(502)이 도용 관계일 가능성이 높아지며, 반대로 유사도가 0에 가까울수록 대상 프로그램(501)과 비교 프로그램(502)은 독립적으로 개발된 서로 다른 프로그램일 가능성이 높아질 수 있다.
도 6은 일실시예에 따른 유사도 판단 방법을 설명하기 위한 순서도이다.
단계(601)에서 유사도 판단 장치는 대상 프로그램을 구성하는 함수에 대한 호출 관계를 추출할 수 있다. 이 때, 유사도 판단 장치는 대상 프로그램이 실행됨에 따른 수행 흐름에 따라 호출하거나 호출되는 서브 루틴 함수 또는 사용자 정의 함수에 대한 호출 관계를 추출할 수 있다. 여기서, 호출 관계는 함수에 포함된 서브 루틴 함수 및 사용자 정의 함수 간의 호출에 따른 방향성을 갖는 엣지로 표현되며, 상기 엣지가 나타내는 방향에 따라 호출 또는 피호출 관계를 나타낼 수 있다.
단계(601)에서 유사도 판단 장치는 추출된 호출 관계를 기반으로 호출 그래프를 생성할 수 있다. 여기서, 유사도 판단 장치는 호출 관계에 따라 함수에 포함된 서브 루틴 함수 및 사용자 정의 함수의 속성을 구분하기 위한 식별 정보를 통해 서브 루틴 함수를 라벨링 할 수 있다. 그리고, 호출 그래프는 함수에 포함된 서브 루틴 함수 및 사용자 정의 함수를 노드로 표현할 수 있다. 유사도 판단 장치는 호출 관계에 따라 노드에 형성된 엣지가 나타내는 방향을 통해 각각의 노드에 대한 호출 횟수 및 호출 순서를 나타낼 수 있다.
단계(603)에서 유사도 판단 장치는 호출 그래프를 구성하는 각 노드의 권위 점수를 결정할 수 있다. 유사도 판단 장치는 호출 그래프를 통해 라벨링된 서브 루틴 함수의 개수에 대응하여 호출 그래프를 구성하는 각 노드에 대한 권위 점수를 결정할 수 있다. 또한, 유사도 판단 장치는 호출 그래프를 구성하는 하나의 노드를 선택하고, 선택된 노드에 형성된 엣지에 따라 피호출 대상의 노드가 존재하는지에 대한 확률을 기반으로 선택된 노드에 대한 권위 점수를 결정할 수 있다.
유사도 판단 장치는 선택된 노드에 형성된 엣지 이외에 상기 호출 그래프를 구성하는 임의의 노드를 통해 피호출 대상의 노드로 이동하는지에 대한 확률을 기반으로 상기 선택된 노드에 대한 권위 점수를 결정할 수 있다. 그리고, 유사도 판단 장치는 호출 그래프를 구성하는 각 노드에 형성된 엣지의 개수 또는 호출 그래프를 구성하는 노드와 엣지로 연결된 다른 노드가 서브 루틴 함수에 해당하는 경우, 상기 노드에 대한 가중치를 증가하여 권리 점수를 결정할 수 있다.
단계(604)에서 유사도 판단 장치는 생성된 대상 프로그램의 권위 점수에 대한 벡터 및 비교 프로그램의 권위 점수에 대한 벡터를 비교하여 프로그램 도용과 관련된 유사도를 판단할 수 있다.
본 발명의 실시 예에 따른 방법들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
101: 대상 프로그램(P_1.exe)
102: 대상 프로그램의 버스마크
103: 비교 프로그램(P_2.exe)
104: 비교 프로그램의 버스마크

Claims (13)

  1. 대상 프로그램을 구성하는 함수에 포함된 서브 루틴 함수 및 사용자 정의 함수 간의 호출 관계를 추출하는 단계;
    상기 추출된 호출 관계에 따라 추출된 서브 루틴 함수 및 사용자 정의 함수의 속성을 구분하기 위한 식별 정보를 이용하여 서브 루틴 함수의 속성에 대한 식별 정보로 라벨링된 호출 그래프를 생성하는 단계;
    상기 생성된 호출 그래프를 구성하는 각 노드에 대응하여 상기 호출 관계에 따른 어느 하나의 노드를 기점으로 라벨링된 식별 정보에 따른 호출 순서 및 상기 호출 관계에 따른 노드와 노드 간에 단계적으로 연결되는 연결 관계를 고려한 권위 점수를 결정하는 단계;
    상기 생성된 권위 점수를 이용하여 비교 프로그램과의 유사도를 판단하는 단계
    를 포함하는 유사도 판단 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 호출 관계는,
    상기 함수에 포함된 서브 루틴 함수 및 사용자 정의 함수 간의 호출에 따른 방향성을 갖는 엣지로 표현되며, 상기 엣지가 나타내는 방향에 따라 호출 또는 피호출 관계를 나타내는 유사도 판단 방법.
  4. 삭제
  5. 삭제
  6. 제1항에 있어서,
    상기 호출 그래프는,
    상기 함수에 포함된 서브 루틴 함수 및 사용자 정의 함수를 노드로 표현하고, 상기 호출 관계에 따라 노드에 형성된 엣지가 나타내는 방향을 통해 각각의 노드에 대한 호출 횟수 및 호출 순서를 나타내는 유사도 판단 방법.
  7. 제1항에 있어서,
    상기 권위 점수를 결정하는 단계는,
    상기 호출 그래프를 통해 라벨링된 서브 루틴 함수의 개수에 대응하여 호출 그래프를 구성하는 각 노드에 대한 권위 점수를 결정하는 유사도 판단 방법.
  8. 제1항에 있어서,
    상기 권위 점수를 결정하는 단계는,
    상기 호출 그래프를 구성하는 하나의 노드를 선택하고, 상기 선택된 노드에 형성된 엣지에 따라 피호출 대상의 노드가 존재하는지에 대한 확률을 기반으로 상기 선택된 노드에 대한 권위 점수를 결정하는 유사도 판단 방법.
  9. 제8항에 있어서,
    상기 권위 점수를 결정하는 단계는,
    상기 선택된 노드에 형성된 엣지 이외에 상기 호출 그래프를 구성하는 임의의 노드를 통해 피호출 대상의 노드로 이동하는지에 대한 확률을 기반으로 상기 선택된 노드에 대한 권위 점수를 결정하는 유사도 판단 방법.
  10. 제1항에 있어서,
    상기 권위 점수를 결정하는 단계는,
    상기 호출 그래프를 구성하는 각 노드에 형성된 엣지의 개수에 따라 상기 노드에 대한 가중치를 증가하여 권위 점수를 결정하는 유사도 판단 방법.
  11. 제1항에 있어서,
    상기 권위 점수를 결정하는 단계는,
    상기 호출 그래프를 구성하는 노드와 엣지로 연결된 다른 노드가 서브 루틴 함수에 해당하는 경우, 상기 노드에 대한 가중치를 증가하여 권리 점수를 결정하는 유사도 판단 방법.
  12. 제1항에 있어서,
    상기 유사도를 판단하는 단계는,
    상기 생성된 대상 프로그램의 권위 점수에 대한 벡터 및 비교 프로그램의 권위 점수에 대한 벡터를 비교하여 프로그램 도용과 관련된 유사도를 판단하는 유사도 판단 방법.
  13. 대상 프로그램을 구성하는 함수에 포함된 서브 루틴 함수 및 사용자 정의 함수 간의 호출 관계를 추출하는 추출부;
    상기 추출된 호출 관계에 따라 추출된 서브 루틴 함수 및 사용자 정의 함수의 속성을 구분하기 위한 식별 정보를 이용하여 서브 루틴 함수의 속성에 대한 식별 정보로 라벨링된 호출 그래프를 생성하는 생성부;
    상기 생성된 호출 그래프를 구성하는 각 노드에 대응하여 상기 호출 관계에 따른 어느 하나의 노드를 기점으로 라벨링된 식별 정보에 따른 호출 순서 및 상기 호출 관계에 따른 노드와 노드 간에 단계적으로 연결되는 연결 관계를 고려한 권위 점수를 결정하는 결정부;
    상기 생성된 권위 점수를 이용하여 비교 프로그램과의 유사도를 판단하는 판단부
    를 포함하는 유사도 판단 장치.
KR1020150006985A 2015-01-14 2015-01-14 프로그램의 유사도를 판단하기 위한 유사도 판단 방법 및 유사도 판단 장치 KR101628602B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150006985A KR101628602B1 (ko) 2015-01-14 2015-01-14 프로그램의 유사도를 판단하기 위한 유사도 판단 방법 및 유사도 판단 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150006985A KR101628602B1 (ko) 2015-01-14 2015-01-14 프로그램의 유사도를 판단하기 위한 유사도 판단 방법 및 유사도 판단 장치

Publications (1)

Publication Number Publication Date
KR101628602B1 true KR101628602B1 (ko) 2016-06-08

Family

ID=56194079

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150006985A KR101628602B1 (ko) 2015-01-14 2015-01-14 프로그램의 유사도를 판단하기 위한 유사도 판단 방법 및 유사도 판단 장치

Country Status (1)

Country Link
KR (1) KR101628602B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180019429A (ko) * 2016-08-16 2018-02-26 단국대학교 산학협력단 소프트웨어 클러스터링 방법 및 장치
KR20180098925A (ko) * 2017-02-27 2018-09-05 충남대학교산학협력단 프로그램 유사도 산출 방법 및 장치
CN112379922A (zh) * 2020-11-24 2021-02-19 中国科学院信息工程研究所 一种程序比对方法及系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140063322A (ko) * 2012-11-16 2014-05-27 단국대학교 산학협력단 어플리케이션 프로그래밍 인터페이스 호출 빈도 분석을 통한 소프트웨어 표절 탐지 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140063322A (ko) * 2012-11-16 2014-05-27 단국대학교 산학협력단 어플리케이션 프로그래밍 인터페이스 호출 빈도 분석을 통한 소프트웨어 표절 탐지 방법

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180019429A (ko) * 2016-08-16 2018-02-26 단국대학교 산학협력단 소프트웨어 클러스터링 방법 및 장치
KR101869026B1 (ko) * 2016-08-16 2018-06-20 단국대학교 산학협력단 소프트웨어 클러스터링 방법 및 장치
KR20180098925A (ko) * 2017-02-27 2018-09-05 충남대학교산학협력단 프로그램 유사도 산출 방법 및 장치
KR101963821B1 (ko) * 2017-02-27 2019-03-29 충남대학교산학협력단 프로그램 유사도 산출 방법 및 장치
CN112379922A (zh) * 2020-11-24 2021-02-19 中国科学院信息工程研究所 一种程序比对方法及系统

Similar Documents

Publication Publication Date Title
JP7128157B2 (ja) 自動化されたオブジェクト識別のための画像処理
JP6402653B2 (ja) 物体認識装置、物体認識方法、およびプログラム
US20180278635A1 (en) Apparatus, method, and computer program for detecting malware in software defined network
US8732587B2 (en) Systems and methods for displaying trustworthiness classifications for files as visually overlaid icons
US11163877B2 (en) Method, server, and computer storage medium for identifying virus-containing files
RU2708955C2 (ru) Настройка дескриптора каждого признака в режиме онлайн
WO2020000743A1 (zh) 一种webshell检测方法及相关设备
US10614312B2 (en) Method and apparatus for determining signature actor and identifying video based on probability of appearance of signature actor
CN108596079B (zh) 手势识别方法、装置及电子设备
EP4040311A1 (en) Utilizing machine learning and natural language processing to extract and verify vaccination data
CN113961768B (zh) 敏感词检测方法、装置、计算机设备和存储介质
CN112231034A (zh) 结合rpa和ai的软件界面元素的识别方法与装置
KR101628602B1 (ko) 프로그램의 유사도를 판단하기 위한 유사도 판단 방법 및 유사도 판단 장치
US20210089823A1 (en) Information processing device, information processing method, and non-transitory computer-readable storage medium
CN115221516A (zh) 恶意应用程序识别方法及装置、存储介质、电子设备
US20210064957A1 (en) Understanding a query intention for medical artificial intelligence systems using semi-supervised deep learning
CN112613072B (zh) 基于档案大数据的信息管理方法、管理系统及管理云平台
US20210044864A1 (en) Method and apparatus for identifying video content based on biometric features of characters
CN113704759A (zh) 基于Adaboost的安卓恶意软件检测方法、系统及存储介质
US20180176108A1 (en) State information completion using context graphs
US9342795B1 (en) Assisted learning for document classification
AU2021251463B2 (en) Generating performance predictions with uncertainty intervals
CN115576789A (zh) 流失用户识别方法和系统
CN110244954B (zh) 一种应用程序的编译方法及设备
CN110909739A (zh) 图片识别并操作的方法、装置、计算机设备及存储介质

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190415

Year of fee payment: 4