NAME Proc::Memory - Peek/Poke into processes' address spaces SYNOPSIS use Proc::Memory; my $mem = Proc::Memory->new(pid => $$); my $byte = $mem->peek(0x1000); my $u32 = $mem->read(0x1000, 4); $mem->poke(0x1000, 'L') = 12; DESCRIPTION PEEK/POKE are a BASIC programming language extension for reading and writing memory at a specified address across process boundaries. This module brings similiar capability to Perl. Eventually, Memory searching capability will also be added. IMPLEMENTATION The module is a Perlish wrapper for Alien::libvas and doesn't expose any extra functionality. libvas claims support for following backends: • win32 - Windows API's {Read,Write}ProcessMemory • mach - Mach Virtual Memory API (vm_copy) - macOS and GNU Hurd • process_vm - process_vm_{readv, writev} on Linux 3.2+ • procfs - /proc/$pid/mem on Linux and some BSDs, /proc/$pid/as on SunOS • ptrace - ptrace(2), available on many Unices • memcpy - Trivial implementation that doesn't supports foreign address spaces Bug reports and contributions are welcome. :-) METHODS AND ARGUMENTS new(pid) Constructs a new Proc::Memory instance. peek(addr [, 'pack-string']) Peeks at the given memory address. pack-string defaults to 'C' (A single byte) poke(addr [, 'pack-string']) = $value # or = ($a, $b) Pokes a given memory address. If no pack-string is given, the rvalue is written as is read(addr, size) Reads size bytes from given memory address. write(addr, buf [, count]) Writes buf to addr tie(addr, 'pack-string') Returns a tied variable which can be used like any other variable. To be implemented search('pack-string') To be implemented when libvas provides it GIT REPOSITORY http://github.com/athreef/Proc-Memory SEE ALSO libvas Alien::libvas AUTHOR Ahmad Fatoum , http://a3f.at COPYRIGHT AND LICENSE Copyright (C) 2016 Ahmad Fatoum This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.