KR20170124752A - 안티리버싱 코드 검출 방법 및 그 장치 - Google Patents

안티리버싱 코드 검출 방법 및 그 장치 Download PDF

Info

Publication number
KR20170124752A
KR20170124752A KR1020160054523A KR20160054523A KR20170124752A KR 20170124752 A KR20170124752 A KR 20170124752A KR 1020160054523 A KR1020160054523 A KR 1020160054523A KR 20160054523 A KR20160054523 A KR 20160054523A KR 20170124752 A KR20170124752 A KR 20170124752A
Authority
KR
South Korea
Prior art keywords
api
instruction
information
reversing
called
Prior art date
Application number
KR1020160054523A
Other languages
English (en)
Other versions
KR101858594B1 (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 KR1020160054523A priority Critical patent/KR101858594B1/ko
Publication of KR20170124752A publication Critical patent/KR20170124752A/ko
Application granted granted Critical
Publication of KR101858594B1 publication Critical patent/KR101858594B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/74Reverse engineering; Extracting design information from source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication

Landscapes

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

Abstract

본 발명의 일 실시예에 따른 다중 동적분석기를 이용한 안티리버싱 코드 검출 방법은 실행프로그램에 복수의 상이한 동적분석기를 적용하여, 상기 실행프로그램에 의해 호출되는 적어도 하나의 API(Application Programming Interface)의 명칭 정보를 포함하는 복수의 API트레이스정보를 생성하는 단계; 상기 복수의 API트레이스정보를 비교하여, 호출되는 API가 서로 달라지기 직전에 공통적으로 호출되는 API인 안티리버싱API를 검출하는 단계; 및 상기 안티리버싱API 이후에 상기 실행프로그램에 의해 호출되는 적어도 하나의 명령어 정보를 포함하는 복수의 명령어트레이스정보에 기초하여, 상기 호출되는 명령어가 서로 달라지기 직전에 공통적으로 호출되는 명령어인 분기명령어를 검출하여, 안티리버싱 코드를 검출하는 단계를 포함한다.

Description

안티리버싱 코드 검출 방법 및 그 장치{METHOD AND APPARATUS FOR DETECTING ANTI-REVERSING CODE}
본 발명은 복수의 동적분석기를 이용하여 프로그램의 내부에 위치한 안티리버싱 코드를 검출하는 방법에 관한 것이다.
이미 만들어진 프로그램을 역으로 추적하여 처음의 문서나 설계기법 등의 자료를 얻어 내는 소프트웨어 역공학(reverse engineering)이 발전하면서, 반대로 역공학으로부터 프로그램을 보호하기 위한 안티디버깅(anti-debugging) 기술도 역시 발전하고 있다.
이러한 안티디버깅 기술이 적용된 프로그램의 경우, 실시간으로 프로그램을 분석하는 동적분석기를 이용하여 프로그램을 정상적으로 분석할 수 없게 되는 문제가 있다. 즉, 이 경우, 동적분석기는 안티디버깅이 적용된 지점을 알 수 없어, 프로그램의 시작 지점부터 명령어(instruction)를 트레이스하면서 일일이 안티디버깅 기법이 적용된 지점을 찾아야 하므로, 프로그램 분석에 많은 시간이 소요될 수 있다.
또한, 동적분석기를 이용하여 안티디버깅 기법이 발견하였다고 하여도 그 안티디버깅 기법을 우회하기 위한 정보 수집과 우회 방법 작성에 추가적인 시간이 걸리고, 그 작성된 안티디버깅 우회 방법이 프로그램을 오리지널 실행 루트로 진행되게 한 것인지 확신할 수도 없게 된다.
따라서, 보다 빠르게 프로그램 내부에서 안티디버깅이 적용된 지점을 찾을 수 있으며, 안티디버깅 기법을 우회하기 위한 정보도 획득할 수 있는 방법에 대한 필요성이 대두되고 있다.
관련 선행기술로는 대한민국 공개특허공보 제10-2012-0096983호(발명의 명칭: 악성 프로그램 검출 방법 및 이를 구현하는 휴대 단말기, 공개일자: 2012년 9월 3일)가 있다.
본 발명의 목적은 복수의 상이한 동적분석기를 이용하여 프로그램을 분석하고, 그 분석결과를 이용하여 프로그램에 삽입된 안티리버싱 코드를 검출하는 방법 및 그 장치를 제공하는 것이다.
또한, 본 발명의 목적은 복수의 상이한 동적분석기를 이용하여 검출된 안티리버싱 코드를 우회하는 방법 및 그 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 과제는 이상에서 언급한 과제(들)로 제한되지 않으며, 언급되지 않은 또 다른 과제(들)은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 다중 동적분석기를 이용한 안티리버싱 코드 검출 방법은 실행프로그램에 복수의 상이한 동적분석기를 적용하여, 상기 실행프로그램에 의해 호출되는 적어도 하나의 API(Application Programming Interface)의 명칭 정보를 포함하는 복수의 API트레이스정보를 생성하는 단계; 상기 복수의 API트레이스정보를 비교하여, 호출되는 API가 서로 달라지기 직전에 공통적으로 호출되는 API인 안티리버싱API를 검출하는 단계; 및 상기 안티리버싱API 이후에 상기 실행프로그램에 의해 호출되는 적어도 하나의 명령어 정보를 포함하는 복수의 명령어트레이스정보에 기초하여, 상기 호출되는 명령어가 서로 달라지기 직전에 공통적으로 호출되는 명령어인 분기명령어를 검출하여, 안티리버싱 코드를 검출하는 단계를 포함한다.
바람직하게는, 상기 안티리버싱API 및 상기 분기명령어 중 적어도 하나에 대응되는 정보로서, 상기 안티리버싱 코드를 우회하는 우회정보를 데이터베이스로부터 검색하는 단계; 및 상기 검색된 우회정보를 출력하는 단계를 더 포함할 수 있다.
바람직하게는, 상기 우회정보는 상기 복수의 상이한 동적분석기 중에서 상기 안티리버싱 코드에 의해 영향을 받지 않은 동적분석기를 이용하여 분석된 레지스터 및 메모리 값에 기초하여 결정될 수 있다.
바람직하게는, 상기 API트레이스정보는 상기 적어도 하나의 API 각각에 대하여, API 또는 명령어의 실행 순서 정보인 명령어 카운터, API의 호출순서, API가 로딩되는 주소, API에게 전달되는 인수 및 API가 호출되는 상기 실행프로그램의 주소 중 적어도 하나의 정보를 더 포함할 수 있다.
바람직하게는, 상기 안티리버싱API를 검출하는 단계는 상기 복수의 API트레이스정보에 대하여, 동일한 상기 호출순서를 가진 API가 서로 동일한 API인지 판단하는 단계; 및 상기 판단결과에 따라, 상기 동일한 호출순서를 가진 API가 서로 달라지기 직전에 호출되는 상기 안티리버싱API를 검출하는 단계를 포함할 수 있다.
바람직하게는, 상기 동일한 호출순서를 가진 API가 서로 동일한 API인지 판단하는 단계는 상기 동일한 호출순서를 가진 API 각각의 상기 명칭, 상기 전달되는 인수 및 상기 로딩되는 주소 중 적어도 하나에 기초하여 판단할 수 있다.
바람직하게는, 상기 명령어트레이스정보는 상기 적어도 하나의 명령어 각각에 대하여, API 또는 명령어의 실행 순서 정보인 명령어 카운터 및 명령어가 호출되는 주소 중 적어도 하나에 대한 정보를 더 포함할 수 있다.
바람직하게는, 상기 명령어트레이스정보는 상기 안티리버싱API의 실행 순서에 대한 정보인 명령어 카운터를 이용하거나 상기 안티리버싱API가 호출되는 주소에 설정된 브레이크 포인트를 이용하여 생성될 수 있다.
바람직하게는, 상기 실행프로그램이 적어도 하나의 API 및 적어도 하나의 명령어를 호출하도록 생성되었을 때, 상기 복수의 API트레이스정보를 생성하는 단계는 상기 실행프로그램에 의해 호출되는 적어도 하나의 API의 명칭 정보만을 이용하여 상기 복수의 API트레이스정보를 생성할 수 있다.
바람직하게는, 상기 복수의 상이한 동적분석기는 분석기법이 상이할 수 있다.
또한, 상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 웨어러블 입력 장치를 이용한 사용자 디바이스 제어 장치는 실행프로그램에 복수의 상이한 동적분석기를 적용하여, 상기 실행프로그램에 의해 호출되는 적어도 하나의 API의 명칭 정보를 포함하는 복수의 API트레이스정보를 생성하는 생성부; 및 상기 복수의 API트레이스정보를 비교하여, 호출되는 API가 서로 달라지기 직전에 공통적으로 호출되는 API인 안티리버싱API를 검출하는 검출부를 포함하고, 상기 검출부는 상기 안티리버싱API 이후에 상기 실행프로그램에 의해 호출되는 적어도 하나의 명령어 정보를 포함하는 복수의 명령어트레이스정보에 기초하여, 상기 호출되는 명령어가 서로 달라지기 직전에 공통적으로 호출되는 명령어인 분기명령어를 검출하여, 안티리버싱 코드를 더 검출한다.
바람직하게는, 상기 안티리버싱API 및 상기 분기명령어 중 적어도 하나에 대응되는 정보로서, 상기 안티리버싱 코드를 우회하는 우회정보를 데이터베이스로부터 검색하는 검색부; 및 상기 검색된 우회정보를 출력하는 출력부를 더 할 수 있다.
바람직하게는, 상기 우회정보는 상기 복수의 상이한 동적분석기 중에서 상기 안티리버싱 코드에 의해 영향을 받지 않은 동적분석기를 이용하여 분석된 레지스터 및 메모리 값에 기초하여 결정될 수 있다.
바람직하게는, 상기 API트레이스정보는 상기 적어도 하나의 API 각각에 대하여, API 또는 명령어의 실행 순서 정보인 명령어 카운터, API의 호출순서, API가 로딩되는 주소, API에게 전달되는 인수 및 API가 호출되는 상기 실행프로그램의 주소 중 적어도 하나의 정보를 더 포함할 수 있다.
바람직하게는, 상기 검출부는 상기 복수의 API트레이스정보에 대하여, 동일한 상기 호출순서를 가진 API가 서로 동일한 API인지 판단하고, 상기 판단결과에 따라, 상기 동일한 호출순서를 가진 API가 서로 달라지기 직전에 호출되는 상기 안티리버싱API를 검출할 수 있다.
바람직하게는, 상기 동일한 호출순서를 가진 API가 서로 동일한 API인지 판단할 때, 상기 동일한 호출순서를 가진 API 각각의 상기 명칭, 상기 전달되는 인수 및 상기 로딩되는 주소 중 적어도 하나에 기초하여 판단할 수 있다.
바람직하게는, 상기 명령어트레이스정보는 상기 적어도 하나의 명령어 각각에 대하여, API 또는 명령어의 실행 순서 정보인 명령어 카운터 및 명령어가 호출되는 주소 중 적어도 하나에 대한 정보를 더 포함할 수 있다.
바람직하게는, 상기 명령어트레이스정보는 상기 안티리버싱API의 실행 순서에 대한 정보인 명령어 카운터를 이용하거나 상기 안티리버싱API가 호출되는 주소에 설정된 브레이크 포인트를 이용하여 생성될 수 있다.
바람직하게는, 상기 실행프로그램이 적어도 하나의 API 및 적어도 하나의 명령어를 호출하도록 생성되었을 때, 상기 생성부는 상기 실행프로그램에 의해 호출되는 적어도 하나의 API의 명칭 정보만을 이용하여 상기 복수의 API트레이스정보를 생성할 수 있다.
바람직하게는, 상기 복수의 상이한 동적분석기는 분석기법이 상이할 수 있다.
본 발명의 일 실시예에 따른 다중 동적분석기를 이용한 안티리버싱 코드 검출 방법은 프로그램에서 호출되는 API에 기반하여 안티리버싱 코드가 삽입된 것으로 판단되는 지점의 인근에서 안티리버싱 코드를 검출하고 있어, 안티리버싱 코드를 검출하는데 소요되는 시간을 단축할 수 있는 효과가 있다.
또한, 본 발명의 일 실시예에 따르면 데이터베이스에 저장된 검출된 안티리버싱 코드를 우회하는 방법에 대한 정보를 사용자에게 제공할 수 있는 효과가 있다.
도 1은 본 발명의 일 실시예에 따른 다중 동적분석기를 이용한 안티리버싱 코드 검출 방법을 설명하기 위한 흐름도이다.
도 2는 본 발명의 일 실시예에 따른 다중 동적분석기를 이용한 안티리버싱 코드 검출 장치를 설명하기 위한 도면이다.
도 3은 본 발명의 일 실시예에 따른 동적분석기에 의한 API 트레이스 결과를 설명하기 위한 도면이다.
도 4는 본 발명의 일 실시예에 따른 동적분석기에 의한 명령어 트레이스 결과를 설명하기 위한 도면이다.
도 5은 본 발명의 다른 실시예에 따른 동적분석기에 의한 API 트레이스 결과를 설명하기 위한 도면이다.
도 6는 본 발명의 다른 실시예에 따른 동적분석기에 의한 명령어 트레이스 결과를 설명하기 위한 도면이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 발명의 일 실시예에 따른 다중 동적분석기를 이용한 안티리버싱 코드 검출 방법을 설명하기 위한 흐름도이다.
단계 S110에서는, 안티리버싱 코드 검출 장치가 실행프로그램에 복수의 상이한 동적분석기를 적용하여, 그 실행프로그램에 의해 호출되는 적어도 하나의 API(Application Programming Interface)의 명칭 정보를 포함하는 복수의 API트레이스정보를 생성한다.
안티리버싱 코드는 소프트웨어 역공학(reverse engineering)으로부터 프로그램를 보호하기 위하여 프로그램에 삽입된 코드이다. 예컨대, 어떤 프로그램에 안티리버싱 코드가 삽입된 경우, 제3자가 그 프로그램의 정상적인 실행 경로를 따라가면서 그 프로그램의 구조 및 동작을 분석하기 어려울 수 있다.
동적분석기는 어떤 프로그램이 실시간으로 동작 중일 때, 그 프로그램의 동작 내용 및 상태을 분석하기 위한 분석 프로그램이다. 예컨대, 그 프로그램이 호출하는 API 또는 명령어(instruction)의 목록, 레지스터 및 메모리의 내용 등을 분석할 수 있다.
API는 프로그램을 제작할 수 있도록 운영체제(operating system) 또는 플랫폼(platform)에서 제공되는 함수의 집합이다. 예컨대, Windows OS는 Windows OS에서 제공하는 다양한 기능을 보다 편리하게 사용할 수 있도록 Windows API를 제공하고 있다.
한편, 실행프로그램은 컴퓨터, 노트북, 스마트폰 및 태블릿 등에서 소정의 목적을 달성하기 위해 제작된 소프트웨어이며, OS 또는 플랫폼에서 제공되는 API와 그 실행프로그램의 개발자가 추가한 유저 코드를 이용하여 제작될 수 있다.
예컨대, 안티리버싱 코드 검출 장치가 2개의 상이한 동적분석기를 이용하여, 어떤 실행프로그램에 의해 호출되는 적어도 하나의 API의 명칭 정보를 포함하는 API트레이스정보를 생성할 수 있다. 이때, 도 3 및 도 5를 참조하면, API트레이스정보는 적어도 하나의 API의 명칭 정보를 호출되는 순서에 따라 포함할 수 있다.
보다 구체적으로는, API트레이스정보는 Windows OS에서 제공되는 FindWindowA, WriteFile, VirtualAlloc 및 ExitProcess 등의 API 명칭 정보를 포함할 수 있다. 이는, 도 3 및 도 5를 참조하면, 안티리버싱 코드 검출 장치가 API의 명칭 정보(306)로부터 획득할 수 있다.
다른 실시예에서는, API트레이스정보는 그 API트레이스정보에 포함된 적어도 하나의 API 각각에 대하여, API 또는 명령어의 실행 순서 정보인 명령어 카운터, API의 호출순서, API가 로딩되는 주소, API에게 전달되는 인수(parameter) 및 API가 호출되는 실행프로그램의 주소 중 적어도 하나의 정보를 더 포함할 수 있다.
도 3 및 도 5를 참조하면, 동적분석기가 API가 로딩되는 주소(502), 명령어 카운터(504) 및 API가 호출되는 실행프로그램의 주소(304)를 더 분석할 수 있다. 또한, API의 호출순서의 경우 API 또는 명령어의 실행 순서 정보인 명령어 카운터(504)를 이용하거나, 동적분석기에 의해 호출이 감지된 순서에 의하여 결정될 수 있다.
또한, API에게 전달되는 인수는 그 API가 호출될 때 함께 전달되는 인수일 수 있다. 예컨대, FindWindowA API를 호출할 때, 클래스 명칭 및 윈도우 명칭에 대한 2개의 인수를 전달하여, 그 인수에 대응되는 결과를 얻을 수 있다. 이때, 클래스 명칭 및 윈도우 명칭이 API에게 전달되는 인수일 수 있다.
이때, API가 로딩되는 주소 및 API가 호출되는 실행프로그램의 주소는 실행프로그램이 실행되는 컴퓨터, 노트북, 스마트폰 및 태블릿 등의 연산 장치의 메모리 상의 주소를 의미할 수 있다.
예컨대, 실행프로그램 및 Windows API가 저장된 DLL(Dynamin Linking Library)파일은 실행프로그램의 실행 시, 컴퓨터의 메모리에 로딩될 수 있다. 따라서, API가 로딩되는 주소는 DLL파일이 로딩된 메모리 주소를 의미하고, API가 호출되는 실행프로그램의 주소는 API를 호출하는 실행프로그램이 로딩된 메모리 주소를 의미할 수 있다.
또 다른 실시예에서는, 안티리버싱 코드 검출 장치가, 실행프로그램이 적어도 하나의 API 및 적어도 하나의 명령어를 호출하도록 생성되었을 때, 그 실행프로그램에 의해 호출되는 적어도 하나의 API의 명칭 정보만을 이용하여 복수의 API트레이스정보를 생성할 수 있다.
예컨대, 실행프로그램은, 도 3을 참조하면, Windows API와 Windows API가 아닌 그 실행프로그램의 개발자가 추가한 유저 코드를 포함하도록 생성될 수 있다. 그러나, 실행프로그램(특히, 유저 코드)은 방대한 크기를 가질 수 있어, 이 실행프로그램의 실행 과정을 일일이 기록하면서 관리하는 것은 어려울 수 있다. 따라서, 안티리버싱 코드 검출 장치가 유저 코드와는 무관하게 Windows API의 사용 내역에만 기반하여, 복수의 API트레이스정보를 생성할 수 있다.
따라서, 안티리버싱 코드 검출 장치는 API 및 명령어를 모두 이용하는 경우 보다 더 빠른 속도로 API트레이스정보를 생성할 수 있다.
또 다른 실시예에서는, 복수의 상이한 동적분석기는 분석기법이 상이할 수 있다.
예컨대, 동일한 분석기법을 가진 2개의 동적분석기를 이용하는 경우, 실행프로그램의 동작을 분석하는데 있어서 그 2개의 동적분석기 간에 차이가 발생하지 않을 수 있다. 그러나, 만일 생성되는 API트레이스정보에 차이가 없다면, 최악의 경우 안티리버싱API를 검출할 수 없게 된다. 따라서, 복수의 상이한 동적분석기는 상이한 분석기법을 가지는 것이 바람직할 수 있다.
단계 S120에서는, 안티리버싱 코드 검출 장치가 생성된 복수의 API트레이스정보를 비교하여, 호출되는 API가 서로 달라지기 직전에 공통적으로 호출되는 API인 안티리버싱API를 검출한다.
즉, 안티리버싱 코드 검출 장치가 복수의 API트레이스정보 간의 동일한 순서에 호출되는 API가 동일한지 여부를 판단한다. 그리고, 동일한 순서에 호출되는 API가 최초로 달라질 때, 그 직전에 공통적으로 호출된 API를 안티리버싱API로 검출할 수 있다. 한편, 안티리버싱 API의 구체적인 검출과정은 아래에서 자세하게 설명한다.
다른 실시예에서는, 안티리버싱 코드 검출 장치가 동일한 호출순서의 API가 서로 동일한 API인지 여부에 기초하여, 안티리버싱API를 검출할 수 있다.
도 3 및 표 1(왼쪽)을 참조하면, 어떤 응용프로그램에 의해 RtlAllocateHeap, FindWindowA 및 ExitProcess가 차례로 호출(302, 표1의 굵은글자)되는 것을 알 수 있다. 그러나, 도 5 및 표 1(오른쪽)을 참조하면, 동일한 응용프로그램에 의해 RtlAllocateHeap, FindWindowA 및 ExitProcess 가 차례로 호출(302, 표1의 굵은글자)되지만, FindWindowA 및 ExitProcess의 사이에 FindWindowA, RltAllocateHeap 및 WriteFile가 더 호출(표 1의 이탤릭글자)되는 것을 알 수 있다.
한편, 안티리버싱 코드 검출 장치가 API의 명칭 API가 로딩되는 주소 및 API가 호출되는 실행프로그램의 주소 중 적어도 하나를 이용하여 서로 대응되는 API의 호출 순서를 결정할 수 있다. 예컨대, 표 1에서 RtlAllocateHeap API가 호출되는 실행프로그램의 주소가 409D4F로 동일하므로, 동일한 호출순서를 갖는 것으로 결정할 수 있다.
도 3 및 도 5에서 호출되는 API의 비교
도 3(302)에서 호출되는 API 목록 도 5(302)에서 호출되는 API 목록
409D4F ntdll.RtlAllocateHeap
401048 USER32.FindWindowA
402eaf kernel32.ExitProcess


409d4f -> 7756e036 RtlAllocateHeap 86df38
401048 -> 757affe6 FindWindowA 8732dc
401062 -> 757affe6 FindWindowA 873568
409d4f -> 7756e036 RtlAllocateHeap 873f74
40a48a -> 75571282 WriteFile 874c76
402eaf -> 755779c8 ExitProcess 876c36
보다 구체적으로는, 편의상 표 1의 첫번째줄에 공통적으로 표시된 RtlAllocateHeap의 호출순서를 1이라 하면, 표 1의 호출순서 2는 FindWindowA로 동일하다. 그러나, 표 1의 호출순서 3은 각각 ExitProcess와 FindWindowA로 호출되는 API가 상이한 것을 알 수 있다.
따라서, 안티리버싱 코드 검출 장치가 동일한 호출순서를 가진 API가 서로 달라지기 직전에 호출되는 FindWindowA를 안티리버싱API로 검출할 수 있다. 또한, 도 3의 경우, 안티리버싱 코드의 동작으로 인하여 동적분석기가 적절한 분석을 수행할 수 없었던 것을 알 수 있다.
또 다른 실시예에서는, 안티리버싱 코드 검출 장치가 동일한 API인지 판단할 때, API 각각의 명칭, 전달되는 인수 및 로딩되는 주소 중 적어도 하나에 기초하여 판단할 수 있다.
예컨대, Windows OS에서 제공되는 FindWindowA API는 전달되는 인수(parameter)에 따라 상이한 출력(output)이 존재할 수 있다. 즉, 동일한 명칭을 가진 API가 다르게 동작할 수 있다.
따라서, 안티리버싱 코드 검출 장치는 API의 명칭, 로딩되는 주소 및 전달되는 인수를 모두 이용하여 API의 동일성을 판단할 수 있다. 이는, 서로 다른 API는 메모리상의 서로 다른 주소에 로딩되는 점과 동일한 명칭을 가진 API가 전달되는 인수에 따라 다르게 동작함을 이용하기 위함이다.
마지막으로 단계 S130에서는, 안티리버싱 코드 검출 장치가 검출된 안티리버싱API 이후에 실행프로그램에 의해 호출되는 적어도 하나의 명령어(instruction) 정보를 포함하는 복수의 명령어트레이스정보에 기초하여, 그 호출되는 명령어가 서로 달라지기 직전에 공통적으로 호출되는 명령어인 분기명령어를 검출하여, 안티리버싱 코드를 검출한다.
예컨대, 안티리버싱 코드 검출 장치가 도 4 및 도 6의 402 및 602와 같이 안티리버싱API의 실행 이후에 실행프로그램에 의해 호출되는 적어도 하나의 명령어 정보인 명령어트레이스정보를 생성할 수 있다. 그리고, 그 명령어트레이스정보를 이용하여, 호출되는 명령어가 서로 달라지기 직전에 공통적으로 호출되는 분기명령어를 검출하여 안티리버싱 코드를 검출할 수 있다.
도 4 및 도 6에서 호출되는 API의 비교
도 4에서 호출되는 명령어 목록 도 6에서 호출되는 명령어 목록
0040104E : cmp esi, esp
00401050 : call 0x401110
00401110 : jnz 0x401113
00401112 : ret
00401055 : test eax, eax
00401057 : jnz 0x401073
00401073 : mov dword ptr SS:[ebp-4], 1
0040107A : mov EAX, dword ptr SS:[ebp-4]
0040107D : pop edi 873546 0
040104E : cmp esi, esp
873547 00401050 : call 0x401110
873548 00401110 : jnz 0x401113
873549 00401112 : ret
87354a 00401055 : test eax, eax
87354b 00401057 : jnz 0x401073
87354c 00401059 : mov esi, esp
87354d 0040105B : push 0x0
87354e 0040105D : push 0x42001c
보다 구체적으로는, 도 4 및 도 6의 402 및 602를 비교하면, 6번째 명령어인 jnz 0x401073(표 2의 굵은글자)까지는 동일하고, 그 뒤로부터 호출되는 명령어가 달라지는 것을 알 수 있다. 이때, 분기명령어는 jnz 0x401073(표 2의 굵은글자)이 되며, 이 지점에 안티리버싱 코드가 삽입된 것을 알 수 있다.
다른 실시예에서는, 안티리버싱 코드 검출 장치가 그 검출된 안티리버싱 코드를 우회하기 위한 우회정보를 출력할 수 있다.
즉, 안티리버싱 코드 검출 장치는 검출된 안티리버싱API 및 분기명령어 중 적어도 하나를 이용하여, 검출된 안티리버싱 코드를 우회하는 우회정보를 데이터베이스로부터 검색할 수 있다. 그리고, 그 검색결과인 우회정보를 출력할 수 있다.
예컨대, 안티리버싱 코드 검출 장치가 FindwWindowA 함수에 대한 리턴(return)값이 저장되는 eax 레지스터를 수정하여 안티리버싱 코드를 우회할 수 있다는 우회정보를 데이터베이스로부터 검색할 수 있다. 그리고, 그 우회정보를 화면 상에 출력할 수 있다.
이때, 데이터베이스에는 각 API별 또는 명령어별로 대응되는 우회방법에 대한 우회정보가 저장되어 있을 수 있다.
또 다른 실시예에서는, 우회정보는 복수의 상이한 동적분석기 중에서 안티리버싱 코드에 의해 영향을 받지 않은 동적분석기를 이용하여 분석된 레지스터 및 메모리 값에 기초하여 결정될 수 있다.
이때, 안티리버싱 코드에 의해 영향을 받지 않은 동적분석기는 안티리버싱 코드에 의하여 탐지되지 않아서 실행프로그램을 정상적으로 분석가능한 상태에 있는 동적분석기를 의미할 수 있다.
예컨대, 우회정보는 안티리버싱 코드의 영향을 받지 않은 동적분석기의 FindwWindowA 함수에 대한 리턴(return)값이 저장되는 eax 레지스터의 값에 대한 정보를 더 포함할 수 있다. 즉, 안티리버싱 코드 검출 장치가, 어떤 동적분석기가 안티리버싱 코드에 의해 영향을 받은 경우에, 안티리버싱 코드에 의해 영향을 받지 않은 동적분석기를 이용하여 획득한 eax 레지스터의 값에 대한 정보를 더 포함하는 우회정보를 생성할 수 있다.
또 다른 실시예에서는, 명령어트레이스정보는 적어도 하나의 명령어 각각에 대하여, API 또는 명령어의 실행 순서 정보인 명령어 카운터 및 명령어가 호출되는 주소 중 적어도 하나에 대한 정보를 더 포함할 수 있다.
예컨대, 도 6을 참조하면, 명령어트레이스정보는 "873546 0040104E : cmp esi, esp"의 구조를 가질 수 있다. 여기서, "873546"은 명령어 카운터이고, "0040104E"는 명령어가 호출되는 메모리 상의 주소일 수 있다. 또한, "cmp esi, esp"는 명령어일 수 있다. 즉, 명령어트레이스정보는 명령어 카운터, 명령어가 호출되는 주소 및 명령어를 포함할 수 있다.
또 다른 실시예에서는, 명령어트레이스정보는 안티리버싱API의 실행 순서에 대한 정보인 명령어 카운터를 이용하거나 안티리버싱API가 호출되는 주소에 설정된 브레이크 포인트를 이용하여 생성될 수 있다.
예컨대, 안티리버싱 코드 검출 장치가 안티리버싱API의 명령어 카운터 정보를 이용하여 그 이후의 명령어 정보를 정렬함으로써 명령어트레이스정보를 생성할 수 있다. 또한, 안티리버싱 코드 검출 장치가 안티리버싱API가 호출되는 주소에 브레이크 포인트를 설정하고, 그 이후의 명령어 정보를 정렬함으로써 명령어트레이스정보를 생성할 수 있다.
이와 같이, 본 발명의 일 실시예에 따른 다중 동적분석기를 이용한 안티리버싱 코드 검출 방법은 복수의 상이한 동적분석기를 이용하여 실행프로그램에서 호출되는 API의 목록을 비교한다. 그리고, 그 비교 결과, 안티리버싱 코드가 삽입된 것으로 판단되는 안티리버싱API의 이후에 호출되는 명령어의 목록을 더 비교하여 안티리버싱 코드를 검출한다. 따라서, 실행프로그램에 포함된 모든 명령어를 비교할 필요없이, 안티리버싱API를 우선 검출하고, 안티리버싱API 이후에 위치한 안티리버싱 코드를 검출할 수 있게 됨으로써, 안티리버싱 코드 검출에 소요되는 시간을 크게 단축할 수 있는 효과가 있다.
도 2는 본 발명의 일 실시예에 따른 다중 동적분석기를 이용한 안티리버싱 코드 검출 장치를 설명하기 위한 도면이다.
도 2를 참조하면, 본 발명의 일 실시예에 따른 다중 동적분석기를 이용한 안티리버싱 코드 검출 장치(200)는 생성부(210) 및 검출부(220)를 포함한다. 또한, 선택적으로 검색부(미도시) 및 출력부(미도시)를 포함할 수 있다.
한편, 안티리버싱 코드 검출 장치(200)는 컴퓨터, 노트북, 스마트폰 및 태블릿 등에 탑재될 수 있다.
생성부(210)는 실행프로그램에 복수의 상이한 동적분석기를 적용하여, 그 실행프로그램에 의해 호출되는 적어도 하나의 API의 명칭 정보를 포함하는 복수의 API트레이스정보를 생성한다.
다른 실시예에서는, API트레이스정보는 적어도 하나의 API 각각에 대하여, API 또는 명령어의 실행 순서 정보인 명령어 카운터, API의 호출순서, API가 로딩되는 주소, API에게 전달되는 인수 및 API가 호출되는 실행프로그램의 주소 중 적어도 하나의 정보를 더 포함할 수 있다.
또 다른 실시예에서는, 실행프로그램이 적어도 하나의 API 및 적어도 하나의 명령어를 호출하도록 생성되었을 때, 생성부(210)는 그 실행프로그램에 의해 호출되는 적어도 하나의 API의 명칭 정보만을 이용하여 복수의 API트레이스정보를 생성할 수 있다.
또 다른 실시예에서는, 복수의 상이한 동적분석기는 분석기법이 상이할 수 있다.
검출부(220)는 생성된 복수의 API트레이스정보를 비교하여, 호출되는 API가 서로 달라지기 직전에 공통적으로 호출되는 API인 안티리버싱API를 검출한다.
또한, 검출부(220)는 그 안티리버싱API 이후에 실행프로그램에 의해 호출되는 적어도 하나의 명령어 정보를 포함하는 복수의 명령어트레이스정보에 기초하여, 그 호출되는 명령어가 서로 달라지기 직전에 공통적으로 호출되는 명령어인 분기명령어를 검출함으로써, 안티리버싱 코드를 더 검출할 수 있다.
다른 실시예에서는, 검출부(220)는 복수의 API트레이스정보에 대하여, 동일한 호출순서를 가진 API가 서로 동일한 API인지 판단하고, 그 판단결과에 따라, 동일한 호출순서를 가진 API가 서로 달라지기 직전에 호출되는 안티리버싱API를 검출할 수 있다.
또 다른 실시예에서는, 검출부(220)가 동일한 호출순서를 가진 API가 서로 동일한 API인지 판단할 때, 그 동일한 호출순서를 가진 API 각각의 명칭, 전달되는 인수 및 로딩되는 주소 중 적어도 하나에 기초하여 판단할 수 있다.
또 다른 실시예에서는, 명령어트레이스정보는 적어도 하나의 명령어 각각에 대하여, API 또는 명령어의 실행 순서 정보인 명령어 카운터 및 명령어가 호출되는 주소 중 적어도 하나에 대한 정보를 더 포함할 수 있다.
또 다른 실시예에서는, 명령어트레이스정보는 안티리버싱API의 실행 순서에 대한 정보인 명령어 카운터를 이용하거나 안티리버싱API가 호출되는 주소에 설정된 브레이크 포인트를 이용하여 생성될 수 있다.
검색부(미도시)는 검출된 안티리버싱API 및 분기명령어 중 적어도 하나에 대응되는 정보로서, 그 안티리버싱 코드를 우회하는 우회정보를 데이터베이스로부터 검색한다.
다른 실시예에서는, 우회정보는 그 복수의 상이한 동적분석기 중에서 검출된 안티리버싱 코드에 의해 영향을 받지 않은 동적분석기를 이용하여 분석된 레지스터 및 메모리 값에 기초하여 결정될 수 있다.
출력부(미도시)는 그 검색된 우회정보를 출력한다.
한편, 상술한 본 발명의 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다.
상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등) 를 포함한다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다.
본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.

Claims (20)

  1. 실행프로그램에 복수의 상이한 동적분석기를 적용하여, 상기 실행프로그램에 의해 호출되는 적어도 하나의 API(Application Programming Interface)의 명칭 정보를 포함하는 복수의 API트레이스정보를 생성하는 단계;
    상기 복수의 API트레이스정보를 비교하여, 호출되는 API가 서로 달라지기 직전에 공통적으로 호출되는 API인 안티리버싱API를 검출하는 단계; 및
    상기 안티리버싱API 이후에 상기 실행프로그램에 의해 호출되는 적어도 하나의 명령어 정보를 포함하는 복수의 명령어트레이스정보에 기초하여, 상기 호출되는 명령어가 서로 달라지기 직전에 공통적으로 호출되는 명령어인 분기명령어를 검출하여, 안티리버싱 코드를 검출하는 단계
    를 포함하는 것을 특징으로 하는 다중 동적분석기를 이용한 안티리버싱 코드 검출 방법.
  2. 제1항에 있어서,
    상기 안티리버싱API 및 상기 분기명령어 중 적어도 하나에 대응되는 정보로서, 상기 안티리버싱 코드를 우회하는 우회정보를 데이터베이스로부터 검색하는 단계; 및
    상기 검색된 우회정보를 출력하는 단계
    를 더 포함하는 것을 특징으로 하는 다중 동적분석기를 이용한 안티리버싱 코드 검출 방법.
  3. 제2항에 있어서,
    상기 우회정보는
    상기 복수의 상이한 동적분석기 중에서 상기 안티리버싱 코드에 의해 영향을 받지 않은 동적분석기를 이용하여 분석된 레지스터 및 메모리 값에 기초하여 결정되는 것을 특징으로 하는 다중 동적분석기를 이용한 안티리버싱 코드 검출 방법.
  4. 제1항에 있어서,
    상기 API트레이스정보는
    상기 적어도 하나의 API 각각에 대하여, API 또는 명령어의 실행 순서 정보인 명령어 카운터, API의 호출순서, API가 로딩되는 주소, API에게 전달되는 인수 및 API가 호출되는 상기 실행프로그램의 주소 중 적어도 하나의 정보를 더 포함하는 것을 특징으로 하는 다중 동적분석기를 이용한 안티리버싱 코드 검출 방법.
  5. 제4항에 있어서,
    상기 안티리버싱API를 검출하는 단계는
    상기 복수의 API트레이스정보에 대하여, 동일한 상기 호출순서를 가진 API가 서로 동일한 API인지 판단하는 단계; 및
    상기 판단결과에 따라, 상기 동일한 호출순서를 가진 API가 서로 달라지기 직전에 호출되는 상기 안티리버싱API를 검출하는 단계
    를 포함하는 것을 특징으로 하는 다중 동적분석기를 이용한 안티리버싱 코드 검출 방법.
  6. 제5항에 있어서,
    상기 동일한 호출순서를 가진 API가 서로 동일한 API인지 판단하는 단계는
    상기 동일한 호출순서를 가진 API 각각의 상기 명칭, 상기 전달되는 인수 및 상기 로딩되는 주소 중 적어도 하나에 기초하여 판단하는 것을 특징으로 하는 다중 동적분석기를 이용한 안티리버싱 코드 검출 방법.
  7. 제1항에 있어서,
    상기 명령어트레이스정보는
    상기 적어도 하나의 명령어 각각에 대하여, API 또는 명령어의 실행 순서 정보인 명령어 카운터 및 명령어가 호출되는 주소 중 적어도 하나에 대한 정보를 더 포함하는 것을 특징으로 하는 다중 동적분석기를 이용한 안티리버싱 코드 검출 방법.
  8. 제1항에 있어서,
    상기 명령어트레이스정보는
    상기 안티리버싱API의 실행 순서에 대한 정보인 명령어 카운터를 이용하거나 상기 안티리버싱API가 호출되는 주소에 설정된 브레이크 포인트를 이용하여 생성되는 것을 특징으로 하는 다중 동적분석기를 이용한 안티리버싱 코드 검출 방법.
  9. 제1항에 있어서,
    상기 실행프로그램이 적어도 하나의 API 및 적어도 하나의 명령어를 호출하도록 생성되었을 때,
    상기 복수의 API트레이스정보를 생성하는 단계는
    상기 실행프로그램에 의해 호출되는 적어도 하나의 API의 명칭 정보만을 이용하여 상기 복수의 API트레이스정보를 생성하는 것을 특징으로 하는 다중 동적분석기를 이용한 안티리버싱 코드 검출 방법.
  10. 제1항에 있어서,
    상기 복수의 상이한 동적분석기는
    분석기법이 상이한 것을 특징으로 하는 다중 동적분석기를 이용한 안티리버싱 코드 검출 방법.
  11. 실행프로그램에 복수의 상이한 동적분석기를 적용하여, 상기 실행프로그램에 의해 호출되는 적어도 하나의 API(Application Programming Interface)의 명칭 정보를 포함하는 복수의 API트레이스정보를 생성하는 생성부; 및
    상기 복수의 API트레이스정보를 비교하여, 호출되는 API가 서로 달라지기 직전에 공통적으로 호출되는 API인 안티리버싱API를 검출하는 검출부
    를 포함하고,
    상기 검출부는
    상기 안티리버싱API 이후에 상기 실행프로그램에 의해 호출되는 적어도 하나의 명령어 정보를 포함하는 복수의 명령어트레이스정보에 기초하여, 상기 호출되는 명령어가 서로 달라지기 직전에 공통적으로 호출되는 명령어인 분기명령어를 검출하여, 안티리버싱 코드를 더 검출하는 것을 특징으로 하는 다중 동적분석기를 이용한 안티리버싱 코드 검출 장치.
  12. 제11항에 있어서,
    상기 안티리버싱API 및 상기 분기명령어 중 적어도 하나에 대응되는 정보로서, 상기 안티리버싱 코드를 우회하는 우회정보를 데이터베이스로부터 검색하는 검색부; 및
    상기 검색된 우회정보를 출력하는 출력부
    를 더 포함하는 것을 특징으로 하는 다중 동적분석기를 이용한 안티리버싱 코드 검출 장치.
  13. 제12항에 있어서,
    상기 우회정보는
    상기 복수의 상이한 동적분석기 중에서 상기 안티리버싱 코드에 의해 영향을 받지 않은 동적분석기를 이용하여 분석된 레지스터 및 메모리 값에 기초하여 결정되는 것을 특징으로 하는 다중 동적분석기를 이용한 안티리버싱 코드 검출 장치.
  14. 제11항에 있어서,
    상기 API트레이스정보는
    상기 적어도 하나의 API 각각에 대하여, API 또는 명령어의 실행 순서 정보인 명령어 카운터, API의 호출순서, API가 로딩되는 주소, API에게 전달되는 인수 및 API가 호출되는 상기 실행프로그램의 주소 중 적어도 하나의 정보를 더 포함하는 것을 특징으로 하는 다중 동적분석기를 이용한 안티리버싱 코드 검출 장치.
  15. 제14항에 있어서,
    상기 검출부는
    상기 복수의 API트레이스정보에 대하여, 동일한 상기 호출순서를 가진 API가 서로 동일한 API인지 판단하고,
    상기 판단결과에 따라, 상기 동일한 호출순서를 가진 API가 서로 달라지기 직전에 호출되는 상기 안티리버싱API를 검출하는 것을 특징으로 하는 다중 동적분석기를 이용한 안티리버싱 코드 검출 장치.
  16. 제15항에 있어서,
    상기 동일한 호출순서를 가진 API가 서로 동일한 API인지 판단할 때,
    상기 동일한 호출순서를 가진 API 각각의 상기 명칭, 상기 전달되는 인수 및 상기 로딩되는 주소 중 적어도 하나에 기초하여 판단하는 것을 특징으로 하는 다중 동적분석기를 이용한 안티리버싱 코드 검출 장치.
  17. 제11항에 있어서,
    상기 명령어트레이스정보는
    상기 적어도 하나의 명령어 각각에 대하여, API 또는 명령어의 실행 순서 정보인 명령어 카운터 및 명령어가 호출되는 주소 중 적어도 하나에 대한 정보를 더 포함하는 것을 특징으로 하는 다중 동적분석기를 이용한 안티리버싱 코드 검출 장치.
  18. 제1항에 있어서,
    상기 명령어트레이스정보는
    상기 안티리버싱API의 실행 순서에 대한 정보인 명령어 카운터를 이용하거나 상기 안티리버싱API가 호출되는 주소에 설정된 브레이크 포인트를 이용하여 생성되는 것을 특징으로 하는 다중 동적분석기를 이용한 안티리버싱 코드 검출 장치.
  19. 제1항에 있어서,
    상기 실행프로그램이 적어도 하나의 API 및 적어도 하나의 명령어를 호출하도록 생성되었을 때,
    상기 생성부는
    상기 실행프로그램에 의해 호출되는 적어도 하나의 API의 명칭 정보만을 이용하여 상기 복수의 API트레이스정보를 생성하는 것을 특징으로 하는 다중 동적분석기를 이용한 안티리버싱 코드 검출 장치.
  20. 제11항에 있어서,
    상기 복수의 상이한 동적분석기는
    분석기법이 상이한 것을 특징으로 하는 다중 동적분석기를 이용한 안티리버싱 코드 검출 장치.
KR1020160054523A 2016-05-03 2016-05-03 안티리버싱 코드 검출 방법 및 그 장치 KR101858594B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160054523A KR101858594B1 (ko) 2016-05-03 2016-05-03 안티리버싱 코드 검출 방법 및 그 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160054523A KR101858594B1 (ko) 2016-05-03 2016-05-03 안티리버싱 코드 검출 방법 및 그 장치

Publications (2)

Publication Number Publication Date
KR20170124752A true KR20170124752A (ko) 2017-11-13
KR101858594B1 KR101858594B1 (ko) 2018-06-28

Family

ID=60386241

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160054523A KR101858594B1 (ko) 2016-05-03 2016-05-03 안티리버싱 코드 검출 방법 및 그 장치

Country Status (1)

Country Link
KR (1) KR101858594B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200144033A (ko) * 2019-06-17 2020-12-28 숭실대학교산학협력단 분석회피기법 우회 장치, 방법 및 이를 수행하기 위한 프로그램을 기록한 기록매체
US11403371B2 (en) 2019-08-21 2022-08-02 Foundation Of Soongsil University-Industry Cooperation Device and method for bypassing analysis evasion technique, and recording medium for a program for performing the same

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100095281A1 (en) * 2008-10-14 2010-04-15 Riverside Research Institute Internal Function Debugger

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100095281A1 (en) * 2008-10-14 2010-04-15 Riverside Research Institute Internal Function Debugger

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
박진우, 실행 흐름의 비교를 통한 안티 디버깅 루틴 자동 탐지 기법 , 한양대학교 대학원 석사학위 논문, 2015.2.* *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200144033A (ko) * 2019-06-17 2020-12-28 숭실대학교산학협력단 분석회피기법 우회 장치, 방법 및 이를 수행하기 위한 프로그램을 기록한 기록매체
US11403371B2 (en) 2019-08-21 2022-08-02 Foundation Of Soongsil University-Industry Cooperation Device and method for bypassing analysis evasion technique, and recording medium for a program for performing the same

Also Published As

Publication number Publication date
KR101858594B1 (ko) 2018-06-28

Similar Documents

Publication Publication Date Title
US8769553B2 (en) Deploy anywhere framework for heterogeneous mobile application development
US8769504B2 (en) Method and apparatus for dynamically instrumenting a program
CN110363004B (zh) 一种代码漏洞检测方法、装置、介质及设备
US9442829B2 (en) Detecting error states when interacting with web applications
US20140298297A1 (en) Automatic feature-driven testing and quality checking of applications
US20150143342A1 (en) Functional validation of software
US9037994B2 (en) Navigation to a data definition in a diff context
KR101858594B1 (ko) 안티리버싱 코드 검출 방법 및 그 장치
CN111124870A (zh) 一种接口测试方法及装置
CN111949513A (zh) 一种配置文件加载方法、装置、电子设备和可读存储装置
US11474795B2 (en) Static enforcement of provable assertions at compile
CN109284222B (zh) 软件单元、数据处理系统中的项目测试方法、装置及设备
US20230367516A1 (en) Program Detection Method and Apparatus
CN111338831B (zh) 一种多线程运行性能的处理方法、装置、介质和电子设备
US8762953B2 (en) Exception-based error handling in an array-based language
US20170286072A1 (en) Custom class library generation method and apparatus
CN112506806B (zh) 用于调试程序的方法、电子设备及存储介质
US8843896B2 (en) Metamodeling contextual navigation of computer software applications
JP6723483B2 (ja) テストケース生成装置、テストケース生成方法およびテストケース生成プログラム
CN112286803A (zh) 一种测试用例的检测方法及装置
CN112817663B (zh) 一种应用程序的seccomp规则获取方法和装置
CN113703728B (zh) 一种辅助研发的微组件业务处理方法、装置以及设备
KR102421394B1 (ko) 하드웨어와 소프트웨어 기반 트레이싱을 이용한 악성코드 탐지 장치 및 방법
CN114490366A (zh) Flutter内存泄漏的检测方法及装置
CN116136800A (zh) 一种操作系统死锁静态检测方法及相关设备

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
AMND Amendment
X701 Decision to grant (after re-examination)