WinAFL 빌드와 실행 메모
Windows에서 DynamoRIO와 WinAFL을 준비하고, 32-bit 하네스와 DLL을 대상으로 `afl-fuzz.exe`를 실행하기 위한 환경 구성 메모입니다.
개요
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 빌드
댓글