Skip to content

qemu intel_pt: improve VM tracing #3365

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

Open
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

Marcondiro
Copy link
Contributor

Description

This PR improves VM tracing in libafl_qemu with Intel PT.

  • Better filter out the VMX root traces during decoding thanks to the new resync API in libipt (bumped to 0.4.0).
  • Extract the Decoder from the linux intel_pt file, since the file/struct was getting too big and the decoder will eventually be compatible with windows.
  • PT tracing is now enabled manually by fuzzers to have more precise control, instead of beeing always on in vm operations.
  • Add KVM dirty tracing option to qemu config and raw string options

Checklist

  • I have run ./scripts/precommit.sh and addressed all comments

@Marcondiro Marcondiro marked this pull request as draft July 28, 2025 12:21
@Marcondiro Marcondiro marked this pull request as ready for review July 28, 2025 13:38
@tokatoka tokatoka requested a review from rmalmain July 29, 2025 12:19
- Better filter out the VMX root traces during decoding thanks to the new `resync` API in libipt (bumped to 0.4.0).
- Extract the Decoder from the linux intel_pt file, since the file/struct was getting too big and the decoder will eventually be compatible with windows.
- PT tracing is now enabled manually by fuzzers to have more precise control, instead of beeing always on in vm operations.
- Add KVM dirty tracing option to qemu config and raw string options
Instead of hardcoding the addresses (that are compiler dependent), read them from the binary.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant