Bueno, fue un error mio, usé mal el substr, puse el valor final en ves de la cantidad de bytes y también me equivoqué al restar inicio con final, era final con inicio xD
Ahora si funciona de lujo
<?php
if(!isset($argv[1])){
echo "Uso: sudo php read.php PID\n";
exit;
}
$regiones = array("misc", "code", "exe", "heap", "stack");
$map = '/proc/'.$argv[1].'/maps';
echo "Leyendo ".$map." ...\n";
$lines = file($map);
foreach($lines as $line){
$line = trim($line);
$separator = substr($line, 12, 1);
if((string)$separator !== '-')
continue;
$mode = substr($line, 26, 4);
/*
r = read
w = write
x = execute
s = shared
p = private (copy on write)
*/
$start = substr($line, 0, 12);
$end = substr($line, 13, 12);
$length = (hexdec($end) - hexdec($start));
$mem = file_get_contents('/proc/'.$argv[1].'/mem', NULL, NULL, hexdec($start), $length);
/*if(strpos($mem, "testdisk.log") !== false){
//echo substr($mem, strpos($mem, "testdisk.log"), 100)."\n";
echo $mem;
exit;
}
$cmd = substr($mem, 0, 512);*/
//if($length < 2048){
echo
"------------------------------------------\n".
"Start : ".$start." (".hexdec($start).")\n".
"End : ".$end." (".hexdec($end).")\n".
"Length : ".$length."\n".
"Mode : ".$mode."\n".
//"Mem (15) : ".$mem."\n";
"Mem (15) : ".bin2hex(substr($mem, 0, 15))."\n";
//}
}
Ahora mi pregunta es:
Tengo una serie de bytes, si quiero buscar un valor entero (Int32) debo convertir los bytes a int32?