Skip to content

Latest commit

 

History

History
23 lines (17 loc) · 1.03 KB

README.wine.md

File metadata and controls

23 lines (17 loc) · 1.03 KB

How to troubleshoot AFL++'s wine mode

1) Debugging

To turn on wine debugging, use the WINEDEBUG environment variable, e.g., WINEDEBUG=+timestamp,+tid,+loaddll.

2) LoadLibraryA workaround

The forked process fails to load libraries loaded via LoadLibrary if the load happens after the entry point (error code: 87). To resolve this issue, one needs to load any external libraries before the fork happens.

An early DLL load can be achieved by adding the DLL name into the Import Directory in the PE file. Such an entry can be added manually in any PE editor.

Alternatively, one can generate a .lib file from the DLL exports and link them together with the harness to create an entry in the Import Directory. Use dumpbin /exports <filename>.dll to extract the exports and paste the exported function names into a .def file. Use lib /def:<deffile> /OUT:<libfile> to generate a .lib and add the library to the linker options. Once the usage of an export is detected (__declspec(dllimport)), the linker adds the early DLL load.