소프트웨어의 취약성을 검증하기 위하여 소프트웨어의 구조를 유추하여 유추된 구조를 활용하여 테스트하는 방법이 주목받고 있다. 이와 같은 방법을 사용하기 위해서 효과적인 소프트웨어의 구조 유추 방법이 요구된다. 많이 사용되는 DFG(Data Flow Graph), CFG(Control Flow Graph) 이나 CFA(Control Flow Automata)와 같은 그래프나 트리 방식은 소프트웨어 모델을 구조적으로 표현하지 못하는 단점을 가진다. 본 논문에서는 이러한 단점을 극복할 수 있는 방법을 제시한다. 제시된 방법은 바이너리 코드에 다양한 입력데이터 들을 부여하여 입력데이터별 CFG를 생성하고, 생성된 CFG들이 구조적으로 표현될 수 있도록 계층적 제어 흐름 그래프(Hierarchical Control Flow Graph, HCFG)를 작성한다. 또한 제안하는 HCFG을 생성하는데 요구되는 그래프의 구성요소와 점진적 그래프 생성 알고리듬도 제시한다. 제안한 방법론을 공개된 SMTP(Simple Mail Transfer Protocol) 서버 프로그램에 적용시켜 소프트웨어의 모델을 작성하는 실험을 수행하고, 생성된 모델과 실제 소프트웨어 구조를 비교 분석한다.
소프트웨어의 취약성을 검증하기 위하여 소프트웨어의 구조를 유추하여 유추된 구조를 활용하여 테스트하는 방법이 주목받고 있다. 이와 같은 방법을 사용하기 위해서 효과적인 소프트웨어의 구조 유추 방법이 요구된다. 많이 사용되는 DFG(Data Flow Graph), CFG(Control Flow Graph) 이나 CFA(Control Flow Automata)와 같은 그래프나 트리 방식은 소프트웨어 모델을 구조적으로 표현하지 못하는 단점을 가진다. 본 논문에서는 이러한 단점을 극복할 수 있는 방법을 제시한다. 제시된 방법은 바이너리 코드에 다양한 입력데이터 들을 부여하여 입력데이터별 CFG를 생성하고, 생성된 CFG들이 구조적으로 표현될 수 있도록 계층적 제어 흐름 그래프(Hierarchical Control Flow Graph, HCFG)를 작성한다. 또한 제안하는 HCFG을 생성하는데 요구되는 그래프의 구성요소와 점진적 그래프 생성 알고리듬도 제시한다. 제안한 방법론을 공개된 SMTP(Simple Mail Transfer Protocol) 서버 프로그램에 적용시켜 소프트웨어의 모델을 작성하는 실험을 수행하고, 생성된 모델과 실제 소프트웨어 구조를 비교 분석한다.
To verify software vulnerability, the method of conjecturing software structure and then testing the software based on the conjectured structure has been highlighted. To utilize the method, an efficient way to conjecture software structure is required. The popular graph and tree methods such as DFG(...
To verify software vulnerability, the method of conjecturing software structure and then testing the software based on the conjectured structure has been highlighted. To utilize the method, an efficient way to conjecture software structure is required. The popular graph and tree methods such as DFG(Data Flow Graph), CFG(Control Flow Graph) and CFA(Control Flow Automata) have a serious drawback. That is, they cannot express software in a hierarchical fashion. In this paper, we propose a method to overcome the drawback. The proposed method applies various input data to a binary code, generate CFG's based on the code output and construct a HCFG (Hierarchical Control Flow Graph) to express the generated CFG's in a hierarchical structure. The components required for HCFG and progressive algorithm to construct HCFG are also proposed. The proposed method is verified through constructing the software architecture of an open SMTP(Simple Mail Transfer Protocol) server program. The structure generated by the proposed method and the real program structure are compared and analyzed.
To verify software vulnerability, the method of conjecturing software structure and then testing the software based on the conjectured structure has been highlighted. To utilize the method, an efficient way to conjecture software structure is required. The popular graph and tree methods such as DFG(Data Flow Graph), CFG(Control Flow Graph) and CFA(Control Flow Automata) have a serious drawback. That is, they cannot express software in a hierarchical fashion. In this paper, we propose a method to overcome the drawback. The proposed method applies various input data to a binary code, generate CFG's based on the code output and construct a HCFG (Hierarchical Control Flow Graph) to express the generated CFG's in a hierarchical structure. The components required for HCFG and progressive algorithm to construct HCFG are also proposed. The proposed method is verified through constructing the software architecture of an open SMTP(Simple Mail Transfer Protocol) server program. The structure generated by the proposed method and the real program structure are compared and analyzed.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
본 논문에서는 이러한 문제를 해결하기 위해 소프트웨어의 바이너리 코드를 이용하여 소프트웨어의 구조를 추정하되, 추정된 모델을 HCFG로 표현하는 방법을 제안한다. 제안된 방법은 하나의 소프트웨어가 시작 모듈을 기준으로 한 모듈들 간의 상호관계, 즉, 실행 경로가 시작 모듈을 중심으로 한 계층적 구조를 가진다는 점을 이용한다.
따라서 본 논문에서는 대부분의 소프트웨어들이 모듈 간 계층적 구조를 가진다는 점에 착안하여 소프트웨어의 논리적 구조를 파악하기 위해 CFG에 계층구조(hierarchical) 개념을 추가한 HCFG로 모델을 표현하는 방법을 제안한다. 또한 제안하는 HCFG를 생성하는데 요구되는 그래프의 구성요소와 그래프 생성 알고리듬을 제시한다.
G Fritz)가 개별적 이벤트 시뮬레이션을 위한 계층적 모델링 패러다임 연구논문에 사용했다[20]. 이 논문에서 HCFG는 메시지 패싱에 의하여 통신하는 각각의 독립적인 모듈들의 상호작용 및 동작을 모델링하기 위하여 사용되었으나, 본 논문에서는 소프트웨어의 논리 구조 모델링에 HCFG 개념을 차용하고, 이를 통해 모델 내에 포함되어야 하는 실행 경로가 폭발적으로 증가하는 현상을 억제해 관리 가능한 수준이 되도록 한다.
제시한 알고리듬은 입력 데이터를 구조 추정 대상 소프트웨어에 부여하여 실행시키는 작업을 반복해 점진적으로 HCFG가 확장되도록 하여 궁극적으로는 실제 소프트웨어의 구조와 유사한 그래프를 얻을 수 있도록 한다. 이과정에서 다양한 형태의 입력 데이터를 사용하여 가능한 모든 제어 흐름을 탐지 가능하도록 한다.
본 논문에서는 바이너리 코드를 이용하여 소프트웨어 구조를 유추하기 위한 모델을 작성하는 방법으로 HCFG 생성 알고리듬을 제안하였다. 제안하는 HCFG 생성 알고리듬의 가용성 평가를 위하여 공개된 SMTP 서버 프로그램을 대상으로 HCFG을 작성하고, 작성된 HCFG가 실제 소프트웨어의 구조와 유사한지를 비교 분석하는 실험을 진행하였다.
제안 방법
본 논문에서는 이러한 문제를 해결하기 위해 소프트웨어의 바이너리 코드를 이용하여 소프트웨어의 구조를 추정하되, 추정된 모델을 HCFG로 표현하는 방법을 제안한다. 제안된 방법은 하나의 소프트웨어가 시작 모듈을 기준으로 한 모듈들 간의 상호관계, 즉, 실행 경로가 시작 모듈을 중심으로 한 계층적 구조를 가진다는 점을 이용한다. 또한, 다양한 형태의 입력 데이터를 이용해 바이너리 코드를 실행하여 소프트웨어를 구성하고 있는 분기가 최대한 커버되도록, 즉, 모델에 소프트웨어의 구조가 충실히 반영될 수 있도록 한다.
또한, 다양한 형태의 입력 데이터를 이용해 바이너리 코드를 실행하여 소프트웨어를 구성하고 있는 분기가 최대한 커버되도록, 즉, 모델에 소프트웨어의 구조가 충실히 반영될 수 있도록 한다. 그리고 실행 회수의 증가에 따라 CFG가 점진적으로 확장되도록, 그리고 이 때 확장되는 CFG에 포함되어야 하는 구성 요소 수의 폭발적 증가를 방지하고, 구조화되어 표현될 수 있도록 CFG를 HCFG로 계층화하여 표현한다.
또한 제안하는 HCFG를 생성하는데 요구되는 그래프의 구성요소와 그래프 생성 알고리듬을 제시한다.
실행 순서는 PE(Portable Executable) 형식의 바이너리 파일에서 도구(PE_VIEWER)를 이용하여 텍스트 섹션을 찾고 이를 출력한다. 그 후 디스어셈블러(PE-Disassembler)를 이용하여 PE_VEIWER로부터 텍스트 섹션 정보를 확보하고, 이를 이용해 바이너리 형태로 되어있는 코드를 니모닉(mnemonic)형태의 어셈블리 언어로 변환한 후, 니모닉 데이터를 사용해 CFG을 생성한다.
본 논문에서의 HCFG 표현 방법은 기존의 CFG 혹은 플로차트와 유사하지만, 소프트웨어의 실행 과정에서 동적으로 작성된다는 점과 실행 경로의 표현을 위해 모듈 개념을 사용하고, 이 과정에서 소프트웨어의 구조를 계층적으로 표현할 수 있도록 한 것이 특징이다.
본 논문에서 제안하는 HCFG 생성 알고리듬은 표 1에 제시한 것과 같다. 제시한 알고리듬은 입력 데이터를 구조 추정 대상 소프트웨어에 부여하여 실행시키는 작업을 반복해 점진적으로 HCFG가 확장되도록 하여 궁극적으로는 실제 소프트웨어의 구조와 유사한 그래프를 얻을 수 있도록 한다. 이과정에서 다양한 형태의 입력 데이터를 사용하여 가능한 모든 제어 흐름을 탐지 가능하도록 한다.
이 작업은 대상 소프트웨어의 구조에 따라 일반적으로 다수의 커버되지 않은 분기 블록을 포함한 HCFG를 생성하게 된다. 이후, 생성된 HCFG에 있는 커버되지 않은 분기 블록을 선택하고, 이 분기 블록을 커버할 수 있는 확률이 높은 입력 데이터 리스트를 과거 입력데이터를 기반으로 선별하여 입력 데이터 리스트를 구성한다. 입력 데이터 리스트가 구성되면 이 리스트에 포함되어 있는 입력 데이터를 이용하여 소프트웨어를 실행시키고 그 과정에서 발견되는 기본 블록과 분기 블록을 HCFG에 추가하여 점진적으로 HCFG를 대상 소프트웨어 구조와 유사한 형태로 발전시켜 가도록 한다.
따라서 식별 결과에 따라 3번 라인의 명령문 수행에 수반되는 명령문 집합은 계층적인 HCFG 작성을 위해 별도의 HCFG로 작성해야 하며, 해당 기본 블록에서는 추가된 HCFG로의 연결만 표현한다. 함수는 시스템 콜의 수반 여부 혹은 입력데이터 수용 등을 위한 프로그램의 블록 상태 진입과 같은 정보를 토대로 함수 형태별로 구분하여 HCFG 생성이 가능하나, 본 논문에서는 단순히 라이브러리 함수와 사용자 정의 함수만으로 나누어 표현한다.
이 장에서는 앞서 제안하는 HCFG 생성 알고리듬의 가용성 평가를 위하여 공개된 SMTP 서버 프로그램을 대상으로 HCFG을 작성하고, 작성된 HCFG가 실제 소프트웨어의 구조와 유사한지를 비교 분석하는 실험을 수행하였다.
본 논문에서는 소프트웨어의 바이너리 코드를 이용하여 HCFG을 작성한다. 소프트웨어의 소스 코드가 실제적으로 공개되는 경우가 드물며, 공개되어 있어도 소프트웨어의 복잡도가 높은 경우, 모델 생성이 불가능한 경우도 발생하므로 바이너리 코드를 이용하여 HCFG을 작성한다.
이와 같은 바이너리 분석 도구를 사용 가능함에도 불구하고, 본 논문에서는 제안하는 알고리듬이 실제 소프트웨어 구조와 유사한 모델을 생성할 수 있는지 명확하게 확인하기 위하여 소스 코드를 확보 가능한 소프트웨어에 자체 정의한 도구를 삽입하여 컴파일 및 실행한다. 따라서 바이너리 분석 도구를 이용하여 얻을 수 있는 수준의 프로그램 제어 흐름 정보를 획득을 위한 도구를 소스 프로그램 내에 삽입하고, 그 실행 결과물을 바탕으로 HCFG 확장 과정을 확인한다.
이와 같은 바이너리 분석 도구를 사용 가능함에도 불구하고, 본 논문에서는 제안하는 알고리듬이 실제 소프트웨어 구조와 유사한 모델을 생성할 수 있는지 명확하게 확인하기 위하여 소스 코드를 확보 가능한 소프트웨어에 자체 정의한 도구를 삽입하여 컴파일 및 실행한다. 따라서 바이너리 분석 도구를 이용하여 얻을 수 있는 수준의 프로그램 제어 흐름 정보를 획득을 위한 도구를 소스 프로그램 내에 삽입하고, 그 실행 결과물을 바탕으로 HCFG 확장 과정을 확인한다. 이를 위해 다음과 같이 삽입할 도구를 정의한다.
5) 커버리지 분석 : 최종 완성된 HCFG와 소스코드의 구조와 비교함으로써 어느 정도 커버리지 됐는지 분석한다.
본 논문에서는 하나의 분기문에서 실행될 수 있는 경로가 2개 이며, 입력 데이터를 통해 분기문을 만족하여 그 다음 문장을 실행하였다면, 하나의 경로를 실행한 것이다. 따라서 입력 데이터들에 따라 하나의 분기문에서 실행될 수 있는 2개의 경로를 모두 실행하면 그 분기에 대하여 모두 커버 하였다라고 정의한다.
제안하는 HCFG 생성 알고리듬의 가용성 평가를 위하여 공개된 SMTP 서버 프로그램을 대상으로 HCFG을 작성하고, 작성된 HCFG가 실제 소프트웨어의 구조와 유사한지를 비교 분석하는 실험을 진행하였다.
대상 데이터
이와 같은 작업은 지정된 회수까지 반복적으로 수행하거나, 반복 수행 과정에서 분기 블록이 모두 커버되었다면 HCFG 구성이 완료된 것으로 판단하고 HCFG 생성 작업을 중단한다. 입력 데이터 리스트의 구성은 HCFG 내의 커버되지 않은 분기 블록(Jct)을 대상으로 수행되는데, 이 때 해당분기 블록까지 도달하는데 사용된 입력 데이터(Lprev)와 분기블록의 가지는 이전 분기 조건을 위배할 것으로 추정되는 입력(!LJct)을 이용해 생성한다. 한편 분기 블록의 커버 여부 판단은 모델 생성 대상 소프트웨어가 바이너리 코드라고 할지라도 이를 지원하는 도구[21] 등을 사용하는 경우, 분기의 커버여부뿐만 아니라 분기의 존재 및 시스템 콜을 포함한 함수 호출의 수행 등을 파악할 수 있으므로 충분히 구현 가능하다.
실험 대상 소프트웨어는 소스가 공개된 SMTP 서버 프로그램으로 C++로 작성되어 있으며[24], 그림 6과 같이 모두 11개의 함수와 30개의 분기로 구성되어 있다.
Sulley를 이용하여 크기가 1Kb ~ 1.1GB 인 약 12,219개의 입력 데이터들을 만들고, 이 입력 데이터들을 SMTP 서버프로그램에 적용시키면, 표 3과 같은 실험 결과를 얻게 된다.
이론/모형
입력 데이터를 생성하는 방법은 SMT를 이용하는 방법보다 적은 정보를 이용하게 되므로 분기를 커버하기 위해 더 많은 수의 입력 데이터를 필요로 할 수 있으나, 데이터 생성이 용이하다. 본 논문에서는 알고리즘의 가용성 확인하기 위하여, 임의의 데이터 집합을 생성할 수 있는 알고리즘에 적합하게 생성하여 주는 도구인 Sulley[23]을 이용한다. Sulley는 TippingPoint의 P.
성능/효과
마지막으로, 본 논문에서 제안하는 방법의 가용성을 검증하기 위하여 공개된 SMTP 서버 프로그램의 모델을 생성하는 실험을 수행하고, 실험 결과 생성된 모델과 실제 소프트웨어의 구조를 비교 분석하여, 제안된 방법을 통해 소프트웨어의 전체적인 구조를 파악할 수 있음을 보인다.
진행된 실험에서 NotImplemeted 메서드의 커버하지 못한 분기 블록은 if 분기인데, 이 분기의 조건이 되는 값을 ProcessCMD 메서드 내에서 NotImplemented 메서드 호출 시, 완성되지 않는 내용이 있어 항상 ‘false’로 부여하기 때문에, 해당 분기의 커버는 정상적인 절차를 통해서는 절대로 불가능함을 의미한다.
또한 기존 관련 연구들에서 바이너리 코드에 의한 모델 생성 시 CFG로 표현하여 기하급수적으로 그래프가 커지는 현상이 발생하여 소프트웨어 모델을 구조적으로 표현하지 못하였으나, 본 논문에서 HCFG을 이용하여 소프트웨어 모델을 구조적으로 표현할 수 있었다.
따라서 표 3에 제시한 실험 결과와 커버하지 못한 소스의 분석 결과를 기반으로 고려 할 때, 제안된 HCFG 생성 알고리듬이 소프트웨어의 구조 파악을 통한 모델 작성에 사용 가능함을 의미한다.
따라서 입력 데이터들에 따라 하나의 분기문에서 실행될 수 있는 2개의 경로를 모두 실행하면 그 분기에 대하여 모두 커버 하였다라고 정의한다. 따라서 이러한 정의에 의하여 생성한 모델을 분석하면, SMTP 서버 프로그램을 구성하는 전체 33개의 분기 중 입력 데이터와 관련된 분기는 30개 이며, 이 중 28개의 분기를 커버하여, 93%의 커버리지를 보였다.
제안한 알고리듬으로 커버하지 못한 모듈의 분기를 살펴보면, 커버 되지 않은 분기블록을 가지고 있는 NotImplemented 메서드는 향후에 기능을 추가하기 위하여 비워둔 상태이며, NotImplemeted 메서드는 ProcessCMD 메서드에 의해서만 호출되는 메서드로 그림 10과 같은 형태로 호출된다. 진행된 실험에서 NotImplemeted 메서드의 커버하지 못한 분기 블록은 if 분기인데, 이 분기의 조건이 되는 값을 ProcessCMD 메서드 내에서 NotImplemented 메서드 호출 시, 완성되지 않는 내용이 있어 항상 ‘false’로 부여하기 때문에, 해당 분기의 커버는 정상적인 절차를 통해서는 절대로 불가능함을 의미한다.
그 결과, 실험을 통해 제안된 HCFG 생성 알고리듬을 이용할 경우, 프로그램의 구성상 실행 불가능한 분기 블록들을 제외한 나머지 전체 분기 블록을 커버하였다. 이는 제안된 알고리듬에 의해 작성된 HCFG가 실제 소프트웨어의 구조와 유사함을 의미하므로 소프트웨어 취약성 검증을 위한 모델 기반 테스트 케이스 생성 정책에 제안된 HCFG 생성 알고리듬을 적용 가능하다는 것을 의미한다.
그 결과, 실험을 통해 제안된 HCFG 생성 알고리듬을 이용할 경우, 프로그램의 구성상 실행 불가능한 분기 블록들을 제외한 나머지 전체 분기 블록을 커버하였다. 이는 제안된 알고리듬에 의해 작성된 HCFG가 실제 소프트웨어의 구조와 유사함을 의미하므로 소프트웨어 취약성 검증을 위한 모델 기반 테스트 케이스 생성 정책에 제안된 HCFG 생성 알고리듬을 적용 가능하다는 것을 의미한다.
후속연구
향후, 이 결과를 바탕으로 모델을 효과적으로 생성 할 수 있는 방법에 대하여 연구가 필요하다. 본 논문에서는 HCFG생성 알고리듬에 대하여 제안할 뿐, 모델의 효과적인 생성을 위한 수단에 대한 고려는 수행하지 않아, 보다 효율적으로 분기 블록을 커버할 수 있도록 하면서 데이터 생성에 장시간을 요구하지 않는 입력 데이터 리스트 생성 방법에 대하여 자세히 연구할 필요가 있다.
향후, 이 결과를 바탕으로 모델을 효과적으로 생성 할 수 있는 방법에 대하여 연구가 필요하다. 본 논문에서는 HCFG생성 알고리듬에 대하여 제안할 뿐, 모델의 효과적인 생성을 위한 수단에 대한 고려는 수행하지 않아, 보다 효율적으로 분기 블록을 커버할 수 있도록 하면서 데이터 생성에 장시간을 요구하지 않는 입력 데이터 리스트 생성 방법에 대하여 자세히 연구할 필요가 있다.
질의응답
핵심어
질문
논문에서 추출한 답변
그래프나 트리 방식의 단점은?
이와 같은 방법을 사용하기 위해서 효과적인 소프트웨어의 구조 유추 방법이 요구된다. 많이 사용되는 DFG(Data Flow Graph), CFG(Control Flow Graph) 이나 CFA(Control Flow Automata)와 같은 그래프나 트리 방식은 소프트웨어 모델을 구조적으로 표현하지 못하는 단점을 가진다. 본 논문에서는 이러한 단점을 극복할 수 있는 방법을 제시한다.
소프트웨어의 구조를 유추하여 유추된 구조를 활용하여 테스트하는 방법의 목적은?
소프트웨어의 취약성을 검증하기 위하여 소프트웨어의 구조를 유추하여 유추된 구조를 활용하여 테스트하는 방법이 주목받고 있다. 이와 같은 방법을 사용하기 위해서 효과적인 소프트웨어의 구조 유추 방법이 요구된다.
효과적인 소프트웨어의 구조 유추 방법이 요구되는 방법은?
소프트웨어의 취약성을 검증하기 위하여 소프트웨어의 구조를 유추하여 유추된 구조를 활용하여 테스트하는 방법이 주목받고 있다. 이와 같은 방법을 사용하기 위해서 효과적인 소프트웨어의 구조 유추 방법이 요구된다.
참고문헌 (24)
P. Godefroid, M.Y. Levin, and D. Molnar. "Automated Whitebox Fuzz Testing," Technical Report MS-TR-2007-58, Microsoft, May 2007.
Jackson, Daniel, and Martin Rinard, "Software analsis:a roadmap." Processdings of the Conference on the Future of Sftware Engineering, ACM, pp.133-145, May, 2000.
A.Gargantini and C.Heitmeyer, "Using Model Checking to Generate Tests from Requirements Specifications," in Proceedings of the Joint 7th Eur. Software Engineering Conference and 7th ACM SIGSOFT International Symposium on Foundations of Software Engineering. pp.146-162, Sep. 1999.
Jungsup Oh Kyunghee Choi Gihyun Jung, "Automatic Test Case Generation Through 1-to-1 Requirement Modeling," KIPS, D, Vol. 17D, No. 1, pp. 41-52, Oct. 2010.
Ki-Tae Kim, Je-Min Kim, Weon-Hee Yoo, "Static Control Flow Anlaysis of Binary Codes," The Korea Contents Association, Vol. 10, No. 5, pp,70-79, May. 2010,
Ajitha Rajan, "Automated requirements-based test case generation," Newsletter of ACM SIGSOFT Software Engineering Notes, Vol.31, No. 6, pp.1-2, Nov. 2006.
The MathWorks, http://www.mathworks.com/
Godefroid, Patrice, Michael Y. Levin, and David A. Molnar. "Active property checking." Proceedings of the 8th ACM international conference on Embedded software. ACM, pp.207-216, Oct, 2008.
P. Godefroid, A. Kiezun, M. Y. Levin, "Grammar-based Whitebox Fuzzing," in Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation, pp,206-215, Jun. 2008.
P S. Anand, P. Godefroid, and N. Tillmann. "Demand-driven compositional symbolic execution," In Proceedings of the 14th International Conference on Tools and Algorithms for the Construction and Analysis of Systems, pp 367-381, April. 2008.
Zijiang Yang, "Mixed Symbolic Representations for Model Checking Software Programs," in processdings of the Formal Methods and Models for Co-Design, 2006. MEMOCODE '06. Proceedings. Fourth ACM and IEEE International Conference on, pp17-26, July. 2006.
D. Beyer, T.A. Henzinger, R. Jhala, and R. Majumdar, "The Software Model Checker Blast: Applications to Software Engineering," Int'l J. Software Tools for Technology Transfer, vol. 9, pp. 505-525, Sep. 2007.
Mark M. Seeger, "Using Control-Flow Techniques in a Security Context A Survey on Common Prototypes and their Common Weakness," in Proceedings of the 2011 International Conference on Network Computing and Information Security, pp.133-137, May. 2011.
IVANCIC, F., YANG, Z., GANAI, M. K., GUPTA, A., AND ASHAR, "Efficient SAT-based bounded model checking for software verification" Theoret. Comput. Sci. 404, 3, pp.256-274. 2008.
Z. Yang, C. Wang und A. Gupta. "Model checking sequential software programs via mixed symbolic analysis," Journal of ACM Transactions on Design Automation of Electronic Systems (TODAES), Vol 14. No. 1, pp.1-26. Jan. 2009.
M. Pezze and M. Young, Software Testing and Analysis: Process, Principles, and Techniques, Draft Version of 31st, Chap. 14.5, Mar. 2000.
Hangbae Chang, Sang-Soo Yeo, Seong-eon Cho, Heau-Jo Kang, "The Study on Improvement of the Program that Traces the Binary Codes in Execution," Journal of Security Engineering, Vol. 5, No 3, pp209-218, Jun. 2008
M. Christodorescu and S. Jha, "Static Analysis of Executables to Detect Malicious Patterns", in Proceedings of the 12th USENIX Security Symposium, vol. 12, pp. 169-186, Aug. 2003.
J Kinder, "Static Analysis of x86 Executables," Fachbereich Informatik Technische Universitat Darmstadt, Chapter5. Sep. 2010
D. G. Fritz and R. G. Sargent, "An overview of Hierarchical Control Flow Graph Models," in Proceedings of the 1995 Winter Simulation Conference, pp. 1347-1355, Dec. 1995.
C. Luk, R. Cohn, R. Muth, H. Patil, A. Klauser, G. Lowney, S. Wallace, V. J. Reddi, and K. Hazelwood, "Pin: building customized program analysis tools with dynamic instrumentation," in Proceedings of the 2005 ACM SIGPLAN Conference on Programming Language Design and Implementation, pp. 190-200, Jun. 2005.
A Dynamic Binary Instrumentation Tool, http://www.pintool.org/
Hye-ryun Lee, Seung-hun Shin, Kyung-hee Choi, Ki-hyun Chung, Seung-kyu Park, Jun-yong Choi, "Detecting the vulnerability of software with cyclic behavior using Sulley," in Proceedings of the Advanced Information Management and Service (ICIPM), 2011 7th International Conference on, pp,83-88, Dec. 2011.
SMTP Server Download, http://www.codeproject.com/Articles/20604/SMTP-Server
이 논문을 인용한 문헌
저자의 다른 논문 :
활용도 분석정보
상세보기
다운로드
내보내기
활용도 Top5 논문
해당 논문의 주제분야에서 활용도가 높은 상위 5개 콘텐츠를 보여줍니다. 더보기 버튼을 클릭하시면 더 많은 관련자료를 살펴볼 수 있습니다.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.