xmin. guest@xmin ~ $
~/ $
[환경 구축] 2025년 5월 23일

WinAFL 빌드와 실행 메모

Windows에서 DynamoRIO와 WinAFL을 준비하고, 32-bit 하네스와 DLL을 대상으로 `afl-fuzz.exe`를 실행하기 위한 환경 구성 메모입니다.

winafldynamoriofuzzingwindowsvisual-studioharness

개요

Windows 환경에서 WinAFL을 빌드하고, 작성한 하네스를 대상으로 퍼징을 돌리기 위해 정리해둔 메모다.

이 글에서는 32-bit 대상 기준으로 정리한다. IrfanView iview32.exe 나 32-bit DLL을 대상으로 할 때는 WinAFL과 DynamoRIO도 32-bit 경로를 맞춰야 한다.

target binary : 32-bit harness.exe coverage DLL : 32-bit target.dll DynamoRIO : bin32 WinAFL build : Win32

빌드 환경

Visual Studio 2022 기준으로는 다음 터미널에서 진행했다.

Developer Command Prompt for VS 2022

필요한 것은 크게 두 가지다.

DynamoRIO

WinAFL

DynamoRIO 준비

DynamoRIO는 운영체제와 아키텍처에 맞는 release 파일을 내려받아 압축을 풀어둔다.

C:\DynamoRIO

나중에 CMake를 돌릴 때 DynamoRIODIR 에는 다음처럼 cmake 디렉터리를 지정한다.

C:\DynamoRIO\cmake

WinAFL 실행 시 -D 옵션에는 DynamoRIO의 bin32 또는 bin64 경로를 넣는다.

32-bit target 기준:

C:\DynamoRIO\bin32

WinAFL 클론

git clone --recursive https://github.com/googleprojectzero/winafl.git cd winafl

WinAFL은 submodule을 사용하므로 --recursive 를 붙여두는 편이 좋다.

이미 clone한 뒤 submodule이 빠졌다면 다음을 실행한다.

git submodule update --init --recursive

32-bit 빌드