[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR20200046363A - Apparatus and method for performing symbolic execution - Google Patents

Apparatus and method for performing symbolic execution Download PDF

Info

Publication number
KR20200046363A
KR20200046363A KR1020180127410A KR20180127410A KR20200046363A KR 20200046363 A KR20200046363 A KR 20200046363A KR 1020180127410 A KR1020180127410 A KR 1020180127410A KR 20180127410 A KR20180127410 A KR 20180127410A KR 20200046363 A KR20200046363 A KR 20200046363A
Authority
KR
South Korea
Prior art keywords
address
path
symbol execution
execution
entry point
Prior art date
Application number
KR1020180127410A
Other languages
Korean (ko)
Other versions
KR102156845B1 (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 KR1020180127410A priority Critical patent/KR102156845B1/en
Publication of KR20200046363A publication Critical patent/KR20200046363A/en
Application granted granted Critical
Publication of KR102156845B1 publication Critical patent/KR102156845B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

According to one embodiment, provided is an apparatus for performing symbol execution which comprises: an information acquisition unit acquiring an address of a function related to a process; a path search unit acquiring an address for a function to be analyzed from the information acquisition unit and searching for a path from an entry point of the process to the acquired address; and a symbol execution unit performing symbol execution on the searched path. Accordingly, fast, accurate and efficient symbol execution with less time can be performed.

Description

기호 실행 수행 장치 및 방법{APPARATUS AND METHOD FOR PERFORMING SYMBOLIC EXECUTION}Device and method for performing symbol execution {APPARATUS AND METHOD FOR PERFORMING SYMBOLIC EXECUTION}

본 발명은 기호 실행 수행 장치 및 방법에 관한 것이다.The present invention relates to an apparatus and method for performing symbol execution.

소프트웨어의 실행 경로 분석은 소프트웨어의 논리 또는 데이터에 기반하여 컴퓨터가 작업을 처리할 때 취하는 경로나 과정을 분석하는 것을 의미한다. 종래의 소프트웨어 실행 경로 확장 방법은, 1) 확장 대상 소프트웨어의 소스 코드로부터 실행 경로가 확장될 가능성이 있는 테스트 케이스를 다량으로 생성하는 방식으로 실행 경로 확장을 시도하거나, 소스코드가 획득될 수 없는 경우에는 단순히 임의의 값을 가진 테스트 케이스를 다량으로 생성하는 방식으로 실행 경로 확장을 시도하였다. 종래의 방법은 소프트웨어가 실제 실행되며 형성하는 동적 정보, 즉 프로그램 컨텍스트를 참조하지 않기 때문에 실행 경로 확장에 대한 한계를 갖는다.Analyzing the execution path of software means analyzing a path or process that a computer takes when processing a task based on logic or data of software. Conventional software execution path extension methods include: 1) attempting to expand the execution path by generating a large number of test cases in which the execution path is likely to be expanded from the source code of the extension target software, or when the source code cannot be obtained Attempt to expand the execution path by simply generating a large number of test cases with random values. Conventional methods have limitations on the execution path extension because the software actually executes and does not refer to the dynamic information that forms, ie the program context.

한편, 소프트웨어와 같은 프로그램 테스팅 분야에서 기호 실행이 사용되고 있다. 기호 실행을 통해, 프로그램 실행 중 특정 메모리 영역으로 분기가 진행될 수 있는지 검사가 가능하다. 아울러, 사용자 입력에 따라 프로그램이 다르게 실행되는 경우, 특정 사용자 입력에 따라 목표한 메모리 영역에 도달 가능한지가 검사될 수 있다. 이러한 프로그램 테스팅에 의해 프로그램에 대한 취약점 탐색이 가능하다.Meanwhile, symbol execution is used in the field of program testing such as software. Through symbol execution, it is possible to check whether a branch can proceed to a specific memory area during program execution. In addition, when a program is executed differently according to a user input, it may be checked whether a target memory area is reachable according to a specific user input. Through this program testing, it is possible to search for vulnerabilities in the program.

한국등록특허공보, 제10-1530132 호 (2015.06.12. 등록)Korean Registered Patent Publication, No. 10-1530132 (Registered on June 12, 2015)

기호 실행에 있어 종래에는 대부분의 과정이 수동으로 진행되어 왔다. 그러나 수동으로 실행되는 기호 실행은 규모가 큰 코드에는 적용하기 어렵다. 특히 프로그램 또는 프로세스의 실행 과정에서 특정한 메모리 영역에 도달 가능한지를 검사하는 과정을 살펴보면, 함수가 분기될 때마다 수집되는 제약 조건들이 두 배씩 증가하게 된다. 이로써 path-explosion과 같이 탐색 범위를 과도하게 확장시키는 문제점이 야기될 수 있다.Conventionally, most processes have been manually performed in symbol execution. However, manual symbolic execution is difficult to apply to large code. In particular, looking at the process of checking whether a particular memory area is reachable during the execution of a program or a process, the constraints collected every time a function branches are doubled. This may cause a problem of excessively expanding the search range, such as path-explosion.

이에 본 발명의 해결하고자 하는 과제는 path-explosion과 같은 문제점 없이, 탐색 범위를 확장시키지 않고 효율적이면서도 신속하게 수행 가능한 기호 실행에 관한 기술을 제공하는 것이다.Accordingly, the problem to be solved by the present invention is to provide a technique for efficiently and quickly performing symbol execution without expanding a search range without problems such as path-explosion.

다만, 본 발명의 해결하고자 하는 과제는 이상에서 언급한 것으로 제한되지 않으며, 언급되지 않은 또 다른 해결하고자 하는 과제는 아래의 기재로부터 본 발명이 속하는 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.However, the problem to be solved of the present invention is not limited to those mentioned above, and another problem not to be solved can be clearly understood by a person having ordinary knowledge to which the present invention belongs from the following description. will be.

일 실시예에 따른 기호 실행 수행 장치는 프로세스와 관련된 함수의 주소를 획득하는 정보 획득부와, 상기 프로세스의 진입점(entry point)으로부터 상기 획득된 주소에 이르는 경로를 탐색하는 경로 탐색부와, 상기 탐색된 경로에 대해 기호 실행을 수행하는 기호 실행부를 포함한다.The apparatus for performing symbol execution according to an embodiment includes an information acquisition unit that acquires an address of a function related to a process, a path search unit that searches a path from an entry point of the process to the obtained address, and And a symbol execution unit that performs symbol execution on the searched path.

또한, 상기 정보 획득부는 임포트 주소 테이블(import address table)로부터 상기 주소를 획득할 수 있다.Also, the information acquisition unit may obtain the address from an import address table.

또한, 상기 획득된 주소는 .idata 영역의 주소일 수 있다.Also, the obtained address may be an address of the .idata area.

또한, 상기 정보 획득부는 상기 프로세스와 관련된 어셈블리, DLL 및 라이브러리 중 적어도 하나에 대한 주소를 획득하고, 상기 경로 탐색부는 상기 프로세스의 진입점으로부터 상기 어셈블리, DLL 및 라이브러리 중 적어도 하나에 대해 획득된 주소에 이르는 경로를 탐색할 수 있다In addition, the information acquisition unit obtains an address for at least one of the assembly, DLL, and library associated with the process, and the path search unit receives an address obtained for at least one of the assembly, DLL, and library from the entry point of the process. Can navigate to the path

일 실시예에 따른 기호 실행 수행 방법은 기호 실행 수행 장치에 의해 수행되며, 프로세스와 관련된 함수의 주소를 획득하는 단계와, 상기 프로세스의 진입점(entry point)으로부터 상기 획득된 주소에 이르는 경로를 탐색하는 단계와, 상기 탐색된 경로에 대해 기호 실행을 수행하는 단계를 포함한다.The method for performing symbol execution according to an embodiment is performed by a symbol execution performing apparatus, obtaining an address of a function related to a process, and searching a path from an entry point of the process to the obtained address And performing symbol execution on the searched path.

또한, 상기 획득하는 단계는 임포트 주소 테이블(import address table)로부터 상기 주소를 획득할 수 있다.Also, the acquiring step may acquire the address from an import address table.

또한, 상기 획득된 주소는 .idata 영역의 주소일 수 있다.Also, the obtained address may be an address of the .idata area.

또한, 상기 획득하는 단계는 상기 프로세스와 관련된 어셈블리, DLL 및 라이브러리 중 적어도 하나에 대한 주소를 획득하고, 상기 탐색하는 단계는 상기 프로세스의 진입점으로부터 상기 어셈블리, DLL 및 라이브러리 중 적어도 하나에 대해 획득된 주소에 이르는 경로를 탐색할 수 있다.In addition, the acquiring step obtains an address for at least one of the assembly, DLL, and library associated with the process, and the searching step is obtained for at least one of the assembly, DLL, and library from the entry point of the process. You can navigate the route to the address.

즉, 일 실시예에 따르면 프로세스가 갖는 모든 경로, 즉 모든 분기에 대해 기호 실행이 수행되지 않고 경로 탐색부에 의해 탐색된 경로에 대해서만 기호 실행이 수행될 수 있다. 따라서 적은 시간으로 빠르면서도 정확하고 효율적인 기호 실행이 가능해진다.That is, according to an embodiment, symbol execution may not be performed on all paths of the process, that is, all branches, but symbol execution may be performed only on paths searched by the path search unit. This enables fast, accurate and efficient symbol execution in a short time.

도 1은 일 실시예에 따른 기호 실행 수행 장치의 구성을 예시적으로 도시하고 있다.
도 2는 도 1에 도시된 경로 탐색부가 탐색한 경로를 예시적으로 도시하고 있다.
도 3은 일 실시예에 따른 기호 실행 수행 방법의 절차를 도시하고 있다.
1 exemplarily shows a configuration of an apparatus for performing symbol execution according to an embodiment.
FIG. 2 exemplarily shows a path searched by the path search unit illustrated in FIG. 1.
3 illustrates a procedure of a method for performing symbol execution according to an embodiment.

본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.Advantages and features of the present invention, and methods for achieving them will be clarified with reference to embodiments described below in detail together with the accompanying drawings. However, the present invention is not limited to the embodiments disclosed below, but may be implemented in various different forms, and only the embodiments allow the disclosure of the present invention to be complete, and common knowledge in the art to which the present invention pertains It is provided to completely inform the person having the scope of the invention, and the present invention is only defined by the scope of the claims.

본 발명의 실시예들을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명의 실시예에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.In describing embodiments of the present invention, when it is determined that a detailed description of known functions or configurations may unnecessarily obscure the subject matter of the present invention, the detailed description will be omitted. In addition, terms to be described later are terms defined in consideration of functions in an embodiment of the present invention, which may vary according to a user's or operator's intention or practice. Therefore, the definition should be made based on the contents throughout this specification.

도 1은 일 실시예에 따른 기호 실행 수행 장치의 구성을 예시적으로 도시하고 있다.1 exemplarily shows a configuration of an apparatus for performing symbol execution according to an embodiment.

도 1을 참조하면, 기호 실행 수행 장치(100)는 정보 획득부(110), 경로 탐색부(120) 및 기호 실행부(130)를 포함하며, 다만 기호 실행 수행 장치(100)의 구성이 도 1에 도시된 것으로 한정 해석되는 것은 아니다.Referring to FIG. 1, the apparatus 100 for performing symbol execution includes an information acquisition unit 110, a path search unit 120, and a symbol execution unit 130, but the configuration of the apparatus 100 for performing symbol execution is illustrated. What is shown in 1 is not to be construed as limited.

먼저, 정보 획득부(110), 경로 탐색부(120) 및 기호 실행부(130) 각각은 이하에서 설명할 기능을 수행하도록 프로그램된 명령어를 저장하는 메모리 및 이러한 명령어를 실행하는 마이크로프로세서에 의해 구현 가능하다.First, each of the information acquisition unit 110, the path search unit 120, and the symbol execution unit 130 is implemented by a memory storing instructions programmed to perform a function described below and a microprocessor executing these instructions. It is possible.

이 중 정보 획득부(110)에 대해 먼저 살펴보기로 한다. 정보 획득부(110)는 기호 실행에 필요한 정적 분석 정보를 획득한다. 예컨대 정보 획득부(110)는 정적 분석 정보로서 임포트 주소 테이블(import address table) 내의 함수의 주소, 어셈블리, DLL 및 라이브러리 중 적어도 하나를 획득한다. 여기서 함수는 API(application programming interface)일 수 있다. 아울러, 함수의 주소는 API의 .idata 영역의 주소를 가리키는 것일 수 있다.Among them, the information acquisition unit 110 will be described first. The information acquisition unit 110 acquires static analysis information necessary for symbol execution. For example, the information acquisition unit 110 obtains at least one of a function address, an assembly, a DLL, and a library of a function in an import address table as static analysis information. Here, the function may be an application programming interface (API). In addition, the address of the function may indicate the address of the .idata area of the API.

한편, 정보 획득부(110)는 정적 분석 정보 뿐만 아니라 실시예에 따라 동적 분석 정보를 획득할 수도 있다.Meanwhile, the information acquisition unit 110 may acquire dynamic analysis information according to an embodiment as well as static analysis information.

정보 획득부(110)가 획득한 정적 분석 정보는 기호 실행의 탐색 범위를 줄이는데 사용된다. 구체적으로 살펴보면, 분석 대상인 프로세스의 모든 분기에 대해 기호 실행을 할 경우 path-explosion과 같은 문제가 발생할 수 있다. 왜냐하면 프로세스의 각 분기가 수행될 때마다 수집되는 제약 조건들이 두 배씩 증가하기 때문이다. The static analysis information acquired by the information acquisition unit 110 is used to reduce the search range of symbol execution. Specifically, if symbolic execution is performed on all branches of the process under analysis, problems such as path-explosion may occur. This is because the constraints collected each time a branch of the process is performed are doubled.

그러나 일 실시예에서는 정보 획득부(110)가 획득한 정적 분석 정보를 기준으로 기호 실행의 탐색 범위가 한정된다. 예컨대 WS2_32.dll 내의 recv API 또는 send API가 대상인 경우 이러한 각 API가 갖는 .idata 영역의 주소가 정보 획득부(110)에 의해 획득될 수 있고, 후술하겠지만 경로 탐색 및 기호 실행은 이렇게 획득된 .idata 영역의 주소에 한정해서 수행될 수 있다.However, in one embodiment, the search range of symbol execution is limited based on the static analysis information acquired by the information acquisition unit 110. For example, when the recv API or send API in WS2_32.dll is a target, the address of the .idata area of each of these APIs can be obtained by the information acquisition unit 110, as will be described later, path search and symbol execution are thus obtained .idata It can be limited to the address of the region.

경로 탐색부(120)는 프로세스의 진입점(entry point)로부터 정보 획득부(110)에 의해 획득된 주소에 이르는 경로를 탐색한다. 이러한 경로 탐색부(120)는 예컨대 path-finder와 같은 것일 수 있으나 이에 한정되는 것은 아니다.The route search unit 120 searches for a route from an entry point of the process to an address obtained by the information acquisition unit 110. The route search unit 120 may be, for example, a path-finder, but is not limited thereto.

이하에서는 경로 탐색부(120)에 대해 보다 구체적으로 살펴보기로 한다. Hereinafter, the route search unit 120 will be described in more detail.

프로세스의 진입점으로부터 소정의 메모리 영역의 주소에 이르는 경로는 적어도 한 개이거나 또는 경우에 따라서는 없을 수 있다. 경로 탐색부(120)는 전술한 경로가 몇 개 존재하는지, 존재한다면 각 경로는 어떠한 것인지 등을 탐색한다. There may or may not be at least one path from the entry point of the process to the address of a given memory area. The route search unit 120 searches how many routes are described above, and if so, what each route is.

아울러, 만약 함수가 복수 개로 분기되는데 그 중 일부를 통해서는 소정의 메모리 영역의 주소에 이를 수 없다면, 경로 탐색부(120)는 이러한 일부에 대한 경로는 탐색에서 제외시킨다. 즉, 경로 탐색부(120)에 의하면 프로세스의 진입점으로부터 소정의 메모리 영역의 주소에 이를 수 없는 경로는 제외된다. 따라서 함수가 분기됨에 따라 기호 실행 과정에서 수집되는 제약조건이 두 배씩 증가한다고 하더라도, 기호 실행은 이렇게 제외된 경로에 대해서는 수행되지 않게 되는 효과가 있다. 이로써 기호 실행의 범위가 불필요하게 확장되는 것이 방지될 수 있다.In addition, if a function is branched into a plurality, and some of them cannot reach the address of a predetermined memory area, the path search unit 120 excludes the path for the portion from the search. That is, according to the path search unit 120, paths that cannot reach the address of the predetermined memory area from the entry point of the process are excluded. Therefore, even if the constraints collected during the symbol execution process are doubled as the function is branched, the symbol execution has an effect of not being performed on the excluded path. This can prevent the range of symbol execution from being unnecessarily expanded.

도 2는 경로 탐색부(120)에 의해 탐색된 복수 개의 경로를 텍스트의 형태로 예시적으로 도시하고 있다. 2 exemplarily shows a plurality of paths searched by the path search unit 120 in the form of text.

도 2를 참조하면, 프로세스의 진입점으로부터 sub_410B98의 주소에 이르는 경로는 존재하지 않는다. 마찬가지로 프로세스의 진입점으로부터 sub_4113BB 및 sub_411443의 각 주소에 이르는 경로 또한 존재하지 않는다. 즉, 경로 탐색부(120)는 프로세스의 진입점으로부터 소정의 메모리 영역의 주소에 이르는 경로가 존재하지 않는다는 정보를 획득할 수 있다.Referring to FIG. 2, there is no path from the entry point of the process to the address of sub_410B98. Likewise, there is also no route from the entry point of the process to each address of sub_4113BB and sub_411443. That is, the route search unit 120 may obtain information that there is no route from the entry point of the process to the address of a predetermined memory area.

반면, 도 2를 참조하면, 프로세스의 진입점으로부터 sub_423F47의 주소에 이르는 경로는 5개가 존재한다. 경로 탐색부(120)는 해당 경로가 어떠한 것인지에 대한 세부 정보까지도 도 2에 도시된 것과 같이 제공한다. 또한, 도 2를 참조하면 프로세스의 진입점으로부터 sub_424041의 주소에 이르는 경로 또한 2개가 존재한다. On the other hand, referring to Figure 2, there are five paths from the entry point of the process to the address of sub_423F47. The route search unit 120 provides even detailed information about what the corresponding route is as shown in FIG. 2. In addition, referring to FIG. 2, there are also two paths from the entry point of the process to the address of sub_424041.

즉, 경로 탐색부(120)는 프로세스의 진입점으로부터 소정의 메모리 영역의 주소에 이르는 경로의 개수 및 경로의 세부 정보에 대해서 제공할 수 있다.That is, the route search unit 120 may provide the number of routes and detailed information of the route from the entry point of the process to the address of a predetermined memory area.

다시 도 1을 참조하기로 한다.1 will be referred to again.

기호 실행부(130)는 경로 탐색부(120)에 의해 탐색된 경로에 대해 기호 실행을 수행한다. 만약 경로 탐색부(120)에 의해 탐색된 경로가 복수 개이면, 기호 실행부(130)는 복수 개의 경로 각각에 대해 기호 실행을 수행할 수 있다.The symbol execution unit 130 performs symbol execution on the path searched by the path search unit 120. If there are multiple paths searched by the path search unit 120, the symbol execution unit 130 may perform symbol execution for each of the plurality of paths.

여기서 기호 실행이란 프로세스의 실행 중에 등장하는 변수들을 기호화하여 실행하는 방법을 지칭한다. 이러한 기호 실행에서는, 역공학 진행 과정에서 기호화된 제약 조건들이 수집된다. 수집된 제약 조건들은, 기호화된 변수들이 소정의 메모리 영역의 주소에 도달하기 위해 어떠한 값을 가져야 하는지에 영향을 끼친다.Here, symbolic execution refers to a method of symbolically executing variables that appear during execution of a process. In this symbolic implementation, symbolic constraints are collected during the reverse engineering process. The collected constraints affect what values the symbolic variables should have to reach the address of a given memory area.

일 실시예에서 기호 실행부(130)는 프로세스가 갖는 모든 경로, 즉 함수의 모든 분기에 대해 기호 실행을 수행하지 않는다. 기호 실행부(130)는 경로 탐색부(120)에 의해 탐색된 경로에 대해서만 기호 실행을 수행한다. 경로 탐색부(120)에 의해 탐색된 경로란, 프로세스의 진입점으로부터 소정의 메모리 영역의 주소에 이르는 경로임은 전술한 바와 같다.In one embodiment, the symbol execution unit 130 does not perform symbol execution on all paths of the process, that is, all branches of the function. The symbol execution unit 130 performs symbol execution only on the path searched by the path search unit 120. As described above, the path searched by the path search unit 120 is a path from an entry point of a process to an address of a predetermined memory area.

즉, 일 실시예에 따르면 프로세스가 갖는 모든 경로, 즉 모든 분기에 대해 기호 실행이 수행되지 않고 경로 탐색부에 의해 탐색된 경로에 대해서만 기호 실행이 수행될 수 있다. 따라서 적은 시간으로 빠르면서도 정확하고 효율적인 기호 실행이 가능해진다.That is, according to an embodiment, symbol execution may not be performed on all paths of the process, that is, all branches, but symbol execution may be performed only on paths searched by the path search unit. This enables fast, accurate and efficient symbol execution in a short time.

도 3은 일 실시예에 따른 기호 실행 수행 방법의 절차를 도시하고 있다. 이러한 기호 실행 수행 방법은 도 1에 도시된 기호 실행 수행 장치(100)에 의해 수행 가능하다. 다만, 도 3에 도시된 방법의 절차는 예시적인 것에 불과한 바, 기호 실행 수행 방법의 절차가 도 3에 도시된 것으로 한정 해석되는 것은 아니다.3 illustrates a procedure of a method for performing symbol execution according to an embodiment. The method for performing symbol execution may be performed by the symbol execution apparatus 100 illustrated in FIG. 1. However, the procedure of the method illustrated in FIG. 3 is merely exemplary, and the procedure of the method for performing symbol execution is not limited to that illustrated in FIG. 3.

도 3을 도 1과 함께 참조하면 기호 실행의 대상인 프로세스가 선정된다(S100).Referring to FIG. 3 together with FIG. 1, a process that is a target of symbol execution is selected (S100).

다음으로 정보 획득부(110)는 정적 분석 정보를 획득한다(S110). 정적 분석 정보는 단계 S100에서 선정된 프로세스와 관련된 것일 수 있다. 정적 분석 정보는 임포트 주소 테이블(import address table) 내의 함수의 주소, 어셈블리, DLL 및 라이브러리 중 적어도 하나를 포함할 수 있다. 이 때 함수는 API(application programming interface)일 수 있다. 아울러, 함수의 주소는 API의 .idata 영역의 주소를 가리키는 것일 수 있다.Next, the information acquisition unit 110 acquires static analysis information (S110). The static analysis information may be related to the process selected in step S100. The static analysis information may include at least one of a function address, an assembly, a DLL, and a library in an import address table. In this case, the function may be an application programming interface (API). In addition, the address of the function may indicate the address of the .idata area of the API.

단계 S110에서 획득된 정적 분석 정보는 기호 실행의 탐색 범위를 줄이는데 사용된다. 구체적으로 살펴보면, 분석 대상인 프로세스의 모든 분기에 대해 기호 실행을 할 경우 path-explosion과 같은 문제가 발생할 수 있다. 왜냐하면 프로세스의 각 분기가 수행될 때마다 수집되는 제약 조건들이 두 배씩 증가하기 때문이다.The static analysis information obtained in step S110 is used to reduce the search range of symbol execution. Specifically, if symbolic execution is performed on all branches of the process under analysis, problems such as path-explosion may occur. This is because the constraints collected each time a branch of the process is performed are doubled.

그러나 일 실시예에서는 단계 S110에서 획득된 정적 분석 정보를 기준으로 기호 실행의 탐색 범위가 한정된다. 예컨대 WS2_32.dll 내의 recv API 또는 send API가 대상인 경우 이러한 각 API가 갖는 .idata 영역의 주소가 단계 S110에서 획득될 수 있고, 후술하겠지만 경로 탐색 및 기호 실행은 이렇게 획득된 .idata 영역의 주소에 한정해서 수행될 수 있다.However, in one embodiment, the search range of symbol execution is limited based on the static analysis information obtained in step S110. For example, if the recv API or send API in WS2_32.dll is the target, the address of each .idata area of each of these APIs can be obtained in step S110, and as will be described later, path search and symbol execution are limited to the address of the obtained .idata area. Can be done.

다음으로 정보 획득부(110)는 목적 API를 선정한다(S120). 목적 API는 예컨대 WS2_32.dll 내의 recv API 또는 send API일 수 있으나 이에 한정되는 것은 아니다. 여기서 목적 API란 분석 대상인 함수를 가리키는 것일 수 있다. Next, the information acquisition unit 110 selects the target API (S120). The target API may be, for example, a recv API or send API in WS2_32.dll, but is not limited thereto. Here, the target API may refer to a function to be analyzed.

다음으로 경로 탐색부(120)는, 단계 S100에서 선정된 프로세스의 진입점(entry point)로부터 단계 S120에서 선정된 목적 API의 주소에 이르는 경로를 탐색한다(S130). 이러한 경로 탐색부(120)는 예컨대 path-finder와 같은 것일 수 있으나 이에 한정되는 것은 아니다.Next, the route search unit 120 searches for a route from the entry point of the process selected in step S100 to the address of the target API selected in step S120 (S130). The route search unit 120 may be, for example, a path-finder, but is not limited thereto.

이하에서는 단계 S130에 대해 보다 구체적으로 살펴보기로 한다. Hereinafter, step S130 will be described in more detail.

프로세스의 진입점으로부터 소정의 메모리 영역의 주소에 이르는 경로는 적어도 한 개이거나 또는 경우에 따라서는 없을 수 있다. 단계 S130에서 경로 탐색부(120)는 전술한 경로가 몇 개 존재하는지, 존재한다면 각 경로는 어떠한 것인지 등을 탐색한다. There may or may not be at least one path from the entry point of the process to the address of a given memory area. In step S130, the route search unit 120 searches for the number of routes described above, and if so, what each route is.

아울러, 만약 함수가 복수 개로 분기되는데 그 중 일부를 통해서는 소정의 메모리 영역의 주소에 이를 수 없다면, 단계 S130에서 이러한 일부에 대한 경로는 탐색에서 제외된다. 따라서 함수가 분기됨에 따라 기호 실행 과정에서 수집되는 제약조건이 두 배씩 증가한다고 하더라도, 기호 실행은 이렇게 제외된 경로에 대해서는 수행되지 않게 되는 효과가 있다. 이로써 기호 실행의 범위가 불필요하게 확장되는 것이 방지될 수 있다.In addition, if a function is branched into a plurality of parts, and some of them cannot reach an address of a predetermined memory area, in step S130, paths to these parts are excluded from the search. Therefore, even if the constraints collected during the symbol execution process are doubled as the function is branched, the symbol execution has an effect of not being performed on the excluded path. This can prevent the range of symbol execution from being unnecessarily expanded.

다음으로, 기호 실행부(130)는 경로 탐색부(120)에 의해 탐색된 경로에 대해 기호 실행을 수행한다(S140). 만약 경로 탐색부(120)에 의해 탐색된 경로가 복수 개이면, 단계 S140에서 기호 실행부(130)는 복수 개의 경로 각각에 대해 기호 실행을 수행할 수 있다.Next, the symbol execution unit 130 performs symbol execution on the path searched by the path search unit 120 (S140). If there are multiple paths searched by the path search unit 120, in step S140, the symbol execution unit 130 may perform symbol execution for each of the plurality of paths.

여기서 기호 실행이란 프로세스의 실행 중에 등장하는 변수들을 기호화하여 실행하는 방법을 지칭한다. 이러한 기호 실행에서는, 역공학 진행 과정에서 기호화된 제약 조건들이 수집된다. 수집된 제약 조건들은, 기호화된 변수들이 소정의 메모리 영역의 주소에 도달하기 위해 어떠한 값을 가져야 하는지에 영향을 끼친다.Here, symbolic execution refers to a method of symbolically executing variables that appear during execution of a process. In this symbolic implementation, symbolic constraints are collected during the reverse engineering process. The collected constraints affect what values the symbolic variables should have to reach the address of a given memory area.

일 실시예에서 기호 실행부(130)는 단계 S140에서 프로세스가 갖는 모든 경로, 즉 함수의 모든 분기에 대해 기호 실행을 수행하지 않는다. 단계 S140에서 기호 실행부(130)는 경로 탐색부(120)에 의해 탐색된 경로에 대해서만 기호 실행을 수행한다. 경로 탐색부(120)에 의해 탐색된 경로란, 프로세스의 진입점으로부터 소정의 메모리 영역의 주소에 이르는 경로임은 전술한 바와 같다.In one embodiment, the symbol execution unit 130 does not perform symbol execution on all paths of the process in step S140, that is, all branches of the function. In step S140, the symbol execution unit 130 performs symbol execution only on the path searched by the path search unit 120. As described above, the path searched by the path search unit 120 is a path from an entry point of a process to an address of a predetermined memory area.

즉, 일 실시예에 따르면 프로세스가 갖는 모든 경로, 즉 모든 분기에 대해 기호 실행이 수행되지 않고 경로 탐색부에 의해 탐색된 경로에 대해서만 기호 실행이 수행될 수 있다. 따라서 적은 시간으로 빠르면서도 정확하고 효율적인 기호 실행이 가능해진다.That is, according to an embodiment, symbol execution may not be performed on all paths of the process, that is, all branches, but symbol execution may be performed only on paths searched by the path search unit. This enables fast, accurate and efficient symbol execution in a short time.

한편, 일 실시예에 따른 기호 실행 수행 방법은 이러한 방법에 포함된 각 단계를 포함하여 수행하도록 프로그램된 컴퓨터 프로그램을 저장하는 컴퓨터 판독가능한 기록매체의 형태로 구현되거나 또는 이러한 방법에 포함된 각 단계를 포함하여 수행하도록 프로그램된 컴퓨터 판독가능한 기록매체에 저장된 컴퓨터 프로그램에서 구현될 수 있다.On the other hand, the method for performing symbol execution according to an embodiment is implemented in the form of a computer readable recording medium storing a computer program programmed to perform, including each step included in the method, or for each step included in the method. It may be embodied in a computer program stored on a computer readable recording medium programmed to perform including.

예컨대 컴퓨터 프로그램은 프로세스와 관련된 함수의 주소를 획득하는 단계와, 상기 프로세스의 진입점(entry point)으로부터 상기 획득된 주소에 이르는 경로를 탐색하는 단계와, 상기 탐색된 경로에 대해 기호 실행을 수행하는 단계를 포함하여서 수행하도록 프로그램된 것일 수 있고, 컴퓨터 판독가능한 기록매체는 이러한 컴퓨터 프로그램을 저장할 수 있다.For example, a computer program may include obtaining an address of a function related to a process, searching a path from an entry point of the process to the obtained address, and performing symbolic execution on the searched path It may be programmed to perform including steps, and a computer-readable recording medium may store such a computer program.

이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 품질에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 균등한 범위 내에 있는 모든 기술사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.The above description is merely illustrative of the technical idea of the present invention, and those of ordinary skill in the art to which the present invention pertains may make various modifications and variations without departing from the essential quality of the present invention. Therefore, the embodiments disclosed in the present invention are not intended to limit the technical spirit of the present invention, but to explain, and the scope of the technical spirit of the present invention is not limited by these embodiments. The scope of protection of the present invention should be interpreted by the following claims, and all technical ideas within the scope equivalent thereto should be interpreted as being included in the scope of the present invention.

100 : 기호 실행 분석 장치100: symbol execution analysis device

Claims (10)

프로세스와 관련된 함수의 주소를 획득하는 정보 획득부와,
상기 프로세스의 진입점(entry point)으로부터 상기 획득된 주소에 이르는 경로를 탐색하는 경로 탐색부와,
상기 탐색된 경로에 대해 기호 실행을 수행하는 기호 실행부를 포함하는
기호 실행 수행 장치.
An information acquisition unit that acquires an address of a function related to the process,
A path search unit for searching a path from an entry point of the process to the obtained address;
And a symbol execution unit performing symbol execution on the searched path.
Symbolic execution device.
제 1 항에 있어서,
상기 정보 획득부는,
임포트 주소 테이블(import address table)로부터 상기 주소를 획득하는
기호 실행 수행 장치.
According to claim 1,
The information acquisition unit,
Obtaining the address from the import address table
Symbolic execution device.
제 2 항에 있어서,
상기 획득된 주소는,
.idata 영역의 주소인
기호 실행 수행 장치.
According to claim 2,
The obtained address,
the address of the .idata area
Symbolic execution device.
제 1 항에 있어서,
상기 정보 획득부는,
상기 프로세스와 관련된 어셈블리, DLL 및 라이브러리 중 적어도 하나에 대한 주소를 획득하고,
상기 경로 탐색부는,
상기 프로세스의 진입점으로부터 상기 어셈블리, DLL 및 라이브러리 중 적어도 하나에 대해 획득된 주소에 이르는 경로를 탐색하는
기호 실행 수행 장치.
According to claim 1,
The information acquisition unit,
Obtain an address for at least one of the assembly, DLL and library associated with the process,
The route search unit,
Searching the path from the entry point of the process to the address obtained for at least one of the assembly, DLL and library
Symbolic execution device.
기호 실행 수행 장치에 의해 수행되는 기호 실행 수행 방법으로서,
프로세스와 관련된 함수의 주소를 획득하는 단계와,
상기 프로세스의 진입점(entry point)으로부터 상기 획득된 주소에 이르는 경로를 탐색하는 단계와,
상기 탐색된 경로에 대해 기호 실행을 수행하는 단계를 포함하는
기호 실행 수행 방법.
A method for performing symbol execution performed by an apparatus for performing symbol execution,
Obtaining the address of the function associated with the process,
Searching a path from an entry point of the process to the obtained address;
And performing symbol execution on the searched path.
How to perform symbolic execution.
제 5 항에 있어서,
상기 획득하는 단계는,
임포트 주소 테이블(import address table)로부터 상기 주소를 획득하는
기호 실행 수행 방법.
The method of claim 5,
The obtaining step,
Obtaining the address from the import address table
How to perform symbolic execution.
제 6 항에 있어서,
상기 획득된 주소는,
.idata 영역의 주소인
기호 실행 수행 방법.
The method of claim 6,
The obtained address,
the address of the .idata area
How to perform symbolic execution.
제 5 항에 있어서,
상기 획득하는 단계는,
상기 프로세스와 관련된 어셈블리, DLL 및 라이브러리 중 적어도 하나에 대한 주소를 획득하고,
상기 탐색하는 단계는,
상기 프로세스의 진입점으로부터 상기 어셈블리, DLL 및 라이브러리 중 적어도 하나에 대해 획득된 주소에 이르는 경로를 탐색하는
기호 실행 수행 방법.
The method of claim 5,
The obtaining step,
Obtain an address for at least one of the assembly, DLL and library associated with the process,
The searching step,
Searching the path from the entry point of the process to the address obtained for at least one of the assembly, DLL and library
How to perform symbolic execution.
제 5 항에 따른 방법에 포함된 각 단계를 수행하도록 프로그램된
컴퓨터 프로그램을 저장하는 컴퓨터 판독가능한 기록매체.
Programmed to perform each step included in the method according to claim 5
A computer readable recording medium storing a computer program.
제 5 항에 따른 방법에 포함된 각 단계를 수행하도록 프로그램된
컴퓨터 판독가능한 기록매체에 저장된 컴퓨터 프로그램.
Programmed to perform each step included in the method according to claim 5
A computer program stored on a computer readable recording medium.
KR1020180127410A 2018-10-24 2018-10-24 Apparatus and method for performing symbolic execution KR102156845B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180127410A KR102156845B1 (en) 2018-10-24 2018-10-24 Apparatus and method for performing symbolic execution

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180127410A KR102156845B1 (en) 2018-10-24 2018-10-24 Apparatus and method for performing symbolic execution

Publications (2)

Publication Number Publication Date
KR20200046363A true KR20200046363A (en) 2020-05-07
KR102156845B1 KR102156845B1 (en) 2020-09-16

Family

ID=70733147

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180127410A KR102156845B1 (en) 2018-10-24 2018-10-24 Apparatus and method for performing symbolic execution

Country Status (1)

Country Link
KR (1) KR102156845B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021210814A1 (en) 2020-04-17 2021-10-21 주식회사 엘지에너지솔루션 Electrolyte for lithium secondary battery, and lithium secondary battery comprising same

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101530132B1 (en) 2013-12-10 2015-06-18 한양대학교 산학협력단 Method and apparatus for expanding execution path of binary code using symbolic execution
JP2018124850A (en) * 2017-02-02 2018-08-09 日本電信電話株式会社 Program protection apparatus, program protection method, and program protection program

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101530132B1 (en) 2013-12-10 2015-06-18 한양대학교 산학협력단 Method and apparatus for expanding execution path of binary code using symbolic execution
JP2018124850A (en) * 2017-02-02 2018-08-09 日本電信電話株式会社 Program protection apparatus, program protection method, and program protection program

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021210814A1 (en) 2020-04-17 2021-10-21 주식회사 엘지에너지솔루션 Electrolyte for lithium secondary battery, and lithium secondary battery comprising same

Also Published As

Publication number Publication date
KR102156845B1 (en) 2020-09-16

Similar Documents

Publication Publication Date Title
US8966449B2 (en) Test case pattern matching
CN109902002B (en) Generation method and device of combined test case, storage medium and computer equipment
US9483385B2 (en) Method, program, and system for generating test cases
JP6316447B2 (en) Object search method and apparatus
JP2019204482A (en) Concurrency vulnerability detection
EP3121723A1 (en) Information processing device, influence-process extraction method, and recording medium
US10055329B2 (en) Detection of antipatterns through statistical analysis
JP6245006B2 (en) Test case generation apparatus, method, and program
JP2020144842A (en) Generating inputs for computer-readable program testing
US9552284B2 (en) Determining valid inputs for an unknown binary program
CN111913878B (en) Byte code instrumentation method, device and storage medium based on program analysis result
KR102156845B1 (en) Apparatus and method for performing symbolic execution
CN105677851B (en) A kind of interface screenshot method and user equipment
US20160188435A1 (en) Fixing anti-patterns in javascript
CN105912467A (en) Performance test method and device
CN106155898B (en) Method and device for acquiring path of flow chart
US20160283355A1 (en) Identifying a configuration element value as a potential cause of a testing operation failure
US10503633B2 (en) Symbolic execution of alternative branches
CN105701403B (en) The password processing path recognition methods of Android application and the device using this method
US20220334958A1 (en) Test procedure systems and methods
CN105653458B (en) The method and apparatus for detecting the time-consuming Java method of height in target Java project
CN109408063B (en) Instruction pile inserting method and device based on virtual machine
KR101837236B1 (en) Basic block size considering execution path exploration method and system for improving the code coverage
KR100949800B1 (en) Test method and test device for unit code using unit test code
KR20200086093A (en) Apparatus and method for analyzing source code of concurrent program and computer readible storage medium therefor

Legal Events

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