# windows-binary-fuzzing

## DLL methods

- [x] `GetOpenFileNameA` (ANSI)
- [x] `GetOpenFileNameW` (UTF-16)
- [x] `GetSaveFileNameA` (ANSI)
- [x] `GetSaveFileNameW` (UTF-16)
- [x] `IFileOpenDialog`
- [x] `IFileSaveDialog`
- [x] `QFileDialog::getOpenFileName`
- [ ] `QFileDialog::getOpenFileNames`
- [x] `QFileDialog::getOpenFileUrl`
- [ ] `QFileDialog::getOpenFileUrls`
- [ ] `QFileDialog::getOpenFileContent`
- [x] `QFileDialog::getSaveFileName`
- [x] `QFileDialog::getSaveFileUrl`
- [ ] `wxFileDialog`

## Build scripts

```bash
# Client(s)
clients/build_all.ps1

# Programs
programs/build.bat
```

## Execution commands (drrun)

### `GetOpenFileNameA.exe`

```bash
drrun -c ..\..\clients\CustomClient\build\Debug\CustomClient.dll -c C:\Users\vboxuser\git\winafl\build64\bin\Release\winafl.dll -debug -target_offset 0x8530 -fuzz_iterations 1 -nargs 2 -target_module .\GetOpenFileNameA.exe -- .\GetOpenFileNameA.exe
```

### `QT_getOpenFileName.exe`

```bash
drrun -c ..\..\clients\CustomClient\build\Debug\CustomClient.dll -c C:\Users\vboxuser\git\winafl\build64\bin\Release\winafl.dll -debug -target_offset 0x1320 -fuzz_iterations 1 -nargs 2 -target_module .\QT_getOpenFileName.exe -- .\QT_getOpenFileName.exe
```
