Bump libipt, fix tui in intel_pt baby fuzzer (#2714)
* Bump libipt, fix tui in intel_pt baby fuzzer * libipt = "0.2.0" * Use end_ip for previous block instead of ip + 1
This commit is contained in:
parent
a8d2e8711b
commit
959ecb32e9
@ -91,7 +91,7 @@ cmake = "0.1.51"
|
|||||||
document-features = "0.2.10"
|
document-features = "0.2.10"
|
||||||
hashbrown = { version = "0.14.5", default-features = false } # A faster hashmap, nostd compatible
|
hashbrown = { version = "0.14.5", default-features = false } # A faster hashmap, nostd compatible
|
||||||
libc = "0.2.159" # For (*nix) libc
|
libc = "0.2.159" # For (*nix) libc
|
||||||
libipt = "0.1.4"
|
libipt = "0.2.0"
|
||||||
log = "0.4.22"
|
log = "0.4.22"
|
||||||
meminterval = "0.4.1"
|
meminterval = "0.4.1"
|
||||||
mimalloc = { version = "0.1.43", default-features = false }
|
mimalloc = { version = "0.1.43", default-features = false }
|
||||||
|
@ -9,7 +9,7 @@ authors = [
|
|||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
tui = []
|
tui = ["libafl/tui_monitor"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
libafl = { path = "../../../libafl/", default-features = false, features = [
|
libafl = { path = "../../../libafl/", default-features = false, features = [
|
||||||
|
@ -10,10 +10,6 @@ readme = "./README.md"
|
|||||||
keywords = ["fuzzing", "testing", "security", "intelpt"]
|
keywords = ["fuzzing", "testing", "security", "intelpt"]
|
||||||
categories = ["development-tools::testing", "no-std"]
|
categories = ["development-tools::testing", "no-std"]
|
||||||
|
|
||||||
[package.metadata.docs.rs]
|
|
||||||
features = ["std"]
|
|
||||||
no-default-features = true # because libipt won't build
|
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = ["std", "libipt"]
|
default = ["std", "libipt"]
|
||||||
std = ["libafl_bolts/std"]
|
std = ["libafl_bolts/std"]
|
||||||
|
@ -317,7 +317,7 @@ impl IntelPT {
|
|||||||
.set_image(Some(image))
|
.set_image(Some(image))
|
||||||
.map_err(error_from_pt_error)?;
|
.map_err(error_from_pt_error)?;
|
||||||
|
|
||||||
let mut previous_block_ip = 0;
|
let mut previous_block_end_ip = 0;
|
||||||
let mut status;
|
let mut status;
|
||||||
'sync: loop {
|
'sync: loop {
|
||||||
match decoder.sync_forward() {
|
match decoder.sync_forward() {
|
||||||
@ -326,7 +326,7 @@ impl IntelPT {
|
|||||||
Self::decode_blocks(
|
Self::decode_blocks(
|
||||||
&mut decoder,
|
&mut decoder,
|
||||||
&mut status,
|
&mut status,
|
||||||
&mut previous_block_ip,
|
&mut previous_block_end_ip,
|
||||||
skip,
|
skip,
|
||||||
map,
|
map,
|
||||||
)?;
|
)?;
|
||||||
@ -370,7 +370,7 @@ impl IntelPT {
|
|||||||
fn decode_blocks<T>(
|
fn decode_blocks<T>(
|
||||||
decoder: &mut BlockDecoder<()>,
|
decoder: &mut BlockDecoder<()>,
|
||||||
status: &mut Status,
|
status: &mut Status,
|
||||||
previous_block_ip: &mut u64,
|
previous_block_end_ip: &mut u64,
|
||||||
skip: u64,
|
skip: u64,
|
||||||
map: &mut [T],
|
map: &mut [T],
|
||||||
) -> Result<(), Error>
|
) -> Result<(), Error>
|
||||||
@ -396,13 +396,12 @@ impl IntelPT {
|
|||||||
let offset = decoder.offset().map_err(error_from_pt_error)?;
|
let offset = decoder.offset().map_err(error_from_pt_error)?;
|
||||||
|
|
||||||
if !b.speculative() && skip < offset {
|
if !b.speculative() && skip < offset {
|
||||||
// add 1 to `previous_block_ip` to avoid that all the recursive basic blocks map to 0
|
let id = hash_me(*previous_block_end_ip) ^ hash_me(b.ip());
|
||||||
let id = hash_me(*previous_block_ip + 1) ^ hash_me(b.ip());
|
|
||||||
// SAFETY: the index is < map.len() since the modulo operation is applied
|
// SAFETY: the index is < map.len() since the modulo operation is applied
|
||||||
let map_loc = unsafe { map.get_unchecked_mut(id as usize % map.len()) };
|
let map_loc = unsafe { map.get_unchecked_mut(id as usize % map.len()) };
|
||||||
*map_loc = (*map_loc).saturating_add(&1u8.into());
|
*map_loc = (*map_loc).saturating_add(&1u8.into());
|
||||||
|
|
||||||
*previous_block_ip = b.ip();
|
*previous_block_end_ip = b.end_ip();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
|
@ -8,4 +8,4 @@ for test_bin in ../target/debug/deps/integration_tests_linux-*; do
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
cargo test intel_pt_trace_fork
|
cargo test intel_pt_trace_fork -- --show-output
|
||||||
|
Loading…
x
Reference in New Issue
Block a user