-->

WinAFL 빌드 과정 (Windows10)

예전에 작성했던 글을 현재 블로그로 옮긴 것이라, 최신 버전이 아니니 각 버전은 현재 읽는 분들의 상황에 맞게 변경해주시면 될 것 같습니다. (캡쳐 사진은 다시 해보고 새로 캡쳐했습니다)

 


AFL(American Fuzzy Lop)은 테스트 케이스의 코드 적용 범위(Code Coverage)를 효율적으로 늘리기 위해 유전자 알고리즘(Genetic Algorihm)을 사용하는 퍼저이다.

 

원래는 리눅스에서 돌릴 생각이었고 옛날에도 몇번 돌린적이 있어서 별 걱정을 안했는데, GUI 어플리케이션을 퍼징하는 것이 불가능한 듯 했다. qemu mode로 해야해서 간단한 뷰어 프로그램을 대상으로 12시간 이상을 켜놓았는데 실행이 계속 멈춰있었다. (GUI가 아닌 다른 어플리케이션은 잘됐다.)

 

어쨌든, 본인은 파일뷰어를 퍼징해야 했는데 파일뷰어는 당연히 GUI 기반이기 때문에 윈도우에 AFL을 설치해보기로 했다. 윈도우10에 AFL을 설치하기 위해선 아래와 같은 것들이 필요하다.

 

1) cmake

2) AFL

3) DynamoRio

4) VisualStuido

 

아래 Github의 설명을 참고하여 빌드하면 되지만, 중간에 삽질 과정이 좀 길었기 때문에 여기에 정리해둔다. 결론을 우선 말하면 내가 사용했던 Visual Studio 버전이 문제였다. 2013 이상 버전을 사용하자.

 


winafl 깃허브 페이지

 

ivanfratric/winafl

A fork of AFL for fuzzing Windows binaries. Contribute to ivanfratric/winafl development by creating an account on GitHub.

github.com

 

 

cmake 설치

cmake는 아래 URL에서 다운받아 설치하면 된다. (cmake 3.12.1윈도우 64bit 버전 사용)

 


cmake 다운로드 페이지

 

Download | CMake

Current development distribution Each night binaries are created as part of the testing process. Other than passing all of the tests in CMake, this version of CMake should not be expected to work in a production environment. It is being produced so that us

cmake.org

cmake 설치

 

 

AFL 다운로드

아래 github에서 clone or download를 해준다.

 


AFL 깃허브 페이지

 

ivanfratric/winafl

A fork of AFL for fuzzing Windows binaries. Contribute to ivanfratric/winafl development by creating an account on GitHub.

github.com

 

 

DynamoRio

Pin과 함께 많이 사용되는 DBI 툴이다. 아래 링크에서 다운받는다.

 


DynamoRio 다운로드 페이지

 

DynamoRIO/dynamorio

Dynamic Instrumentation Tool Platform. Contribute to DynamoRIO/dynamorio development by creating an account on GitHub.

github.com

DynamoRIO 다운로드

 

 

Visual Studio

Visual Studio 버전 떄문에 빌드를 계속 실패했었는데, 2010년 버전으로는 빌드가 안되는 듯 하다(너무 심하긴 했다). 구글링하다가 Dynamorio가 Visual Studio 2013 이상에서만 빌드된다는 듯한 답변을 읽고 2013 버전으로 변경했다.

 

 

WinAFL 빌드하기

이제 전부 준비가 됐으니, 본격적인 WinAFL 빌드를 시작한다.

 

 

1) Visual Studio가 설치가 되었다면 해당 프롬프트가 있을 것이다. 본인 OS 비트에 맞게끔 프롬프트를 관리자로 열어준다. 나는 VS2012 x64 Cross Tools Command Prompt를 사용했다.

 

 

 

2) 프롬프트를 열고 AFL Zip 파일 압축을 푼 폴더 경로에 build64 폴더를 하나 생성한 후 build64 폴더로 이동한다.

 

 

 

3)  cmake --help로 설치된 Visual Studio에 맞는 Generator 명을 확인한다. 여기서 당연히 위에서 설치한 cmake가 시스템 변수에 등록되어있어야 한다. (혹은 귀찮다면 cmake가 설치된 경로로 가서 확인해도 무방)

 

 

 

4) 확인한 Generator 명에 맞추어 아래 명령을 수행한다. 여기서도 좀 삽질을 했는데 -DDynamoRIO_DIR에 넘겨주는 경로값은 DynamoRIO 경로가 아닌 'DynamoRIO 안의 cmake 폴더 경로'이다.

 

> cmake -G"[Generateor]" .. -DDynamoRIO_DIR="[path to DynamoRIO cmake]"

 

 

DynamoRIO 압축을 푼 폴더에 들어가면 아래와 같이 cmake 폴더가 있을 것이다.

 

 

 

 

예를 들어 난 아래와 같이 명령어를 입력했다.

 

> cmake -G"Visual Studio 12 Win64" .. -DDynamoRIO_DIR="C:\Users\leefo\Desktop\program\DynamoRIO-Windows-7.0.0-RC1\DynamoRIO-Windows-7.0.0-RC1\cmake"

 

 

아래 캡쳐가 정상적으로 해당 명령어가 실행된 결과이다. 

 

 

그리고 아래와 같이 Configuring done, Generating done 이 출력되야 한다.

 

 

 

5) 마지막으로 빌드를 해주면 끝이다.

 

> cmake --build . --config Release

 

 

 

그럼 아래와 같은 WinAFL build64 폴더를 확인할 수 있다.

 

 

댓글

Designed by JB FACTORY