KR101963822B1 - 프로그램 분류 방법 및 장치 - Google Patents

프로그램 분류 방법 및 장치 Download PDF

Info

Publication number
KR101963822B1
KR101963822B1 KR1020170078565A KR20170078565A KR101963822B1 KR 101963822 B1 KR101963822 B1 KR 101963822B1 KR 1020170078565 A KR1020170078565 A KR 1020170078565A KR 20170078565 A KR20170078565 A KR 20170078565A KR 101963822 B1 KR101963822 B1 KR 101963822B1
Authority
KR
South Korea
Prior art keywords
bit
vector
program
vectors
group
Prior art date
Application number
KR1020170078565A
Other languages
English (en)
Other versions
KR20180099422A (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 충남대학교산학협력단
Publication of KR20180099422A publication Critical patent/KR20180099422A/ko
Application granted granted Critical
Publication of KR101963822B1 publication Critical patent/KR101963822B1/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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/35Clustering; Classification

Abstract

비트벡터 생성부가, 미리 저장된 복수 개의 프로그램 각각에 포함된 모든 함수 또는 모든 기본 블록(basic block)을 나타내는 복수 개의 프로그램 비트벡터(bit vector)를 복수 개의 프로그램 별로 각각 생성하는 단계, 유효 비트벡터 생성부가, 복수 개의 프로그램 비트벡터에 기초하여 비트벡터 마스크(mask)를 생성하고, 복수 개의 프로그램 비트벡터 각각에 비트벡터 마스크를 적용하여 복수 개의 유효 프로그램 비트벡터를 생성하는 단계, 그룹 특성 벡터 집합 생성부가, 복수 개의 유효 프로그램 비트벡터에 기설정된 조건을 적용하여 결정된 비트벡터인 복수 개의 그룹 특성 벡터를 포함하는 그룹 특성 벡터 집합을 생성하는 단계 및 프로그램 분류부가, 미리 저장된 적어도 하나의 분류 대상 프로그램과 복수 개의 그룹 특성 벡터를 비교하여 적어도 하나의 분류 대상 프로그램을 분류하는 단계를 포함하는, 프로그램 분류 방법 및 이를 위한 장치에 관한 것이다.

Description

프로그램 분류 방법 및 장치{METHOD AND APPARATUS FOR CATERGORIZING PROGRAM}
본 발명은 프로그램에 포함된 함수 또는 기본 블록에 기초하여 프로그램을 분류하기 위한 프로그램 분류 방법 및 장치에 관한 것이다.
컴퓨터 프로그래밍 기술 및 이동 통신 기술이 발전함에 따라 사용자들은 인터넷 환경하에서 다양한 컴퓨터 프로그램들에 손쉽게 접근할 수 있게 되었으며, 필요에 따른 각종 프로그램들을 다운로드하여 자신의 컴퓨터, 노트북, 스마트 폰 등 각종 단말기에 저장할 수 있게 되었다.
이러한, 인터넷 환경이 조성됨에 따라서 사용자들은 상술한 바와 같이 필요에 따른 각종 프로그램들을 다운로드 할 수 있게 되었으나, 그 반대급부로 각종 위변조 프로그램, 악성 코드 등에 손쉽게 노출되는 문제가 발생하게 되었다.
이러한 악성 코드 등은 백신 프로그램 등 각종 방어 프로그램이 업데이트됨에 대응하여 빠르게 변종 악성 코드로 변형되는 특징이 있으며, 이러한 변종 악성 코드에 대응하기 위해서는 해당 변종 악성 코드가 어떤 악성 코드로부터 변형된 악성 코드인지를 판단하는 것이 매우 중요하다.
이를 위해, 종래에는 변종 악성 코드가 어떤 악성 코드로부터 변형된 악성 코드인지를 판단하기 위해서는 2개의 악성 코드 내에 포함된 함수 또는 기본 블록을 서로 일대일로 직접 비교하는 과정을 거쳐야 했다.
그러나, 2 개의 악성 코드 각각에 포함된 함수 또는 기본 블록을 서로 일대일로 직접 비교하는 경우에 비교 대상이 되는 악성 코드 각각의 용량이 큰 상황에서 2개의 악성 코드를 비교하기 위해서는 과도하게 많은 시간이 요구되는 문제가 있다.
한국 등록특허공보 제10-0572660호(2006.04.24.)
본 발명의 목적은, 상기 문제점을 해결하기 위한 것으로 복수 개의 프로그램 각각에 포함된 모든 함수 또는 모든 기본 블록을 나타내는 복수 개의 프로그램 비트벡터를 생성하고, 생성된 프로그램 비트벡터에 비트벡터 마스크를 적용하여 복수 개의 유효 프로그램 비트벡터를 생성한 뒤, 생성된 복수 개의 유효 프로그램 비트벡터에 기초하여 그룹 특성 벡터 집합을 생성함으로써 분류 대상 프로그램이 어떤 그룹에 속하는지 여부를 분류하기 위함이다.
본 발명이 해결하고자 하는 과제는 이상에서 언급한 과제(들)로 제한되지 않으며, 언급되지 않은 또 다른 과제(들)은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기한 목적을 달성하기 위하여, 본 발명의 실시예에 따른 프로그램 분류 방법은, 비트벡터 생성부가, 미리 저장된 복수 개의 프로그램 각각에 포함된 모든 함수 또는 모든 기본 블록(basic block)을 나타내는 복수 개의 프로그램 비트벡터(bit vector)를 복수 개의 프로그램 별로 각각 생성하는 단계, 유효 비트벡터 생성부가, 복수 개의 프로그램 비트벡터에 기초하여 비트벡터 마스크(mask)를 생성하고, 복수 개의 프로그램 비트벡터 각각에 비트벡터 마스크를 적용하여 복수 개의 유효 프로그램 비트벡터를 생성하는 단계, 그룹 특성 벡터 집합 생성부가, 복수 개의 유효 프로그램 비트벡터에 기설정된 조건을 적용하여 결정된 비트벡터인 복수 개의 그룹 특성 벡터를 포함하는 그룹 특성 벡터 집합을 생성하는 단계 및 프로그램 분류부가, 미리 저장된 적어도 하나의 분류 대상 프로그램과 복수 개의 그룹 특성 벡터를 비교하여 적어도 하나의 분류 대상 프로그램을 분류하는 단계를 포함한다.
예컨대, 복수 개의 프로그램 비트벡터를 복수 개의 프로그램 별로 각각 생성하는 단계는, 복수 개의 프로그램 각각에 포함된 모든 함수 또는 모든 기본 블록 각각에 해시함수를 적용하여 모든 함수 또는 모든 기본 블록 각각을 임의의 비트열로 변환하는 단계, 모든 함수 또는 모든 기본 블록 각각에 대응되는 임의의 비트열 각각에서 기설정된 개수의 연속된 비트열인 연속 비트열을 각각 추출하는 단계, 추출된 연속 비트열 각각을 기설정된 조건에 따라 변환하여 모든 함수 또는 모든 기본 블록 각각에 대응되는 식별 번호를 생성하는 단계 및 복수 개의 프로그램 각각에 대응되며 기설정된 개수의 비트를 포함하는 복수 개의 비트벡터 상에서 식별 번호에 각각 대응되는 비트의 비트값을 설정하여 복수 개의 프로그램 비트벡터를 각각 생성하는 단계를 포함한다.
예를 들어, 복수 개의 유효 프로그램 비트벡터를 생성하는 단계는, 복수 개의 프로그램 비트벡터 상호간에 서로 대응되는 비트의 비트값을 모두 합산하여 모든 함수 또는 모든 기본 블록 각각의 빈도수를 나타내는 함수 빈도수 벡터를 생성하는 단계, 함수 빈도수 벡터에 포함된 모든 함수 또는 모든 기본 블록 각각의 빈도수에 기설정된 제1 임계값을 적용하여 비트벡터 마스크를 생성하는 단계 및 복수 개의 프로그램 비트벡터 각각과 비트벡터 마스크를 서로 AND 연산하여 복수 개의 유효 프로그램 비트벡터를 생성하는 단계를 포함한다.
예컨대, 비트벡터 마스크는, 모든 함수 또는 모든 기본 블록 각각의 빈도수 중 기설정된 제1 임계값보다 큰 빈도수에 대응되는 함수 또는 기본 블록에 대한 비트의 비트값을 "1"로 설정하고, 기설정된 제1 임계값보다 작은 빈도수에 대응되는 함수 또는 기본 블록에 대한 비트의 비트값을 "0"으로 설정한 비트벡터이다.
예를 들어, 그룹 특성 벡터 집합이 공집합인 경우, 그룹 특성 벡터 집합을 생성하는 단계는, 복수 개의 유효 프로그램 비트벡터 중 선택된 하나의 유효 프로그램 비트벡터를 그룹 특성 벡터로 결정하여 그룹 특성 벡터 집합에 저장하는 단계를 포함한다.
그룹 특성 벡터 집합이 미리 저장된 적어도 하나의 그룹 특성 벡터를 포함하는 경우, 그룹 특성 벡터 집합을 생성하는 단계는, 적어도 하나의 그룹 특성 벡터 중 i 번째 그룹 특성 벡터와 복수 개의 유효 프로그램 비트벡터 중 j 번째 유효 프로그램 비트벡터 상호 간의 제1 유사도를 산출하는 단계, 제1 유사도에 기설정된 제2 임계값을 적용하여 i 번째 그룹 특성 벡터와 j 번째 유효 프로그램 비트벡터가 서로 유사한지 여부를 판단하는 제1 판단 단계 및 제1 판단 결과에 기초하여 그룹 특성 벡터 집합에 저장될 그룹 특성 벡터를 결정하는 제1 결정 단계를 포함한다.
예컨대, i 번째 그룹 특성 벡터와 j 번째 유효 프로그램 비트벡터가 서로 비유사한 경우, 제1 결정 단계는, j 번째 유효 프로그램 비트벡터를 그룹 특성 벡터로 결정하여 그룹 특성 벡터 집합에 저장하는 단계를 포함한다.
일 실시예에 따라, i 번째 그룹 특성 벡터와 j 번째 유효 프로그램 비트벡터가 서로 유사한 경우, 제1 결정 단계는, i 번째 그룹 특성 벡터와 상기 j 번째 유효 프로그램 비트벡터를 서로 AND 연산하여 공통 비트벡터를 생성하는 단계, i 번째 그룹 특성 벡터와 공통 비트벡터 상호 간의 제2 유사도 및 j 번째 유효 프로그램 비트벡터와 공통 비트벡터 상호 간의 제3 유사도를 각각 산출하는 단계, 제2 유사도 및 제3 유사도 각각에 제2 임계값을 적용하여 i 번째 그룹 특성 벡터와 공통 비트벡터가 서로 유사한지 여부 및 j 번째 유효 프로그램 비트벡터와 공통 비트벡터가 서로 유사한지 여부를 각각 판단하는 제2 판단 단계 및 제2 판단 결과에 기초하여 그룹 특성 벡터 집합에 저장될 그룹 특성 벡터를 결정하는 제2 결정 단계를 포함한다.
예컨대, i 번째 그룹 특성 벡터와 공통 비트벡터가 서로 유사하고, j 번째 유효 프로그램 비트벡터와 공통 비트벡터가 서로 유사한 경우, 제2 결정 단계는, i 번째 그룹 특성 벡터를 그룹 특성 벡터 집합에서 삭제하는 단계 및 공통 비트벡터를 그룹 특성 벡터로 결정하여 그룹 특성 벡터 집합에 저장하는 단계를 포함한다.
예를 들어, i 번째 그룹 특성 벡터와 공통 비트벡터가 서로 비유사하고, j 번째 유효 프로그램 비트벡터와 공통 비트벡터가 서로 유사한 경우, 제2 결정 단계는, 공통 비트벡터를 그룹 특성 벡터로 결정하여 그룹 특성 벡터 집합에 저장하는 단계를 포함한다.
일 실시예에 따르면, i 번째 그룹 특성 벡터와 공통 비트벡터가 서로 유사하고, j 번째 유효 프로그램 비트벡터와 공통 비트벡터가 서로 비유사한 경우, 제2 결정 단계는, i 번째 그룹 특성 벡터를 그룹 특성 벡터 집합에서 삭제하는 단계 및 j 번째 유효 프로그램 비트벡터 및 공통 비트벡터 각각을 그룹 특성 벡터로 결정하여 그룹 특성 벡터 집합에 저장하는 단계를 포함한다.
예를 들어, 적어도 하나의 분류 대상 프로그램을 분류하는 단계는, 복수 개의 그룹 특성 벡터 각각에 대한 적어도 하나의 분류 대상 프로그램 각각의 포함률을 산출하는 단계 및 포함률에 기설정된 제3 임계값을 적용하여 적어도 하나의 분류 대상 프로그램 각각이 속하는 프로그램 그룹을 결정하는 단계를 포함한다.
상기한 목적을 달성하기 위하여 본 발명의 실시예에 따른 프로그램 분류 장치는 미리 저장된 복수 개의 프로그램 각각에 포함된 모든 함수 또는 모든 기본 블록을 나타내는 복수 개의 프로그램 비트벡터를 복수 개의 프로그램 별로 각각 생성하는 비트벡터 생성부, 복수 개의 프로그램 비트벡터에 기초하여 비트벡터 마스크를 생성하고, 복수 개의 프로그램 비트벡터 각각에 비트벡터 마스크를 적용하여 복수 개의 유효 프로그램 비트벡터를 생성하는 유효 비트벡터 생성부, 복수 개의 유효 프로그램 비트벡터에 기설정된 조건을 적용하여 결정된 비트벡터인 복수 개의 그룹 특성 벡터를 포함하는 그룹 특성 벡터 집합을 생성하는 그룹 특성 벡터 집합 생성부 및 미리 저장된 적어도 하나의 분류 대상 프로그램과 복수 개의 그룹 특성 벡터를 비교하여 적어도 하나의 분류 대상 프로그램을 분류하는 프로그램 분류부를 포함한다.
본 발명의 일 실시예에 따르면, 복수 개의 프로그램 각각에 포함된 모든 함수 또는 모든 기본 블록을 나타내는 복수 개의 프로그램 비트벡터를 생성하고, 생성된 프로그램 비트벡터에 비트벡터 마스크를 적용하여 복수 개의 유효 프로그램 비트벡터를 생성한 뒤, 생성된 복수 개의 유효 프로그램 비트벡터에 기초하여 그룹 특성 벡터 집합을 생성함으로써 분류 대상 프로그램이 어떤 그룹에 속하는지 여부를 분류함으로써, 분류 대상 프로그램이 속하는 그룹을 신속하게 결정할 수 있다.
더 나아가, 본 발명의 일 실시예에 따르면, 분류 대상 프로그램이 악성코드인 경우, 특정 변종 악성코드가 속하는 그룹을 신속하게 결정함으로써 악성코드를 그룹으로 묶어 체계적으로 관리할 수 있는 효과가 있다.
도 1은 본 발명의 실시예에 따른 프로그램 분류 장치를 설명하기 위한 구성도이다.
도 2는 본 발명의 실시예에 따른 프로그램 분류 방법을 설명하기 위한 순서도이다.
도 3은 본 발명의 실시예에 따른 프로그램 분류 방법에서 복수 개의 프로그램 비트벡터를 생성하는 방법을 설명하기 위한 순서도이다.
도 4a 및 도 4b는 본 발명의 실시예에 따른 프로그램 분류 방법에서 복수 개의 프로그램 비트벡터를 생성하는 방법을 설명하기 위한 도면이다.
도 5는 본 발명의 실시예에 따른 프로그램 분류 방법에서 복수 개의 유효 프로그램 비트벡터를 생성하는 방법을 설명하기 위한 순서도이다.
도 6a 및 도 6b는 본 발명의 실시예에 따른 프로그램 분류 방법에서 복수 개의 유효 프로그램 비트벡터를 생성하는 방법을 설명하기 위한 도면이다.
도 7 및 도 8은 본 발명의 실시예에 따른 프로그램 분류 방법에서 그룹 특성 벡터 집합을 생성하는 방법을 설명하기 위한 순서도이다.
도 9는 본 발명의 실시예에 따른 프로그램 분류 방법에서 그룹 특성 벡터 집합을 생성하기 위해 제1 유사도, 제2 유사도 및 제3 유사도를 산출하는 방법을 설명하기 위한 도면이다.
도 10은 본 발명의 실시예에 따른 프로그램 분류 방법에서 분류 대상 프로그램을 분류하는 방법을 설명하기 위한 순서도이다.
도 11은 본 발명의 실시예에 따른 프로그램 분류 방법에서 분류 대상 프로그램을 분류하기 위한 포함률을 산출하는 방법을 설명하기 위한 도면이다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 가장 바람직한 실시예를 첨부 도면을 참조하여 설명하기로 한다. 우선 각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
이하, 본 발명의 실시예에 따른 프로그램 분류 방법 및 장치를 첨부된 도면을 참조하여 상세하게 설명하면 아래와 같다.
우선 도 1을 참조하여, 본 발명의 실시예에 따른 프로그램 분류 장치(1000)를 설명한다.
도 1은 본 발명의 실시예에 따른 프로그램 분류 장치를 설명하기 위한 구성도이다.
도 1에 도시된 바와 같이, 본 발명의 실시예에 따른 프로그램 분류 장치(1000)는 비트벡터 생성부(1100), 유효 비트벡터 생성부(1200), 그룹 특성 벡터 집합 생성부(1300) 및 프로그램 분류부(1400)를 포함한다.
비트벡터 생성부(1100)는 미리 저장된 복수 개의 프로그램 각각에 포함된 모든 함수 또는 모든 기본 블록(basic block)을 나타내는 복수 개의 프로그램 비트벡터(bit vector)를 복수 개의 프로그램 별로 각각 생성한다.
유효 비트벡터 생성부(1200)는 복수 개의 프로그램 비트벡터에 기초하여 비트벡터 마스크(mask)를 생성하고, 복수 개의 프로그램 비트벡터 각각에 비트벡터 마스크를 적용하여 복수 개의 유효 프로그램 비트벡터를 생성한다.
일 실시예에 따르면, 유효 프로그램 비트벡터는 상술한 프로그램 비트벡터에 상술한 비트벡터 마스크를 적용하여 생성된 일종의 변형 프로그램 비트벡터를 의미할 수 있다.
그룹 특성 벡터 집합 생성부(1300)는 복수 개의 유효 프로그램 비트벡터에 기설정된 조건을 적용하여 결정된 비트벡터인 복수 개의 그룹 특성 벡터를 포함하는 그룹 특성 벡터 집합을 생성한다.
프로그램 분류부(1400)는 미리 저장된 적어도 하나의 분류 대상 프로그램과 복수 개의 그룹 특성 벡터를 비교하여 적어도 하나의 분류 대상 프로그램을 분류한다.
본 발명의 실시예에 따른 프로그램 분류 장치(1000)의 각각의 구성들에 대한 보다 구체적인 설명은 이하 도 2 내지 도 11을 참조하여 후술하도록 하며, 중복되는 설명은 생략한다.
이제 도 2를 참조하여, 본 발명의 실시예에 따른 프로그램 분류 방법을 설명한다.
도 2는 본 발명의 실시예에 따른 프로그램 분류 방법을 설명하기 위한 순서도이다.
도 2에 도시된 바와 같이, 본 발명의 실시예에 따른 프로그램 분류 방법은 복수 개의 프로그램 비트벡터를 생성하는 단계(S210), 복수 개의 유효 프로그램 비트벡터를 생성하는 단계(S220), 그룹 특성 벡터 집합을 생성하는 단계(S230) 및 분류 대상 프로그램을 분류하는 단계(S240)를 포함한다.
S210 단계는, 비트벡터 생성부(1100)가, 미리 저장된 복수 개의 프로그램 각각에 포함된 모든 함수 또는 모든 기본 블록을 나타내는 복수 개의 프로그램 비트벡터를 복수 개의 프로그램 별로 각각 생성하는 단계를 의미한다.
예컨대, 미리 저장된 복수 개의 프로그램 각각은 함수 또는 기본 블록 단위로 구분할 수 있는 프로그램인 어셈블리언어 기반 프로그램 또는 고급 언어 기반 프로그램을 의미할 수 있다.
예를 들어, 미리 저장된 복수 개의 프로그램 각각이 고급 언어 중 C언어에 기반한 프로그램인 경우, 미리 저장된 복수 개의 프로그램 각각에 포함된 모든 함수는 "printf("Hello, World!\n")"과 같이 함수명과 인자값을 모두 포함하는 함수 각각을 의미할 수 있다.
예를 들어, 미리 저장된 복수 개의 프로그램 각각에 포함된 모든 기본 블록은 함수보다 작은 식별 단위로써, 실행 흐름 단위로 함수를 분할한 엔트리 외에는 들어오는 분기가 없고, 출구 외에는 나가는 분기가 없는 직선 코드열을 의미할 수 있다.
예를 들어, 미리 저장된 복수 개의 프로그램 각각이 고급 언어 중 C언어에 기반한 프로그램인 경우, 미리 저장된 복수 개의 프로그램 각각에 포함된 특정 함수의 변수 a가 1 또는 2에서 정의된 경우에서 특정 함수가 "if(a == 1)"인 경우, 특정 함수에 포함된 기본 블록은 a가 1인 경우와 a가 1이 아닌 경우(a가 2인 경우) 각각을 의미하는 2개의 기본 블록을 의미할 수 있다.
S220 단계는 유효 비트벡터 생성부(1200)가, 복수 개의 프로그램 비트벡터에 기초하여 비트벡터 마스크를 생성하고, 복수 개의 프로그램 비트벡터 각각에 비트벡터 마스크를 적용하여 복수 개의 유효 프로그램 비트벡터를 생성하는 단계를 의미할 수 있다.
일 실시예에 따르면, S220 단계는 생략될 수 있으며, S220 단계가 생략되는 경우 S230 단계 및 S240 단계는 S210 단계를 통해 생성된 복수 개의 프로그램 비트벡터에 기초하여 수행될 수도 있으나, 본 발명은 이에 한정되지 않는다.
S230 단계는 그룹 특성 벡터 집합 생성부(1300)가, 복수 개의 유효 프로그램 비트벡터에 기설정된 조건을 적용하여 결정된 비트벡터인 복수 개의 그룹 특성 벡터를 포함하는 그룹 특성 벡터 집합을 생성하는 단계를 의미할 수 있다.
S240 단계는 프로그램 분류부(1400)가, 미리 저장된 적어도 하나의 분류 대상 프로그램과 복수 개의 그룹 특성 벡터를 비교하여 적어도 하나의 분류 대상 프로그램을 분류하는 단계를 의미할 수 있다.
이제 도 3, 도 4a 및 도 4b를 동시에 참조하여 비트벡터 생성부(1100)에 의해 수행되는 S210 단계를 설명한다.
도 3은 본 발명의 실시예에 따른 프로그램 분류 방법에서 복수 개의 프로그램 비트벡터를 생성하는 방법을 설명하기 위한 순서도이며, 도 4a 및 도 4b는 본 발명의 실시예에 따른 프로그램 분류 방법에서 복수 개의 프로그램 비트벡터를 생성하는 방법을 설명하기 위한 도면이다.
도 3에 도시된 바와 같이, S210 단계는 모든 함수 또는 모든 기본 블록을 임의의 비트열로 변환하는 단계(S211), 임의의 비트열 각각에서 연속 비트열을 추출하는 단계(S213), 모든 함수 또는 모든 기본 블록 각각에 대응되는 식별 번호를 생성하는 단계(S215) 및 복수의 비트벡터 상에서 식별 번호에 대응되는 비트의 비트값을 설정하여 복수 개의 프로그램 비트벡터를 각각 생성하는 단계(S217)를 포함한다.
S211 단계는 복수 개의 프로그램 각각에 포함된 모든 함수 또는 모든 기본 블록 각각에 해시함수를 적용하여 모든 함수 또는 모든 기본 블록 각각을 임의의 비트열로 변환하는 단계를 의미할 수 있다.
예컨대, 해시함수는 그 크기가 일정하되 임의의 값을 가지는 출력값을 생성하는 함수로, 해시함수에 동일한 입력값을 넣는 경우, 항상 같은 출력값이 나오지만 출력값만을 이용해서 입력값을 역산할 수는 없는 특징이 있다.
이때, 해시함수는 메시지 다이제스트(Message Digest), 시큐어 해시 알고리즘(Secure Hash Algorithm), HAS-160 및 SHA-256을 비롯한 각종 해시함수가 사용될 수 있으며, 본 발명은 특정 해시함수의 종류에 한정되지 않는다.
예를 들어, 도 4a에 도시된 바와 같이 특정 프로그램(1)에 포함된 모든 함수 중 하나의 함수인 함수 1에 해시함수를 적용하면 함수 1에 대응되는 해시값이 생성될 수 있으며, 이때 생성된 해시값은 임의의 비트열로 정의할 수 있다.
예를 들어, 도 4a에 도시된 바와 같이 특정 프로그램(1)에 포함된 특정 함수인 함수 1에 해시함수를 적용하는 경우를 예로 들어 S211 단계를 설명하면, S211 단계의 연산 결과값으로 "0101010110101101101011010101010110110100110101010101010101011010"와 같은 해시값이 생성될 수 있으며, 이때 생성된 해시값을 임의의 비트열이라 할 수 있다.
이때, 복수 개의 프로그램 각각에 포함된 모든 함수 또는 모든 기본 블록 각각에 해시함수를 적용하면, 복수 개의 프로그램 각각에 포함된 모든 함수 또는 모든 기본 블록 각각은 임의의 비트열로 표현될 수 있다.
S213 단계는 모든 함수 또는 모든 기본 블록 각각에 대응되는 임의의 비트열 각각에서 기설정된 개수의 연속된 비트열인 연속 비트열을 각각 추출하는 단계를 의미할 수 있다.
예를 들어, 도 4a에 도시된 바와 같이, 임의의 비트열인 "0101010110101101101011010101010110110100110101010101010101011010"의 최초의 비트값인 "0"을 0번째 비트라 정의할 때, S213 단계에서 24번째 내지 39번째로 연속되는 16개의 비트를 연속 비트열로 추출한 결과 "0101010110110100"이 추출될 수 있다.
이때, S213 단계에서 추출되는 연속된 비트열의 기설정된 개수는 미리 설정되어 비트벡터 생성부(1100)에 저장될 수 있으며, 본 발명은 특정 개수의 비트열을 추출하는 것으로 한정되지 않는다.
일 실시예에 따르면, S213 단계에서 비트벡터 생성부(1100)는 기설정된 개수의 연속된 비트열을 추출하는 대신에, 기설정된 개수의 불연속한 비트열을 추출할 수도 있으며, 본 발명은 연속된 비트열을 추출하는 것으로 한정되지 않는다.
S215 단계는 추출된 연속 비트열 각각을 기설정된 조건에 따라 변환하여 모든 함수 또는 모든 기본 블록 각각에 대응되는 식별 번호를 생성하는 단계를 의미할 수 있다.
예컨대, S215 단계는 추출된 연속 비트열 각각을 10진수로 변환하여 모든 함수 또는 모든 기본 블록 각각에 대응되는 식별 번호를 생성하는 단계를 의미할 수도 있으나, 본 발명은 이에 한정되지 않는다.
예컨대, 도 4a에 도시된 바와 같이 연속 비트열 "0101010110110100"에 대응되는 10진수인 21,940를 S211, S213 및 S215 단계를 거쳐 특정 함수인 함수 1에 대응되는 식별 번호로 생성할 수 있다.
다시 말해, 복수 개의 프로그램 각각에 포함된 모든 함수 또는 모든 기본 블록 각각에 S211 단계, S213 단계 및 S215 단계를 각각 적용하면, 복수 개의 프로그램 각각은 복수 개의 식별 번호로 표현될 수 있게 된다.
S217 단계는 복수 개의 프로그램 각각에 대응되며 기설정된 개수의 비트를 포함하는 복수 개의 비트벡터 상에서 식별 번호에 각각 대응되는 비트의 비트값을 설정하여 복수 개의 프로그램 비트벡터를 각각 생성하는 단계를 의미할 수 있다.
예컨대, 복수 개의 비트벡터는 각각이 포함하는 모든 비트의 비트값이 "0"으로 초기화된 상태일 수 있다.
도 4a에 도시된 상술한 예시에서 특정 프로그램(1)에 포함된 함수인 함수 1에 대응되는 식별 번호는 21,940으로 생성되었으며, S217 단계에서 비트벡터 생성부(1100)는 특정 프로그램(1)에 대응되는 특정 비트벡터(2) 상에서 21,940 번째 비트의 비트값을 "1"로 설정할 수 있으며, 이러한 과정은 도 4b에 도시된 바와 같다.
S217 단계에서 비트벡터 생성부(1100)가 특정 프로그램(1)에 포함된 모든 함수 또는 모든 기본 블록 각각에 대응되는 식별 번호에 대응되는 비트의 비트값을 "1"로 설정하면, 특정 프로그램(1)에 대응되는 프로그램 비트벡터가 생성될 수 있다.
상기한 S211 단계, S213 단계, S215 단계 및 S217 단계의 과정을 복수 개의 프로그램 각각에 대하여 수행하면, 복수 개의 프로그램 각각에 대응되는 복수 개의 프로그램 비트벡터가 생성될 수 있다.
상기한 S211 단계, S213 단계, S215 단계 및 S217 단계를 거쳐 생성된 복수 개의 프로그램 비트벡터는 복수 개의 프로그램 각각에 포함된 모든 함수 또는 모든 기본 블록의 존재 여부를 나타내는 비트벡터를 의미할 수 있다.
예를 들어, 특정 프로그램 비트벡터의 1번째 비트, 5번째 비트 및 7번째 비트의 비트값이 "1"인 경우, 특정 프로그램은 식별번호 1, 식별번호 5 및 식별번호 7에 대응되는 함수 또는 기본 블록을 포함함을 의미하게 된다.
이제, 도 5, 도 6a 및 도 6b를 참조하여, 유효 비트벡터 생성부(1200)에 의해 수행되는 S220 단계를 설명한다.
도 5는 본 발명의 실시예에 따른 프로그램 분류 방법에서 복수 개의 유효 프로그램 비트벡터를 생성하는 방법을 설명하기 위한 순서도이며, 도 6a 및 도 6b는 본 발명의 실시예에 따른 프로그램 분류 방법에서 복수 개의 유효 프로그램 비트벡터를 생성하는 방법을 설명하기 위한 도면이다.
도 5에 도시된 바와 같이, S220 단계는 함수 빈도수 벡터를 생성하는 단계(S221), 함수 빈도수 벡터에 제1 임계값을 적용하여 비트벡터 마스크를 생성하는 단계(S223) 및 복수 개의 프로그램 비트벡터와 비트벡터 마스크를 서로 AND 연산하여 복수 개의 유효 프로그램 비트벡터를 생성하는 단계(S225)를 포함한다.
S221 단계는, 복수 개의 프로그램 비트벡터 상호간에 서로 대응되는 비트의 비트값을 모두 합산하여 모든 함수 또는 모든 기본 블록 각각의 빈도수를 나타내는 함수 빈도수 벡터를 생성하는 단계를 의미할 수 있다.
상술한 바와 같이, S210 단계를 통해 생성된 복수 개의 프로그램 비트벡터 각각은 대응되는 복수 개의 프로그램에 포함된 모든 함수 또는 모든 기본 블록을 나타내게 되며, 복수 개의 프로그램 비트벡터 상호간에 서로 대응되는 비트의 비트값을 모두 합산하여 생성된 함수 빈도수 벡터에 포함된 각각의 블록들은 대응되는 함수 또는 기본 블록의 출현 빈도수를 의미하게 된다.
예를 들어 도 6a에 도시된 바와 같이, 복수 개의 프로그램 비트벡터(61, 62, 63)의 서로 대응되는 비트의 비트값을 모두 합산하여 생성된 함수 빈도수 벡터(64)의 각각의 값은 복수 개의 프로그램 상에서 동일한 식별 번호를 가지는 함수 또는 기본 블록의 출현 빈도수를 각각 의미하게 된다.
예를 들어 도 6a에 도시된 바와 같이, 제1 프로그램 비트벡터(61)의 i 번째 비트의 비트값이 "1"이고, i+1 번째 비트의 비트값이 "0"이며, j 번째 비트의 비트값이 "0"이고, j+1 번째 비트의 비트값이 "1"이고, j+2 번째 비트의 비트값이 "1"인 경우를 예로 든다.
상술한 예시에서, 제2 프로그램 비트벡터(62)는 i 번째 비트의 비트값이 "0"이고, i+1 번째 비트의 비트값이 "1"이며, j 번째 비트의 비트값이 "0"이고, j+1 번째 비트의 비트값이 "1"이고, j+2 번째 비트의 비트값이 "1"이라 할 수 있다.
마찬가지로, 제n 프로그램 비트벡터(63)는 i 번째 비트의 비트값이 "0"이고, i+1 번째 비트의 비트값이 "0"이며, j 번째 비트의 비트값이 "1"이고, j+1 번째 비트의 비트값이 "0"이고, j+2 번째 비트의 비트값이 "0"이라 할 수 있다.
이 경우, 제1 번째 프로그램부터 제n번째 프로그램까지의 복수 개의 프로그램(61, 62, 63)의 i 번째 비트의 비트값을 모두 합산하여 함수 빈도수 벡터(64) 상의 i 번째 블록의 빈도수가 "9"로 생성되었으며, 이는 복수 개의 프로그램(61, 62, 63)에서 식별 번호 i에 대응되는 함수 또는 기본 블록이 총 9회 출현하였음을 의미하게 된다.
마찬가지로, 제1 번째 프로그램부터 제n번째 프로그램까지의 복수 개의 프로그램(61, 62, 63)의 i+1 번째 비트의 비트값을 모두 합산하여 함수 빈도수 벡터(64) 상의 i+1 번째 블록의 빈도수가 "15"로 생성되었으며, 이는 복수 개의 프로그램(61, 62, 63)에서 식별 번호 i+1에 대응되는 함수 또는 기본 블록이 총 15회 출현하였음을 의미하게 된다.
동일하게, 제1 번째 프로그램부터 제n번째 프로그램까지의 복수 개의 프로그램(61, 62, 63)의 j 번째 비트의 비트값을 모두 합산하여 함수 빈도수 벡터(64) 상의 j 번째 블록의 빈도수가 "7"로 생성되었으며, 이는 복수 개의 프로그램(61, 62, 63)에서 식별 번호 j에 대응되는 함수 또는 기본 블록이 총 7회 출현하였음을 의미하게 된다.
또한, 제1 번째 프로그램부터 제n번째 프로그램까지의 복수 개의 프로그램(61, 62, 63)의 j+1 번째 비트의 비트값을 모두 합산하여 함수 빈도수 벡터(64) 상의 j+1 번째 블록의 빈도수가 "33"으로 생성되었으며, 이는 복수 개의 프로그램(61, 62, 63)에서 식별 번호 j+1에 대응되는 함수 또는 기본 블록이 총 33회 출현하였음을 의미하게 된다.
마찬가지로, 제1 번째 프로그램부터 제n번째 프로그램까지의 복수 개의 프로그램(61, 62, 63)의 j+2 번째 비트의 비트값을 모두 합산하여 함수 빈도수 벡터(64) 상의 j+2 번째 블록의 빈도수가 "30"으로 생성되었으며, 이는 복수 개의 프로그램(61, 62, 63)에서 식별 번호 j+2에 대응되는 함수 또는 기본 블록이 총 30회 출현하였음을 의미하게 된다.
즉, S221 단계를 거쳐 생성된 함수 빈도수 벡터(64)은 복수 개의 프로그램에 포함된 각각의 함수 또는 기본 블록 별로 그 출현 빈도수를 나타내는 일종의 테이블을 의미할 수도 있으나, 본 발명은 이에 한정되지 않는다.
S223 단계는 함수 빈도수 벡터에 포함된 모든 함수 또는 모든 기본 블록 각각의 빈도수에 기설정된 제1 임계값을 적용하여 비트벡터 마스크를 생성하는 단계를 의미한다.
예를 들어, 도 6a에 도시된 바와 같이, 함수 빈도수 벡터(64)의 i 번째 블록은 "9"이고, i+1 번째 블록은 "15"이고, j 번째 블록은 "7"이고, j+1 번째 블록은 "33"이며, j+2 번째 블록은 "30"이고, 기설정된 제1 임계값은 10인 경우를 예로 들면, 함수 빈도수 벡터(64)에 기설정된 제1 임계값을 적용하여 생성된 비트벡터 마스크(65)는 i 번째 비트의 비트값이 "0"이고, i+1 번째 비트의 비트값이 "1"이고, j 번째 비트의 비트값이 "0"이고, j+1 번째 비트의 비트값이 "1"이고, j+2 번째 비트의 비트값이 "1"인 비트벡터로써 생성되게 된다.
이때, 기설정된 제1 임계값이 10인 것은 일 실시예로써 본 발명의 기설정된 제1 임계값은 특정 수치로 한정되지 않는다.
다시 말해, 비트벡터 마스크(65)의 각각의 비트는 복수 개의 프로그램 상에서 기설정된 제1 임계값 이상 출현한 함수 또는 기본 블록은 "1"로 설정하고, 복수 개의 프로그램 상에서 기설정된 제1 임계값 미만으로 출현한 함수 또는 기본 블록은 "0"으로 설정하는 비트벡터를 의미할 수 있다.
즉, 비트벡터 마스크(65)는, 모든 함수 또는 모든 기본 블록 각각의 빈도수 중 기설정된 제1 임계값보다 큰 빈도수에 대응되는 함수 또는 기본 블록에 대한 비트의 비트값을 "1"로 설정하고, 기설정된 제1 임계값보다 작은 빈도수에 대응되는 함수 또는 기본 블록에 대한 비트의 비트값을 "0"으로 설정한 비트벡터를 의미할 수 있다.
예를 들어, 도 6a에 도시된 비트벡터 마스크(65)는 복수 개의 프로그램 비트벡터(61, 62, 63)상에서 식별 번호 i에 대응되는 함수 또는 기본 블록은 10회 미만으로 출현하였고, 식별 번호 i+1에 대응되는 함수 또는 기본 블록은 10회 이상 출현하였으며, 식별 번호 j에 대응되는 함수 또는 기본 블록은 10회 미만으로 출현하였고, 식별 번호 j+1에 대응되는 함수 또는 기본 블록은 10회 이상 출현하였으며, 식별 번호 j+2에 대응되는 함수 또는 기본 블록은 10회 이상 출현하였음을 의미하게 된다.
이때, 복수 개의 프로그램 상에서 기설정된 횟수 이상 출현하여, 비트벡터 마스크(65) 상에서 "1"로 표현되는 함수 또는 기본 블록을 공통 함수 또는 공통 기본 블록으로 정의할 수 있다.
S225 단계는, 복수 개의 프로그램 비트벡터 각각과 비트벡터 마스크를 서로 AND 연산하여 복수 개의 유효 프로그램 비트벡터를 생성하는 단계를 의미할 수 있다.
예를 들어, 도 6b에 도시된 바와 같이, 복수 개의 프로그램 비트벡터 중 i 번째 프로그램 비트벡터인 제i 프로그램 비트벡터(66)의 i 번째 비트의 비트값이 "1"이고, i+1 번째 비트의 비트값이 "1"이며, j 번째 비트의 비트값이 "1"이고, j+1 번째 비트의 비트값이 "1"이고, j+2 번째 비트의 비트값이 "1"이며, 비트벡터 마스크(65)의 i 번째 비트의 비트값이 "0"이고, i+1 번째 비트의 비트값이 "1"이며, j 번째 비트의 비트값이 "0"이고, j+1 번째 비트의 비트값이 "1"이고, j+2 번째 비트의 비트값이 "1"인 경우, 제i 유효 프로그램 비트벡터(67)는 i 번째 비트의 비트값이 "0"이고, i+1 번째 비트의 비트값이 "1"이며, j 번째 비트의 비트값이 "0"이고, j+1 번째 비트의 비트값이 "1"이고, j+2 번째 비트의 비트값이 "1"로 결정될 수 있다.
이는, AND 연산의 특징에 기인한 것으로, 제i 프로그램 비트벡터(66)와 비트벡터 마스크(65)의 서로 대응되는 비트의 비트값이 모두 "1"인 경우 제i 유효 프로그램 비트벡터(67)의 해당되는 비트의 비트값은 "1"로 설정되고, 제i 프로그램 비트벡터(66)와 비트벡터 마스크(65)의 서로 대응되는 비트의 비트값 중 어느 하나가 "1"이 아닌 경우, 제i 유효 프로그램 비트벡터(67)의 해당되는 비트의 비트값은 "0"로 설정되기 때문이다.
그 결과, 제i 유효 프로그램 비트벡터(67)는 제i 프로그램에 포함된 모든 함수 또는 모든 기본 블록 중 비트벡터 마스크(65)를 통해 정의되는 공통함수 만을 포함하도록 설정되게 된다.
상술한 과정을 복수 개의 프로그램 비트벡터 각각에 대하여 수행하면, 복수 개의 프로그램에 대응되는 복수 개의 유효 프로그램 비트벡터가 생성될 수 있다.
이제 도 7 및 도 8을 참조하여, 그룹 특성 벡터 집합 생성부(1300)에 의해 수행되는 S230 단계를 설명한다.
예컨대, S230 단계는 그룹 특성 벡터 집합이 공집합인 경우와, 공집합이 아닌 경우로 나누어 설명될 수 있으며, 이하 그룹 특성 벡터 집합이 공집합인 경우와 공집합이 아닌 경우로 나누어 S230 단계를 설명한다.
다시 말해, S230 단계는, 그 집합이 공집합인 경우와 그렇지 않은 경우로 구분하여 그룹 특성 벡터의 추가와 제거를 반복할 수 있다.
이때, 그룹 특성 벡터는 적어도 하나의 분류 대상 프로그램을 분류하기 위한 복수의 프로그램 그룹 각각의 특성을 나타내는 비트벡터를 의미할 수 있으며, 그룹 특성 벡터 집합은 적어도 하나의 그룹 특성 벡터를 포함하는 집합을 의미할 수 있다.
예를 들어, S230 단계에서 그룹 특성 벡터 집합은 초기에 공집합으로 정의될 수 있으며, 그룹 특성 벡터 집합이 공집합인 경우, S230 단계는 복수 개의 유효 프로그램 비트벡터 중 선택된 하나의 유효 프로그램 비트벡터를 그룹 특성 벡터로 결정하여 그룹 특성 벡터 집합에 저장하는 단계를 포함할 수 있다.
즉, 그룹 특성 벡터 집합이 공집합인 경우, 임의로 선택된 최초의 1개의 유효 프로그램 비트벡터는 그 자체가 그룹 특성 벡터로써 결정되어 그룹 특성 벡터 집합에 저장될 수 있다.
이제, 도 7 및 도 8을 참조하여 그룹 특성 벡터 집합에 적어도 하나의 그룹 특성 벡터가 저장되어 그룹 특성 벡터 집합이 공집합이 아닌 경우에서 S230 단계를 설명한다.
도 7에 도시된 바와 같이, 그룹 특성 벡터 집합이 미리 저장된 적어도 하나의 그룹 특성 벡터를 포함하는 경우, S230 단계는 S710 단계, S720 단계 및 S730 단계를 포함할 수 있다.
S710 단계는, 적어도 하나의 그룹 특성 벡터 중 i 번째 그룹 특성 벡터와 복수 개의 유효 프로그램 비트벡터 중 j 번째 유효 프로그램 비트벡터 상호 간의 제1 유사도를 산출하는 단계를 의미할 수 있다.
이때, 제1 유사도를 산출하는 보다 구체적인 방법은 이하 도 9를 참조하여 후술하도록 하며, 중복되는 설명은 생략한다.
S720 단계는 제1 유사도에 기설정된 제2 임계값을 적용하여 i 번째 그룹 특성 벡터와 j 번째 유효 프로그램 비트벡터가 서로 유사한지 여부를 판단하는 제1 판단 단계를 의미할 수 있다.
보다 상세하게, S720 단계에서 제1 유사도가 제2 임계값보다 크거나 같은 경우 i 번째 그룹 특성 벡터와 j 번째 유효 프로그램 비트벡터는 서로 유사한 것으로 판단될 수 있고, 제1 유사도가 제2 임계값보다 작은 경우 i 번째 그룹 특성 벡터와 j 번째 유효 프로그램 비트벡터는 서로 유사하지 않은 것으로 판단될 수 있다.
예를 들어, 제1 유사도가 40%이며 기설정된 제2 임계값이 70%인 경우, 제1 유사도는 제2 임계값보다 작기 때문에 i 번째 그룹 특성 벡터와 j 번째 유효 프로그램 비트벡터는 서로 유사하지 않은 것으로 판단될 수 있다.
그 뒤, S230 단계는 상술한 S720 단계에서의 제1 판단 결과에 기초하여 그룹 특성 벡터 집합에 저장될 그룹 특성 벡터를 결정하는 제1 결정 단계(미도시)를 포함할 수 있다.
만약, S720 단계에서 판단 결과, 제1 유사도가 제2 임계값보다 작아 i 번째 그룹 특성 벡터와 j 번째 유효 프로그램 비트벡터가 서로 비유사한 경우, 제1 결정 단계(미도시)는, j 번째 유효 프로그램 비트벡터를 그룹 특성 벡터로 결정하여 그룹 특성 벡터 집합에 저장하는 단계(S730)를 포함할 수 있다.
다시 말해, S730 단계에서 그룹 특성 벡터 집합에 이미 저장된 i 번째 그룹 특성 벡터와 j 번째 유효 프로그램 비트벡터가 서로 비유사하다면, j 번째 유효 프로그램 비트벡터는 프로그램을 분류하기 위한 프로그램 그룹의 특성 벡터로써 활용될 수 있기 때문에, j 번째 유효 프로그램 비트벡터는 그룹 특성 벡터로 결정되어 그룹 특성 벡터 집합에 저장될 수 있다.
한편, S720 단계에서 판단 결과, 제1 유사도가 제2 임계값보다 크거나 같아 i 번째 그룹 특성 벡터와 j 번째 유효 프로그램 비트벡터가 서로 유사한 경우 도 8에 도시된 S810 단계가 수행될 수 있다.
도 8에 도시된 바와 같이, S720 단계의 판단 결과 i 번째 그룹 특성 벡터와 j 번째 유효 프로그램 비트벡터가 서로 유사한 경우, 제1 결정 단계(미도시)는, 아래와 같은 S810 단계, S820 단계, S830 단계, S840 단계 및 S850 단계를 포함할 수 있다.
S810 단계는 i 번째 그룹 특성 벡터와 j 번째 유효 프로그램 비트벡터를 서로 AND 연산하여 공통 비트벡터를 생성하는 단계를 의미할 수 있다.
다시 말해, 공통 비트벡터는 그룹 특성 벡터와 유효 프로그램 비트벡터를 AND 연산하여 생성된 비트벡터를 의미할 수 있다.
이때, 두 개의 비트벡터를 서로 AND 연산하는 구체적인 방법은 상기 도 6b에서 설명된 바와 같으므로 그 구체적인 설명은 생략한다.
S820 단계는, i 번째 그룹 특성 벡터와 공통 비트벡터 상호 간의 제2 유사도 및 j 번째 유효 프로그램 비트벡터와 공통 비트벡터 상호 간의 제3 유사도를 각각 산출하는 단계를 의미할 수 있다.
이때, 제2 유사도 및 제3 유사도를 산출하는 보다 구체적인 방법은 이하 도 9를 참조하여 후술하도록 하며, 중복되는 설명은 생략한다.
S830 단계, S840 단계 및 S850 단계는 제2 유사도 및 제3 유사도 각각에 제2 임계값을 적용하여 i 번째 그룹 특성 벡터와 공통 비트벡터가 서로 유사한지 여부 및 j 번째 유효 프로그램 비트벡터와 공통 비트벡터가 서로 유사한지 여부를 각각 판단하는 제2 판단 단계를 의미할 수 있다.
예를 들어, S830 단계에서 판단 결과 제2 유사도가 제2 임계값보다 크거나 같아 i번째 그룹 특성 벡터와 공통 비트벡터가 서로 유사한 것으로 판단되는 경우 S840 단계가 수행될 수 있다.
반면, S830 단계에서 판단 결과 제2 유사도가 제2 임계값보다 작아 i번째 그룹 특성 벡터와 공통 비트벡터가 서로 유사하지 않은 것으로 판단되는 경우 S850 단계가 수행될 수 있다.
예컨대, S840 단계에서 판단 결과 제3 유사도가 제2 임계값보다 크거나 같아 j번째 유효 프로그램 비트벡터와 공통 비트벡터가 서로 유사한 것으로 판단되는 경우 S841 단계가 수행될 수 있다.
반면, S840 단계에서 판단 결과 제3 유사도가 제2 임계값보다 작아 j번째 유효 프로그램 비트벡터와 공통 비트벡터가 서로 유사하지 않은 것으로 판단되는 경우 S845 단계가 수행될 수 있다.
마찬가지로, S850 단계에서 판단 결과 제3 유사도가 제2 임계값보다 크거나 같아 j번째 유효 프로그램 비트벡터와 공통 비트벡터가 서로 유사한 것으로 판단되는 경우 S851 단계가 수행될 수 있다.
이때, 제2 유사도 및 제3 유사도 각각에 적용되는 제2 임계값은 상기한 제1 유사도에 적용되는 제2 임계값과 서로 동일한 임계값일 수 있다.
그 뒤, S230 단계는 제2 판단 결과에 기초하여 그룹 특성 벡터 집합에 저장될 그룹 특성 벡터를 결정하는 제2 결정 단계(미도시)를 포함할 수 있다.
S830 단계의 판단 결과, i 번째 그룹 특성 벡터와 공통 비트벡터가 서로 유사하고, S840 단계의 판단 결과 j 번째 유효 프로그램 비트벡터와 공통 비트벡터가 서로 유사한 경우, 제2 결정 단계(미도시)는, 아래 S841 단계 및 S843 단계를 포함할 수 있다.
S841 단계는 i 번째 그룹 특성 벡터를 그룹 특성 벡터 집합에서 삭제하는 단계를 의미할 수 있다.
S843 단계는 공통 비트벡터를 그룹 특성 벡터로 결정하여 그룹 특성 벡터 집합에 저장하는 단계를 의미할 수 있다.
S841 단계 및 S843 단계의 수행 결과, 공통 비트벡터와 유사한 i 번째 그룹 특성 벡터는 그룹 특성 벡터 집합에서 삭제되고, 공통 비트벡터와 유사한 j 번째 유효 프로그램 비트벡터는 그룹 특성 벡터 집합에 저장되지 않기 때문에, 그룹 특성 벡터 집합에는 공통 비트벡터만이 그룹 특성 벡터로 결정되어 저장되게 된다.
S830 단계의 판단 결과, i 번째 그룹 특성 벡터와 공통 비트벡터가 서로 비유사하고, S850 단계의 판단 결과, j 번째 유효 프로그램 비트벡터와 공통 비트벡터가 서로 유사한 경우, 제2 결정 단계(미도시)는, 아래 S851 단계를 포함할 수 있다.
S851 단계는 공통 비트벡터를 그룹 특성 벡터로 결정하여 상기 그룹 특성 벡터 집합에 저장하는 단계를 의미할 수 있다.
S851 단계의 수행 결과, 공통 비트벡터와 비유사한 i 번째 그룹 특성 벡터는 그룹 특성 벡터 집합에 남아있고, 공통 비트벡터와 유사한 j 번째 유효 프로그램 비트벡터는 그룹 특성 벡터 집합에 저장되지 않기 때문에, 그룹 특성 벡터 집합에는 i번째 그룹 특성 벡터가 저장되며, 공통 비트벡터가 그룹 특성 벡터로 결정되어 저장되게 된다.
S830 단계의 판단 결과, i 번째 그룹 특성 벡터와 공통 비트벡터가 서로 유사하고, S840 단계의 판단 결과, j 번째 유효 프로그램 비트벡터와 공통 비트벡터가 서로 비유사한 경우, 제2 결정 단계(미도시)는, 아래 S845 단계 및 S847 단계를 포함할 수 있다.
S845 단계는 i 번째 그룹 특성 벡터를 그룹 특성 벡터 집합에서 삭제하는 단계를 의미할 수 있다.
S847 단계는 j 번째 유효 프로그램 비트벡터 및 공통 비트벡터 각각을 그룹 특성 벡터로 결정하여 그룹 특성 벡터 집합에 저장하는 단계를 의미할 수 있다.
S845 단계 및 S847 단계의 수행 결과, 공통 비트벡터와 유사한 i 번째 그룹 특성 벡터는 그룹 특성 벡터 집합에서 삭제되고, 공통 비트벡터와 비유사한 j 번째 유효 프로그램 비트벡터는 그룹 특성 벡터로 결정되어 그룹 특성 벡터 집합에 저장되기 때문에, 그룹 특성 벡터 집합에는 공통 비트벡터 및 j 번째 유효 프로그램 비트벡터 각각이 그룹 특성 벡터로 결정되어 저장되게 된다.
상기한 바와 같이, S230 단계에서 복수 개의 그룹 특성 벡터는 서로 유사하지 않도록 결정되어 그룹 특성 벡터 집합에 저장되기 때문에, 각각의 그룹 특성 벡터는 S240 단계에서 프로그램을 분류하기 위한 프로그램 그룹을 대표하는 특성 벡터로써 기능하게 된다.
이제 도 9를 참조하여, S230 단계에서 그룹 특성 벡터를 결정하기 위해 활용하는 제1 유사도, 제2 유사도 및 제3 유사도를 산출하는 방법을 설명한다.
도 9는 본 발명의 실시예에 따른 프로그램 분류 방법에서 그룹 특성 벡터 집합을 생성하기 위해 제1 유사도, 제2 유사도 및 제3 유사도를 산출하는 방법을 설명하기 위한 도면이다.
예를 들어, S230 단계에서 그룹 특성 벡터 집합 생성부(1300)는 상기한 제1 유사도, 제2 유사도 및 제3 유사도를 산출하기 위하여, 서로 다른 두 개의 비트벡터의 서로 대응되는 비트의 비트값을 서로 비교할 수 있다.
예를 들어, 그룹 특성 벡터 집합 생성부(1300)가 i 번째 그룹 특성 벡터와 j 번째 유효 프로그램 비트벡터의 서로 대응되는 비트를 비교하는 경우 제1 유사도가 산출될 수 있다.
예컨대, 그룹 특성 벡터 집합 생성부(1300)가 i 번째 그룹 특성 벡터와 공통 비트벡터의 서로 대응되는 비트를 비교하는 경우 제2 유사도가 산출될 수 있다.
예컨대, 그룹 특성 벡터 집합 생성부(1300)가 j 번째 유효 프로그램 비트벡터와 공통 비트벡터의 서로 대응되는 비트를 비교하는 경우 제3 유사도가 산출될 수 있다.
계속 도 9를 참조하여, 제1 유사도, 제2 유사도 및 제3 유사도를 산출하는 방법을 설명하기 위하여, 두 개의 비트벡터 간의 유사도를 산출하는 방법을 설명한다.
도 9에 도시된 바와 같이, 제1 비트벡터(91)는 i 번째 비트의 비트값이 "1", i+1 번째 비트의 비트값이 "1", j 번째 비트의 비트값이 "1", j+1 번째 비트의 비트값이 "1", j+2 번째 비트의 비트값이 "0"인 비트벡터로 "...11...110..."과 같이 표현될 수 있다.
마찬가지로, 제2 비트벡터(92)는 i 번째 비트의 비트값이 "0", i+1 번째 비트의 비트값이 "1", j 번째 비트의 비트값이 "0", j+1 번째 비트의 비트값이 "1", j+2 번째 비트의 비트값이 "1"인 비트벡터로 "...01...011..."과 같이 표현될 수 있다.
이 경우, S230 단계에서 그룹 특성 벡터 집합 생성부(1300)는 제1 유사도, 제2 유사도 또는 제3 유사도를 각각 산출하기 위하여, 제1 비트벡터(91) 및 제2 비트벡터(92)를 서로 대응되는 비트 별로 비교하여, 서로 일치하는 비트값을 가지는 비트의 개수에 기초하여 제1 비트벡터(91) 및 제2 비트벡터(92) 상호간의 유사도를 산출할 수 있다.
보다 상세하게, S230 단계에서 그룹 특성 벡터 집합 생성부(1300)는 제1 유사도, 제2 유사도 및 제3 유사도를 산출하기 위하여, 제1 비트벡터(91) 및 제2 비트벡터(92)에서 서로 대응되는 비트의 비트값이 모두 "1"인 비트의 개수를 서로 대응되는 비트의 비트값 중 적어도 하나가 "1"인 비트의 개수로 나누어 두 개의 비트벡터(91, 92) 상호간의 유사도를 산출할 수 있다.
예를 들어, 제1 비트벡터(91) 및 제2 비트벡터(92) 각각의 i번째 비트, i+1번째 비트, j번째 비트, j+1번째 비트, j+2번째 비트에 기초하여, 제1 비트벡터(91) 및 제2 비트벡터(92) 상호간의 유사도를 산출하면, 제1 비트벡터(91) 및 제2 비트벡터(92)에서 서로 대응되는 비트의 비트값이 모두 "1"인 비트는 i+1번째 비트 및 j+1번째 비트이며, 그 개수는 2개임을 확인할 수 있다.
한편, 제1 비트벡터(91) 및 제2 비트벡터(92)에서 서로 대응되는 비트의 비트값 중 적어도 하나가 "1"인 비트는 i번째 비트, i+1번째 비트, j번째 비트, j+1번째 비트, j+2번째 비트이며, 그 개수는 5개임을 확인할 수 있다.
그 결과, 제1 비트벡터(91) 및 제2 비트벡터(92) 상호간의 유사도는 2/5로 산출될 수 있다.
예를 들어 상술한 유사도 산출 방법은, 제1 비트벡터(91)와 제2 비트벡터(92)에서 "1"의 비트값을 가지는 비트의 교집합의 개수에서 "1"의 비트값을 가지는 비트의 합집합의 개수를 나누는 일종의 변형된 자카드 인덱스(Jaccard Index) 방법을 의미할 수 있으나, 본 발명은 이에 한정되지 않는다.
상술한 바와 같이, 제1 비트벡터(91)가 i 번째 그룹 특성 벡터이고, 제2 비트벡터(92)가 j 번째 유효 프로그램 비트벡터인 경우 산출되는 유사도는 제1 유사도를 의미할 수 있다.
상기한 바와 같이, 제1 비트벡터(91)가 i 번째 그룹 특성 벡터이고, 제2 비트벡터(92)가 공통 비트벡터인 경우 산출되는 유사도는 제2 유사도를 의미할 수 있다.
마찬가지로, 제1 비트벡터(91)가 j 번째 유효 프로그램 비트벡터고, 제2 비트벡터(92)가 공통 비트벡터인 경우 산출되는 유사도는 제3 유사도를 의미할 수 있다.
예를 들어, 상기한 제1 유사도, 제2 유사도 및 제3 유사도 각각은 상술한 방법 외에도 각종 유사도 산출 방법을 활용하여 산출될 수 있으며, 본 발명은 특정 유사도 산출 방법으로 한정되지 않는다.
이제 도 10을 참조하여, 프로그램 분류부(1400)에 의해 수행되는 S240 단계를 설명한다.
도 10은 본 발명의 실시예에 따른 프로그램 분류 방법에서 분류 대상 프로그램을 분류하는 방법을 설명하기 위한 순서도이다.
도 10에 도시된 바와 같이, S240 단계는 복수의 그룹 특성 벡터 각각에 대한 분류 대상 프로그램 각각의 포함률을 산출하는 단계(S241) 및 포함률에 제3 임계값을 적용하여 분류 대상 프로그램이 속하는 프로그램 그룹을 결정하는 단계(S243)를 포함한다.
S241 단계는, 복수 개의 그룹 특성 벡터 각각에 대한 적어도 하나의 분류 대상 프로그램 각각의 포함률을 산출하는 단계를 의미할 수 있다.
이때, 포함률은 상술한 분류 대상 프로그램이 상술한 그룹 특성 벡터에 포함되는 정도를 나타내는 값을 의미할 수 있다.
예를 들어, S241 단계에서 적어도 하나의 분류 대상 프로그램의 복수 개의 그룹 특성 벡터 각각에 대한 포함률을 산출하기 위하여, 적어도 하나의 분류 대상 프로그램 각각은 분류 대상 프로그램 비트벡터로 변환될 수 있다.
이때, 적어도 하나의 분류 대상 프로그램에 기초하여 적어도 하나의 분류 대상 프로그램 비트벡터를 생성하는 구체적인 방법은, 상기한 도 3에서 설명된 S211 단계, S213 단계, S215 단계 및 S217 단계에서 설명된 바와 같으므로 그 구체적인 설명은 생략한다.
이때, S241 단계에서 산출하는 포함률은 이하 도 11을 참조하여 후술하도록 하며, 중복되는 설명은 생략한다.
S243 단계는 포함률에 기설정된 제3 임계값을 적용하여 적어도 하나의 분류 대상 프로그램 각각이 속하는 프로그램 그룹을 결정하는 단계를 의미할 수 있다.
예를 들어, 제1 그룹 특성 벡터가 제1 프로그램 그룹의 특성을 대표하고, 제2 그룹 특성 벡터가 제2 프로그램 그룹의 특성을 대표하며, 제3 그룹 특성 벡터가 제3 프로그램 그룹의 특성을 대표하고, 기설정된 제3 임계값은 70%인 경우를 예로 들어 S241 단계 및 S243 단계를 설명한다.
S241 단계에서, 특정 분류 대상 프로그램의 특정 분류 대상 프로그램 비트벡터의 제1 그룹 특성 벡터에 대한 포함률이 50%로 산출되고, 제2 그룹 특성 벡터에 대한 포함률이 80%로 산출되며, 제3 그룹 특성 벡터에 대한 포함률이 30%로 산출된 경우를 가정한다.
상술한 예시의 경우, S243 단계에서 프로그램 분류부(1400)는 특정 분류 대상 프로그램의 제2 그룹 특성 벡터에 대한 포함률이 80%이므로, 특정 분류 대상 프로그램은 제2 프로그램 그룹에 속함을 결정할 수 있다.
이제, 도 11을 참조하여, S241 단계에서 포함률을 산출하는 방법을 설명한다.
도 11은 본 발명의 실시예에 따른 프로그램 분류 방법에서 분류 대상 프로그램을 분류하기 위한 포함률을 산출하는 방법을 설명하기 위한 도면이다.
도 11에 도시된 바와 같이, 제1 그룹 특성 벡터(111)는 i 번째 비트의 비트값이 "1", i+1 번째 비트의 비트값이 "1", j 번째 비트의 비트값이 "1", j+1 번째 비트의 비트값이 "1", j+2 번째 비트의 비트값이 "0"인 비트벡터로 "...11...110..."과 같이 표현될 수 있다.
마찬가지로, 제1 분류 대상 프로그램 비트벡터(112)는 i 번째 비트의 비트값이 "0", i+1 번째 비트의 비트값이 "1", j 번째 비트의 비트값이 "0", j+1 번째 비트의 비트값이 "1", j+2 번째 비트의 비트값이 "1"인 비트벡터로 "...01...011..."과 같이 표현될 수 있다.
상술한 예시에서, 프로그램 분류부(1400)는 제1 그룹 특성 벡터(111) 및 제1 분류 대상 프로그램 비트벡터(112)에서 서로 대응되는 비트의 비트값이 모두 "1"인 비트의 개수를 제1 그룹 특성 벡터(111)의 비트 중 비트값이 "1"인 비트의 개수로 나누어 제1 분류 대상 프로그램 비트벡터(112)의 제1 그룹 특성 벡터(111)에 대한 포함률을 산출할 수 있다.
예를 들어, 제1 그룹 특성 벡터(111) 및 제1 분류 대상 프로그램 비트벡터(112) 각각의 i번째 비트, i+1번째 비트, j번째 비트, j+1번째 비트, j+2번째 비트에 기초하여 제1 분류 대상 프로그램 비트벡터(112)의 제1 그룹 특성 벡터(111)에 대한 포함률을 산출하면, 제1 그룹 특성 벡터(111) 및 제1 분류 대상 프로그램 비트벡터(112)에서 서로 대응되는 비트의 비트값이 모두 "1"인 비트는 i+1번째 비트 및 j+1번째 비트이며, 그 개수는 2개임을 확인할 수 있다.
한편, 제1 그룹 특성 벡터(111)의 비트 중 비트값이 "1"인 비트는 i번째 비트, i+1번째 비트, j번째 비트, j+1번째 비트이며, 그 개수는 4개임을 확인할 수 있다.
그 결과, 제1 분류 대상 프로그램 비트벡터(112)의 제1 그룹 특성 벡터(111)에 대한 포함률은 2/4로 산출될 수 있다.
이상에서 본 발명에 따른 바람직한 실시예에 대해 설명하였으나, 다양한 형태로 변형이 가능하며, 본 기술분야에서 통상의 지식을 가진 자라면 본 발명의 특허청구범위를 벗어남이 없이 다양한 변형예 및 수정예를 실시할 수 있을 것으로 이해된다.
1: 프로그램 2: 비트벡터
61: 제1 프로그램 비트벡터 62: 제2 프로그램 비트벡터
63: 제n 프로그램 비트벡터 64: 함수 빈도수 벡터
65: 비트벡터 마스크 66: 제i 프로그램 비트벡터
67: 제i 유효 프로그램 비트벡터
91: 제1 비트벡터 92: 제2 비트벡터
111: 제1 그룹 특성 벡터 112: 제1 분류 대상 프로그램 비트벡터
1000: 프로그램 분류 장치 1100: 비트벡터 생성부
1200: 유효 비트벡터 생성부 1300: 그룹 특성 벡터 집합 생성부
1400: 프로그램 분류부

Claims (13)

  1. 비트벡터 생성부가, 미리 저장된 복수 개의 프로그램 각각에 포함된 모든 함수 또는 모든 기본 블록(basic block)을 나타내는 복수 개의 프로그램 비트벡터(bit vector)를 상기 복수 개의 프로그램 별로 각각 생성하는 단계;
    유효 비트벡터 생성부가, 상기 복수 개의 프로그램 비트벡터에 기초하여 비트벡터 마스크(mask)를 생성하고, 상기 복수 개의 프로그램 비트벡터 각각에 상기 비트벡터 마스크를 적용하여 복수 개의 유효 프로그램 비트벡터를 생성하는 단계;
    그룹 특성 벡터 집합 생성부가, 상기 복수 개의 유효 프로그램 비트벡터에 기설정된 조건을 적용하여 결정된 비트벡터인 복수 개의 그룹 특성 벡터를 포함하는 그룹 특성 벡터 집합을 생성하는 단계; 및
    프로그램 분류부가, 미리 저장된 적어도 하나의 분류 대상 프로그램과 상기 복수 개의 그룹 특성 벡터를 비교하여 상기 적어도 하나의 분류 대상 프로그램을 분류하는 단계를 포함하되,
    상기 복수 개의 프로그램 비트벡터는,
    상기 복수 개의 프로그램 각각에 포함된 모든 함수 또는 모든 기본 블록의 존재 여부를 나타내는 벡터로, 상기 모든 함수 또는 모든 기본 블록 각각에 대응되는 식별 번호에 대응되는 비트의 비트값을 설정하여 생성된 것을 특징으로 하는, 프로그램 분류 방법.
  2. 제1항에 있어서,
    상기 복수 개의 프로그램 비트벡터를 상기 복수 개의 프로그램 별로 각각 생성하는 단계는,
    상기 복수 개의 프로그램 각각에 포함된 모든 함수 또는 모든 기본 블록 각각에 해시함수를 적용하여 상기 모든 함수 또는 모든 기본 블록 각각을 임의의 비트열로 변환하는 단계;
    상기 모든 함수 또는 모든 기본 블록 각각에 대응되는 상기 임의의 비트열 각각에서 기설정된 개수의 연속된 비트열인 연속 비트열을 각각 추출하는 단계;
    추출된 상기 연속 비트열 각각을 기설정된 조건에 따라 변환하여 상기 모든 함수 또는 모든 기본 블록 각각에 대응되는 식별 번호를 생성하는 단계; 및
    상기 복수 개의 프로그램 각각에 대응되며 기설정된 개수의 비트를 포함하는 복수 개의 비트벡터 상에서 상기 식별 번호에 각각 대응되는 비트의 비트값을 설정하여 상기 복수 개의 프로그램 비트벡터를 각각 생성하는 단계를 포함하는, 프로그램 분류 방법.
  3. 제1항에 있어서,
    상기 복수 개의 유효 프로그램 비트벡터를 생성하는 단계는,
    상기 복수 개의 프로그램 비트벡터 상호간에 서로 대응되는 비트의 비트값을 모두 합산하여 상기 모든 함수 또는 모든 기본 블록 각각의 빈도수를 나타내는 함수 빈도수 벡터를 생성하는 단계;
    상기 함수 빈도수 벡터에 포함된 상기 모든 함수 또는 모든 기본 블록 각각의 빈도수에 기설정된 제1 임계값을 적용하여 상기 비트벡터 마스크를 생성하는 단계; 및
    상기 복수 개의 프로그램 비트벡터 각각과 상기 비트벡터 마스크를 서로 AND 연산하여 상기 복수 개의 유효 프로그램 비트벡터를 생성하는 단계를 포함하는, 프로그램 분류 방법.
  4. 제3항에 있어서,
    상기 비트벡터 마스크는,
    상기 모든 함수 또는 모든 기본 블록 각각의 빈도수 중 상기 기설정된 제1 임계값보다 큰 빈도수에 대응되는 함수 또는 기본 블록에 대한 비트의 비트값을 "1"로 설정하고, 상기 기설정된 제1 임계값보다 작은 빈도수에 대응되는 함수 또는 기본 블록에 대한 비트의 비트값을 "0"으로 설정한 비트벡터인, 프로그램 분류 방법.
  5. 제1항에 있어서,
    상기 그룹 특성 벡터 집합이 공집합인 경우,
    상기 그룹 특성 벡터 집합을 생성하는 단계는,
    상기 복수 개의 유효 프로그램 비트벡터 중 선택된 하나의 유효 프로그램 비트벡터를 그룹 특성 벡터로 결정하여 상기 그룹 특성 벡터 집합에 저장하는 단계를 포함하는, 프로그램 분류 방법.
  6. 제1항에 있어서,
    상기 그룹 특성 벡터 집합이 미리 저장된 적어도 하나의 그룹 특성 벡터를 포함하는 경우,
    상기 그룹 특성 벡터 집합을 생성하는 단계는,
    상기 적어도 하나의 그룹 특성 벡터 중 i 번째 그룹 특성 벡터와 상기 복수 개의 유효 프로그램 비트벡터 중 j 번째 유효 프로그램 비트벡터 상호 간의 제1 유사도를 산출하는 단계;
    상기 제1 유사도에 기설정된 제2 임계값을 적용하여 상기 i 번째 그룹 특성 벡터와 상기 j 번째 유효 프로그램 비트벡터가 서로 유사한지 여부를 판단하는 제1 판단 단계; 및
    상기 제1 판단 결과에 기초하여 상기 그룹 특성 벡터 집합에 저장될 그룹 특성 벡터를 결정하는 제1 결정 단계를 포함하는, 프로그램 분류 방법.
  7. 제6항에 있어서,
    상기 i 번째 그룹 특성 벡터와 상기 j 번째 유효 프로그램 비트벡터가 서로 비유사한 경우,
    상기 제1 결정 단계는,
    상기 j 번째 유효 프로그램 비트벡터를 그룹 특성 벡터로 결정하여 상기 그룹 특성 벡터 집합에 저장하는 단계를 포함하는, 프로그램 분류 방법.
  8. 제6항에 있어서,
    상기 i 번째 그룹 특성 벡터와 상기 j 번째 유효 프로그램 비트벡터가 서로 유사한 경우,
    상기 제1 결정 단계는,
    상기 i 번째 그룹 특성 벡터와 상기 j 번째 유효 프로그램 비트벡터를 서로 AND 연산하여 공통 비트벡터를 생성하는 단계;
    상기 i 번째 그룹 특성 벡터와 상기 공통 비트벡터 상호 간의 제2 유사도 및 상기 j 번째 유효 프로그램 비트벡터와 상기 공통 비트벡터 상호 간의 제3 유사도를 각각 산출하는 단계;
    상기 제2 유사도 및 상기 제3 유사도 각각에 상기 제2 임계값을 적용하여 상기 i 번째 그룹 특성 벡터와 상기 공통 비트벡터가 서로 유사한지 여부 및 상기 j 번째 유효 프로그램 비트벡터와 상기 공통 비트벡터가 서로 유사한지 여부를 각각 판단하는 제2 판단 단계; 및
    상기 제2 판단 결과에 기초하여 상기 그룹 특성 벡터 집합에 저장될 그룹 특성 벡터를 결정하는 제2 결정 단계를 포함하는, 프로그램 분류 방법.
  9. 제8항에 있어서,
    상기 i 번째 그룹 특성 벡터와 상기 공통 비트벡터가 서로 유사하고, 상기 j 번째 유효 프로그램 비트벡터와 상기 공통 비트벡터가 서로 유사한 경우,
    상기 제2 결정 단계는,
    상기 i 번째 그룹 특성 벡터를 상기 그룹 특성 벡터 집합에서 삭제하는 단계; 및
    상기 공통 비트벡터를 그룹 특성 벡터로 결정하여 상기 그룹 특성 벡터 집합에 저장하는 단계를 포함하는, 프로그램 분류 방법.
  10. 제8항에 있어서,
    상기 i 번째 그룹 특성 벡터와 상기 공통 비트벡터가 서로 비유사하고, 상기 j 번째 유효 프로그램 비트벡터와 상기 공통 비트벡터가 서로 유사한 경우,
    상기 제2 결정 단계는,
    상기 공통 비트벡터를 그룹 특성 벡터로 결정하여 상기 그룹 특성 벡터 집합에 저장하는 단계를 포함하는, 프로그램 분류 방법.
  11. 제8항에 있어서,
    상기 i 번째 그룹 특성 벡터와 상기 공통 비트벡터가 서로 유사하고, 상기 j 번째 유효 프로그램 비트벡터와 상기 공통 비트벡터가 서로 비유사한 경우,
    상기 제2 결정 단계는,
    상기 i 번째 그룹 특성 벡터를 상기 그룹 특성 벡터 집합에서 삭제하는 단계; 및
    상기 j 번째 유효 프로그램 비트벡터 및 상기 공통 비트벡터 각각을 그룹 특성 벡터로 결정하여 상기 그룹 특성 벡터 집합에 저장하는 단계를 포함하는, 프로그램 분류 방법.
  12. 제1항에 있어서,
    상기 적어도 하나의 분류 대상 프로그램을 분류하는 단계는,
    상기 복수 개의 그룹 특성 벡터 각각에 대한 상기 적어도 하나의 분류 대상 프로그램 각각의 포함률을 산출하는 단계; 및
    상기 포함률에 기설정된 제3 임계값을 적용하여 상기 적어도 하나의 분류 대상 프로그램 각각이 속하는 프로그램 그룹을 결정하는 단계를 포함하는, 프로그램 분류 방법.
  13. 미리 저장된 복수 개의 프로그램 각각에 포함된 모든 함수 또는 모든 기본 블록(basic block)을 나타내는 복수 개의 프로그램 비트벡터(bit vector)를 상기 복수 개의 프로그램 별로 각각 생성하는 비트벡터 생성부;
    상기 복수 개의 프로그램 비트벡터에 기초하여 비트벡터 마스크(mask)를 생성하고, 상기 복수 개의 프로그램 비트벡터 각각에 상기 비트벡터 마스크를 적용하여 복수 개의 유효 프로그램 비트벡터를 생성하는 유효 비트벡터 생성부;
    상기 복수 개의 유효 프로그램 비트벡터에 기설정된 조건을 적용하여 결정된 비트벡터인 복수 개의 그룹 특성 벡터를 포함하는 그룹 특성 벡터 집합을 생성하는 그룹 특성 벡터 집합 생성부; 및
    미리 저장된 적어도 하나의 분류 대상 프로그램과 상기 복수 개의 그룹 특성 벡터를 비교하여 상기 적어도 하나의 분류 대상 프로그램을 분류하는 프로그램 분류부를 포함하되,
    상기 복수 개의 프로그램 비트벡터는,
    상기 복수 개의 프로그램 각각에 포함된 모든 함수 또는 모든 기본 블록의 존재 여부를 나타내는 벡터로, 상기 모든 함수 또는 모든 기본 블록 각각에 대응되는 식별 번호에 대응되는 비트의 비트값을 설정하여 생성된 것을 특징으로 하는, 프로그램 분류 장치.
KR1020170078565A 2017-02-27 2017-06-21 프로그램 분류 방법 및 장치 KR101963822B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20170025313 2017-02-27
KR1020170025313 2017-02-27

Publications (2)

Publication Number Publication Date
KR20180099422A KR20180099422A (ko) 2018-09-05
KR101963822B1 true KR101963822B1 (ko) 2019-04-01

Family

ID=63594494

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170078565A KR101963822B1 (ko) 2017-02-27 2017-06-21 프로그램 분류 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101963822B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8660370B1 (en) 2009-04-30 2014-02-25 Google Inc. Principal component analysis based seed generation for clustering analysis
JP2016509309A (ja) * 2013-02-01 2016-03-24 シンボリック アイオー コーポレーション データを格納および取得するための方法およびシステム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100572660B1 (ko) 2004-06-30 2006-04-24 부산대학교 산학협력단 프로그램 소스의 표절 탐색 방법 및 이를 이용한프로그래밍 과제의 채점 시스템

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8660370B1 (en) 2009-04-30 2014-02-25 Google Inc. Principal component analysis based seed generation for clustering analysis
JP2016509309A (ja) * 2013-02-01 2016-03-24 シンボリック アイオー コーポレーション データを格納および取得するための方法およびシステム

Also Published As

Publication number Publication date
KR20180099422A (ko) 2018-09-05

Similar Documents

Publication Publication Date Title
CN109445834B (zh) 基于抽象语法树的程序代码相似性快速比较方法
CN111428044B (zh) 多模态获取监管识别结果的方法、装置、设备及存储介质
KR102010468B1 (ko) 악성코드 머신 러닝 분류 모델 검증 장치 및 방법
CN109005145B (zh) 一种基于自动特征抽取的恶意url检测系统及其方法
Veeranna et al. Using semantic similarity for multi-label zero-shot classification of text documents
CN104809069A (zh) 一种基于集成神经网络的源代码漏洞检测方法
CN107436875A (zh) 文本分类方法及装置
Dash et al. Are ChatGPT and deepfake algorithms endangering the cybersecurity industry? A review
CN112668013B (zh) 一种面向Java源码的语句级模式探索的漏洞检测方法
CN113221747A (zh) 一种基于隐私保护的隐私数据处理方法、装置及设备
Pham et al. Exploring efficiency of character-level convolution neuron network and long short term memory on malicious URL detection
Kenaza et al. An efficient hybrid svdd/clustering approach for anomaly-based intrusion detection
Karampidis et al. File type identification-computational intelligence for digital forensics
Assefa et al. Intelligent phishing website detection using deep learning
CN110705622A (zh) 一种决策方法、系统以及电子设备
CN105243327B (zh) 一种文件安全处理方法
CN105468972B (zh) 一种移动终端文件检测方法
CN113221717A (zh) 一种基于隐私保护的模型构建方法、装置及设备
KR101963822B1 (ko) 프로그램 분류 방법 및 장치
CN110704611B (zh) 基于特征解交织的非法文本识别方法及装置
CN107622201B (zh) 一种抗加固的Android平台克隆应用程序快速检测方法
CN110990834A (zh) 一种android恶意软件的静态检测方法、系统及介质
CN114817925B (zh) 基于多模态图特征的安卓恶意软件检测方法及系统
CN116204647A (zh) 一种目标比对学习模型的建立、文本聚类方法及装置
Lee et al. Trend of malware detection using deep learning

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