KR102156845B1 - 기호 실행 수행 장치 및 방법 - Google Patents

기호 실행 수행 장치 및 방법 Download PDF

Info

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

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

Abstract

일 실시예에 따른 기호 실행 수행 장치는 프로세스와 관련된 함수의 주소를 획득하는 정보 획득부와, 분석 대상인 함수에 대한 주소를 상기 정보 획득부로부터 획득하고, 상기 프로세스의 진입점(entry point)로부터 상기 획득된 주소에 이르는 경로를 탐색하는 경로 탐색부와, 상기 탐색된 경로에 대해 기호 실행을 수행하는 기호 실행부를 포함한다.

Description

기호 실행 수행 장치 및 방법{APPARATUS AND METHOD FOR PERFORMING SYMBOLIC EXECUTION}
본 발명은 기호 실행 수행 장치 및 방법에 관한 것이다.
소프트웨어의 실행 경로 분석은 소프트웨어의 논리 또는 데이터에 기반하여 컴퓨터가 작업을 처리할 때 취하는 경로나 과정을 분석하는 것을 의미한다. 종래의 소프트웨어 실행 경로 확장 방법은, 1) 확장 대상 소프트웨어의 소스 코드로부터 실행 경로가 확장될 가능성이 있는 테스트 케이스를 다량으로 생성하는 방식으로 실행 경로 확장을 시도하거나, 소스코드가 획득될 수 없는 경우에는 단순히 임의의 값을 가진 테스트 케이스를 다량으로 생성하는 방식으로 실행 경로 확장을 시도하였다. 종래의 방법은 소프트웨어가 실제 실행되며 형성하는 동적 정보, 즉 프로그램 컨텍스트를 참조하지 않기 때문에 실행 경로 확장에 대한 한계를 갖는다.
한편, 소프트웨어와 같은 프로그램 테스팅 분야에서 기호 실행이 사용되고 있다. 기호 실행을 통해, 프로그램 실행 중 특정 메모리 영역으로 분기가 진행될 수 있는지 검사가 가능하다. 아울러, 사용자 입력에 따라 프로그램이 다르게 실행되는 경우, 특정 사용자 입력에 따라 목표한 메모리 영역에 도달 가능한지가 검사될 수 있다. 이러한 프로그램 테스팅에 의해 프로그램에 대한 취약점 탐색이 가능하다.
한국등록특허공보, 제10-1530132 호 (2015.06.12. 등록)
기호 실행에 있어 종래에는 대부분의 과정이 수동으로 진행되어 왔다. 그러나 수동으로 실행되는 기호 실행은 규모가 큰 코드에는 적용하기 어렵다. 특히 프로그램 또는 프로세스의 실행 과정에서 특정한 메모리 영역에 도달 가능한지를 검사하는 과정을 살펴보면, 함수가 분기될 때마다 수집되는 제약 조건들이 두 배씩 증가하게 된다. 이로써 path-explosion과 같이 탐색 범위를 과도하게 확장시키는 문제점이 야기될 수 있다.
이에 본 발명의 해결하고자 하는 과제는 path-explosion과 같은 문제점 없이, 탐색 범위를 확장시키지 않고 효율적이면서도 신속하게 수행 가능한 기호 실행에 관한 기술을 제공하는 것이다.
다만, 본 발명의 해결하고자 하는 과제는 이상에서 언급한 것으로 제한되지 않으며, 언급되지 않은 또 다른 해결하고자 하는 과제는 아래의 기재로부터 본 발명이 속하는 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
일 실시예에 따른 기호 실행 수행 장치는 프로세스와 관련된 함수의 주소를 획득하는 정보 획득부와, 상기 프로세스의 진입점(entry point)으로부터 상기 획득된 주소에 이르는 경로를 탐색하는 경로 탐색부와, 상기 탐색된 경로에 대해 기호 실행을 수행하는 기호 실행부를 포함한다.
또한, 상기 정보 획득부는 임포트 주소 테이블(import address table)로부터 상기 주소를 획득할 수 있다.
또한, 상기 획득된 주소는 .idata 영역의 주소일 수 있다.
또한, 상기 정보 획득부는 상기 프로세스와 관련된 어셈블리, DLL 및 라이브러리 중 적어도 하나에 대한 주소를 획득하고, 상기 경로 탐색부는 상기 프로세스의 진입점으로부터 상기 어셈블리, DLL 및 라이브러리 중 적어도 하나에 대해 획득된 주소에 이르는 경로를 탐색할 수 있다
일 실시예에 따른 기호 실행 수행 방법은 기호 실행 수행 장치에 의해 수행되며, 프로세스와 관련된 함수의 주소를 획득하는 단계와, 상기 프로세스의 진입점(entry point)으로부터 상기 획득된 주소에 이르는 경로를 탐색하는 단계와, 상기 탐색된 경로에 대해 기호 실행을 수행하는 단계를 포함한다.
또한, 상기 획득하는 단계는 임포트 주소 테이블(import address table)로부터 상기 주소를 획득할 수 있다.
또한, 상기 획득된 주소는 .idata 영역의 주소일 수 있다.
또한, 상기 획득하는 단계는 상기 프로세스와 관련된 어셈블리, DLL 및 라이브러리 중 적어도 하나에 대한 주소를 획득하고, 상기 탐색하는 단계는 상기 프로세스의 진입점으로부터 상기 어셈블리, DLL 및 라이브러리 중 적어도 하나에 대해 획득된 주소에 이르는 경로를 탐색할 수 있다.
즉, 일 실시예에 따르면 프로세스가 갖는 모든 경로, 즉 모든 분기에 대해 기호 실행이 수행되지 않고 경로 탐색부에 의해 탐색된 경로에 대해서만 기호 실행이 수행될 수 있다. 따라서 적은 시간으로 빠르면서도 정확하고 효율적인 기호 실행이 가능해진다.
도 1은 일 실시예에 따른 기호 실행 수행 장치의 구성을 예시적으로 도시하고 있다.
도 2는 도 1에 도시된 경로 탐색부가 탐색한 경로를 예시적으로 도시하고 있다.
도 3은 일 실시예에 따른 기호 실행 수행 방법의 절차를 도시하고 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
본 발명의 실시예들을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명의 실시예에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도 1은 일 실시예에 따른 기호 실행 수행 장치의 구성을 예시적으로 도시하고 있다.
도 1을 참조하면, 기호 실행 수행 장치(100)는 정보 획득부(110), 경로 탐색부(120) 및 기호 실행부(130)를 포함하며, 다만 기호 실행 수행 장치(100)의 구성이 도 1에 도시된 것으로 한정 해석되는 것은 아니다.
먼저, 정보 획득부(110), 경로 탐색부(120) 및 기호 실행부(130) 각각은 이하에서 설명할 기능을 수행하도록 프로그램된 명령어를 저장하는 메모리 및 이러한 명령어를 실행하는 마이크로프로세서에 의해 구현 가능하다.
이 중 정보 획득부(110)에 대해 먼저 살펴보기로 한다. 정보 획득부(110)는 기호 실행에 필요한 정적 분석 정보를 획득한다. 예컨대 정보 획득부(110)는 정적 분석 정보로서 임포트 주소 테이블(import address table) 내의 함수의 주소, 어셈블리, DLL 및 라이브러리 중 적어도 하나를 획득한다. 여기서 함수는 API(application programming interface)일 수 있다. 아울러, 함수의 주소는 API의 .idata 영역의 주소를 가리키는 것일 수 있다.
한편, 정보 획득부(110)는 정적 분석 정보 뿐만 아니라 실시예에 따라 동적 분석 정보를 획득할 수도 있다.
정보 획득부(110)가 획득한 정적 분석 정보는 기호 실행의 탐색 범위를 줄이는데 사용된다. 구체적으로 살펴보면, 분석 대상인 프로세스의 모든 분기에 대해 기호 실행을 할 경우 path-explosion과 같은 문제가 발생할 수 있다. 왜냐하면 프로세스의 각 분기가 수행될 때마다 수집되는 제약 조건들이 두 배씩 증가하기 때문이다.
그러나 일 실시예에서는 정보 획득부(110)가 획득한 정적 분석 정보를 기준으로 기호 실행의 탐색 범위가 한정된다. 예컨대 WS2_32.dll 내의 recv API 또는 send API가 대상인 경우 이러한 각 API가 갖는 .idata 영역의 주소가 정보 획득부(110)에 의해 획득될 수 있고, 후술하겠지만 경로 탐색 및 기호 실행은 이렇게 획득된 .idata 영역의 주소에 한정해서 수행될 수 있다.
경로 탐색부(120)는 프로세스의 진입점(entry point)로부터 정보 획득부(110)에 의해 획득된 주소에 이르는 경로를 탐색한다. 이러한 경로 탐색부(120)는 예컨대 path-finder와 같은 것일 수 있으나 이에 한정되는 것은 아니다.
이하에서는 경로 탐색부(120)에 대해 보다 구체적으로 살펴보기로 한다.
프로세스의 진입점으로부터 소정의 메모리 영역의 주소에 이르는 경로는 적어도 한 개이거나 또는 경우에 따라서는 없을 수 있다. 경로 탐색부(120)는 전술한 경로가 몇 개 존재하는지, 존재한다면 각 경로는 어떠한 것인지 등을 탐색한다.
아울러, 만약 함수가 복수 개로 분기되는데 그 중 일부를 통해서는 소정의 메모리 영역의 주소에 이를 수 없다면, 경로 탐색부(120)는 이러한 일부에 대한 경로는 탐색에서 제외시킨다. 즉, 경로 탐색부(120)에 의하면 프로세스의 진입점으로부터 소정의 메모리 영역의 주소에 이를 수 없는 경로는 제외된다. 따라서 함수가 분기됨에 따라 기호 실행 과정에서 수집되는 제약조건이 두 배씩 증가한다고 하더라도, 기호 실행은 이렇게 제외된 경로에 대해서는 수행되지 않게 되는 효과가 있다. 이로써 기호 실행의 범위가 불필요하게 확장되는 것이 방지될 수 있다.
도 2는 경로 탐색부(120)에 의해 탐색된 복수 개의 경로를 텍스트의 형태로 예시적으로 도시하고 있다.
도 2를 참조하면, 프로세스의 진입점으로부터 sub_410B98의 주소에 이르는 경로는 존재하지 않는다. 마찬가지로 프로세스의 진입점으로부터 sub_4113BB 및 sub_411443의 각 주소에 이르는 경로 또한 존재하지 않는다. 즉, 경로 탐색부(120)는 프로세스의 진입점으로부터 소정의 메모리 영역의 주소에 이르는 경로가 존재하지 않는다는 정보를 획득할 수 있다.
반면, 도 2를 참조하면, 프로세스의 진입점으로부터 sub_423F47의 주소에 이르는 경로는 5개가 존재한다. 경로 탐색부(120)는 해당 경로가 어떠한 것인지에 대한 세부 정보까지도 도 2에 도시된 것과 같이 제공한다. 또한, 도 2를 참조하면 프로세스의 진입점으로부터 sub_424041의 주소에 이르는 경로 또한 2개가 존재한다.
즉, 경로 탐색부(120)는 프로세스의 진입점으로부터 소정의 메모리 영역의 주소에 이르는 경로의 개수 및 경로의 세부 정보에 대해서 제공할 수 있다.
다시 도 1을 참조하기로 한다.
기호 실행부(130)는 경로 탐색부(120)에 의해 탐색된 경로에 대해 기호 실행을 수행한다. 만약 경로 탐색부(120)에 의해 탐색된 경로가 복수 개이면, 기호 실행부(130)는 복수 개의 경로 각각에 대해 기호 실행을 수행할 수 있다.
여기서 기호 실행이란 프로세스의 실행 중에 등장하는 변수들을 기호화하여 실행하는 방법을 지칭한다. 이러한 기호 실행에서는, 역공학 진행 과정에서 기호화된 제약 조건들이 수집된다. 수집된 제약 조건들은, 기호화된 변수들이 소정의 메모리 영역의 주소에 도달하기 위해 어떠한 값을 가져야 하는지에 영향을 끼친다.
일 실시예에서 기호 실행부(130)는 프로세스가 갖는 모든 경로, 즉 함수의 모든 분기에 대해 기호 실행을 수행하지 않는다. 기호 실행부(130)는 경로 탐색부(120)에 의해 탐색된 경로에 대해서만 기호 실행을 수행한다. 경로 탐색부(120)에 의해 탐색된 경로란, 프로세스의 진입점으로부터 소정의 메모리 영역의 주소에 이르는 경로임은 전술한 바와 같다.
즉, 일 실시예에 따르면 프로세스가 갖는 모든 경로, 즉 모든 분기에 대해 기호 실행이 수행되지 않고 경로 탐색부에 의해 탐색된 경로에 대해서만 기호 실행이 수행될 수 있다. 따라서 적은 시간으로 빠르면서도 정확하고 효율적인 기호 실행이 가능해진다.
도 3은 일 실시예에 따른 기호 실행 수행 방법의 절차를 도시하고 있다. 이러한 기호 실행 수행 방법은 도 1에 도시된 기호 실행 수행 장치(100)에 의해 수행 가능하다. 다만, 도 3에 도시된 방법의 절차는 예시적인 것에 불과한 바, 기호 실행 수행 방법의 절차가 도 3에 도시된 것으로 한정 해석되는 것은 아니다.
도 3을 도 1과 함께 참조하면 기호 실행의 대상인 프로세스가 선정된다(S100).
다음으로 정보 획득부(110)는 정적 분석 정보를 획득한다(S110). 정적 분석 정보는 단계 S100에서 선정된 프로세스와 관련된 것일 수 있다. 정적 분석 정보는 임포트 주소 테이블(import address table) 내의 함수의 주소, 어셈블리, DLL 및 라이브러리 중 적어도 하나를 포함할 수 있다. 이 때 함수는 API(application programming interface)일 수 있다. 아울러, 함수의 주소는 API의 .idata 영역의 주소를 가리키는 것일 수 있다.
단계 S110에서 획득된 정적 분석 정보는 기호 실행의 탐색 범위를 줄이는데 사용된다. 구체적으로 살펴보면, 분석 대상인 프로세스의 모든 분기에 대해 기호 실행을 할 경우 path-explosion과 같은 문제가 발생할 수 있다. 왜냐하면 프로세스의 각 분기가 수행될 때마다 수집되는 제약 조건들이 두 배씩 증가하기 때문이다.
그러나 일 실시예에서는 단계 S110에서 획득된 정적 분석 정보를 기준으로 기호 실행의 탐색 범위가 한정된다. 예컨대 WS2_32.dll 내의 recv API 또는 send API가 대상인 경우 이러한 각 API가 갖는 .idata 영역의 주소가 단계 S110에서 획득될 수 있고, 후술하겠지만 경로 탐색 및 기호 실행은 이렇게 획득된 .idata 영역의 주소에 한정해서 수행될 수 있다.
다음으로 정보 획득부(110)는 목적 API를 선정한다(S120). 목적 API는 예컨대 WS2_32.dll 내의 recv API 또는 send API일 수 있으나 이에 한정되는 것은 아니다. 여기서 목적 API란 분석 대상인 함수를 가리키는 것일 수 있다.
다음으로 경로 탐색부(120)는, 단계 S100에서 선정된 프로세스의 진입점(entry point)로부터 단계 S120에서 선정된 목적 API의 주소에 이르는 경로를 탐색한다(S130). 이러한 경로 탐색부(120)는 예컨대 path-finder와 같은 것일 수 있으나 이에 한정되는 것은 아니다.
이하에서는 단계 S130에 대해 보다 구체적으로 살펴보기로 한다.
프로세스의 진입점으로부터 소정의 메모리 영역의 주소에 이르는 경로는 적어도 한 개이거나 또는 경우에 따라서는 없을 수 있다. 단계 S130에서 경로 탐색부(120)는 전술한 경로가 몇 개 존재하는지, 존재한다면 각 경로는 어떠한 것인지 등을 탐색한다.
아울러, 만약 함수가 복수 개로 분기되는데 그 중 일부를 통해서는 소정의 메모리 영역의 주소에 이를 수 없다면, 단계 S130에서 이러한 일부에 대한 경로는 탐색에서 제외된다. 따라서 함수가 분기됨에 따라 기호 실행 과정에서 수집되는 제약조건이 두 배씩 증가한다고 하더라도, 기호 실행은 이렇게 제외된 경로에 대해서는 수행되지 않게 되는 효과가 있다. 이로써 기호 실행의 범위가 불필요하게 확장되는 것이 방지될 수 있다.
다음으로, 기호 실행부(130)는 경로 탐색부(120)에 의해 탐색된 경로에 대해 기호 실행을 수행한다(S140). 만약 경로 탐색부(120)에 의해 탐색된 경로가 복수 개이면, 단계 S140에서 기호 실행부(130)는 복수 개의 경로 각각에 대해 기호 실행을 수행할 수 있다.
여기서 기호 실행이란 프로세스의 실행 중에 등장하는 변수들을 기호화하여 실행하는 방법을 지칭한다. 이러한 기호 실행에서는, 역공학 진행 과정에서 기호화된 제약 조건들이 수집된다. 수집된 제약 조건들은, 기호화된 변수들이 소정의 메모리 영역의 주소에 도달하기 위해 어떠한 값을 가져야 하는지에 영향을 끼친다.
일 실시예에서 기호 실행부(130)는 단계 S140에서 프로세스가 갖는 모든 경로, 즉 함수의 모든 분기에 대해 기호 실행을 수행하지 않는다. 단계 S140에서 기호 실행부(130)는 경로 탐색부(120)에 의해 탐색된 경로에 대해서만 기호 실행을 수행한다. 경로 탐색부(120)에 의해 탐색된 경로란, 프로세스의 진입점으로부터 소정의 메모리 영역의 주소에 이르는 경로임은 전술한 바와 같다.
즉, 일 실시예에 따르면 프로세스가 갖는 모든 경로, 즉 모든 분기에 대해 기호 실행이 수행되지 않고 경로 탐색부에 의해 탐색된 경로에 대해서만 기호 실행이 수행될 수 있다. 따라서 적은 시간으로 빠르면서도 정확하고 효율적인 기호 실행이 가능해진다.
한편, 일 실시예에 따른 기호 실행 수행 방법은 이러한 방법에 포함된 각 단계를 포함하여 수행하도록 프로그램된 컴퓨터 프로그램을 저장하는 컴퓨터 판독가능한 기록매체의 형태로 구현되거나 또는 이러한 방법에 포함된 각 단계를 포함하여 수행하도록 프로그램된 컴퓨터 판독가능한 기록매체에 저장된 컴퓨터 프로그램에서 구현될 수 있다.
예컨대 컴퓨터 프로그램은 프로세스와 관련된 함수의 주소를 획득하는 단계와, 상기 프로세스의 진입점(entry point)으로부터 상기 획득된 주소에 이르는 경로를 탐색하는 단계와, 상기 탐색된 경로에 대해 기호 실행을 수행하는 단계를 포함하여서 수행하도록 프로그램된 것일 수 있고, 컴퓨터 판독가능한 기록매체는 이러한 컴퓨터 프로그램을 저장할 수 있다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 품질에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 균등한 범위 내에 있는 모든 기술사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
100 : 기호 실행 분석 장치

Claims (10)

  1. 프로세스와 관련된 복수 개로 분기된 함수의 주소, 어셈블리, DLL 및 라이브러리 중 적어도 하나를 포함하는 정보를 획득하는 정보 획득부와,
    상기 정보에 기초하여, 상기 프로세스의 진입점(entry point)으로부터 상기 획득된 주소에 이르지 못하는 경로를 확인하고, 상기 확인된 경로가 제외된, 상기 프로세스의 상기 진입점으로부터 상기 획득된 주소에 이르는 경로를 탐색하는 경로 탐색부와,
    상기 탐색된 경로에 대해 기호 실행을 수행하는 기호 실행부를 포함하는
    기호 실행 수행 장치.
  2. 제 1 항에 있어서,
    상기 정보 획득부는,
    임포트 주소 테이블(import address table)로부터 상기 주소를 획득하는
    기호 실행 수행 장치.
  3. 제 2 항에 있어서,
    상기 획득된 주소는,
    .idata 영역의 주소인
    기호 실행 수행 장치.
  4. 제 1 항에 있어서,
    상기 경로 탐색부는,
    상기 프로세스의 진입점으로부터 상기 어셈블리, DLL 및 라이브러리 중 적어도 하나에 대해 획득된 주소에 이르는 경로를 탐색하는
    기호 실행 수행 장치.
  5. 기호 실행 수행 장치에 의해 수행되는 기호 실행 수행 방법으로서,
    프로세스와 관련된 복수 개로 분기된 함수의 주소, 어셈블리, DLL 및 라이브러리 중 적어도 하나를 포함하는 정보를 획득하는 단계와,
    상기 정보에 기초하여 상기 프로세스의 진입점(entry point)으로부터 상기 획득된 주소에 이르지 못하는 경로를 확인하고, 상기 확인된 경로가 제외된, 상기 프로세스의 상기 진입점으로부터 상기 획득된 주소에 이르는 경로를 탐색하는 단계와,
    상기 탐색된 경로에 대해 기호 실행을 수행하는 단계를 포함하는
    기호 실행 수행 방법.
  6. 제 5 항에 있어서,
    상기 획득하는 단계는,
    임포트 주소 테이블(import address table)로부터 상기 주소를 획득하는
    기호 실행 수행 방법.
  7. 제 6 항에 있어서,
    상기 획득된 주소는,
    .idata 영역의 주소인
    기호 실행 수행 방법.
  8. 제 5 항에 있어서,
    상기 탐색하는 단계는,
    상기 프로세스의 진입점으로부터 상기 어셈블리, DLL 및 라이브러리 중 적어도 하나에 대해 획득된 주소에 이르는 경로를 탐색하는
    기호 실행 수행 방법.
  9. 제 5 항에 따른 방법에 포함된 각 단계를 수행하도록 프로그램된
    컴퓨터 프로그램을 저장하는 컴퓨터 판독가능한 기록매체.
  10. 제 5 항에 따른 방법에 포함된 각 단계를 수행하도록 프로그램된
    컴퓨터 판독가능한 기록매체에 저장된 컴퓨터 프로그램.
KR1020180127410A 2018-10-24 2018-10-24 기호 실행 수행 장치 및 방법 KR102156845B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180127410A KR102156845B1 (ko) 2018-10-24 2018-10-24 기호 실행 수행 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180127410A KR102156845B1 (ko) 2018-10-24 2018-10-24 기호 실행 수행 장치 및 방법

Publications (2)

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

Family

ID=70733147

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180127410A KR102156845B1 (ko) 2018-10-24 2018-10-24 기호 실행 수행 장치 및 방법

Country Status (1)

Country Link
KR (1) KR102156845B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210128580A (ko) 2020-04-17 2021-10-27 주식회사 엘지에너지솔루션 리튬 이차전지용 전해액 및 이를 포함하는 리튬 이차전지

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018124850A (ja) * 2017-02-02 2018-08-09 日本電信電話株式会社 プログラム保護装置、プログラム保護方法及びプログラム保護プログラム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101530132B1 (ko) 2013-12-10 2015-06-18 한양대학교 산학협력단 기호 실행을 이용하는 바이너리 코드 실행 경로 확장 방법 및 장치

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018124850A (ja) * 2017-02-02 2018-08-09 日本電信電話株式会社 プログラム保護装置、プログラム保護方法及びプログラム保護プログラム

Also Published As

Publication number Publication date
KR20200046363A (ko) 2020-05-07

Similar Documents

Publication Publication Date Title
US9424006B2 (en) Execution optimization of mobile applications
US20100199263A1 (en) Test case pattern matching
JP2019204482A (ja) 並行脆弱性検出
US10055329B2 (en) Detection of antipatterns through statistical analysis
US9678859B2 (en) Detecting error states when interacting with web applications
KR101530132B1 (ko) 기호 실행을 이용하는 바이너리 코드 실행 경로 확장 방법 및 장치
US8539466B2 (en) Determining suitable insertion points for string sanitizers in a computer code
JP6245006B2 (ja) テストケース生成装置、方法、及びプログラム
US9639345B2 (en) Methods and apparatuses for providing framework for selective execution of application features
CN108062474B (zh) 文件的检测方法及装置
CN108733557B (zh) 一种测试点生成方法及装置
KR102156845B1 (ko) 기호 실행 수행 장치 및 방법
US9983975B2 (en) Fixing anti-patterns in javascript
CN105550575A (zh) 一种未导出的函数地址和数据结构偏移的获取方法及装置
US20170364054A1 (en) Numerical controller and variable determining method
US20140089738A1 (en) System and method for identifying source of run-time execution failure
CN105912467A (zh) 一种性能测试方法及装置
US10108525B2 (en) Optimizing automated interactions with web applications
US10503633B2 (en) Symbolic execution of alternative branches
KR101858594B1 (ko) 안티리버싱 코드 검출 방법 및 그 장치
CN110968500A (zh) 一种测试用例的执行方法及装置
CN109460255B (zh) 内存地址的查询方法及装置
CN109408063B (zh) 基于虚拟机的指令插桩方法及装置
CN110457046B (zh) 混合指令集程序的反汇编方法、装置、存储介质及终端
US20160283355A1 (en) Identifying a configuration element value as a potential cause of a testing operation failure

Legal Events

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