KR102192479B1 - 전자 장치의 프로그램 코드 분석 방법 및 전자 장치 - Google Patents

전자 장치의 프로그램 코드 분석 방법 및 전자 장치 Download PDF

Info

Publication number
KR102192479B1
KR102192479B1 KR1020140048925A KR20140048925A KR102192479B1 KR 102192479 B1 KR102192479 B1 KR 102192479B1 KR 1020140048925 A KR1020140048925 A KR 1020140048925A KR 20140048925 A KR20140048925 A KR 20140048925A KR 102192479 B1 KR102192479 B1 KR 102192479B1
Authority
KR
South Korea
Prior art keywords
node
specific key
tree
traversal
key
Prior art date
Application number
KR1020140048925A
Other languages
English (en)
Other versions
KR20150122534A (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 KR1020140048925A priority Critical patent/KR102192479B1/ko
Priority to US14/694,459 priority patent/US9773114B2/en
Publication of KR20150122534A publication Critical patent/KR20150122534A/ko
Application granted granted Critical
Publication of KR102192479B1 publication Critical patent/KR102192479B1/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
    • G06F21/562Static detection

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

전자 장치의 프로그램 코드 분석 방법을 개시한다. 본 발명의 일 실시 예에 따른 프로그램 코드 분석 방법은, 상기 프로그램 코드에 포함된 키 스트링(key string)을 이용하여 트리(tree)를 구성하는 단계와, 특정 키(key)에 대한 검색(find) 명령이 수신되면, 상기 특정 키에 포함된 스트링을 이용하여 상기 트리를 전위순회하는 단계와, 상기 전위 순회 결과 상기 특정 키에 포함된 마지막 스트링과 매칭되는 노드가 리프노드(leaf node)를 갖으면, 상기 리프노드의 값(value)을 반환하는 단계와, 상기 반환된 값을 이용하여 상기 프로그램 코드를 분석하는 단계를 포함한다.

Description

전자 장치의 프로그램 코드 분석 방법 및 전자 장치{METHOD FOR ANALYSING PRGORAM CODE OF ELECTONIC DEVICE AND ELECTRONIC DEVICE}
본 발명은 프로그램 코드 분석 기술에 관한 것으로, 좀 더 상세하게는 프로그램 코드의 정적 분석 및 동적 분석 성능을 개선하기 위한 프로그램 코드 분석 방법 및 전자 장치에 대한 것이다.
웹 애플리케이션은 대부분 HTML과 자바스크립트(Javascript)와 같은 스크립트 언어의 조합으로 이루어져 있다. HTML을 이용해서 UI 콤포넌트(Component)들을 구성하고 스크립트언어로 애플리케이션의 동작을 구현한다.
기존의 스크립트 언어는 대부분 웹페이지 장식이나 간단한 이벤트 핸들링 등 제한적인 용도로만 사용되어져 왔으며, 오동작을 해도 사용성에 별 문제가 없거나 구현된 코드의 크기가 크지 않아 정교한 분석 방법에 대한 수요가 크지 않았다.
그러나, 근래 들어 스마트 디바이스의 확산과 더불어 플랫폼 의존성이 없는 웹 애플리케이션의 구현에 스크립트 언어로 작성된 웹 애플리케이션이 늘어나고 있고, 구현되는 웹 애플리케이션이 복잡하고 크기도 증가하고 있다. 이에 따라 스크립트 언어로 작성된 애플리케이션의 분석기에 대한 수요도 커지고 있다.
특히, 스마트 디바이스는 특성상 개인정보를 많이 처리하는데, 근래에는 이러한 개인정보를 외부로 유출하는 악성 애플리케이션이 등장하면서, 악성 애플리케이션을 분석할 수 있는 기술의 필요성이 대두되고 있다.
본 발명은 상기와 같은 문제점을 해결하기 위해 안출된 것으로, 본 발명의 목적은, 프로그램 코드의 저장 구조를 개선하여 프로그램 코드를 정적 분석 또는 동적 분석하는 경우, 분석의 성능을 향상시키기 위한 전자 장치 및 전자 장치의 프로그램 코드 분석 방법을 제공하기 위함이다.
상기와 같은 목적을 달성하기 위한 본 발명의 일 실시 예에 따른 전자 장치의 프로그램 코드 분석 방법은, 상기 프로그램 코드에 포함된 키 스트링(key string)을 이용하여 트리(tree)를 구성하는 단계와, 특정 키(key)에 대한 검색(find) 명령이 수신되면, 상기 특정 키에 포함된 스트링을 이용하여 상기 트리를 전위순회하는 단계와, 상기 전위 순회 결과 상기 특정 키에 포함된 마지막 스트링과 매칭되는 노드가 리프노드(leaf node)를 갖으면, 상기 리프노드의 값(value)을 반환하는 단계와, 상기 반환된 값을 이용하여 상기 프로그램 코드를 분석하는 단계를 포함한다.
이때, 상기 리프노드의 값을 반환하는 단계는, 상기 전위 순회 결과 상기 특정 키에 포함된 마지막 스트링과 매칭되는 노드의 자식노드가 리프노드(leaf node)가 아니면, 상기 마지막 스트링과 매칭된 노드에서 하위로 도달 가능한 모든 리프노드가 갖는 값을 반환하는 단계를 더 포함할 수 있다.
또한, 상기 리프노드의 값을 반환하는 단계는, 상기 전위 순회 과정에서 상기 특정 키에 포함된 스트링과 매칭되는 노드가 존재하지 않는 경우, 검색 실패를 반환하는 단계를 더 포함할 수 있다.
또한, 상기 전자 장치의 프로그램 코드 분석 방법은 상기 반환된 값을 저장하는 단계를 더 포함할 수 있다.
또한, 상기 특정 키에 포함된 일부 스트링과 매칭되는 노드가 존재하는 경우, 상기 특정 키에 포함된 스트링과 마지막으로 매칭되는 노드에 대한 새로운 자식 노드를 생성하고, 상기 생성된 자식 노드에 상기 특정 키의 나머지 스트링을 저장하는 단계와, 상기 생성된 자식 노드의 리프노드를 생성하고, 상기 생성된 리프 노드에 상기 특정 키가 갖는 값을 저장하는 단계를 더 포함할 수 있다.
또한, 상기 특정 키에 포함된 스트링과 매칭되는 노드가 하나도 존재하지 않는 경우, 상기 트리의 루트 노드에 대한 새로운 자식 노드를 생성하고, 상기 생성된 자식 노드에 상기 특정 키의 스트링을 저장하는 단계와, 상기 생성된 자식 노드의 리프노드를 생성하고, 상기 생성된 리프 노드에 상기 특정 키가 갖는 값을 저장하는 단계를 더 포함할 수 있다.
또한, 상기 전자 장치의 프로그램 코드 분석 방법은 제2 키에 대한 삭제(delete) 명령이 수신되면, 상기 트리에 대한 전위 순회하고, 상기 전위 순회 결과 상기 제2 키에 포함된 마지막 스트링과 매칭되는 노드가 리프노드(leaf node)를 갖으면, 상기 전위 순회의 경로에 위치한 노드 및 상기 리프노드를 삭제하는 단계를 더 포함할 수 있다.
또한, 상기 전위 순회 결과 상기 제2 키에 포함된 마지막 스트링과 매칭되는 노드가 리프노드(leaf node)를 갖지 않으면, 삭제 실패를 반환하는 단계를 더 포함할 수 있다.
또한, 상기 전위 순회 결과 상기 제2 키에 포함된 적어도 일부 스트링과 매칭되는 노드가 존재하지 않는 경우, 검색 실패를 반환하는 단계를 더 포함할 수 있다.
또한, 상기 프로그램 코드를 순차적으로 리드(read)하는 단계와, 상기 리드 과정에서 새로운 함수 정의를 리드하면, 범위(scope) 정보를 갱신하는 단계와, 상기 리드 과정에서 새로운 변수 할당을 리드하면, 상기 변수가 상기 범위를 갖는 것으로 설정하는 단계를 더 포함할 수 있다.
이때, 상기 범위 정보는, 복수의 함수들 사이의 포함관계를 포함할 수 있다.
상기 프로그램 코드를 분석하는 단계는, 상기 변수에 대한 접근이 이루어지면, 상기 변수에 대해 설정된 범위를 참조하여 상기 프로그램 코드를 분석할 수 있다.
또한, 상기와 같은 목적을 달성하기 위한 본 발명의 다른 실시 예에 따른 전자 장치의 프로그램 코드 분석 방법은, 전자 장치의 프로그램 코드 분석 방법에 있어서, 애플리케이션을 리패키징하여 감시 코드를 삽입하는 단계와, 상기 애플리케이션이 실행되면, 상기 애플리케이션이 악성 동작을 수행하는지를 분석하는 단계와, 상기 애플리케이션이 악성 동작을 하는 것으로 판단되면, 데이터를 출력하는 단계를 포함한다.
이때, 상기 악성 동작은, 상기 전자 장치 사용자의 프라이버시 정보를 외부 장치로 전송하는 것을 포함할 수 있다.
또한, 상기 데이터를 출력하는 단계는, 상기 애플리케이션이 악성 동작을 하는 것으로 판단되면, 알림 메시지를 출력하는 것을 포함하는 단계를 포함할 수 있다.
또한, 상기 데이터를 출력하는 단계는, 상기 애플리케이션이 악성 동작을 하는 것으로 판단되면, 상기 애플리케이션 동작을 중지시키는 단계를 포함할 수 있다.
상기와 같은 목적을 달성하기 위한 본 발명의 일 실시 예에 따른 전자 장치는, 상기 프로그램 코드에 포함된 키 스트링(key string)을 이용하여 트리(tree)를 구성하는 트리 구성부와, 특정 키(key)에 대한 검색(find) 명령이 수신되면, 상기 특정 키에 포함된 스트링을 이용하여 상기 트리를 전위순회하고, 상기 전위 순회 결과 상기 특정 키에 포함된 마지막 스트링과 매칭되는 노드가 리프노드(leaf node)를 갖으면, 상기 리프노드의 값(value)을 반환하는 트리 순회부와, 상기 반환된 값을 이용하여 상기 프로그램 코드를 분석하는 코드 분석부를 포함한다.
상기 트리 순회부는, 상기 전위 순회 결과 상기 특정 키에 포함된 마지막 스트링과 매칭되는 노드의 자식노드가 리프노드(leaf node)가 아니면, 상기 마지막 스트링과 매칭된 노드에서 하위로 도달 가능한 모든 리프노드가 갖는 값을 반환할 수 있다.
상기 트리 순회부는, 상기 전위 순회 과정에서 상기 특정 키에 포함된 스트링과 매칭되는 노드가 존재하지 않는 경우, 검색 실패를 반환할 수 있다.
상기 트리 구성부는, 상기 특정 키에 포함된 일부 스트링과 매칭되는 노드가 존재하는 경우, 상기 특정 키에 포함된 스트링과 마지막으로 매칭되는 노드에 대한 새로운 자식 노드를 생성하고, 상기 생성된 자식 노드에 상기 특정 키의 나머지 스트링을 저장하고, 상기 생성된 자식 노드의 리프노드를 생성하고, 상기 생성된 리프 노드에 상기 특정 키가 갖는 값을 저장할 수 있다.
상기 트리 구성부는, 상기 특정 키에 포함된 스트링과 매칭되는 노드가 하나도 존재하지 않는 경우, 상기 트리의 루트 노드에 대한 새로운 자식 노드를 생성하고, 상기 생성된 자식 노드에 상기 특정 키의 스트링을 저장하며, 상기 생성된 자식 노드의 리프노드를 생성하고, 상기 생성된 리프 노드에 상기 특정 키가 갖는 값을 저장할 수 있다.
또한, 상기 트리 순회부는, 제2 키에 대한 삭제(delete) 명령이 수신되면, 상기 트리에 대한 전위 순회하고, 상기 전위 순회 결과 상기 제2 키에 포함된 마지막 스트링과 매칭되는 노드가 리프노드(leaf node)를 갖으면, 상기 전위 순회의 경로에 위치한 노드 및 상기 리프노드를 삭제할 수 있다.
또한, 상기 트리 순회부는, 상기 전위 순회 결과 상기 제2 키에 포함된 마지막 스트링과 매칭되는 노드가 리프노드(leaf node)를 갖지 않으면, 삭제 실패를 반환할 수 있다.
또한, 상기 트리 순회부는, 상기 전위 순회 결과 상기 제2 키에 포함된 적어도 일부 스트링과 매칭되는 노드가 존재하지 않는 경우, 검색 실패를 반환할 수 있다.
이상과 같은 본 발명의 다양한 실시 예에 따르면, 본 발명은, 프로그램 코드의 저장 구조를 개선하여 프로그램 코드를 정적 분석 또는 동적 분석하는 경우, 분석의 성능을 향상시키기 위한 전자 장치 및 전자 장치의 프로그램 코드 분석 방법을 제공한다.
도 1은 프로그램 코드를 분석하는 전자 장치의 구성을 도시한 블록도,
도 2는 본 발명의 일 실시 예에 따른 전자 장치의 구성을 도시한 블록도,
도 3 및 4는 본 발명의 일 실시 예에 따른 전자 장치의 프로그램 코드 분석 방법의 흐름도,
도 5a 내지 도 7b는 트리 구성과 순회의 실시 예를 도시한 도면,
도 8a와 8b는 스코프 오브젝트를 이용한 코드 분석을 도시한 도면,
도 9a는 예시적인 프로그램 코드를 나타낸 도면,
도 9b는 스코프 오브젝트를 도시한 도면,
도 10은 본 발명의 다른 실시 예에 따른 전자 장치(100-2)의 구성을 도시한 블록도,
도 11은 본 발명의 다른 실시 예에 따른 프로그램 코드 분석 방법의 흐름도,
도 12a는 스코프 오브젝트를 도시한 도면,
도 12b는 도 12a에 대응되는 설정 환경 내지 축약 코드을 도시한 도면,
도 13은 본 발명의 또 다른 실시 예에 따른 전자 장치의 구성을 도시한 블록도, 그리고,
도 14 및 15는 본 발명의 일 실시 예에 따른 동적 프로그램 코드 분석 방법을 도시한 흐름도이다.
이하에서는 첨부된 도면을 참조하여 본 발명의 다양한 실시 예를 설명한다.
도 1은 프로그램 코드를 분석하는 전자 장치의 구성을 도시한 블록도이다.
도 1을 참조하면, 전자 장치(1)는 코드 분석부(10), 판단부(14), 분석 도구 제공부(12), 정보 저장부(16)를 포함한다.
코드 분석부(10)는 분석도구 제공부(12)로부터 분석 도구를 지원받아 소프트웨어 패키지에 대한 코드 분석을 수행한다.
분석 도구 제공부(12)는 정보 저장부(16)에 저장된 키와, 키에 대응되는 정보를 독출하여 분석 도구로서 제공한다. 정보 저장부(16)에는 키와 대응되는 정보가 매핑되어 저장된다. 즉, 정보 저장부(16)에는 프로그램 코드를 구성하는 키(key)에 대한 값이 매핑되어 저장될 수 있다. 예를 들어, PhoneSmsService라는 객체가 Serve라는 값을 갖고 있다면, PhoneSmsService=Serve라는 정보가 저장된다.
코드 분석부(10)는 프로그램 코드가 실행되는 경우 동적으로 코드 분석을 수행할 수도 있고, 프로그램 코드가 실행되기 전에 정적으로 코드 분석을 수행할 수도 있다. 코드 분석부(10)는 프로그램 코드를 구성하는 객체들의 동작을 분석한다. 예를 들어, 프로그램 코드의 특정 함수가 어떤 시스템 콜을 호출하는지, 이때의 파라미터 값이 무엇인지를 분석할 수 있다.
판단부(14)는 코드 분석부(10)로부터 분석 결과를 수신하여 의미를 해석하여 출력한다. 예를 들어, 개인 프라이버시 정보를 나타내는 특정한 파라미터값이 외부 장치로 전송되는 것으로 분석된 경우, 그러한 정보가 유출됨을 판단하여 사용자에게 알려줄 수 있다. 또한, 특정 파라미터가 허용된 접근에 따라 접근이 이루어졌는지 판단할 수 있다.
이하에서는 본 발명의 다양한 실시 예에 따른 프로그램 코드를 정적 또는 동적으로 분석할 수 있는 전자 장치를 좀더 구체적으로 설명한다.
도 2는 본 발명의 일 실시 예에 따른 전자 장치(100-1)의 구성을 도시한 블록도이고, 도 3 및 4는 본 발명의 일 실시 예에 따른 전자 장치의 프로그램 코드 분석 방법의 흐름도이다.
도 2를 참조하면, 본 발명의 일 실시 예에 따른 전자 장치(100-1)는 트리 구성부(110), 트리 순회부(120), 코드 분석부(130)를 포함한다.
도 2에 따른 전자 장치(100-1)는 프로그램 코드를 정적으로 분석할 수 있다. 정적 분석 기술은 프로그램을 수행하기 전 또는 후에 프로그램 코드를 분석하는 기법이다. 정적 분석 기술은 프로그램의 한 지점에서 각각의 변수 또는 함수가 갖는 값을 유지하고 있어야 하는데, 이 정보는 키-값(Key-value) 형식으로 매핑되어 유지될 수 있다. C 언어 또는 자바(Java) 언어 등 컴파일러(Compiler) 언어의 분석에서 이런 방식으로 충분히 효율적으로 데이터를 관리하고 이를 이용해 정적 분석이 가능하다. 그러나, 자바스크립트 같은 스크립트 언어에서는 스트링(string) 조합을 통한 함수 또는 변수에의 접근을 허용하기 때문에 단순한 키-값(Key-value) 형식의 매핑보다 훨씬 효율적인 데이터 관리 방법을 고려할 수 있다.
여기서 스크립트 언어는, 컴파일 없이 동작하는 언어로서, html 코드 내에 작성되면 웹 브라우저가 해당 스크립트(Script)를 한 줄씩 해석해서 실행하는 언어를 의미한다. 기존의 C/C++ 이나 자바 등 컴파일 과정을 거쳐야 하는 언어들과는 달리 컴파일 과정을 필요로 하지 않아 간단한 동작을 쉽게 정의하여 사용할 수 있는 유연한 문법을 제공하며, 컴파일 과정을 거치지 않으므로 플랫폼 의존성이 없어서 웹 애플리케이션의 구현에 많이 사용된다.
이처럼 스크립트 언어에서는 키 값보다 넓게 프로그램 코드에 포함된 키 스트링(key string)을 이용할 수 있다. 우선, 트리 구성부(110)는 프로그램 코드에 포함된 키 스트링(key string)을 이용하여 트리(tree)를 구성한다(S310, S410). 트리를 구성하는 방법은 후술하는 트리에 새로운 노드를 추가하는 방식으로 수행한다.
트리 순회부(120)는 특정 키(key)에 대한 검색(find) 명령이 수신되면(S320-Y, S420-Y), 상기 특정 키에 포함된 스트링을 이용하여 상기 트리를 전위순회한다(S330,S430). 여기서 트리를 전위 순회한다 함은, 트리를 순회하는 경우 각 노드의 값을 먼저 확인(비교)하고, 트리의 자식노드를 방문하는 방식으로 트리를 순회하는 것을 의미한다. 트리의 노드가 복수의 자식 노드를 갖는 경우, 인덱스가 가장 가까운 자식인 가장 왼쪽 자식 노드부터 순차적으로 방문한다.
트리 순회부(120)는 특정 키에 포함된 구별되는 복수의 스트링을 왼쪽부터 순차적으로 찾아 나간다. 예를 들어, 특정 키가 스트링 A, B, C로 구성된 경우, 먼저 A와 매칭되는 노드를 찾고, B, C순으로 노드를 찾는다.
트리 순회부(120)는 상기 전위 순회 결과 상기 특정 키에 포함된 마지막 스트링과 매칭되는 노드가 리프노드(leaf node)를 갖으면(S340-Y, S450-Y), 상기 리프노드의 값(value)을 반환한다(S350, S460). 전술한 키가 ABC인 예에서, C와 매칭되는 노드가 리프노드를 갖는 경우, 트리 순회부(120)는 상기 리프노드의 값을 반환한다.
코드 분석부(130)는 상기 반환된 값을 이용하여 상기 프로그램 코드를 분석한다(S360, S470). 예를 들어, 리프노드의 반환된 값이 전자 장치의 위치 정보를 다른 장치로 전송하기 위한 파라미터인 경우라면, 전자 장치는 디스플레이 상에 이러한 정보를 표시할 것이다.
트리 순회부(120)는 상기 전위 순회 과정에서 상기 특정 키에 포함된 스트링과 매칭되는 노드가 존재하지 않는 경우(S440-Y), 검색 실패를 반환한다(S445). 상기 특정 키에 포함된 스트링과 매칭되는 노드가 존재하지 않는 경우는 특정 키에 포함된 모든 스트링 중 적어도 일부를 트리에서 발견하지 못한 경우를 의미한다. 전술한 실시 예에서 스트링 A,B,C로 구성된 키에서 A,B만을 발견하거나 A,B,C를 모두 발견하지 못한 경우이다.
이 경우, 특정 키에 포함된 스트링을 발견하지 못한 것이므로, 특정 키는 트리에 존재하지 않는 것으로 판단할 수 있다. 그러므로, 트리 순회부(120)는 검색 실패를 반환한다(S445).
상기 특정 키에 포함된 마지막 스트링과 매칭되는 노드가 리프노드를 갖지 않는 경우(S450-Y), 즉, 상기 마지막 스트링과 매칭되는 노드의 자식 노드가 리프노드가 아닌 경우, 트리 순회부(120)는 마지막으로 매칭된 노드에서 하위로 도달 가능한 모든 리프노드가 갖는 값을 반환한다(S465). 전술한 실시 예에서 최종적으로 C까지 매칭되었는데, C와 매칭된 노드의 자식노드가 리프노드가 아닌 경우, 마지막으로 매칭된 노드에서 하위로 도달 가능한 모든 리프노드가 갖는 값을 반환한다. 예를 들어, C와 매칭된 노드가 두 개의 자식 노드 D, E를 갖고, D,E가 리프노드를 갖는 경우, D,E의 리프노드의 값을 모두 반환한다.
코드 분석부(130)는 반환된 값을 저장부에 저장할 수 있다.
한편, 전술한 바와 같이 트리 구성부(110)는 트리를 구성할 수 있는데, 이때 전술한 트리 순회 방법이 동일하게 이용된다. 즉, 특정 키와 그 키값이 주어지면서 트리에 추가(add)하라는 제어 명령이 있는 경우, 우선 트리 순회부(120)는 상기 특정 키가 트리에 존재하는지 판단하기 위해 트리를 전위순회한다.
전위 순회 결과 상기 특정 키에 포함된 마지막 스트링과 매칭되는 노드가 리프노드(leaf node)를 갖으면, 상기 리프 노드의 원래 키값과 함께, 상기 특정 키의 키값을 상기 리프 노드에 저장한다.
반면, 전위 순회 결과 상기 특정 키에 포함된 마지막 스트링과 매칭되는 노드가 리프노드를 갖지 않는 경우, 마지막 매칭이 이루어진 노드의 리프노드를 생성하고, 상기 생성된 리프노드에 특정 키의 값을 저장한다.
전위 순회 과정에서 상기 특정 키에 포함된 스트링과 매칭되는 노드가 존재하지 않는 경우는 두 가지 경우가 있다.
우선, 상기 특정 키에 포함된 일부 스트링과 매칭되는 노드가 존재하는 경우, 트리 구성부(110)는 상기 특정 키에 포함된 스트링과 마지막으로 매칭되는 노드에 대한 새로운 자식 노드를 생성하고, 상기 생성된 자식 노드에 상기 특정 키의 나머지 스트링을 저장한다. 그리고, 상기 생성된 자식 노드의 리프노드를 생성하고, 상기 생성된 리프 노드에 상기 특정 키가 갖는 값을 저장한다. 상기 특정 키에 포함된 복수의 스트링이 트리의 노드와 매칭되지 않는 경우, 상기 생성된 자식 노드의 자식 노드(손자 노드)를 생성하는 식으로, 모든 스트링과 매칭되는 노드를 생성하고, 말단 노드의 리프노드를 생성하여 상기 특정 키의 값을 저장한다.
그러나, 상기 특정 키에 포함된 스트링과 매칭되는 노드가 하나도 존재하지 않는 경우, 상기 트리의 루트 노드에 대한 새로운 자식 노드를 생성하고, 상기 생성된 자식 노드에 상기 특정 키의 스트링을 저장한다. 특정 키에 복수의 스트링이 포함되어 있는 경우라면, 자식노드의 자식노드(손자 노드)를 생성하는 식으로 하위 노드들을 생성하고, 제일 말단 노드의 리프노드를 생성한 후, 상기 생성된 리프 노드에 상기 특정 키가 갖는 값을 저장한다.
노드 검색, 추가의 경우와 마찬가지로 노드를 삭제할 수도 있다. 즉, 특정 키가 주어지면서 트리에서 삭제(remove)하라는 제어 명령이 있는 경우, 우선 트리 순회부(120)는 상기 특정 키가 트리에 존재하는지 판단하기 위해 트리를 전위순회한다. 먼저 트리를 구성하였다면, 상기 특정 키는 제2 키가 될 수 있다. 노드 삭제는 트리 순회부(120)가 수행할 수 있다.
전위 순회 결과 상기 특정 키에 포함된 마지막 스트링과 매칭되는 노드가 리프노드(leaf node)를 갖으면, 트리 순회부(120)는 상기 전위 순회의 경로에 위치한 노드 및 상기 리프노드를 삭제한다.
상기 전위 순회 결과 상기 특정 키에 포함된 마지막 스트링과 매칭되는 노드가 리프노드(leaf node)를 갖지 않으면, 삭제 실패를 반환한다. 이 경우에는 트리 순회가 트리 중간에서 종료된 것인데, 매칭되는 노드들을 전부 삭제하면, 이와 연결된 다른 노드들에까지 영향을 미치기 때문이다.
마찬가지로 트리 순회부(120)는 전위 순회 결과 상기 특정 키에 포함된 적어도 일부 스트링과 매칭되는 노드가 존재하지 않는 경우, 삭제 실패를 반환한다.
한편, 상기 전자 장치(100-1)는 일반적인 전자 계산 장치가 갖는 일반적인 구성을 포함한다. 즉, 충분한 제어 및 연산 능력을 갖는 CPU, 캐쉬 메모리, 램 메모리, 하드 디스크나 블루레이 디스크와 같은 대용량 보조 기억 장치, 터치 스크린과 같은 입출력 장치, 근거리 통신 모듈, HDMI를 포함하는 다양한 유무선 통신 모듈, 데이터 버스 등 하드웨어 구성을 포함하며, 전술한 트리 구성부(110), 트리 순회부(120), 코드 분석부(130)의 기능을 수행할 수 있는 애플리케이션, 프레임워크, 운영체제를 포함한다.
또한, 전자 장치(100-1)는 다양한 모바일 장치 또는 스테이셔너리(stationary) 장치로 구현 가능하다. 예를 들어, 스마트 폰, 태블릿 PC, 스마트 워치(smart watch), 스마트 안경(smart glasses), PMP, MP3 플레이어, PDA, 셀 폰, 랩탑 컴퓨터, 기타 이동성 있는 단말 장치, PC, 워크스테이션 중 적어도 하나로 구현 가능하다.
도 5a 내지 도 7b는 트리 구성과 순회의 실시 예를 도시한 도면이다.
도 5a 는 키와 키값으로 구성된 테이블을 도시한다. 도 5a에 나타난 것처럼 특정 키는 유일한 키 값을 갖는다. 예를 들어, PhoneSmsMessage는 Msg값을 갖는다.
도 5b는 도 5a의 키-값 테이블을 트리로 구성한 실시 예를 도시한다. 트리 구성부(110)는 도 5b와 같은 트리를 구성한다. 트리 루트는 키의 공통된 가장 처음의 스트링으로 구성된다. 키값은 트리 경로상의 말단 리프 노드에 저장된다.
도 5b의 트리에서 검색 연산을 수행했을 때 반환값을 예상해볼 수 있다.
예를 들어, PhoneSmsMessage의 키값을 반환하라는 연산(Find(“PhoneSmsMessage”))에 대해서 트리 순회부는 상기 키를 세 개의 스트링 “Phone”, “Sms”, “Message”으로 나누어 판단한다. 트리에서 루트부터 전위 순회로 비교하면서 내려간다. 최종적으로 Message와 매칭되는 노드를 찾고, 최종 매칭 노드는 리프 노드를 갖으므로 리프 노드의 값 “Msg”를 반환한다.
PhoneSms의 키값을 반환하라는 연산의 경우 트리 순회부(120)는 두 개의 스트링 “Phone”, “Sms”로 나누어 판단하며, 최종적으로 매칭되는 노드는 리프노드를 갖지 않는다. 따라서, Service에 매칭되는 노드와 Message에 매칭되는 노드가 갖는 리프 노드의 값을 모두 반환한다. Serve, Msg가 반환된다.
반면, PhoneSmsServiceHistory의 키값을 반환하라는 연산의 경우 트리 순회부(120)는 네 개의 스트링 “Phone”, “Sms”, “Service”, “History”로 나누어 판단하는데, 일부 스트링인 “History”를 발견하지 못하게 되므로 검색 실패를 반환한다.
도 6b는 도 6a의 트리에 새로운 키 값을 삽입하는 실시 예를 도시한다.
예를 들어, 트리에 PhoneSmsMessage의 키에 값 “Data”을 삽입해야 하는 경우, 먼저 스트링 “Phone”, “Sms”, “Message” 를 비교하여 트리 순회를 한다. 그리고, 마지막 스트링과 매칭된 노드가 리프 노드를 갖으므로, 리프 노드에 상기 “Data”를 추가한다.
“PhoneSmsLog”에 “new Log”를 추가하는 경우, 스트링 “Phone”, “Sms”, “Log”를 비교하여 트리를 순회하고, 상기 키에 포함된 일부 스트링과 매칭되는 노드가 존재하므로, 트리 구성부(110)는 상기 특정 키에 포함된 스트링과 마지막으로 매칭되는 노드에 대한 새로운 자식 노드를 생성하고, 자식 노드에 매칭되지 않은 스트링 “Log”을 추가한다. 그리고, 자식 노드의 리프 노드를 생성하여 키 값 “new Log”를 추가한다.
특수한 경우로 “PhoneSms*”와 같이 모든 노드를 지정해줄 수 있다. 키 값이 “SomeThing”이면, 루트 노드 “PhoneSms”밑에 “*”노드를 두고, 그 밑에 모든 키 값을 갖는 리프 노드를 구성할 수 있다.
도 7b는 도 7a의 트리 키를 삭제하는 실시 예를 도시한다.
도 7a의 트리에서 키 “PhoneLog”를 삭제하고자 하는 경우, 먼저 트리 순회부(120)는 트리를 순회하면서 검색을 수행한다. 마지막 스트링 “Log”가 리프노드를 갖으므로, 전위 순회의 경로에 위치한 노드 “Log” 및 상기 리프노드 “sms Send”를 삭제한다. 이때, 루트노드는 삭제하지 않음에 유의한다.
그러나, “PhoneSmsLog”를 삭제하고자 하는 경우, 전위 순회를 수행하고, 전위 순회 결과 상기 일부 스트링 “Log”와 매칭되는 노드가 존재하지 않으므로, 삭제 실패를 반환한다.
또한, “PhoneSms”를 삭제하고자 하는 경우, 전위 순회를 수행하고, 전위 순회 결과 마지막 스트링 “Sms”와 매칭되는 노드가 리프노드(leaf node)를 갖지 않으므로, 삭제 실패를 반환한다.
도 8a와 8b는 스코프 오브젝트를 이용한 코드 분석을 도시한 도면이다.
자바스크립트 언어는 변수들의 할당 범위(Scope)을 관리하기 위해 스코프 오브젝트(Scope Object)라는 데이터 관리 방법을 정의한다. 프로그램 코드를 분석하기 위해 변수들의 할당 범위를 알 필요가 있는 경우가 많지만, 자바스크립트의 스코프 오브젝트는 복잡하고 연산을 느리게 하는 문제점이 있다. 좀 더 단순화하여 분석의 성능을 높일 수 있는 방안이 요구된다.
도 8a에 도시된 것처럼 코드 분석부(10)는 분석도구 제공부(12)와 기능 범위(Function Scope) 정보 및 지역 변수(Local Variable) 정보를 주고 받는다.
본 발명의 일 실시 예에 따르면, 도 8b에 도시된 것처럼 코드 분석부(10)는 스코프 오브젝트를 축약 코드(Abstract Code)로 변경하여 저장할 수 있다. 따라서, 분석 도구 제공부(12)는 별도로 스코프 오브젝트를 관리할 필요가 없어진다.
도 9a는 예시적인 프로그램 코드를 나타낸 도면이고, 도 9b는 스코프 오브젝트를 도시한 도면이다.
자바스크립트에서 분석 도구 제공부(12)는 도 9a의 프로그램 코드를 도 9b와 같이 스코프 오브젝트로 관리한다. 최상위의 함수 f1은 하위함수 f2, f3를 포함하고, 각각은 함수 f4, f5를 포함한다. 새로운 함수가 정의되면, 스택에 새로운 엘리먼트(element)를 추가하고, 상위의 스코프에 대한 링크 정보를 추가한다. 함수에서 지역 변수가 새롭게 나타나면, 지역 변수 정보를 대응되는 레벨의 함수와 함께 기록한다. 이 구조를 링크를 기준으로 따라가면 도 9b와 같은 트리 형태의 자료 구조가 되며, 코드 분석 중 현재 함수에서 정의되지 않은 변수를 만나면 트리를 거슬러 올라가면서 해당 변수에 대한 명세를 탐색하는 방법이다. 이 방법은 자바스크립트의 실행을 그대로 시뮬레이션하면서 코드를 분석할 수 있는 장점이 있지만 트리를 따라가는 분석 비용(cost)이 필요한 단점이 있다.
도 10은 본 발명의 다른 실시 예에 따른 전자 장치(100-2)의 구성을 도시한 블록도이고, 도 11은 본 발명의 다른 실시 예에 따른 프로그램 코드 분석 방법의 흐름도이다.
도 10을 참조하면, 본 발명의 다른 실시 예에 따른 전자 장치(100-2)는, 범위 갱신부(210), 변수 설정부(220)를 포함한다.
범위 갱신부(210)는, 프로그램 코드를 순차적으로 리드(read)하여(S1110) 리드 과정에서 새로운 함수 정의를 리드하면(S1120-Y), 범위(scope) 정보를 갱신한다(S1130).
변수 설정부(220)는 상기 리드 과정에서 새로운 변수 할당을 리드하면(S1140-Y), 상기 변수가 상기 범위를 갖는 것으로 설정한다(S1150). 즉, 리드 과정에서 변수 선언을 만나면 설정 환경(environment)에 범위 정보를 덧붙여서 추가한다. 분석 과정에서 변수에 대한 접근이 이루어지면, 설정 환경에서 변수에 대한 범위 정보를 찾아서 분석을 수행한다.
이 같은 방법은 스코프 오브젝트를 유지하는 비용이 들지 않으면서 유지하는 것과 동일한 기능성을 제공한다. 즉, 변수에 대한 접근이 이루어질 때 스코프 오브젝트를 탐색하는 시간이 소요되지 않는다.
도 12a는 스코프 오브젝트를 도시한 도면이고, 도 12b는 도 12a에 대응되는 설정 환경 내지 축약 코드을 도시한다.
도 12a는 전술한 도 9a에 대응되는 스코프 오브젝트를 도시한다. 계층적으로 트리를 형성함을 알 수 있다. 프로그램 코드를 리드하면서 새로운 함수 f2이 리드되면 범위(scope) 정보를 갱신하여 f1.f2와 같이 기록함으로써 경로와 계층을 표현할 수 있다. 변수 설정부(220)는 상기 리드 과정에서 새로운 변수 할당 b=1을 리드하면, 상기 변수 b가 상기 범위 f1.f2를 갖는 것으로 설정한다. 이 결과 축약 코드는 f1.f2.b=1과 같이 기록된다. 이러한 방식으로 축약코드 내지 환경설정을 할 수 있으며, 이를 코드 분석에 이용한다. 즉, 상기 변수에 대한 접근이 이루어지면, 상기 변수에 대해 설정된 범위를 참조하여 상기 프로그램 코드를 분석한다.
이하에서는 본 발명의 다른 실시 예에 따른 동적 프로그램 코드 분석 실시 예를 설명한다. 본 발명의 또 다른 실시 예에 따른 동작 프로그램 코드 분석 방법은, 사용자가 웹 애플리케이션을 실행하는 도중 발생하는 프로그램에 의한 악성 행동(activity)을 실시간으로 탐지하는 방법을 제공한다.
도 13은 본 발명의 또 다른 실시 예에 따른 전자 장치(100-3)의 구성을 도시한 블록도이고, 도 14 및 15는 본 발명의 일 실시 예에 따른 동적 프로그램 코드 분석 방법을 도시한 흐름도이다.
도 13을 참조하면, 본 발명의 다른 실시 예에 따른 전자 장치(100-3)는, 리패키징부(140), 분석부(150), 출력부(160)를 포함한다.
리패키징부(140)는 애플리케이션을 리패키징하는 구성이다. 애플리케이션은 외부 서버로부터 다운로드 할 수 있는데 이 경우 리패키징부(140)는 애플리케이션을 리패키징한다. 리패키징부(140)는 사용자 입력에 의해 애플리케이션을 리패키징하는 것도 가능하다.
리패키징 과정에서 전자 장치(100-3)는 애플리케이션의 악성 동작을 정의하고 악성 동작이 일어나는 경우의 전자 장치(100-3)의 동작을 정의할 수 있다. 예를 들어, 애플리케이션이 프라이버시 정보를 외부 장치로 전송하는 것으로 판단되는 경우, 이에 대한 로그 데이터를 기록하거나 디스플레이 상에 프라이버시 정보가 유출됨을 알려주는 노티스(notice)를 표시하는 명령(instruction)을 애플리케이션에 삽입할 수 있다. 리패키징부(140)는 프라이버시 정보를 정의할 수 있는데, 예를 들어, 계좌번호, 전화번호, 아이디/비밀번호 등이 될 수 있다.
리패키징부(140)는 반드시 애플리케이션에 악성 동작에 대응하는 코드를 삽입할 필요는 없다. 리패키징부(140)는 후술하는 분석부(150)와 함께 애플리케이션이 실행되는 경우 악성 동작이 이루어지는지를 실시간 감지할 수 있는 실시간 감지 프로세스로 구현될 수 있다.
분석부(150)는 프로그램 코드가 실행되는 경우 악성 동작이 일어나는지를 분석한다. 분석부(150)는 애플리케이션이 실행되는 경우, 정의된 애플리케이션의 악성 동작이 일어나는지 감시한다. 리패키징으로 애플리케이션에 포함된 코드는 정의된 악성 동작이 이루어지는 경우, 스스로 기 설정된 동작을 수행할 수 있다. 예를 들어, 전자 장치(100-3)가 외부 장치로 프라이빗 데이터를 유출하는 경우 로그 데이터를 남길 수 있다. 이러한 경우, 분석부(150)는 단지 로그 메시지의 생성 여부만을 판단하면 된다. 상기와 같은 기 설정된 동작이 정의되지 않는 경우라면, 분석부(150)는 악성 동작이 일어나는 경우 이를 판단하여 후술하는 출력부(160)가 일정한 정보를 출력하도록 한다.
출력부(160)는 분석부(150)가 악성 동작을 발견하거나, 악성 동작의 흔적을 발견한 경우, 일정한 출력을 수행하는 구성이다. 예를 들어, 전자 장치(100-3)의 화면에 알림 메시지를 표시하여 사용자에게 애플리케이션 프로그램의 계속 진행 여부를 문의하고, 사용자 응답에 따라 프로그램을 계속 진행하거나 중지시킬 수 있다. 또는 경고음을 출력하거나, 강제로 애플리케이션의 동작을 중지시킬 수도 있다.
도 14는 전자 장치(100-3)의 일련의 동작을 도시한 흐름도이다.
도 14를 참조하면, 전자 장치(100-3)는 인스톨러(installer)와 프로그램 코드 분석 모듈(분석부)을 서버로부터 다운로드 받는다(S1410). 그리고, 인스톨러를 설치하는데, 인스톨러는 리패키징 모듈(리패키징부)을 포함한다(S1420). 이일 실시 예로 분석 툴은 웹 브라우저 확장 기능으로 구현될 수 있다.
전자 장치(100-3)는 애플리케이션을 다운로드 받을 수 있고(S1450), 인스톨러가 직접 다운로드 받은 애플리케이션을 설치한다(S1460). 이 경우, 인스톨러는 다운로드 받은 애플리케이션에 명령 코드를 삽입한다. 전자 장치(100-3)는 애플리케이션의 악성 동작을 정의하고 악성 동작이 일어나는 경우의 전자 장치(100-3)의 동작을 정의할 수 있다. 예를 들어, 애플리케이션이 프라이버시 정보를 외부 장치로 전송하는 것으로 판단되는 경우, 이에 대한 로그 데이터를 기록하거나 디스플레이 상에 프라이버시 정보가 유출됨을 알려주는 노티스(notice)를 표시하는 명령(instruction)을 애플리케이션에 삽입할 수 있다.
분석 모듈이 포함된 브라우저나 실행환경에서 애플리케이션이 실행되면(S1470), 정의된 애플리케이션의 악성 동작이 일어나는 경우, 상기 정의된 전자 장치(100-3)의 동작을 수행한다. 전자 장치(100-3 : 소스 장치)가 싱크 장치(외부 장치)로 데이터를 유출하는 경우 로그 데이터를 남길 수 있다(S1480). 또는 소스 장치(100-3 전자 장치)가 싱크 장치(외부 장치)로 데이터를 유출하는 경우 알림 메시지를 표시할 수 있다(S1485). 사용자에게 알림 메시지를 표시한 경우는 프로그램의 계속 진행 여부를 문의하고(S1490), 사용자 응답에 따라 프로그램을 계속 진행하거나 중지시킨다.
상술한 리패키징은 다운로드 서버가 직접 수행할 수도 있다. 이러한 경우 상기 리패키징부(150)는, 서버에 포함된다.
도 15는 서버에서 리패키징이 일어나는 경우의 동적 분석 방법을 도시한다.
도 15를 참조하면, 먼저 개발자가 애플리케이션을 작성하여(S1310), 애플리케이션 판매 서버(앱스토어)에 등록한다(S1320). 이때, 판매 서버(앱스토어)는 업로드된 애플리케이션을 리패키징(Repackage)한다. 리패키징 과정에서 판매 서버는 애플리케이션의 악성 동작을 정의하고 악성 동작이 일어나는 경우의 전자 장치의 동작을 정의할 수 있다. 예를 들어, 애플리케이션이 프라이버시 정보를 외부 장치로 전송하는 것으로 판단되는 경우, 이에 대한 로그 데이터를 기록하거나 디스플레이 상에 프라이버시 정보가 유출됨을 알려주는 노티스(notice)를 표시하는 명령(instruction)을 애플리케이션에 삽입할 수 있다.
사용자가 리패키징된 애플리케이션을 다운하여 전자 장치(100-3)에 설치하고(S1540), 분석 툴이 포함된 브라우저나 실행 환경에서 애플리케이션이 실행된다(S1550). 이때, 정의된 애플리케이션의 악성 동작이 일어나는 경우, 정의된 전자 장치(100-3)의 동작을 수행한다. 전자 장치(소스 장치)가 싱크 장치(외부 장치)로 데이터를 유출하는 경우 로그 데이터를 남길 수 있다(S1560). 또는 소스 장치(전자 장치)가 싱크 장치(외부 장치)로 데이터를 유출하는 경우 알림 메시지를 표시할 수 있다(S1570). 사용자에게 알림 메시지를 표시한 경우는 프로그램의 계속 진행 여부를 문의하고(S1580), 사용자 응답에 따라 프로그램을 계속 진행하거나 중지시킨다.
이상과 같은 본 발명의 다양한 실시 예에 따르면, 본 발명은, 프로그램 코드의 저장 구조를 개선하여 프로그램 코드를 정적 분석 또는 동적 분석하는 경우, 분석의 성능을 향상시키기 위한 전자 장치 및 전자 장치의 프로그램 코드 분석 방법을 제공한다.
이상에서는 본 발명의 바람직한 실시 예에 대하여 도시하고 설명하였지만, 본 발명은 상술한 특정의 실시 예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 발명의 기술적 사상이나 전망으로부터 개별적으로 이해되어서는 안될 것이다.
100-1, 100-2, 100-3 : 전자장치
110 : 트리 구성부 120 : 트리 순회부
130 : 코드 분석부 140 : 리패키징부
150 : 분석부 160 : 출력부

Claims (20)

  1. 전자 장치의 프로그램 코드 분석 방법에 있어서,
    상기 프로그램 코드에 포함된 키 스트링(key string)을 이용하여 트리(tree)를 구성하는 단계;
    특정 키(key)에 대한 검색(find) 명령이 수신되면, 상기 특정 키에 포함된 스트링을 이용하여 상기 트리를 전위순회하는 단계;
    상기 전위 순회 결과 상기 특정 키에 포함된 마지막 스트링과 매칭되는 노드가 리프노드(leaf node)를 갖으면, 상기 리프노드의 값(value)을 반환하는 단계; 및
    상기 반환된 값이 상기 전자 장치의 프라이버시 정보를 다른 장치로 전송하기 위한 파라미터인지 여부를 판단하여 상기 프로그램 코드가 악성 동작을 수행하는 지를 분석하는 단계;를 포함하는 전자 장치의 프로그램 코드 분석 방법.
  2. 제1항에 있어서,
    상기 리프노드의 값을 반환하는 단계는,
    상기 전위 순회 결과 상기 특정 키에 포함된 마지막 스트링과 매칭되는 노드의 자식노드가 리프노드(leaf node)가 아니면, 상기 마지막 스트링과 매칭된 노드에서 하위로 도달 가능한 모든 리프노드가 갖는 값을 반환하는 단계;를 더 포함하는 것을 특징으로 하는 전자 장치의 프로그램 코드 분석 방법.
  3. 제1항에 있어서,
    상기 리프노드의 값을 반환하는 단계는,
    상기 전위 순회 과정에서 상기 특정 키에 포함된 스트링과 매칭되는 노드가 존재하지 않는 경우, 검색 실패를 반환하는 단계;를 더 포함하는 것을 특징으로 하는 전자 장치의 프로그램 코드 분석 방법.
  4. 제1항에 있어서,
    상기 반환된 값을 저장하는 단계;를 더 포함하는 것을 특징으로 하는 전자 장치의 프로그램 코드 분석 방법.
  5. 제3항에 있어서,
    상기 특정 키에 포함된 일부 스트링과 매칭되는 노드가 존재하는 경우,
    상기 특정 키에 포함된 스트링과 마지막으로 매칭되는 노드에 대한 새로운 자식 노드를 생성하고, 상기 생성된 자식 노드에 상기 특정 키의 나머지 스트링을 저장하는 단계; 및
    상기 생성된 자식 노드의 리프노드를 생성하고, 상기 생성된 리프 노드에 상기 특정 키가 갖는 값을 저장하는 단계;를 더 포함하는 것을 특징으로 하는 전자 장치의 프로그램 코드 분석 방법.
  6. 제3항에 있어서,
    상기 특정 키에 포함된 스트링과 매칭되는 노드가 하나도 존재하지 않는 경우,
    상기 트리의 루트 노드에 대한 새로운 자식 노드를 생성하고, 상기 생성된 자식 노드에 상기 특정 키의 스트링을 저장하는 단계; 및
    상기 생성된 자식 노드의 리프노드를 생성하고, 상기 생성된 리프 노드에 상기 특정 키가 갖는 값을 저장하는 단계;를 더 포함하는 것을 특징으로 하는 전자 장치의 프로그램 코드 분석 방법.
  7. 제1항에 있어서,
    제2 키에 대한 삭제(delete) 명령이 수신되면, 상기 트리에 대한 전위 순회하고, 상기 전위 순회 결과 상기 제2 키에 포함된 마지막 스트링과 매칭되는 노드가 리프노드(leaf node)를 갖으면, 상기 전위 순회의 경로에 위치한 노드 및 상기 리프노드를 삭제하는 단계;를 더 포함하는 것을 특징으로 하는 전자 장치의 프로그램 코드 분석 방법.
  8. 제7항에 있어서,
    상기 전위 순회 결과 상기 제2 키에 포함된 마지막 스트링과 매칭되는 노드가 리프노드(leaf node)를 갖지 않으면, 삭제 실패를 반환하는 단계;를 더 포함하는 것을 특징으로 하는 전자 장치의 프로그램 코드 분석 방법.
  9. 제7항에 있어서,
    상기 전위 순회 결과 상기 제2 키에 포함된 적어도 일부 스트링과 매칭되는 노드가 존재하지 않는 경우, 검색 실패를 반환하는 단계;를 더 포함하는 것을 특징으로 하는 전자 장치의 프로그램 코드 분석 방법.
  10. 삭제
  11. 삭제
  12. 삭제
  13. 전자 장치의 프로그램 코드 분석 방법에 있어서,
    애플리케이션을 리패키징하여 감시 코드를 삽입하는 단계;
    상기 애플리케이션이 실행되면, 상기 애플리케이션이 상기 전자 장치 사용자의 프라이버시 정보를 외부 장치로 전송하는지 판단하여 상기 애플리케이션이 악성 동작을 수행하는지를 분석하는 단계; 및
    상기 애플리케이션이 악성 동작을 하는 것으로 판단되면, 데이터를 출력하는 단계;를 포함하는 전자 장치의 프로그램 코드 분석 방법.
  14. 삭제
  15. 제13항에 있어서,
    상기 데이터를 출력하는 단계는,
    상기 애플리케이션이 악성 동작을 하는 것으로 판단되면, 알림 메시지를 출력하는 것을 포함하는 단계를 포함하는 것을 특징으로 하는 전자 장치의 프로그램 코드 분석 방법.
  16. 제13항에 있어서,
    상기 데이터를 출력하는 단계는,
    상기 애플리케이션이 악성 동작을 하는 것으로 판단되면, 상기 애플리케이션 동작을 중지시키는 단계를 포함하는 것을 특징으로 하는 전자 장치의 프로그램 코드 분석 방법.
  17. 전자 장치에 있어서,
    프로그램 코드에 포함된 키 스트링(key string)을 이용하여 트리(tree)를 구성하는 트리 구성부;
    특정 키(key)에 대한 검색(find) 명령이 수신되면, 상기 특정 키에 포함된 스트링을 이용하여 상기 트리를 전위순회하고, 상기 전위 순회 결과 상기 특정 키에 포함된 마지막 스트링과 매칭되는 노드가 리프노드(leaf node)를 갖으면, 상기 리프노드의 값(value)을 반환하는 트리 순회부; 및
    상기 반환된 값을 이용하여 상기 프로그램 코드를 분석하는 코드 분석부;를 포함하고,
    상기 코드 분석부는 상기 반환된 리프노드의 값이 상기 전자 장치의 프라이버시 정보를 다른 장치로 전송하기 위한 파라미터인지 여부를 판단하여 상기 프로그램 코드가 악성 동작을 수행하는지 분석하는 전자 장치.
  18. 제17항에 있어서,
    상기 트리 순회부는,
    상기 전위 순회 결과 상기 특정 키에 포함된 마지막 스트링과 매칭되는 노드의 자식노드가 리프노드(leaf node)가 아니면, 상기 마지막 스트링과 매칭된 노드에서 하위로 도달 가능한 모든 리프노드가 갖는 값을 반환하는 것을 특징으로 하는 전자 장치.
  19. 제17항에 있어서,
    상기 트리 순회부는,
    상기 전위 순회 과정에서 상기 특정 키에 포함된 스트링과 매칭되는 노드가 존재하지 않는 경우, 검색 실패를 반환하는 것을 특징으로 하는 전자 장치.
  20. 제19항에 있어서,
    상기 트리 구성부는,
    상기 특정 키에 포함된 일부 스트링과 매칭되는 노드가 존재하는 경우,
    상기 특정 키에 포함된 스트링과 마지막으로 매칭되는 노드에 대한 새로운 자식 노드를 생성하고, 상기 생성된 자식 노드에 상기 특정 키의 나머지 스트링을 저장하고,
    상기 생성된 자식 노드의 리프노드를 생성하고, 상기 생성된 리프 노드에 상기 특정 키가 갖는 값을 저장하는 것을 특징으로 하는 전자 장치.
KR1020140048925A 2014-04-23 2014-04-23 전자 장치의 프로그램 코드 분석 방법 및 전자 장치 KR102192479B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140048925A KR102192479B1 (ko) 2014-04-23 2014-04-23 전자 장치의 프로그램 코드 분석 방법 및 전자 장치
US14/694,459 US9773114B2 (en) 2014-04-23 2015-04-23 Method for analysing program code of electronic device and electronic device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140048925A KR102192479B1 (ko) 2014-04-23 2014-04-23 전자 장치의 프로그램 코드 분석 방법 및 전자 장치

Publications (2)

Publication Number Publication Date
KR20150122534A KR20150122534A (ko) 2015-11-02
KR102192479B1 true KR102192479B1 (ko) 2020-12-17

Family

ID=54335052

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140048925A KR102192479B1 (ko) 2014-04-23 2014-04-23 전자 장치의 프로그램 코드 분석 방법 및 전자 장치

Country Status (2)

Country Link
US (1) US9773114B2 (ko)
KR (1) KR102192479B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9916448B1 (en) * 2016-01-21 2018-03-13 Trend Micro Incorporated Detection of malicious mobile apps
KR102644097B1 (ko) * 2017-12-29 2024-03-06 주식회사 피제이팩토리 멀티 심도 이미지의 자동 변환 방법
WO2020257973A1 (en) * 2019-06-24 2020-12-30 Citrix Systems, Inc. Detecting hard-coded strings in source code

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013020373A (ja) * 2011-07-08 2013-01-31 Sony Corp 情報処理装置、情報処理方法及びコンピュータプログラム

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5758353A (en) * 1995-12-01 1998-05-26 Sand Technology Systems International, Inc. Storage and retrieval of ordered sets of keys in a compact 0-complete tree
US20040133590A1 (en) * 2002-08-08 2004-07-08 Henderson Alex E. Tree data structure with range-specifying keys and associated methods and apparatuses
KR20060076337A (ko) * 2004-12-29 2006-07-04 주식회사 팬택 에프티에이를 이용한 불량 데이터 관리 시스템
US20070107057A1 (en) * 2005-11-10 2007-05-10 Docomo Communications Laboratories Usa, Inc. Method and apparatus for detecting and preventing unsafe behavior of javascript programs
KR100870140B1 (ko) * 2006-11-13 2008-11-24 한국전자통신연구원 악성 코드가 숨겨진 파일 탐지 장치 및 방법
US9729316B2 (en) * 2008-02-27 2017-08-08 International Business Machines Corporation Unified broadcast encryption system
KR101091204B1 (ko) * 2010-02-26 2011-12-09 인하대학교 산학협력단 패턴 검색을 통한 침입 탐지 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013020373A (ja) * 2011-07-08 2013-01-31 Sony Corp 情報処理装置、情報処理方法及びコンピュータプログラム

Also Published As

Publication number Publication date
KR20150122534A (ko) 2015-11-02
US9773114B2 (en) 2017-09-26
US20150310207A1 (en) 2015-10-29

Similar Documents

Publication Publication Date Title
US9489135B2 (en) Systems and methods for highly scalable system log analysis, deduplication and management
US10133870B2 (en) Customizing a security report using static analysis
CN111666206B (zh) 变更代码的影响范围的获取方法、装置、设备及存储介质
US11200033B2 (en) Application programming interface (API) based object oriented software development and textual analysis
US9619449B2 (en) Compact encoding of node locations
WO2015143416A1 (en) Systems and methods for developing and using real-time data applications
CN101661543A (zh) 软件源代码安全漏洞的检测方法及检测装置
US10084819B1 (en) System for detecting source code security flaws through analysis of code history
US11144643B1 (en) Functional language source code vulnerability scanner
US10191737B2 (en) Program code comparison and reporting
KR102192479B1 (ko) 전자 장치의 프로그램 코드 분석 방법 및 전자 장치
US20160026558A1 (en) Method and system for managing virtual services to optimize operational efficiency of software testing
CN101263484B (zh) 用于声明性定义的控件动作的方法和系统
US11500652B2 (en) Method and system for application loading
CN104050161A (zh) 应用和数据服务器的动态桥接
US20190196944A1 (en) System for writing and executing unit test cases
US20150370577A1 (en) Remotely executing operations of an application using a schema that provides for executable scripts in a nodal hierarchy
US9116713B1 (en) System and method for expression evaluation in a distributed networking environment
CN111159301A (zh) 一种基于智能合约的数据创建方法、装置、设备及存储介质
CN112379885B (zh) 小程序编译方法、装置、设备及可读存储介质
JP7318704B2 (ja) テスト装置、テスト方法及びプログラム
US20120204159A1 (en) Methods and System for Managing Assets in Programming Code Translation
US20220035850A1 (en) Ontology creating apparatus, method, and program
CN111061627A (zh) 网页埋点方法、装置、电子设备及存储介质
CN112965747B (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