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 <http://github.com/a3f/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 <http://github.com/a3f/libvas> Alien::libvas

AUTHOR

    Ahmad Fatoum <athreef@cpan.org>, 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.

