mirror of
https://github.com/AFLplusplus/AFLplusplus.git
synced 2025-06-09 00:31:33 +00:00
46 lines
1.2 KiB
Markdown
46 lines
1.2 KiB
Markdown
# AFL++ TCP desocket library
|
|
|
|
Other desocketing solutions:
|
|
* https://github.com/zardus/preeny (desock and desock2)
|
|
* https://github.com/fkie-cad/libdesock
|
|
* https://github.com/zyingp/desockmulti
|
|
* https://github.com/vanhauser-thc/network-emulator
|
|
|
|
If these desocket solutions fail, then this one will likely easily work
|
|
for you - alass with slightly lower performance.
|
|
And it is easy to extend :-)
|
|
|
|
## Why might this solution work when others do not?
|
|
|
|
What makes this desocket library special is that only **only** intercepts
|
|
`accept()` calls bound to a specified port. Hence any other network stuff
|
|
the application does is still working as expected.
|
|
|
|
## How to use
|
|
|
|
`AFL_PRELOAD` this library and use the following environment variables:
|
|
|
|
* `DESOCK_PORT=8080` - required for intercepting incoming connections for fuzzing - sets the TCP port
|
|
* `DESOCK_FORK=1` - intercept and prevent forking
|
|
* `DESOCK_CLOSE_EXIT=1` - call _exit() when the desocketed file descriptor is `close`d or `shutdown`ed
|
|
* `DESOCK_DEBUG=1` - print debug information to `stderr`
|
|
|
|
** Internals
|
|
|
|
Currently the library intercepts the following calls:
|
|
|
|
```
|
|
shutdown
|
|
close
|
|
fork
|
|
accept
|
|
accept4
|
|
listen
|
|
bind
|
|
setsockopt
|
|
getsockopt
|
|
getpeername
|
|
getsockname
|
|
```
|
|
|
|
` |