KR101829426B1 - 문자열 점수 기반 소프트웨어 저장 장치와 분류 장치 및 그 방법 - Google Patents

문자열 점수 기반 소프트웨어 저장 장치와 분류 장치 및 그 방법 Download PDF

Info

Publication number
KR101829426B1
KR101829426B1 KR1020160127556A KR20160127556A KR101829426B1 KR 101829426 B1 KR101829426 B1 KR 101829426B1 KR 1020160127556 A KR1020160127556 A KR 1020160127556A KR 20160127556 A KR20160127556 A KR 20160127556A KR 101829426 B1 KR101829426 B1 KR 101829426B1
Authority
KR
South Korea
Prior art keywords
software
character string
string
score
category
Prior art date
Application number
KR1020160127556A
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 KR1020160127556A priority Critical patent/KR101829426B1/ko
Application granted granted Critical
Publication of KR101829426B1 publication Critical patent/KR101829426B1/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
    • G06F17/2705

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명에 따르면, 소프트웨어의 분류에 있어서, 불법 복제되거나 표절되지 않은 복수의 소프트웨어에 대해 각 소프트웨어의 실행파일에 포함된 문자열을 추출/정제하여 문자열 점수를 산출하고, 문자열 점수를 기반으로 복수의 소프트웨어에 대한 분류를 수행한 소프트웨어 필터링 데이터 베이스를 생성한 후, 분류 대상 소프트웨어에 포함된 문자열에 대해 산출된 문자열 점수를 필터링 데이터 베이스와 비교하는 것을 통해 분류 대상 소프트웨어의 카테고리가 보다 정확하게 결정되도록 함으로써, 소프트웨어의 불법 복제 또는 표절의 탐지를 위한 소프트웨어 필터링 작업의 오버헤드를 줄일 수 있도록 한다.

Description

문자열 점수 기반 소프트웨어 저장 장치와 분류 장치 및 그 방법{APPARATUS FOR STORING AND CATEGORIZING UNKNOWN SOFTWARES BASED ON SCORE OF CHARACTER STRING AND METHOD THEREOF}
본 발명은 소프트웨어 분류에 관한 것으로, 특히 소프트웨어의 분류에 있어서, 불법 복제되거나 표절되지 않은 복수의 소프트웨어에 대해 각 소프트웨어의 실행파일에 포함된 문자열을 추출/정제하여 문자열 점수를 산출하고, 문자열 점수를 기반으로 복수의 소프트웨어에 대한 분류를 수행한 소프트웨어 필터링 데이터 베이스를 생성한 후, 분류 대상 소프트웨어에 포함된 문자열에 대해 산출된 문자열 점수를 필터링 데이터 베이스와 비교하는 것을 통해 분류 대상 소프트웨어의 카테고리가 보다 정확하게 결정되도록 함으로써, 소프트웨어의 불법 복제 또는 표절의 탐지를 위한 소프트웨어 필터링 작업의 오버헤드를 줄일 수 있도록 하는 문자열 점수 기반 소프트웨어 저장 장치와 분류 장치 및 그 방법에 관한 것이다.
오늘날 인터넷과 통신망의 발전으로 소프트웨어의 배포와 유통은 크게 증가하였고, 최근에는 스마트폰(smart phone)의 열풍으로 많은 사용자들이 어플리케이션 마켓을 통해 손쉽게 소프트웨어를 다운받아 사용할 수 있는 환경이 만들어졌다. 이러한 환경의 변화는 제품 선택의 기준이 하드웨어에서 소프트웨어로 넘어가는 결정적인 계기를 낳았다.
그러나, 인터넷과 같은 통신의 발달로 소프트웨어 불법 복제 및 표절이 급증하여, 소프트웨어 산업 발전에 걸림돌이 되고 있다. 즉, 예를 들어 불법 복제된 프로그램, 위조 또는 변조된 프로그램 등은 웹하드(web hard), 토렌트, 블랙마켓, 블로그, 카페 등의 다양한 경로를 통해 배포되고 있으며, 이와 같이 배포되는 불법 복제된 프로그램, 위조 또는 변조된 프로그램, 해킹된 모바일 앱 등의 불법 소프트웨어로 인하여 소프트웨어 개발사, 저작권사의 매출 하락이나, 소프트웨어 기술 개발, 인력양성, 투자 감소와 같은 악영향이 나타나고 있다.
여기서, 소프트웨어의 불법 복제(piracy)란 특정 소프트웨어를 그대로 복제(copy)하여 유통하거나 사용하는 것을 의미하며, 소프트웨어의 표절/도용(plagiarism/theft)이란 소프트웨어의 전체 코드 또는 일부 코드를 역공학(reverse engineering) 등의 방법으로 도용하여 사용하는 것을 의미할 수 있다.
한편, 위와 같은 불법 소프트웨어를 탐지하여 차단하기 위해 소프트웨어 필터링(software filtering) 기법이 도입되고 있다.
이때, 소프트웨어 필터링 기법이라 함은 의심스러운 프로그램이 업로드/다운로드(upload/download)될 때, 의심 프로그램을 기존 데이터 베이스(DB: data base)와 비교하고 기존 데이터 베이스에 등록된 프로그램들 중 하나인지 아닌지를 검사하여 불법 소프트웨어 여부를 판단하는 방법이다. 그러나, 위와 같은 종래의 소프트웨어 필터링 기법에서는 의심 프로그램에 대해 데이터 베이스에 등록된 모든 프로그램일 1대1로 단순 비교를 수행함에 따라 필터링 처리시간이 증가하는 문제점이 있었다.
이에 따라, 근래에 들어서는 소프트웨어 필터링 시 의심 프로그램과 데이터 베이스에 등록된 프로그램을 단순 1대1 비교함에 따른 필터링 처리시간의 증가 등과 같은 오버헤드(overhead)의 문제점을 개선하기 위해 소프트웨어를 분류하는 기법이 제안되고 있다.
그러나, 현재까지 제안되고 있는 소프트웨어 분류 기법에서는 소프트웨어를 특정 카테고리로 분류하는 명확한 기준이 제시되고 있지 않은 상태여서 소프트웨어 분류 기법을 통한 소프트웨어 필터링 동작의 신뢰성이 확보되고 있지 못한 상태이다.
(특허문헌)
대한민국 등록특허번호 10-1604891호(등록일자 2016년 03월 14일)
따라서, 본 발명에서는 소프트웨어의 분류에 있어서, 불법 복제되거나 표절되지 않은 복수의 소프트웨어에 대해 각 소프트웨어의 실행파일에 포함된 문자열을 추출/정제하여 문자열 점수를 산출하고, 문자열 점수를 기반으로 복수의 소프트웨어에 대한 분류를 수행한 소프트웨어 필터링 데이터 베이스를 생성한 후, 분류 대상 소프트웨어에 포함된 문자열에 대해 산출된 문자열 점수를 필터링 데이터 베이스와 비교하는 것을 통해 분류 대상 소프트웨어의 카테고리가 보다 정확하게 결정되도록 함으로써, 소프트웨어의 불법 복제 또는 표절의 탐지를 위한 소프트웨어 필터링 작업의 오버헤드를 줄일 수 있도록 하는 문자열 점수 기반 소프트웨어 저장 장치와 분류 장치 및 그 방법을 제공하고자 한다.
상술한 본 발명은 카테고리가 기 분류된 복수의 소프트웨어를 저장하는 저장 장치에 있어서, 상기 복수의 소프트웨어에서 소정의 문자열을 추출하는 추출부; 상기 카테고리 별 상기 소정의 문자열을 포함하는 소프트웨어의 수를 기초로 산출된 LDF(Local Document Frequency)값, 상기 복수의 소프트웨어 중 상기 소정의 문자열을 포함하는 소프트웨어의 수를 기초로 산출된 IDF(Inverse Document Frequency)값 및 상기 소정의 문자열을 갖는 소프트웨어를 포함하는 카테고리의 수를 기초로 산출된 ICF(Inverse Category Frequency)값 를 기반으로, 상기 소정의 문자열 별로 상기 카테고리마다 점수를 산출하는 점수 산출부; 및 상기 소정의 문자열 별로 상기 카테고리마다 상기 산출된 점수를 매핑시켜 저장하는 매핑부;를 포함g한다.
또한, 상기 LDF값은,
Figure 112016095825347-pat00001
상기 IDF값은,
Figure 112016095825347-pat00002
상기 ICF값은,
Figure 112016095825347-pat00003
이고,
상기 f는 문자열, 상기 Ci 는 카테고리 종류, 상기 n은 총 카테고리의 수, 상기 D는 상기 복수의 소프트웨어(프로그램) 집합, |D|는 상기 복수의 프로그램들의 수를 의미하는 것을 특징으로 한다.
또한, 상기 추출부는, 공백을 기준으로 상기 복수의 소프트웨어의 실행파일에 포함된 문자열을 추출하고, 상기 문자열에서 불용어를 제거하여 소정의 문자열을 추출하는 것을 특징으로 한다.
또한, 상기 불용어는, a, an, the, of, 및 세번 이상 연속된 동일문자 중 적어도 하나를 포함하는 것을 특징으로 한다.
또한, 본 발명은 문자열 점수 기반 소프트웨어 분류 장치로서, 청구항 제1항 내지 제4항 중 어느 한 항의 저장 장치; 타겟 소프트웨어를 입력받는 입력부; 상기 타겟 소프트웨어에서 문자열을 추출하고, 상기 추출된 문자열 중 상기 소정의 문자열에 해당하는 문자열을 선택하는 문자열 선택부; 및 상기 매핑부를 참조하여 상기 카테고리 별로 상기 선택된 문자열에 매핑된 점수를 합산하고, 상기 합산된 점수가 가장 높은 카테고리를 상기 타겟 소프트웨어의 카테고리로 분류하는 분류부;를 포함한다.
또한, 본 발명은 카테고리가 기 분류된 복수의 소프트웨어를 저장하는 저장장치가 문자열 점수 기반으로 상기 복수의 소프트웨어를 저장하는 방법에 있어서, 상기 복수의 소프트웨어에서 소정의 문자열을 추출하는 단계; 상기 카테고리 별 상기 소정의 문자열을 포함하는 소프트웨어의 수를 기초로 LDF(Local Document Frequency)값을 산출하는 단계; 상기 복수의 소프트웨어 중 상기 소정의 문자열을 포함하는 소프트웨어의 수를 기초로 IDF(Inverse Document Frequency)값을 산출하는 단계; 상기 소정의 문자열을 갖는 소프트웨어를 포함하는 카테고리의 수를 기초로 ICF(Inverse Category Frequency)값을 산출하는 단계; 상기 LDF값, LDF값, ICF값을 기반으로 상기 소정의 문자열 별로 상기 카테고리마다 점수를 산출하는 단계; 및 상기 소정의 문자열 별로 상기 카테고리마다 상기 산출된 점수를 매핑시켜 저장하는 단계;를 포함한다.
또한, 상기 추출하는 단계는, 공백을 기준으로 상기 복수의 소프트웨어의 실행파일에 포함된 문자열을 추출하는 단계; 상기 추출된 문자열에서 불용어를 제거하여 소정의 문자열을 추출하는 단계;를 포함하는 것을 특징으로 한다.
또한, 본 발명은 청구항 제1항 내지 제4항 중 어느 한 항의 저장장치를 이용하여 타켓 소프트웨어의 카테고리를 분류하는 방법에 있어서, 타겟 소프트웨어를 입력받는 단계; 상기 타겟 소프트웨어에서 문자열을 추출하고, 상기 추출된 문자열 중 상기 소정의 문자열에 해당하는 문자열을 선택하는 단계; 및 상기 저장 장치를 참조하여 상기 카테고리 별로 상기 선택된 문자열에 매핑된 점수를 합산하고, 상기 합산된 점수가 가장 높은 카테고리를 상기 타겟 소프트웨어의 카테고리로 분류하는 단계;를 포함한다.
본 발명에 따르면, 소프트웨어의 분류에 있어서, 불법 복제되거나 표절되지 않은 복수의 소프트웨어에 대해 각 소프트웨어의 실행파일에 포함된 문자열을 추출/정제하여 문자열 점수를 산출하고, 문자열 점수를 기반으로 복수의 소프트웨어에 대한 분류를 수행한 소프트웨어 필터링 데이터 베이스를 생성한 후, 분류 대상 소프트웨어에 포함된 문자열에 대해 산출된 문자열 점수를 필터링 데이터 베이스와 비교하는 것을 통해 분류 대상 소프트웨어의 카테고리가 보다 정확하게 결정되도록 함으로써, 소프트웨어의 불법 복제 또는 표절의 탐지를 위한 소프트웨어 필터링 작업의 오버헤드를 줄일 수 있도록 하는 이점이 있다.
도 1은 본 발명의 실시예에 따른 소프트웨어 분류를 위한 문자열 점수 생성장치의 상세 블록 구성도,
도 2는 본 발명의 실시예에 따른 문자열 정제 개념도,
도 3은 본 발명의 실시예에 따른 문자열 점수 생성장치에서 소프트웨어별 문자열 점수를 산출하는 동작 제어 흐름도,
도 4는 본 발명의 실시예에 따른 소프트웨어 분류 장치가 적용되는 환경을 설명하기 위한 개념도,
도 5는 본 발명의 실시예에 따른 소프트웨어 분류 장치의 상세 블록 구성도,
도 6은 본 발명의 실시예에 따른 소프트웨어 분류 장치에서 분류 대상 소프트웨어의 카테고리를 분류하는 동작 제어 흐름도
도 7은 본 발명의 실시예에 따른 문자열 추출 개수 및 정제율 표 예시도,
도 8은 본 발명의 실시예에 따른 첫 번째 소프트웨어 집합에 대한 분류율 표 예시도,
도 9는 본 발명의 실시예에 따른 두 번째 소프트웨어 집합에 대한 분류율 표 예시도,
도 10은 본 발명의 실시예에 따른 첫 번째 소프트웨어 집합과 두 번째 소프트웨어 집합에서 서로 다른 소프트웨어의 수 표 예시도,
도 11은 본 발명의 실시예에 따른 소프트웨어 분류 방법과 종래 방법간 분류율 비교 표 예시도.
이하, 첨부된 도면을 참조하여 본 발명의 동작 원리를 상세히 설명한다. 하기에서 본 발명을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도 1은 본 발명의 실시예에 따른 문자열 점수 기반 소프트웨어 저장장치의 상세 블록 구성을 도시한 것으로, 입력부(102), 추출부(104), 점수 산출부(106), 매핑부(108) 등을 포함할 수 있다.
이하, 도 1을 참조하여 본 발명의 실시예에 따른 소프트웨어 저장장치(100)의 각 구성요소에서의 동작을 상세히 설명하기로 한다.
먼저, 입력부(102)는 카테고리가 사전에 분류된 복수의 소프트웨어를 입력 받는다. 이러한 소프트웨어는 소프트웨어의 분류를 위한 기계학습(Machine learning) 훈련용 소프트웨어로서, 불법 복제되거나 표절되지 않은 소프트웨어인 것이 바람직하나, 이에 한정되지는 않는다. 또한, 이러한 소프트웨어는 사전에 복수의 카테고리로 분류된 소프트웨어로서, 예를 들어, Audio Player, Browser, CD Writer, FTP, Image Viewer, Messenger, Text Editor, Video Player, Zip 등의 카테고리 중 어느 하나의 카테고리에 포함될 수 있다.
그러나 이에 한정되지 않고, 입력부(102)가 없이 카테고리가 기 지정된 복수의 소프트웨어를 미리 저장된 기록매체를 구비하여, 이러한 기록매체를 곧바로 활용할 수도 있다.
추출부(104)는 입력부(102)로부터 입력되는 카테고리가 사전 분류된 복수의 소프트웨어에 대해 각 소프트웨어별 소정의 문자열 정보를 추출한다. 이때, 문자열 정보를 추출함에 있어서, 추출부(104)는 각 소프트웨어의 실행파일의 여러 섹션(section)에서 문자열을 추출할 수 있으며, 예를 들어 .text/.data/.rdata 섹션과 .rsrc 섹션에서 추출할 수 있다.
또한, 이때, .rsrc 섹션에서 문자열을 추출함에 있어서, 언어의 옵션에 따라 추출 유/무를 정할 수 있으며, 언어의 유형 중에 LANG_NEUTRAL과 LANG_ENGLISH 두 가지를 고려하여 추출할 수 있으나, 이에 한정되는 것은 아니다.
한편, 위와 같이 추출부(104)에서 추출되는 문자열은 실행파일의 각 섹션에서 추출되는 경우, 문자열 정보가 하나의 단어로 되어 있지 않고, 문장 등과 같이 여러 단어들로 이루어져 있는 경우가 있을 수 있다. 따라서, LDF(Local Document Frequency)-IDF(Inverse Document Frequency)-ICF(Inverse Category Frequency)를 적용할 경우 여러 문자열들을 각각의 단어로 나누어주는 것이 필요하다.
따라서, 추출부(104)는 문자열이 문장 등과 같이 여러 단어들로 이루어져 있는 경우, 해당 문자열을 각각의 단어 즉, 개별 문자열로 나누는 등의 문자열 정제를 수행한다.
도 2는 추출부(104)에서 문자열을 정제하는 절차를 도시한 것으로, 추출부(104)는 도 2에서 보여지는 바와 같이 2단계의 절차를 거쳐 문자열 정제할 수 있다.
위, 도 2를 참조하면, 추출부(104)는 1단계에서는 예를 들어 참조번호 (200)에 예시되는 바와 같은 문자열에 대해, 공백 기준으로 단어를 나누거나, 대문자를 소문자로 통일시킬 수 있다. 또한, 숫자, 특수문자, 개행문자, 변수, 한 단어 등을 제거할 수 있다. 위와 같은 1단계 정제 과정을 통해 참조번호 (202)에서 보여지는 바와 같이 문자열이 정제될 수 있다.
이어, 추출부(104)는 1단계에서 정제된 문자열에 대해 다시 2단계의 문자열 정제를 수행하게 되며, 이러한 2단계의 문자열 정제과정에서는 예를 들어 a, an, the, of 등과 같은 불용어(stop words)을 제거할 수 있다. 위와 같은 2단계 정제 과정을 통해 참조번호 (204)에서 보여지는 바와 같이 문자열이 정제될 수 있다.
또한, 추출부(104)는 문자열을 정제하는 과정에서, 문자열 추출 후, 의미 없는 문자열을 불용어 목록에 추가할 수 있으며, 동일 문자가 세 번 연속으로 나타난 단어의 경우 불용어로 간주하나, "www" 같은 의미가 있는 단어는 불용어로 간주하지 않도록 할 수 있다.
이때, 위와 같은 문자열 정제 후, 예를 들어 50개 이상의 단어들을 포함하고 있는 소프트웨어들을 데이터 베이스 생성을 위한 소프트웨어로 고려할 수 있으나, 이에 한정되는 것은 아니다. 또한, 상대적으로 작은 개수의 단어를 기반으로 소프트웨어를 분류하는 경우 소프트웨어 분류 시 오차가 발생할 가능성이 높아지는 것을 방지하기 위해 50개 이상의 단어를 포함하도록 하는 것이 바람직하나 이에 한정되는 것은 아니다.
점수 산출부(106)는 카테고리 별 소정의 문자열을 포함하는 소프트웨어의 수를 기초로 산출된 LDF(Local Document Frequency)값, 상기 복수의 소프트웨어 중 상기 소정의 문자열을 포함하는 소프트웨어의 수를 기초로 산출된 IDF(Inverse Document Frequency)값 및 상기 소정의 문자열을 갖는 소프트웨어를 포함하는 카테고리의 수를 기초로 산출된 ICF(Inverse Category Frequency)값 을 기반으로 하여 소정의 문자열 별로 카테고리마다 점수를 산출할 수 있다.
즉, 점수 산출부(106)는 소프트웨어의 분류에 사용될 각 문자열 점수를 아래의 [수학식1]에서와 같이 계산할 수 있다.
Figure 112016095825347-pat00004
위 [수학식 1]에서 LDF(Local Document Frequency)는 하나의 특정 카테고리에 대해 해당 문자열을 포함한 프로그램의 수를 반영한다. 또한, IDF(Inverse Document Frequency)는 모든 카테고리의 소프트웨어에 대해 해당 문자열을 포함하고 있는 프로그램들의 개수에 대한 역이다. ICF(Inverse Category Frequency)는 모든 카테고리 수에 대해 해당 문자열을 포함하고 있는 카테고리들 개수에 대한 역이다. 이때, 특정 카테고리 Ci에서 한 문자열 f에 대한 점수는 LDF, IDF, ICF의 값을 기반으로 위 [수학식1]에서와 같이 SCORE(f, Ci)로 계산될 수 있다.
매핑부(104)는 위와 같이 계산된 문자열 점수를 카테고리 별로 각 문자열에 대한 SCORE(f, Ci) 표를 만들어 관리할 수 있다.
매핑부(108)는 소정의 문자열별로 카테고리마다 산출된 점수를 매핑시켜 저장한다. 즉, 매핑부(108)는 점수 산출부(106)에서 계산된 각 문자열의 문자열 점수를 기반으로 카테고리별 각 문자열에 대한 점수로 매핑하여 저장하며, 이러한 문자열 점수는 후속하여 설명하는 소프트웨어 분류장치에서 분류 대상 소프트웨어의 카테고리 분류 과정에서 소프트웨어 분류장치에 의해 참조될 수 있다.
이때, 이러한 문자열 점수는 문자열 정보를 기반으로 해당 소프트웨어가 어떤 특성을 가진 소프트웨어인지를 분류할 수 있도록 하는 정보를 의미할 수 있다. 즉, 각 문자열 점수는 해당 소프트웨어를 예를 들어 Audio Player, Browser, CD Writer, FTP, Image Viewer, Messenger, Text Editor, Video Player 등에 속하는 것으로 분류할 수 있도록 지시하는 값일 수 있다.
도 3은 본 발명의 실시예에 따른 문자열 기반 소프트웨어 저장 장치(100)에서 카테고리가 사전에 분류된 기계 학습 훈련용 복수의 소프트웨어에 대해 각 소프트웨어의 문자열 점수를 산출하는 동작 제어 흐름을 도시한 것이다. 이하, 도 1 내 도 3을 참조하여 본 발명의 실시예를 상세히 설명하기로 한다.
먼저, 소프트웨어 저장 장치(100)는 카테고리가 분류된 불법 복제되거나 표절되지 않은 복수의 소프트웨어를 기계 학습 훈련용 소프트웨어로서 입력 받는다(S300).
이때, 이러한 소프트웨어는 사전에 복수의 카테고리로 분류된 소프트웨어로서, 예를 들어, Audio Player, Browser, CD Writer, FTP, Image Viewer, Messenger, Text Editor, Video Player, Zip 등의 카테고리 중 어느 하나의 카테고리에 포함될 수 있다.
이어, 소프트웨어 저장 장치(100)는 입력된 불법 복제되거나 표절되지 않은 복수의 소프트웨어에 대해, 각각의 소프트웨어의 실행파일에 포함된 문자열 정보를 추출한다(S302). 이때, 이때, 문자열 정보를 추출함에 있어서, 소프트웨어 저장 장치(100)는 각 소프트웨어의 실행파일의 여러 섹션에서 문자열을 추출할 수 있으며, 예를 들어 .text/.data/.rdata 섹션과 .rsrc 섹션에서 추출할 수 있다.
또한, 이때, .rsrc 섹션에서 문자열을 추출함에 있어서, 언어의 옵션에 따라 추출 유/무를 정할 수 있으며, 언어의 유형 중에 LANG_NEUTRAL과 LANG_ENGLISH 두 가지를 고려하여 추출할 수 있으나, 이에 한정되는 것은 아니다.
한편, 위와 같이 추출되는 문자열은 실행파일의 각 섹션(section)에서 추출되는 경우, 문자열 정보가 하나의 단어로 되어 있지 않고, 문장 등과 같이 여러 단어들로 이루어져 있는 경우가 있을 수 있다. 따라서, LDF-IDF-ICF를 적용할 경우 여러 문자열들을 각각의 단어로 나누어주는 것이 필요하다.
이에 따라, 소프트웨어 저장 장치(100)는 위와 같이 각 소프트웨어의 실행파일로부터 추출된 문자열이 문장 등과 같이 여러 단어들로 이루어져 있는 경우, 해당 문자열을 각각의 단어 즉, 개별 문자열로 나누는 등의 문자열 정제를 수행한다(S304).
이때, 소프트웨어 저장 장치(100)는 위와 같은 문자열 정제를 수행함에 있어서, 예를 들어 1단계에서는 위 도 2의 참조번호 (200)에 예시되는 바와 같은 문자열에 대해, 공백 기준으로 단어를 나누거나, 대문자를 소문자로 통일시킬 수 있다. 또한, 숫자, 특수문자, 개행문자, 변수, 한단어 등을 제거할 수 있다. 위와 같은 1단계 정제 과정을 통해 참조번호 (202)에서 보여지는 바와 같이 문자열이 정제될 수 있다.
이어, 소프트웨어 저장 장치(100)는 1단계에서 정제된 문자열에 대해 다시 2단계의 문자열 정제를 수행하게 되며, 이러한 2단계의 문자열 정제과정에서는 예를 들어 a, an, the, of 등과 같은 불용어(stop words)을 제거할 수 있다. 위와 같은 2단계 정제 과정을 통해 참조번호 (204)에서 보여지는 바와 같이 문자열이 정제될 수 있다.
이어, 소프트웨어 저장 장치(100)는 각 문자열이 카테고리별 각 소프트웨어내 포함된 횟수에 기반을 둔 문자열 점수를 위 [수학식1]에서 보여지는 바와 같이 LDF-IDF-ICF 수식을 사용하여 카테고리별 문자열 점수를 생성한다(S306).
이때, 위 [수학식 1]에서 LDF(Local Document Frequency)는 하나의 특정 카테고리에 대해 해당 문자열을 포함한 프로그램의 수를 반영한다. 또한, IDF(Inverse Document Frequency)는 모든 카테고리의 소프트웨어 대해 해당 문자열을 포함하고 있는 프로그램들의 개수에 대한 역이다. ICF(Inverse Category Frequency)는 모드 카테고리 수에 대해 해당 문자열을 포함하고 있는 카테고리들 개수에 대한 역이다. 이때, 특정 카테고리 Ci에서 한 문자열 f에 대한 점수는 위 [수학식1]에서와 같이 SCORE(f, Ci)로 계산될 수 있다.
이어, 소프트웨어 저장 장치(100)는 위와 같이 계산된 문자열 점수를 카테고리별로 각 문자열에 대한 SCORE(f,Ci) 표를 만들 수 있으며, 각 문자열의 문자열 점수를 기반으로 카테고리별 각 문자열에 대한 점수로 매핑하여 저장하고, 이와 같이 저장된 문자열 점수가 후속하여 설명하는 소프트웨어 분류장치에서 분류 대상 소프트웨어의 카테고리 분류 과정에서 참조될 수 있도록 할 수 있다.
도 4는 본 발명의 실시예에 따른 문자열 기반 소프트웨어 분류 장치가 적용되는 환경을 설명하기 위한 개념도를 도시한 것이다.
위 도 4를 참조하면, 웹 하드(web hard; 10) 상에는 다수 사용자에 의해서 다종의 소프트웨어들(20, 30, 40, ...)이 업로드될 수 있다. 여기에서, 웹 하드(10)는 다수의 사용자가 소프트웨어 또는 컨텐츠를 업로드할 수 있는 클라우드(cloud) 저장 공간의 일종을 의미하며, 웹 하드라는 명칭에 구애 받지 않고, 다양한 온라인 저장 공간들을 포괄하는 개념일 수 있다.
본 발명의 실시예에 따른 소프트웨어 분류 장치(400)는 웹 하드(10)에 업로드 되는 다종의 대상 소프트웨어들(20, 30, 40, ...)에 대해서 업로드 단계에서 해당 소프트웨어의 카테고리를 분류할 수 있다.
또한, 소프트웨어 분류 장치(400)는 위와 같이 소프트웨어의 카테고리를 분류함에 있어서, 소프트웨어의 실행파일에 포함된 문자열 정보 등의 특징 정보를 이용하여 카테고리가 분류된 복수의 소프트웨어에 대해 사전에 계산된 문자열 점수를 이용하여 분류 대상 소프트웨어의 카테고리를 분류할 수 있다.
즉, 소프트웨어 분류 장치(400)는 사용자 컴퓨터 단말로부터 웹하드(10) 등의 클라우드 저장공간에 분류 대상 소프트웨어인 타켓 소프트웨어가 업로드되는 경우 업로드되는 소프트웨어에 대해 해당 소프트웨어의 실행파일에 포함된 문자열 정보를 추출하고, 추출된 문자열 중 소정의 문자열에 해당하는 문자열을 선택하고, 매핑부(108)를 참조하여 카테고리 별로 상기 선택된 문자열에 매핑된 점수를 합산하고, 합산된 점수가 가장 높은 카테고리를 타겟 소프트웨어의 카테고리로 분류할 수 있다.
이때, 소프트웨어 분류 장치(400)에서 분류 대상 소프트웨어의 문자열 정보를 이용하여 해당 소프트웨어를 특정 카테고리로 분류하는 동작에 대해서는 소프트웨어 분류 장치(400)의 상세 블록을 도시하고 각 블록의 동작을 설명하는 후술되는 도 5에서 상세히 설명하기로 한다.
또한, 소프트웨어 분류 장치(500)를 통해 분류 대상 소프트웨어의 카테고리가 분류되는 경우, 이와 같이 카테고리가 분류된 소프트웨어는 소프트웨어 분류 장치(500)와 연동될 수 있는 소프트웨어 불법 탐지 장치(도시되지 않음)에서 카테고리별 기 등록된 정상적인 소프트웨어와 비교되어 불법 복제 또는 위조/변조된 프로그램 여부가 탐지될 수 있다.
한편, 위와 같은 설명에서는 개인용 PC 등의 사용자 단말로부터 웹하드(10) 등의 클라우드 저장공간으로 업로드되는 소프트웨어에 대한 소프트웨어 분류 과정을 설명하였으나, 웹하드(10)에서 다운로드되는 소프트웨어에 대해서도 동일한 소프트웨어 분류 과정이 적용될 수 있다.
또한, 본 발명의 실시예에 따른 소프트웨어 분류 장치(400)는 웹 하드(10) 등에 업로드/다운로드되는 소프트웨어를 보다 정확한 카테고리로 분류하여 소프트웨어의 불법 복제 또는 표절 여부의 탐지를 용이하게 하기 위한 용도뿐만 아니라, 오프라인 상태에서 소프트웨어의 불법 복제 또는 표절 여부의 탐지를 용이하게 하기 위한 소프트웨어 분류 과정에도 적용될 수 있다. 예컨대, 탐지 대상 컴퓨터에 탑재된 하드 디스크와 같은 저장 장치를 검색하여 불법 복제 또는 표절 소프트웨어의 존재 여부를 탐지하는 경우 대상 소프트웨어에 대한 보다 신속한 탐지를 위해 소프트웨어를 분류하는 용도로도 본 발명의 소프트웨어 분류 장치(400)는 이용될 수 있다.
도 5는 본 발명의 실시예에 따른 문자열 정보를 이용한 소프트웨어 분류 장치(400)의 상세 회로 구성을 도시한 것으로, 저장장치(100), 입력부(410), 문자열 선택부(420), 분류부(430) 등을 포함할 수 있다.
이하, 도 5를 참조하여 소프트웨어 분류 장치(400)의 각 구성요소에서의 동작을 보다 상세히 설명하기로 한다.
먼저, 입력부(410)는 분류 대상 소프트웨어인 타겟 소프트웨어를 입력 받는다. 문자열 선택부(420)는 입력부(410)를 통해 타겟 소프트웨어가 입력되는 경우 해당 타겟 소프트웨어에서 문자열 정보를 추출한다.
즉, 문자열 선택부(420)는 타겟 소프트웨어에서 문자열을 추출하고, 추출된 문자열 중 소정의 문자열에 해당하는 문자열을 선택한다.
이때, 문자열 정보는 예를 들어 타켓 소프트웨어의 실행 파일(executable file)에서 추출될 수 있으며, 또한, 이러한 실행 파일은 해당 대상 소프트웨어의 운영 플랫폼에 따라서 다양한 형태를 취할 수가 있다. 예컨대, 실행 파일은 운영 플랫폼을 구성하는 운영체제(OS: Operating System)가 마이크로소프트 윈도우 (Microsoft Windows)인 경우는 PE 파일 포맷의 EXE 파일, 운영체제가 자바(Java)인 경우는 바이트(byte) 파일, 운영체제가 Android인 경우는 DEX 파일, 운영체제가 리눅스(Linux)인 경우는 ELF 포맷의 a.out 파일 등이 될 수 있다. 실행파일로부터 문자열 정보를 추출하는 실행파일 섹션의 구조/구성은 운영체제마다 다를 수 있다.
또한, 위와 같은 타겟 소프트웨어라 함은 개인용 PC 등의 사용자 단말로부터 웹하드(10) 등의 클라우드 저장공간으로 업로드되는 소프트웨어, 또는 웹하드(10) 등에서 다운로드되는 소프트웨어가 될 수 있으며, 또는 탐지 대상 컴퓨터에 탑재된 하드 디스크와 같은 저장 장치에 저장된 소프트웨어가 될 수도 있으나, 이에 한정되는 것은 아니다. 또한, 이러한 분류 대상 소프트웨어는 불법 복제 여부 또는 위조/변조 여부가 확인되지 않은 상태의 소프트웨어를 의미할 수 있으나, 이에 한정되는 것은 아니다.
또한, 문자열 정보를 추출함에 있어서, 문자열 선택부(420)는 각 소프트웨어의 실행파일의 여러 섹션에서 문자열을 추출할 수 있으며, 예를 들어 .text/.data/.rdata 섹션과 .rsrc 섹션에서 추출할 수 있다.
또한, 이때, .rsrc 섹션에서 문자열을 추출함에 있어서, 언어의 옵션에 따라 추출 유/무를 정할 수 있으며, 언어의 유형 중에 LANG_NEUTRAL과 LANG_ENGLISH 두 가지를 고려하여 추출할 수 있으나, 이에 한정되는 것은 아니다.
한편, 위와 같이 문자열이 실행파일의 각 섹션(section)에서 추출되는 경우, 문자열 정보가 하나의 단어로 되어 있지 않고, 문장 등과 같이 여러 단어들로 이루어져 있는 경우가 있을 수 있다. 따라서, LDF-IDF-ICF를 적용할 경우 여러 문자열들을 각각의 단어로 나누어주는 것이 필요하다.
문자열 선택부(420)는 위와 같이 추출된 문자열이 문장 등과 같이 여러 단어들로 이루어져 있는 경우, 해당 문자열을 각각의 단어 즉, 개별 문자열로 나누는 등의 문자열 정제를 수행할 수 있다.
이때, 문자열 선택부(420)는 전술한 도 2에서 보여지는 바와 같이 2단계의 절차를 거쳐 문자열 정제할 수 있다.
즉, 문자열 선택부(420)는 1단계에서는 예를 들어 참조번호 (200)에 예시되는 바와 같은 문자열에 대해, 공백 기준으로 단어를 나누거나, 대문자를 소문자로 통일시킬 수 있다. 또한, 숫자, 특수문자, 개행문자, 변수, 한단어 등을 제거할 수 있다. 위와 같은 1단계 정제 과정을 통해 참조번호 (202)에서 보여지는 바와 같이 문자열이 정제될 수 있다.
이어, 문자열 선택부(420)는 1단계에서 정제된 문자열에 대해 다시 2단계의 문자열 정제를 수행하게 되며, 이러한 2단계의 문자열 정제과정에서는 예를 들어 a, an, the, of 등과 같은 불용어(stop words)을 제거할 수 있다. 위와 같은 2단계 정제 과정을 통해 참조번호 (204)에서 보여지는 바와 같이 문자열이 정제될 수 있다.
분류부(430)는 저장장치(100)의 매핑부(108)를 참조하여 문자열 선택부(420)를 통해 카테고리별로 선택된 문자열에 매핑된 점수를 합산하고, 합산된 점수가 가장 높은 카테고리를 타겟 소프트웨어의 카테고리로 분류할 수 있다.
카테고리는 복수의 카테고리가 소정의 주제별로 나뉘어져 있다. 예를 들면 Audio Player, Browser, CD Writer, FTP, Image Viewer, Messenger, Text Editor, Video Player 등 유사한 종류의 소프트웨어 별로 나뉘어져 있을 수 있다. 이때, 각 카테고리에 포함된 소프트웨어의 문자열의 종류 및 사용빈도는 해당 소프트웨어가 어떤 특성을 가진 소프트웨어인지를 분류할 수 있도록 하는 정보를 의미할 수 있다.
이에 따라 각 카테고리 내의 소프트웨어들은 사용하는 문자열 종류 및 빈도가 비슷하다는 점에 착안하여 카테고리 별 소정의 문자열마다 점수를 부가한 것이다. 따라서 타겟 소프트웨어에서 선택된 문자열을 기초로, 각 카테고리 별로 선택된 문자열의 종류 및 빈도를 측정한 점수가 가장 높은 카테고리로 타겟 소프트웨어의 카테고리를 분류하여, 타겟 소프트웨어의 카테고리를 정할 수 있는 것이다.
도 6은 본 발명의 실시예에 따른 소프트웨어 분류 장치(400)가 저장 장치(100)를 이용하여 분류 대상 소프트웨어의 카테고리를 분류하는 동작 제어 흐름을 도시한 것이다. 이하, 도 3 내지 도 6을 참조하여 본 발명의 실시예를 상세히 설명하기로 한다.
먼저, 소프트웨어 분류 장치(400)는 타겟 소프트웨어를 입력 받는다(S600), 이어 타켓 소프트웨어가 입력되는 경우 해당 타겟 소프트웨어를 구성하는 실행파일 등에서 문자열 정보를 추출한다(S602). 이때, 위와 같은 문자열 정보는 각 소프트웨어의 실행파일의 여러 섹션에서 추출될 수 있으며, 예를 들어 .text/.data/.rdata 섹션과 .rsrc 섹션에서 추출될 수 있다.
이어, 소프트웨어 분류 장치(400)는 추출된 문자열 중 소정의 문자열에 해당하는 문자열을 선택한다(S606).
한편, 위와 같이 추출되는 문자열은 실행파일의 각 섹션(section)에서 추출되는 경우, 문자열 정보가 하나의 단어로 되어 있지 않고, 문장 등과 같이 여러 단어들로 이루어져 있는 경우가 있을 수 있다. 따라서, LDF-IDF-ICF를 적용할 경우 여러 문자열들을 각각의 단어로 나누어주는 것이 필요하다.
즉, 소프트웨어 분류 장치(400)는 위와 같이 추출된 문자열이 문장 등과 같이 여러 단어들로 이루어져 있는 경우, 해당 문자열을 각각의 단어 즉, 개별 문자열로 나누는 등의 문자열 정제를 수행한다(S604).
이때, 위와 같은 문자열 정제에 있어서는 전술한 위 도 2에서 보여지는 바와 같이 1단계에서는 예를 들어 참조번호 (200)에 예시되는 바와 같은 문자열에 대해, 공백 기준으로 단어를 나누거나, 대문자를 소문자로 통일시킬 수 있다. 또한, 숫자, 특수문자, 개행문자, 변수, 한단어 등을 제거할 수 있다. 또한, 1단계에서 정제된 문자열에 대해 다시 2단계의 문자열 정제과정에서 예를 들어 a, an, the, of 등과 같은 불용어(stop words)을 제거할 수 있다. 위와 같은 2단계 정제 과정을 통해 참조번호 (204)에서 보여지는 바와 같이 문자열이 정제될 수 있다.
이어, 소프트웨어 분류 장치(400)는 매핑부(108)를 참조하여 위 선택된 문자열에 대해 카테고리별로 매핑된 점수를 합산하고, 합산된 점수가 가장 높은 카테고리를 타겟 소프트웨어의 카테고리로 분류할 수 있다.
이때, 이러한 문자열 점수는 해당 소프트웨어가 어떤 특성을 가진 소프트웨어인지를 분류할 수 있도록 하는 정보를 의미할 수 있다. 즉, 각 문자열에 대해 계산된 문자열 점수는 해당 소프트웨어를 예를 들어 Audio Player, Browser, CD Writer, FTP, Image Viewer, Messenger, Text Editor, Video Player 등에 속하는 것으로 분류할 수 있도록 지시하는 값일 수 있다.
이에 따라, 위와 같이 분류 대상 소프트웨어가 속하는 카테고리가 분류되는 경우, 분류 대상 소프트웨어가 속하는 카테고리에 포함된 소프트웨어와 1대1 비교하면 되므로, 소프트웨어의 불법 복제 또는 표절의 탐지를 위한 소프트웨어 필터링 작업의 오버헤드를 줄일 수 있게 된다.
상기한 바와 같이, 본 발명에 따르면, 소프트웨어의 분류에 있어서, 불법 복제되거나 표절되지 않은 복수의 소프트웨어에 대해 각 소프트웨어의 실행파일에 포함된 문자열을 추출/정제하여 문자열 점수를 산출하고, 문자열 점수를 기반으로 복수의 소프트웨어에 대한 분류를 수행한 소프트웨어 필터링 데이터 베이스를 생성한 후, 분류 대상 소프트웨어에 포함된 문자열에 대해 산출된 문자열 점수를 필터링 데이터 베이스와 비교하는 것을 통해 분류 대상 소프트웨어의 카테고리가 보다 정확하게 결정되도록 함으로써, 소프트웨어의 불법 복제 또는 표절의 탐지를 위한 소프트웨어 필터링 작업의 오버헤드를 줄일 수 있도록 한다.
도 7 내지 도 10은 본 발명의 실시예에 따라 문자열 기반으로 소프트웨어의 카테고리를 분류한 실험 데이터 및 분석 결과를 예시한 것이다.
이하, 도 7 내지 도 10을 참조하여 문자열 기반으로 소프트웨어의 카테고리를 분류한 실험 데이터 및 분석 결과를 상세히 설명하기로 한다. 이때, 위 실험 데이터 및 분석 결과에서는 본 발명의 실시예의 성능을 평가하기 위해, 소프트웨어를 9개의 카테고리로 나누고, 각 카테고리별 55개 실행파일, 총 495개의 실행파일을 실행 프로그램(소프트웨어) 집합(Program set)으로 하여 실험하였으며, 총 495개 실행파일이 포함된 각 프로그램 집합을 두 가지 종류로 구성하였다.
-문자열 추출율 및 정제율-
'첫 번째 프로그램 집합'은 한 카테고리 내에 55개 실행파일 중 동일한 프로그램의 서로 다른 버전의 실행파일들을 포함할 수 있다. '두 번째 프로그램 집합'은 한 카테고리의 55개 실행파일 중 최소 50여개는 서로 다른 프로그램이고, 특정한 프로그램에 대해 2개의 다른 버전으로 구성될 수 있다.
위 도 6을 참조하면, '첫 번째 프로그램 집합'의 경우, 495개의 실행파일에서 문자열 추출이 가능한 실행파일은 427개로 추출률은 86.3%(= 427/495*100)이다. 문자열 정제 후에 50개 이상의 단어를 포함한 실행파일 수는 413개이다. 각 카테고리에서 '정체율'은 문자열 추출하고 정제한 후 50개 이상의 단어를 포함한 실행파일들의 비율이라고 할 경우, 정제율은 문자열 추출 가능한 실행파일 개수 대비 96.7%(= 413/427*100)의 정제율을, 전체 실행파일 개수 495개 대비 83.4%(= 413/495*100)의 정제율을 보인다.
또한, '두 번째 프로그램 집합'의 경우, 총 495개의 실행파일에서 문자열 추출이 가능한 실행파일은 455개로 91.9% 추출이 가능하다. 그리고 문자열 정제 후 443개를 점수표 생성 및 분류에 사용이 가능하며, 문자열 추출이 가능한 실행파일 대비 99.4%, 전체 실행파일 개수 대비 89.5%의 정제율을 보여준다.
-프로그램 분류율-
9개의 카테고리, 각 카테고리별 55개 실행파일로 구성된 495개의 실행파일들에 대한 문자열 점수표를 생성한 후, 이 495개 실행파일을 분류한 실험 결과가 도 7과 도 8에 나타나 있다. 일반적으로는 문자열 점수표 생성에 포함되지 않은 별도의 실행파일을 대상으로 분류 실험을 해야 하지만, 별도의 추가 실행파일을 수집하는데 어려움이 있어, 문자열 점수표 생성에 포함된 실행파일들을 사용하여 분류율을 실험하였다.
'첫 번째 프로그램 집합'의 경우, 유용한 문자열 정보가 획득된 413개 실행파일 중 361개를 성공적으로 분류하였다. 이는 문자열이 정제된 실행파일들 중 87.4%가, 전체 실행파일들 중 72.9%가 정상 분류된 것이다(도 7 참고).
'두 번째 프로그램 집합'의 경우, 유용한 문자열 정보가 획득된 443개 실행파일 중 380개를 분류하였다. 즉, 문자열이 정제된 실행파일들 중 85.8%가, 전체 실행파일들 중 76.8%가 정상 분류되었다(도 8 참고).
-실험 프로그램 집합에 따른 분류율 분석-
도 7과 도 8를 비교하면 '정제 대비' 분류율은 '첫 번째 프로그램 집합'이 높지만, '전체 실행파일 개수'(495개) 대비 분류율은 '두 번째 프로그램 집합'이 높다. 이러한 이유는, 도 9의 '첫 번째 프로그램 집합'과 '두 번째 프로그램 집합'의 서로 다른 프로그램의 개수 차이에서 확인할 수 있다.
'첫 번째 프로그램 집합'의 경우, 서로 다른 프로그램의 개수가 총 273개이고, 유용한 문자열 정보를 포함한 프로그램들 중 서로 다른 프로그램 개수는 221개, 성공적으로 분류된 프로그램들 중 서로 다른 프로그램 개수는 197개였다. 495개 대비 성공적인 분류율은 72.2%이다.
'두 번째 프로그램 집합'의 경우, 서로 다른 프로그램의 개수가 총 487개이고, 유용한 문자열 정보를 포함한 프로그램들 중 서로 다른 프로그램 개수는 436개, 성공적으로 분류된 프로그램들 중 서로 다른 프로그램 개수는 376개였다. 495개 대비 성공적인 분류율은 77.2%이다(도 9 참고)
-종래 소프트웨어 분류 방법과의 비교-
본 발명의 실시예에서 제안하는 방법과 종래 소프트웨어 분류 방법간 효과를 비교하면, 종래에는 문자열 추출 시 언어의 통일성을 고려하지 않았고 .rsrc 섹션의 RT_STRING 문자열만을 추출하였던 반면, 본 발명의 실시예에서는 문자열 추출 시 언어의 통일성을 고려하였으며, 문자열 추출에 있어서도 .rsrc섹션 뿐만 아니라, .text, .data, .rdata 섹션에서도 문자열 추출하도록 하였다.
이때, 위와 같은 비교 실험을 위해서 '첫 번째 프로그램 집합'을 사용한다. 비교결과, 도 10을 참조하면, 문자열 추출 비율은 제안 기법이 83.4%로 일반적인 종래 방법이 45.1%이고, 전체 프로그램에 대한 분류율은, 제안 기법이 72.9%, 종래 방법은 38.4%였다. 즉, 본 발명의 실시예에 따른 제안 방법을 적용하는 경우 문자열 추출률 및 소프트웨어 분류율 면에서 종래의 방법보다 성능이 약 1.9배 개선되었음을 확인할 수 있었다.
본 발명에 첨부된 각 흐름도의 각 단계의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수도 있다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도의 각 단계에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도의 각 단계에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도의 각 단계에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 단계는 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실시예들에서는 단계들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 단계들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 단계들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
한편 상술한 본 발명의 설명에서는 구체적인 실시예에 관해 설명하였으나, 여러 가지 변형이 본 발명의 범위에서 벗어나지 않고 실시될 수 있다. 따라서 발명의 범위는 설명된 실시 예에 의하여 정할 것이 아니고 특허청구범위에 의해 정하여져야 한다.
102 : 입력부 104 : 추출부
106 : 점수 산출부 108 : 매핑부
400 : 소프트웨어 분류 장치 410 : 입력부
420 : 문자열 선택부 430 : 분류부

Claims (8)

  1. 카테고리가 기 분류된 복수의 소프트웨어를 저장하는 저장 장치에 있어서,
    상기 복수의 소프트웨어에서 중 적어도 하나에서 복수의 소정의 문자열을 추출하는 추출부;
    상기 복수의 소프트웨어 중 상기 소정의 문자열 중 적어도 하나를 포함하는 소정 문자열 포함 소프트웨어의 총수를 기초로 산출된 IDF(Inverse Document Frequency)값, 각 카테고리 별로 해당 카테고리에 속하는 상기 소정 문자열 포함 소프트웨어의 수를 기초로 산출된 LDF(Local Document Frequency)값 및 상기 소정 문자열 포함 소프트웨어를 포함하는 카테고리의 수를 기초로 산출된 ICF(Inverse Category Frequency)값을 기반으로, 상기 카테고리마다 적용되는 상기 소정의 문자열 각각에 대한 점수를 산출하는 점수 산출부; 및
    상기 산출된 점수를 저장하는 매핑부;
    를 포함하는 문자열 점수 기반 소프트웨어 저장 장치.
  2. 제 1 항에 있어서,
    상기 LDF값은,
    Figure 112016095825347-pat00005

    상기 IDF값은,
    Figure 112016095825347-pat00006

    상기 ICF값은,
    Figure 112016095825347-pat00007

    이고,
    상기 f는 문자열, 상기 Ci 는 카테고리 종류, 상기 n은 총 카테고리의 수, 상기 D는 상기 복수의 소프트웨어의 집합, 상기 |D|는 상기 복수의 소프트웨어의 수를 의미하는 문자열 점수 기반 소프트웨어 저장 장치.
  3. 제 1 항에 있어서,
    상기 추출부는,
    공백을 기준으로 상기 복수의 소프트웨어의 실행파일에 포함된 문자열을 추출하고, 상기 문자열에서 불용어를 제거하여 상기 소정의 문자열을 추출하는 문자열 점수 기반 소프트웨어 저장 장치.
  4. 제 3 항에 있어서,
    상기 불용어는,
    a, an, the, of, 및 세번 이상 연속된 동일문자 중 적어도 하나를 포함하는
    문자열 점수 기반 소프트웨어 저장 장치.
  5. 청구항 제1항 내지 제4항 중 어느 한 항의 저장 장치;
    타겟 소프트웨어를 입력받는 입력부;
    상기 타겟 소프트웨어에서 문자열을 추출하고, 상기 추출된 문자열 중 상기 소정의 문자열에 해당하는 문자열을 선택하는 문자열 선택부; 및
    상기 매핑부를 참조하여 상기 카테고리 별로 상기 선택된 문자열에 매핑된 점수를 합산하고, 상기 합산된 점수가 가장 높은 카테고리를 상기 타겟 소프트웨어의 카테고리로 분류하는 분류부;
    를 포함하는 문자열 점수 기반 소프트웨어 분류 장치.
  6. 카테고리가 기 분류된 복수의 소프트웨어를 저장하는 저장장치가 문자열 점수 기반으로 상기 복수의 소프트웨어를 저장하는 방법에 있어서,
    상기 복수의 소프트웨어 중 적어도 하나에서 복수의 소정의 문자열을 추출하는 단계;
    상기 복수의 소프트웨어 중 상기 소정의 문자열 중 적어도 하나를 포함하는 소정 문자열 포함 소프트웨어의 총 수를 기초로 IDF(Inverse Document Frequency)값을 산출하는 단계;
    각 카테고리 별로 해당 카테고리에 속하는 상기 소정 문자열 포함 소프트웨어의 수를 기초로 LDF(Local Document Frequency)값을 산출하는 단계;
    상기 소정 문자열 포함 소프트웨어를 포함하는 카테고리의 수를 기초로 ICF(Inverse Category Frequency)값을 산출하는 단계;
    상기 LDF값, LDF값, ICF값을 기반으로 상기 카테고리마다 적용되는 상기 소정의 문자열 각각에 대한 점수를 산출하는 단계; 및
    상기 산출된 점수를 저장하는 단계;
    를 포함하는 문자열 점수 기반 소프트웨어 저장 방법.
  7. 제 6 항에 있어서,
    상기 추출하는 단계는,
    공백을 기준으로 상기 복수의 소프트웨어의 실행파일에 포함된 문자열을 추출하는 단계;
    상기 추출된 문자열에서 불용어를 제거하여 상기 소정의 문자열을 추출하는 단계;
    를 포함하는 문자열 점수 기반 소프트웨어 저장 방법.
  8. 청구항 제1항 내지 제4항 중 어느 한 항의 저장장치를 이용하여 타켓 소프트웨어의 카테고리를 분류하는 방법에 있어서,
    상기 타겟 소프트웨어를 입력받는 단계;
    상기 타겟 소프트웨어에서 문자열을 추출하고, 상기 추출된 문자열 중 상기 소정의 문자열에 해당하는 문자열을 선택하는 단계; 및
    상기 저장 장치를 참조하여 상기 카테고리 별로 상기 선택된 문자열에 매핑된 점수를 합산하고, 상기 합산된 점수가 가장 높은 카테고리를 상기 타겟 소프트웨어의 카테고리로 분류하는 단계;
    를 포함하는 문자열 점수 기반 소프트웨어 분류 방법.
KR1020160127556A 2016-10-04 2016-10-04 문자열 점수 기반 소프트웨어 저장 장치와 분류 장치 및 그 방법 KR101829426B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160127556A KR101829426B1 (ko) 2016-10-04 2016-10-04 문자열 점수 기반 소프트웨어 저장 장치와 분류 장치 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160127556A KR101829426B1 (ko) 2016-10-04 2016-10-04 문자열 점수 기반 소프트웨어 저장 장치와 분류 장치 및 그 방법

Publications (1)

Publication Number Publication Date
KR101829426B1 true KR101829426B1 (ko) 2018-02-19

Family

ID=61387520

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160127556A KR101829426B1 (ko) 2016-10-04 2016-10-04 문자열 점수 기반 소프트웨어 저장 장치와 분류 장치 및 그 방법

Country Status (1)

Country Link
KR (1) KR101829426B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220106297A (ko) * 2021-01-22 2022-07-29 인하대학교 산학협력단 교원 업적 검증 시스템

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
MS 윈도우 바이너리 분류를 위한 특징정보와 기계학습 알고리즘에 대한 연구, 한국정보과학회 학술발표논문집, 2016.6

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220106297A (ko) * 2021-01-22 2022-07-29 인하대학교 산학협력단 교원 업적 검증 시스템
KR102550868B1 (ko) * 2021-01-22 2023-07-04 인하대학교 산학협력단 교원 업적 검증 시스템

Similar Documents

Publication Publication Date Title
US10169347B2 (en) Layer identification and dependency analysis for management of images
US7493596B2 (en) Method, system and program product for determining java software code plagiarism and infringement
US8521652B2 (en) Discovering licenses in software files
EP2693356B1 (en) Detecting pirated applications
CN111507086B (zh) 本地化应用程序中翻译文本位置的自动发现
CN108334490A (zh) 关键词提取方法以及关键词提取装置
Palahan et al. Extraction of statistically significant malware behaviors
CN112686036B (zh) 风险文本识别方法、装置、计算机设备及存储介质
KR102006245B1 (ko) 바이너리 파일에 기초하여 오픈소스 소프트웨어 패키지를 식별하는 방법 및 시스템
CN107239694B (zh) 一种基于用户评论的Android应用权限推理方法及装置
CN106874180A (zh) 检测系统及其方法
CN111651768B (zh) 计算机二进制程序的链接库函数名识别方法及装置
US20220286478A1 (en) Methods and systems for honeyfile creation, deployment, and management
Aurangzeb et al. Evaluation and classification of obfuscated Android malware through deep learning using ensemble voting mechanism
JP2020510942A (ja) ウェブトゥーン不正コピー防止及び複製されたウェブトゥーン追跡システム、方法及びプログラム
KR101829426B1 (ko) 문자열 점수 기반 소프트웨어 저장 장치와 분류 장치 및 그 방법
CN111222181B (zh) Ai模型的监管方法、系统、服务器及存储介质
Sharma et al. Forensic analysis of a virtual Android phone
JP7380714B2 (ja) 操作ログ取得装置および操作ログ取得方法
US20230385037A1 (en) Method and system for automated discovery of artificial intelligence (ai)/ machine learning (ml) assets in an enterprise
CN113971283A (zh) 一种基于特征的恶意应用程序检测方法及设备
KR102520305B1 (ko) 키워드 빈도수와 영역 중요도 분석 기반 딥러닝 문서 분석 시스템 및 방법
CN111142735B (zh) 一种软件页面的创建方法、装置、终端设备和存储介质
CN109992514B (zh) 基于可视化内容的移动应用动态分析方法
Yu et al. Towards automatically localizing function errors in mobile apps with user reviews

Legal Events

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