Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

QEMU Mode: Stop Fuzzing at a Specific Address #1932

Open
legical opened this issue Dec 15, 2023 · 5 comments
Open

QEMU Mode: Stop Fuzzing at a Specific Address #1932

legical opened this issue Dec 15, 2023 · 5 comments
Labels
enhancement New feature or request good first issue Good for newcomers help wanted Extra attention is needed

Comments

@legical
Copy link

legical commented Dec 15, 2023

Is your feature request related to a problem? Please describe.
I am currently using AFL++ with QEMU mode for fuzz testing and I am wondering if there is a way to stop fuzzing when a specific address is reached. In some cases, the target programs are quite large, and I am only interested in fuzzing a specific segment of the binary code, typically from the program entry point to a specific address.
I would like to propose a feature that allows users to set a specific address as a fuzzing target in AFL++ QEMU mode.

Describe the solution you'd like

  • The ability to specify the target address through a command-line option or configuration file.
  • Ensuring that AFL++ gracefully halts the fuzzing process when the specified address is reached, then repeat fuzzing from the program entry to the specific address.

Describe alternatives you've considered
persistent mode allows for repeated execution of a particular section of a reentrant function, but that doesn't satisfy my needs. I want to be able to repeat the fuzzing of a program entry to any given address.

Additional context
none.

@vanhauser-thc vanhauser-thc added enhancement New feature or request help wanted Extra attention is needed good first issue Good for newcomers labels Dec 19, 2023
@vanhauser-thc
Copy link
Member

that is an idea we have in the TODO.md:

 - add AFL_QEMU_EXITPOINT (maybe multiple?)

would be nice if someone would add this :)

@JegadeeshVontlin
Copy link

I would like to work on this issue.

@Aditya-Choudhry
Copy link

I would like to work in this issue

@01ChenQing
Copy link

01ChenQing commented Jan 11, 2024

that is an idea we have in the TODO.md:

 - add AFL_QEMU_EXITPOINT (maybe multiple?)

would be nice if someone would add this :)

I would like to help in implementing this feature, but the functionality of AFL_QEMU_EXITPOINT and AFL_QEMU_PERSISTENT_RET seems quite similar. Both involve running the guest to a specified address. To better understand the requirements, I would like to clarify the differences between these two. @legical

@vanhauser-thc
Copy link
Member

PERSISTENT_RET is for the persistent loop feature and results in that the program counter is reset. this is not what we want in this feature.

with AFL_QEMU_EXITPOINT (which should support a list of addresses) this should result in an exit() of the emulated process instead.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request good first issue Good for newcomers help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

5 participants