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 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

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.