NAME

    Memory::Process - Peek/Poke other processes' address spaces

SYNOPSIS

        use Memory::Process;
    
        my $mem = Memory::Process->new(pid => 123);
    
        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/writing the contents of a memory cell at a specified address.
    This module brings similiar semantics to Perl.

    Eventually, Memory searching capability will also be added.

IMPLEMENTATION

    The module leverages libvas <http://github.com/a3f/libvas> for
    accessing the other virtual address spaces.

METHODS AND ARGUMENTS

    new(pid)

      Constructs a new Memory::Process instance.

    peek(addr [, 'pack-string'])

      Peeks at the given memory address. If no pack-string is specified, a
      single byte is read.

    read(addr, size)

      Reads size bytes from given memory address.

    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

    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/Memory-Process

SEE ALSO

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

