Home | History | Annotate | Download | only in docs
      1 # Windows support
      2 
      3 To update descriptions run (assumes `cl` cross-compiler is in PATH):
      4 ```
      5 syz-extract -os=windows
      6 syz-sysgen
      7 ```
      8 
      9 `sys/windows/windows.txt` was auto-extracted from windows headers with `tools/syz-declextract`.
     10 
     11 To build binaries:
     12 ```
     13 make fuzzer execprog stress TARGETOS=windows
     14 REV=git rev-parse HEAD
     15 cl executor\executor_windows.cc /EHsc -o bin\windows_amd64\syz-executor.exe \
     16 	-DGIT_REVISION=\"$REV\" \
     17 	kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib \
     18 	shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib \
     19 	winmm.lib rpcrt4.lib Crypt32.lib imm32.lib Urlmon.lib Oleaut32.lib \
     20 	Winscard.lib Opengl32.lib Mpr.lib Ws2_32.lib Bcrypt.lib Ncrypt.lib \
     21 	Synchronization.lib Shell32.lib Rpcns4.lib Mswsock.lib  Mincore.lib \
     22 	Msimg32.lib RpcRT4.lib Rpcrt4.lib lz32.lib
     23 ```
     24 
     25 To run `syz-stress`:
     26 ```
     27 bin\windows_amd64\syz-stress.exe -executor c:\full\path\to\bin\windows_amd64\syz-executor.exe
     28 ```
     29 
     30 Windows is supported by only `gce` VMs at the moment.
     31 To use `gce`, create a Windows GCE VM, inside of the machine:
     32 
     33  - Enable serial console debugging (see [this](https://docs.microsoft.com/en-us/windows-hardware/drivers/devtest/boot-parameters-to-enable-debugging) for details):
     34 ```
     35 bcdedit /debug on
     36 bcdedit /dbgsettings serial debugport:1 baudrate:115200 /noumex
     37 ```
     38 
     39  - Disable automatic restart in `sysdm.cpl -> Advanced -> Startup and Recovery`
     40 
     41  - Setup sshd with key auth, [these](https://winscp.net/eng/docs/guide_windows_openssh_server) instructions worked for me.
     42    Preferably use non-admin user. Save private ssh key.
     43 
     44 Then shutdown the machine, stop the instance and create an image from the disk.
     45 Then start `syz-manager` with config similar to the following one:
     46 
     47 ```
     48 {
     49 	"name": "windows",
     50 	"target": "windows/amd64",
     51 	"http": ":20000",
     52 	"workdir": "/workdir",
     53 	"syzkaller": "/syzkaller",
     54 	"sshkey": "/id_rsa",
     55 	"ssh_user": "you",
     56 	"cover": false,
     57 	"procs": 8,
     58 	"type": "gce",
     59 	"vm": {
     60 		"count": 10,
     61 		"machine_type": "n1-highcpu-2",
     62 		"gce_image": "your-gce-image"
     63 	}
     64 }
     65 ```
     66