KR20200046363A - Apparatus and method for performing symbolic execution - Google Patents
Apparatus and method for performing symbolic execution Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3624—Software 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
Description
본 발명은 기호 실행 수행 장치 및 방법에 관한 것이다.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.
기호 실행에 있어 종래에는 대부분의 과정이 수동으로 진행되어 왔다. 그러나 수동으로 실행되는 기호 실행은 규모가 큰 코드에는 적용하기 어렵다. 특히 프로그램 또는 프로세스의 실행 과정에서 특정한 메모리 영역에 도달 가능한지를 검사하는 과정을 살펴보면, 함수가 분기될 때마다 수집되는 제약 조건들이 두 배씩 증가하게 된다. 이로써 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
먼저, 정보 획득부(110), 경로 탐색부(120) 및 기호 실행부(130) 각각은 이하에서 설명할 기능을 수행하도록 프로그램된 명령어를 저장하는 메모리 및 이러한 명령어를 실행하는 마이크로프로세서에 의해 구현 가능하다.First, each of the
이 중 정보 획득부(110)에 대해 먼저 살펴보기로 한다. 정보 획득부(110)는 기호 실행에 필요한 정적 분석 정보를 획득한다. 예컨대 정보 획득부(110)는 정적 분석 정보로서 임포트 주소 테이블(import address table) 내의 함수의 주소, 어셈블리, DLL 및 라이브러리 중 적어도 하나를 획득한다. 여기서 함수는 API(application programming interface)일 수 있다. 아울러, 함수의 주소는 API의 .idata 영역의 주소를 가리키는 것일 수 있다.Among them, the
한편, 정보 획득부(110)는 정적 분석 정보 뿐만 아니라 실시예에 따라 동적 분석 정보를 획득할 수도 있다.Meanwhile, the
정보 획득부(110)가 획득한 정적 분석 정보는 기호 실행의 탐색 범위를 줄이는데 사용된다. 구체적으로 살펴보면, 분석 대상인 프로세스의 모든 분기에 대해 기호 실행을 할 경우 path-explosion과 같은 문제가 발생할 수 있다. 왜냐하면 프로세스의 각 분기가 수행될 때마다 수집되는 제약 조건들이 두 배씩 증가하기 때문이다. The static analysis information acquired by the
그러나 일 실시예에서는 정보 획득부(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
경로 탐색부(120)는 프로세스의 진입점(entry point)로부터 정보 획득부(110)에 의해 획득된 주소에 이르는 경로를 탐색한다. 이러한 경로 탐색부(120)는 예컨대 path-finder와 같은 것일 수 있으나 이에 한정되는 것은 아니다.The
이하에서는 경로 탐색부(120)에 대해 보다 구체적으로 살펴보기로 한다. Hereinafter, the
프로세스의 진입점으로부터 소정의 메모리 영역의 주소에 이르는 경로는 적어도 한 개이거나 또는 경우에 따라서는 없을 수 있다. 경로 탐색부(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
아울러, 만약 함수가 복수 개로 분기되는데 그 중 일부를 통해서는 소정의 메모리 영역의 주소에 이를 수 없다면, 경로 탐색부(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
도 2는 경로 탐색부(120)에 의해 탐색된 복수 개의 경로를 텍스트의 형태로 예시적으로 도시하고 있다. 2 exemplarily shows a plurality of paths searched by the
도 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
반면, 도 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
즉, 경로 탐색부(120)는 프로세스의 진입점으로부터 소정의 메모리 영역의 주소에 이르는 경로의 개수 및 경로의 세부 정보에 대해서 제공할 수 있다.That is, the
다시 도 1을 참조하기로 한다.1 will be referred to again.
기호 실행부(130)는 경로 탐색부(120)에 의해 탐색된 경로에 대해 기호 실행을 수행한다. 만약 경로 탐색부(120)에 의해 탐색된 경로가 복수 개이면, 기호 실행부(130)는 복수 개의 경로 각각에 대해 기호 실행을 수행할 수 있다.The
여기서 기호 실행이란 프로세스의 실행 중에 등장하는 변수들을 기호화하여 실행하는 방법을 지칭한다. 이러한 기호 실행에서는, 역공학 진행 과정에서 기호화된 제약 조건들이 수집된다. 수집된 제약 조건들은, 기호화된 변수들이 소정의 메모리 영역의 주소에 도달하기 위해 어떠한 값을 가져야 하는지에 영향을 끼친다.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
즉, 일 실시예에 따르면 프로세스가 갖는 모든 경로, 즉 모든 분기에 대해 기호 실행이 수행되지 않고 경로 탐색부에 의해 탐색된 경로에 대해서만 기호 실행이 수행될 수 있다. 따라서 적은 시간으로 빠르면서도 정확하고 효율적인 기호 실행이 가능해진다.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
도 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
단계 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
다음으로 경로 탐색부(120)는, 단계 S100에서 선정된 프로세스의 진입점(entry point)로부터 단계 S120에서 선정된 목적 API의 주소에 이르는 경로를 탐색한다(S130). 이러한 경로 탐색부(120)는 예컨대 path-finder와 같은 것일 수 있으나 이에 한정되는 것은 아니다.Next, the
이하에서는 단계 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
아울러, 만약 함수가 복수 개로 분기되는데 그 중 일부를 통해서는 소정의 메모리 영역의 주소에 이를 수 없다면, 단계 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
여기서 기호 실행이란 프로세스의 실행 중에 등장하는 변수들을 기호화하여 실행하는 방법을 지칭한다. 이러한 기호 실행에서는, 역공학 진행 과정에서 기호화된 제약 조건들이 수집된다. 수집된 제약 조건들은, 기호화된 변수들이 소정의 메모리 영역의 주소에 도달하기 위해 어떠한 값을 가져야 하는지에 영향을 끼친다.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
즉, 일 실시예에 따르면 프로세스가 갖는 모든 경로, 즉 모든 분기에 대해 기호 실행이 수행되지 않고 경로 탐색부에 의해 탐색된 경로에 대해서만 기호 실행이 수행될 수 있다. 따라서 적은 시간으로 빠르면서도 정확하고 효율적인 기호 실행이 가능해진다.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.
상기 정보 획득부는,
임포트 주소 테이블(import address table)로부터 상기 주소를 획득하는
기호 실행 수행 장치.According to claim 1,
The information acquisition unit,
Obtaining the address from the import address table
Symbolic execution device.
상기 획득된 주소는,
.idata 영역의 주소인
기호 실행 수행 장치.According to claim 2,
The obtained address,
the address of the .idata area
Symbolic execution device.
상기 정보 획득부는,
상기 프로세스와 관련된 어셈블리, 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.
상기 획득하는 단계는,
임포트 주소 테이블(import address table)로부터 상기 주소를 획득하는
기호 실행 수행 방법.The method of claim 5,
The obtaining step,
Obtaining the address from the import address table
How to perform symbolic execution.
상기 획득된 주소는,
.idata 영역의 주소인
기호 실행 수행 방법.The method of claim 6,
The obtained address,
the address of the .idata area
How to perform symbolic execution.
상기 획득하는 단계는,
상기 프로세스와 관련된 어셈블리, 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.
컴퓨터 프로그램을 저장하는 컴퓨터 판독가능한 기록매체.Programmed to perform each step included in the method according to claim 5
A computer readable recording medium storing a computer program.
컴퓨터 판독가능한 기록매체에 저장된 컴퓨터 프로그램.Programmed to perform each step included in the method according to claim 5
A computer program stored on a computer readable recording medium.
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)
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)
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 |
-
2018
- 2018-10-24 KR KR1020180127410A patent/KR102156845B1/en active IP Right Grant
Patent Citations (2)
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)
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 |