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

ReadMem improvements #75

Merged
merged 8 commits into from Aug 7, 2020

Conversation

nbaksalyar
Copy link
Member

This PR cherry-picks some improvements from #41 (to leave it write-specific and more manageable to review).

It also introduces new methods, ReadMem::read_slice and ReadMem::read_ptr, which can be used for reading vectors and arrays from debuggee's memory.

We can't use proc_vm_write and proc_vm_read on protected memory pages,
so we should split memory operations into the ones that can be applied to protected pages (using ptrace)
and the ones which can use more efficient operations (proc_vm_*). This commit changes read-specific function
to a generic function that can be used for writes too.
These functions can be used for reading vectors and arrays from debuggee's memory.
This commit also refactors the readmem tests: `PAGE_SIZE` value is taken from
lazily-initialized static instead of a constant, and the pointer arithmetic code is
changed to use functions from `std::ptr` for more clarity.
src/target/linux/memory.rs Outdated Show resolved Hide resolved
src/target/linux/memory.rs Outdated Show resolved Hide resolved
src/target/linux/readmem.rs Show resolved Hide resolved
src/target/linux/readmem.rs Outdated Show resolved Hide resolved
src/target/linux/readmem.rs Outdated Show resolved Hide resolved
nbaksalyar and others added 3 commits August 7, 2020 17:05
Co-authored-by: bjorn3 <bjorn3@users.noreply.github.com>
Emphasise its usage for both read and write operations and document
the `maps` argument.
- Add a new method to read a u8 slice from debuggee's memory.
- `ReadOp::split_on_page_boundary` takes the output var as a mutable reference
  instead of allocating a new vector.
@nbaksalyar nbaksalyar requested a review from bjorn3 August 7, 2020 16:20
src/target/linux/memory.rs Outdated Show resolved Hide resolved
src/target/linux/memory.rs Outdated Show resolved Hide resolved
src/target/linux/readmem.rs Outdated Show resolved Hide resolved
- Get rid of unnecessary cloning (iter.cloned() -> into_iter())
- Rename function parameter for clarity (maps -> protected_maps)
- Make ReadMem::read_process_vm and ReadMem::read_ptrace associated functions
@nbaksalyar nbaksalyar merged commit 719fb78 into headcrab-rs:master Aug 7, 2020
@nbaksalyar nbaksalyar deleted the read-mem-improvements branch August 7, 2020 17:01
@nbaksalyar
Copy link
Member Author

Thanks for the review!

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.

None yet

2 participants